@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
@@ -1 +1 @@
1
- {"version":3,"file":"tree.mjs","sources":["../../../../../../src/material/tree/node.ts","../../../../../../src/material/tree/padding.ts","../../../../../../src/material/tree/outlet.ts","../../../../../../src/material/tree/tree.ts","../../../../../../src/material/tree/toggle.ts","../../../../../../src/material/tree/tree-module.ts","../../../../../../src/material/tree/data-source/flat-data-source.ts","../../../../../../src/material/tree/data-source/nested-data-source.ts","../../../../../../src/material/tree/public-api.ts","../../../../../../src/material/tree/index.ts","../../../../../../src/material/tree/tree_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {CanDisable, HasTabIndex, mixinDisabled, mixinTabIndex} from '@angular/material/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst _MatTreeNodeBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}],\n host: {\n 'class': 'mat-tree-node',\n },\n})\nexport class MatTreeNode<T, K = T>\n extends _MatTreeNodeBase<T, K>\n implements CanDisable, HasTabIndex, OnInit, OnDestroy\n{\n constructor(\n elementRef: ElementRef<HTMLElement>,\n tree: CdkTree<T, K>,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef, tree);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: ['when: matTreeNodeDefWhen'],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}],\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode},\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n})\nexport class MatNestedTreeNode<T, K = T>\n extends CdkNestedTreeNode<T, K>\n implements AfterContentInit, OnDestroy, OnInit\n{\n @Input('matNestedTreeNode') node: T;\n\n /** Whether the node is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /** Tabindex for the node. */\n @Input()\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : 0;\n }\n private _tabIndex: number;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n tree: CdkTree<T, K>,\n differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef, tree, differs);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NumberInput} from '@angular/cdk/coercion';\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}],\n})\nexport class MatTreeNodePadding<T, K = T> extends CdkTreeNodePadding<T, K> {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding')\n override get level(): number {\n return this._level;\n }\n override set level(value: NumberInput) {\n this._setLevelInput(value);\n }\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent')\n override get indent(): number | string {\n return this._indent;\n }\n override set indent(indent: number | string) {\n this._setIndentInput(indent);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {Directive, Inject, Optional, ViewContainerRef} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any,\n ) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}],\n})\nexport class MatTree<T, K = T> extends CdkTree<T, K> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) override _nodeOutlet: MatTreeNodeOutlet;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}],\n inputs: ['recursive: matTreeNodeToggleRecursive'],\n})\nexport class MatTreeNodeToggle<T, K = T> extends CdkTreeNodeToggle<T, K> {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\n\n@NgModule({\n imports: [CdkTreeModule, MatCommonModule],\n exports: [MatCommonModule, MAT_TREE_DIRECTIVES],\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F, K = F> {\n constructor(\n public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) => Observable<T[]> | T[] | undefined | null,\n ) {}\n\n _flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {\n private readonly _flattenedData = new BehaviorSubject<F[]>([]);\n private readonly _expandedData = new BehaviorSubject<F[]>([]);\n\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n constructor(\n private _treeControl: FlatTreeControl<F, K>,\n private _treeFlattener: MatTreeFlattener<T, F, K>,\n initialData?: T[],\n ) {\n super();\n\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n return merge(\n collectionViewer.viewChange,\n this._treeControl.expansionModel.changed,\n this._flattenedData,\n ).pipe(\n map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl),\n );\n return this._expandedData.value;\n }),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...([collectionViewer.viewChange, this._data] as Observable<unknown>[])).pipe(\n map(() => this.data),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './node';\nexport * from './padding';\nexport * from './tree';\nexport * from './tree-module';\nexport * from './toggle';\nexport * from './outlet';\nexport * from './data-source/flat-data-source';\nexport * from './data-source/nested-data-source';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tree.mjs","sources":["../../../../../../src/material/tree/node.ts","../../../../../../src/material/tree/padding.ts","../../../../../../src/material/tree/outlet.ts","../../../../../../src/material/tree/tree.ts","../../../../../../src/material/tree/toggle.ts","../../../../../../src/material/tree/tree-module.ts","../../../../../../src/material/tree/data-source/flat-data-source.ts","../../../../../../src/material/tree/data-source/nested-data-source.ts","../../../../../../src/material/tree/public-api.ts","../../../../../../src/material/tree/index.ts","../../../../../../src/material/tree/tree_public_index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {\n CDK_TREE_NODE_OUTLET_NODE,\n CdkNestedTreeNode,\n CdkTree,\n CdkTreeNode,\n CdkTreeNodeDef,\n} from '@angular/cdk/tree';\nimport {\n AfterContentInit,\n Attribute,\n Directive,\n ElementRef,\n Input,\n IterableDiffers,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {CanDisable, HasTabIndex, mixinDisabled, mixinTabIndex} from '@angular/material/core';\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\n\nconst _MatTreeNodeBase = mixinTabIndex(mixinDisabled(CdkTreeNode));\n\n/**\n * Wrapper for the CdkTree node with Material design styles.\n */\n@Directive({\n selector: 'mat-tree-node',\n exportAs: 'matTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [{provide: CdkTreeNode, useExisting: MatTreeNode}],\n host: {\n 'class': 'mat-tree-node',\n },\n})\nexport class MatTreeNode<T, K = T>\n extends _MatTreeNodeBase<T, K>\n implements CanDisable, HasTabIndex, OnInit, OnDestroy\n{\n constructor(\n elementRef: ElementRef<HTMLElement>,\n tree: CdkTree<T, K>,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef, tree);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/23091\n // In aot mode, the lifecycle hooks from parent class are not called.\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n\n/**\n * Wrapper for the CdkTree node definition with Material design styles.\n * Captures the node's template and a when predicate that describes when this node should be used.\n */\n@Directive({\n selector: '[matTreeNodeDef]',\n inputs: ['when: matTreeNodeDefWhen'],\n providers: [{provide: CdkTreeNodeDef, useExisting: MatTreeNodeDef}],\n})\nexport class MatTreeNodeDef<T> extends CdkTreeNodeDef<T> {\n @Input('matTreeNode') data: T;\n}\n\n/**\n * Wrapper for the CdkTree nested node with Material design styles.\n */\n@Directive({\n selector: 'mat-nested-tree-node',\n exportAs: 'matNestedTreeNode',\n inputs: ['role', 'disabled', 'tabIndex'],\n providers: [\n {provide: CdkNestedTreeNode, useExisting: MatNestedTreeNode},\n {provide: CdkTreeNode, useExisting: MatNestedTreeNode},\n {provide: CDK_TREE_NODE_OUTLET_NODE, useExisting: MatNestedTreeNode},\n ],\n host: {\n 'class': 'mat-nested-tree-node',\n },\n})\nexport class MatNestedTreeNode<T, K = T>\n extends CdkNestedTreeNode<T, K>\n implements AfterContentInit, OnDestroy, OnInit\n{\n @Input('matNestedTreeNode') node: T;\n\n /** Whether the node is disabled. */\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n }\n private _disabled = false;\n\n /** Tabindex for the node. */\n @Input()\n get tabIndex(): number {\n return this.disabled ? -1 : this._tabIndex;\n }\n set tabIndex(value: number) {\n // If the specified tabIndex value is null or undefined, fall back to the default value.\n this._tabIndex = value != null ? value : 0;\n }\n private _tabIndex: number;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n tree: CdkTree<T, K>,\n differs: IterableDiffers,\n @Attribute('tabindex') tabIndex: string,\n ) {\n super(elementRef, tree, differs);\n this.tabIndex = Number(tabIndex) || 0;\n }\n\n // This is a workaround for https://github.com/angular/angular/issues/19145\n // In aot mode, the lifecycle hooks from parent class are not called.\n // TODO(tinayuangao): Remove when the angular issue #19145 is fixed\n override ngOnInit() {\n super.ngOnInit();\n }\n\n override ngAfterContentInit() {\n super.ngAfterContentInit();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {NumberInput} from '@angular/cdk/coercion';\nimport {CdkTreeNodePadding} from '@angular/cdk/tree';\nimport {Directive, Input} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree padding with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodePadding]',\n providers: [{provide: CdkTreeNodePadding, useExisting: MatTreeNodePadding}],\n})\nexport class MatTreeNodePadding<T, K = T> extends CdkTreeNodePadding<T, K> {\n /** The level of depth of the tree node. The padding will be `level * indent` pixels. */\n @Input('matTreeNodePadding')\n override get level(): number {\n return this._level;\n }\n override set level(value: NumberInput) {\n this._setLevelInput(value);\n }\n\n /** The indent for each level. Default number 40px from material design menu sub-menu spec. */\n @Input('matTreeNodePaddingIndent')\n override get indent(): number | string {\n return this._indent;\n }\n override set indent(indent: number | string) {\n this._setIndentInput(indent);\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\nimport {CDK_TREE_NODE_OUTLET_NODE, CdkTreeNodeOutlet} from '@angular/cdk/tree';\nimport {Directive, Inject, Optional, ViewContainerRef} from '@angular/core';\n\n/**\n * Outlet for nested CdkNode. Put `[matTreeNodeOutlet]` on a tag to place children dataNodes\n * inside the outlet.\n */\n@Directive({\n selector: '[matTreeNodeOutlet]',\n providers: [\n {\n provide: CdkTreeNodeOutlet,\n useExisting: MatTreeNodeOutlet,\n },\n ],\n})\nexport class MatTreeNodeOutlet implements CdkTreeNodeOutlet {\n constructor(\n public viewContainer: ViewContainerRef,\n @Inject(CDK_TREE_NODE_OUTLET_NODE) @Optional() public _node?: any,\n ) {}\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTree} from '@angular/cdk/tree';\nimport {ChangeDetectionStrategy, Component, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {MatTreeNodeOutlet} from './outlet';\n\n/**\n * Wrapper for the CdkTable with Material design styles.\n */\n@Component({\n selector: 'mat-tree',\n exportAs: 'matTree',\n template: `<ng-container matTreeNodeOutlet></ng-container>`,\n host: {\n 'class': 'mat-tree',\n 'role': 'tree',\n },\n styleUrls: ['tree.css'],\n encapsulation: ViewEncapsulation.None,\n // See note on CdkTree for explanation on why this uses the default change detection strategy.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [{provide: CdkTree, useExisting: MatTree}],\n})\nexport class MatTree<T, K = T> extends CdkTree<T, K> {\n // Outlets within the tree's template where the dataNodes will be inserted.\n @ViewChild(MatTreeNodeOutlet, {static: true}) override _nodeOutlet: MatTreeNodeOutlet;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CdkTreeNodeToggle} from '@angular/cdk/tree';\nimport {Directive} from '@angular/core';\n\n/**\n * Wrapper for the CdkTree's toggle with Material design styles.\n */\n@Directive({\n selector: '[matTreeNodeToggle]',\n providers: [{provide: CdkTreeNodeToggle, useExisting: MatTreeNodeToggle}],\n inputs: ['recursive: matTreeNodeToggleRecursive'],\n})\nexport class MatTreeNodeToggle<T, K = T> extends CdkTreeNodeToggle<T, K> {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgModule} from '@angular/core';\n\nimport {CdkTreeModule} from '@angular/cdk/tree';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MatNestedTreeNode, MatTreeNodeDef, MatTreeNode} from './node';\nimport {MatTree} from './tree';\nimport {MatTreeNodeToggle} from './toggle';\nimport {MatTreeNodeOutlet} from './outlet';\nimport {MatTreeNodePadding} from './padding';\n\nconst MAT_TREE_DIRECTIVES = [\n MatNestedTreeNode,\n MatTreeNodeDef,\n MatTreeNodePadding,\n MatTreeNodeToggle,\n MatTree,\n MatTreeNode,\n MatTreeNodeOutlet,\n];\n\n@NgModule({\n imports: [CdkTreeModule, MatCommonModule],\n exports: [MatCommonModule, MAT_TREE_DIRECTIVES],\n declarations: MAT_TREE_DIRECTIVES,\n})\nexport class MatTreeModule {}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {FlatTreeControl, TreeControl} from '@angular/cdk/tree';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map, take} from 'rxjs/operators';\n\n/**\n * Tree flattener to convert a normal type of node to node with children & level information.\n * Transform nested nodes of type `T` to flattened nodes of type `F`.\n *\n * For example, the input data of type `T` is nested, and contains its children data:\n * SomeNode: {\n * key: 'Fruits',\n * children: [\n * NodeOne: {\n * key: 'Apple',\n * },\n * NodeTwo: {\n * key: 'Pear',\n * }\n * ]\n * }\n * After flattener flatten the tree, the structure will become\n * SomeNode: {\n * key: 'Fruits',\n * expandable: true,\n * level: 1\n * },\n * NodeOne: {\n * key: 'Apple',\n * expandable: false,\n * level: 2\n * },\n * NodeTwo: {\n * key: 'Pear',\n * expandable: false,\n * level: 2\n * }\n * and the output flattened type is `F` with additional information.\n */\nexport class MatTreeFlattener<T, F, K = F> {\n constructor(\n public transformFunction: (node: T, level: number) => F,\n public getLevel: (node: F) => number,\n public isExpandable: (node: F) => boolean,\n public getChildren: (node: T) => Observable<T[]> | T[] | undefined | null,\n ) {}\n\n _flattenNode(node: T, level: number, resultNodes: F[], parentMap: boolean[]): F[] {\n const flatNode = this.transformFunction(node, level);\n resultNodes.push(flatNode);\n\n if (this.isExpandable(flatNode)) {\n const childrenNodes = this.getChildren(node);\n if (childrenNodes) {\n if (Array.isArray(childrenNodes)) {\n this._flattenChildren(childrenNodes, level, resultNodes, parentMap);\n } else {\n childrenNodes.pipe(take(1)).subscribe(children => {\n this._flattenChildren(children, level, resultNodes, parentMap);\n });\n }\n }\n }\n return resultNodes;\n }\n\n _flattenChildren(children: T[], level: number, resultNodes: F[], parentMap: boolean[]): void {\n children.forEach((child, index) => {\n let childParentMap: boolean[] = parentMap.slice();\n childParentMap.push(index != children.length - 1);\n this._flattenNode(child, level + 1, resultNodes, childParentMap);\n });\n }\n\n /**\n * Flatten a list of node type T to flattened version of node F.\n * Please note that type T may be nested, and the length of `structuredData` may be different\n * from that of returned list `F[]`.\n */\n flattenNodes(structuredData: T[]): F[] {\n let resultNodes: F[] = [];\n structuredData.forEach(node => this._flattenNode(node, 0, resultNodes, []));\n return resultNodes;\n }\n\n /**\n * Expand flattened node with current expansion status.\n * The returned list may have different length.\n */\n expandFlattenedNodes(nodes: F[], treeControl: TreeControl<F, K>): F[] {\n let results: F[] = [];\n let currentExpand: boolean[] = [];\n currentExpand[0] = true;\n\n nodes.forEach(node => {\n let expand = true;\n for (let i = 0; i <= this.getLevel(node); i++) {\n expand = expand && currentExpand[i];\n }\n if (expand) {\n results.push(node);\n }\n if (this.isExpandable(node)) {\n currentExpand[this.getLevel(node) + 1] = treeControl.isExpanded(node);\n }\n });\n return results;\n }\n}\n\n/**\n * Data source for flat tree.\n * The data source need to handle expansion/collapsion of the tree node and change the data feed\n * to `MatTree`.\n * The nested tree nodes of type `T` are flattened through `MatTreeFlattener`, and converted\n * to type `F` for `MatTree` to consume.\n */\nexport class MatTreeFlatDataSource<T, F, K = F> extends DataSource<F> {\n private readonly _flattenedData = new BehaviorSubject<F[]>([]);\n private readonly _expandedData = new BehaviorSubject<F[]>([]);\n\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n this._flattenedData.next(this._treeFlattener.flattenNodes(this.data));\n this._treeControl.dataNodes = this._flattenedData.value;\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n constructor(\n private _treeControl: FlatTreeControl<F, K>,\n private _treeFlattener: MatTreeFlattener<T, F, K>,\n initialData?: T[],\n ) {\n super();\n\n if (initialData) {\n // Assign the data through the constructor to ensure that all of the logic is executed.\n this.data = initialData;\n }\n }\n\n connect(collectionViewer: CollectionViewer): Observable<F[]> {\n return merge(\n collectionViewer.viewChange,\n this._treeControl.expansionModel.changed,\n this._flattenedData,\n ).pipe(\n map(() => {\n this._expandedData.next(\n this._treeFlattener.expandFlattenedNodes(this._flattenedData.value, this._treeControl),\n );\n return this._expandedData.value;\n }),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CollectionViewer, DataSource} from '@angular/cdk/collections';\nimport {BehaviorSubject, merge, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\n/**\n * Data source for nested tree.\n *\n * The data source for nested tree doesn't have to consider node flattener, or the way to expand\n * or collapse. The expansion/collapsion will be handled by TreeControl and each non-leaf node.\n */\nexport class MatTreeNestedDataSource<T> extends DataSource<T> {\n /**\n * Data for the nested tree\n */\n get data() {\n return this._data.value;\n }\n set data(value: T[]) {\n this._data.next(value);\n }\n private readonly _data = new BehaviorSubject<T[]>([]);\n\n connect(collectionViewer: CollectionViewer): Observable<T[]> {\n return merge(...([collectionViewer.viewChange, this._data] as Observable<unknown>[])).pipe(\n map(() => this.data),\n );\n }\n\n disconnect() {\n // no op\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './node';\nexport * from './padding';\nexport * from './tree';\nexport * from './tree-module';\nexport * from './toggle';\nexport * from './outlet';\nexport * from './data-source/flat-data-source';\nexport * from './data-source/nested-data-source';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.MatTreeNodeOutlet"],"mappings":"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"}
@@ -41,6 +41,9 @@ class _MatAutocompleteHarnessBase extends ComponentHarness {
41
41
  }
42
42
  /** Gets the options inside the autocomplete panel. */
43
43
  async getOptions(filters) {
44
+ if (!(await this.isOpen())) {
45
+ throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');
46
+ }
44
47
  return this._documentRootLocator.locatorForAll(this._optionClass.with({
45
48
  ...(filters || {}),
46
49
  ancestor: await this._getPanelSelector(),
@@ -48,6 +51,9 @@ class _MatAutocompleteHarnessBase extends ComponentHarness {
48
51
  }
49
52
  /** Gets the option groups inside the autocomplete panel. */
50
53
  async getOptionGroups(filters) {
54
+ if (!(await this.isOpen())) {
55
+ throw new Error('Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.');
56
+ }
51
57
  return this._documentRootLocator.locatorForAll(this._optionGroupClass.with({
52
58
  ...(filters || {}),
53
59
  ancestor: await this._getPanelSelector(),
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/autocomplete/testing/autocomplete-harness.ts","../../../../../../../src/material/autocomplete/testing/autocomplete-harness-filters.ts","../../../../../../../src/material/autocomplete/testing/public-api.ts","../../../../../../../src/material/autocomplete/testing/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '@angular/material/core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport abstract class _MatAutocompleteHarnessBase<\n OptionType extends ComponentHarnessConstructor<Option> & {\n with: (options?: OptionFilters) => HarnessPredicate<Option>;\n },\n Option extends ComponentHarness & {click(): Promise<void>},\n OptionFilters extends BaseHarnessFilters,\n OptionGroupType extends ComponentHarnessConstructor<OptionGroup> & {\n with: (options?: OptionGroupFilters) => HarnessPredicate<OptionGroup>;\n },\n OptionGroup extends ComponentHarness,\n OptionGroupFilters extends BaseHarnessFilters,\n> extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n protected abstract _prefix: string;\n protected abstract _optionClass: OptionType;\n protected abstract _optionGroupClass: OptionGroupType;\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionFilters, 'ancestor'>): Promise<Option[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionClass.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(filters?: Omit<OptionGroupFilters, 'ancestor'>): Promise<OptionGroup[]> {\n return this._documentRootLocator.locatorForAll(\n this._optionGroupClass.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionGroupFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`${this._prefix}-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel() {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n private async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-owns')}`;\n }\n}\n\n/** Harness for interacting with a standard mat-autocomplete in tests. */\nexport class MatAutocompleteHarness extends _MatAutocompleteHarnessBase<\n typeof MatOptionHarness,\n MatOptionHarness,\n OptionHarnessFilters,\n typeof MatOptgroupHarness,\n MatOptgroupHarness,\n OptgroupHarnessFilters\n> {\n protected _prefix = 'mat';\n protected _optionClass = MatOptionHarness;\n protected _optionGroupClass = MatOptgroupHarness;\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatAutocompleteHarness` that meets\n * certain criteria.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: AutocompleteHarnessFilters = {}): HarnessPredicate<MatAutocompleteHarness> {\n return new HarnessPredicate(MatAutocompleteHarness, options).addOption(\n 'value',\n options.value,\n (harness, value) => HarnessPredicate.stringMatches(harness.getValue(), value),\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of `MatAutocompleteHarness` instances. */\nexport interface AutocompleteHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose associated input element matches the given value. */\n value?: string | RegExp;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autocomplete-harness';\nexport * from './autocomplete-harness-filters';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;AAAA;;;;;;;MAuBsB,2BAWpB,SAAQ,gBAAgB;IAX1B;;QAYU,yBAAoB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;KAmFlE;;IA7EC,MAAM,QAAQ;QACZ,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,WAAW,CAAS,OAAO,CAAC,CAAC;KACzD;;IAGD,MAAM,UAAU;QACd,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAC9D,OAAO,qBAAqB,CAAC,MAAM,QAAQ,CAAC,CAAC;KAC9C;;IAGD,MAAM,KAAK;QACT,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;KACpC;;IAGD,MAAM,IAAI;QACR,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;KACnC;;IAGD,MAAM,SAAS;QACb,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;KACxC;;IAGD,MAAM,SAAS,CAAC,KAAa;QAC3B,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC5C;;IAGD,MAAM,UAAU,CAAC,OAAyC;QACxD,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAC5C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACrB,IAAI,OAAO,IAAI,EAAE,CAAC;YAClB,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;SACxB,CAAC,CACpB,EAAE,CAAC;KACL;;IAGD,MAAM,eAAe,CAAC,OAA8C;QAClE,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAC5C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAC1B,IAAI,OAAO,IAAI,EAAE,CAAC;YAClB,QAAQ,EAAE,MAAM,IAAI,CAAC,iBAAiB,EAAE;SACnB,CAAC,CACzB,EAAE,CAAC;KACL;;IAGD,MAAM,YAAY,CAAC,OAAsB;QACvC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACnB,MAAM,KAAK,CAAC,wCAAwC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAChF;QACD,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;KAC1B;;IAGD,MAAM,MAAM;QACV,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,KAAK,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,uBAAuB,CAAC,CAAC,CAAC;KAClF;;IAGO,MAAM,SAAS;;;QAGrB,OAAO,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;KACvF;;IAGO,MAAM,iBAAiB;QAC7B,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,YAAY,CAAC,WAAW,CAAC,EAAE,CAAC;KAClE;CACF;AAED;MACa,sBAAuB,SAAQ,2BAO3C;IAPD;;QAQY,YAAO,GAAG,KAAK,CAAC;QAChB,iBAAY,GAAG,gBAAgB,CAAC;QAChC,sBAAiB,GAAG,kBAAkB,CAAC;KAkBlD;;;;;;;IAPC,OAAO,IAAI,CAAC,UAAsC,EAAE;QAClD,OAAO,IAAI,gBAAgB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,SAAS,CACpE,OAAO,EACP,OAAO,CAAC,KAAK,EACb,CAAC,OAAO,EAAE,KAAK,KAAK,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CAC9E,CAAC;KACH;;AAfD;AACO,mCAAY,GAAG,2BAA2B;;ACtInD;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;;;"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/autocomplete/testing/autocomplete-harness.ts","../../../../../../../src/material/autocomplete/testing/autocomplete-harness-filters.ts","../../../../../../../src/material/autocomplete/testing/public-api.ts","../../../../../../../src/material/autocomplete/testing/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {coerceBooleanProperty} from '@angular/cdk/coercion';\nimport {\n BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n TestElement,\n} from '@angular/cdk/testing';\nimport {\n MatOptgroupHarness,\n MatOptionHarness,\n OptgroupHarnessFilters,\n OptionHarnessFilters,\n} from '@angular/material/core/testing';\nimport {AutocompleteHarnessFilters} from './autocomplete-harness-filters';\n\nexport abstract class _MatAutocompleteHarnessBase<\n OptionType extends ComponentHarnessConstructor<Option> & {\n with: (options?: OptionFilters) => HarnessPredicate<Option>;\n },\n Option extends ComponentHarness & {click(): Promise<void>},\n OptionFilters extends BaseHarnessFilters,\n OptionGroupType extends ComponentHarnessConstructor<OptionGroup> & {\n with: (options?: OptionGroupFilters) => HarnessPredicate<OptionGroup>;\n },\n OptionGroup extends ComponentHarness,\n OptionGroupFilters extends BaseHarnessFilters,\n> extends ComponentHarness {\n private _documentRootLocator = this.documentRootLocatorFactory();\n protected abstract _prefix: string;\n protected abstract _optionClass: OptionType;\n protected abstract _optionGroupClass: OptionGroupType;\n\n /** Gets the value of the autocomplete input. */\n async getValue(): Promise<string> {\n return (await this.host()).getProperty<string>('value');\n }\n\n /** Whether the autocomplete input is disabled. */\n async isDisabled(): Promise<boolean> {\n const disabled = (await this.host()).getAttribute('disabled');\n return coerceBooleanProperty(await disabled);\n }\n\n /** Focuses the autocomplete input. */\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n /** Blurs the autocomplete input. */\n async blur(): Promise<void> {\n return (await this.host()).blur();\n }\n\n /** Whether the autocomplete input is focused. */\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /** Enters text into the autocomplete. */\n async enterText(value: string): Promise<void> {\n return (await this.host()).sendKeys(value);\n }\n\n /** Gets the options inside the autocomplete panel. */\n async getOptions(filters?: Omit<OptionFilters, 'ancestor'>): Promise<Option[]> {\n if (!(await this.isOpen())) {\n throw new Error('Unable to retrieve options for autocomplete. Autocomplete panel is closed.');\n }\n\n return this._documentRootLocator.locatorForAll(\n this._optionClass.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionFilters),\n )();\n }\n\n /** Gets the option groups inside the autocomplete panel. */\n async getOptionGroups(filters?: Omit<OptionGroupFilters, 'ancestor'>): Promise<OptionGroup[]> {\n if (!(await this.isOpen())) {\n throw new Error(\n 'Unable to retrieve option groups for autocomplete. Autocomplete panel is closed.',\n );\n }\n\n return this._documentRootLocator.locatorForAll(\n this._optionGroupClass.with({\n ...(filters || {}),\n ancestor: await this._getPanelSelector(),\n } as OptionGroupFilters),\n )();\n }\n\n /** Selects the first option matching the given filters. */\n async selectOption(filters: OptionFilters): Promise<void> {\n await this.focus(); // Focus the input to make sure the autocomplete panel is shown.\n const options = await this.getOptions(filters);\n if (!options.length) {\n throw Error(`Could not find a mat-option matching ${JSON.stringify(filters)}`);\n }\n await options[0].click();\n }\n\n /** Whether the autocomplete is open. */\n async isOpen(): Promise<boolean> {\n const panel = await this._getPanel();\n return !!panel && (await panel.hasClass(`${this._prefix}-autocomplete-visible`));\n }\n\n /** Gets the panel associated with this autocomplete trigger. */\n private async _getPanel(): Promise<TestElement | null> {\n // Technically this is static, but it needs to be in a\n // function, because the autocomplete's panel ID can changed.\n return this._documentRootLocator.locatorForOptional(await this._getPanelSelector())();\n }\n\n /** Gets the selector that can be used to find the autocomplete trigger's panel. */\n private async _getPanelSelector(): Promise<string> {\n return `#${await (await this.host()).getAttribute('aria-owns')}`;\n }\n}\n\n/** Harness for interacting with a standard mat-autocomplete in tests. */\nexport class MatAutocompleteHarness extends _MatAutocompleteHarnessBase<\n typeof MatOptionHarness,\n MatOptionHarness,\n OptionHarnessFilters,\n typeof MatOptgroupHarness,\n MatOptgroupHarness,\n OptgroupHarnessFilters\n> {\n protected _prefix = 'mat';\n protected _optionClass = MatOptionHarness;\n protected _optionGroupClass = MatOptgroupHarness;\n\n /** The selector for the host element of a `MatAutocomplete` instance. */\n static hostSelector = '.mat-autocomplete-trigger';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a `MatAutocompleteHarness` that meets\n * certain criteria.\n * @param options Options for filtering which autocomplete instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with(options: AutocompleteHarnessFilters = {}): HarnessPredicate<MatAutocompleteHarness> {\n return new HarnessPredicate(MatAutocompleteHarness, options).addOption(\n 'value',\n options.value,\n (harness, value) => HarnessPredicate.stringMatches(harness.getValue(), value),\n );\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {BaseHarnessFilters} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of `MatAutocompleteHarness` instances. */\nexport interface AutocompleteHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose associated input element matches the given value. */\n value?: string | RegExp;\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './autocomplete-harness';\nexport * from './autocomplete-harness-filters';\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
13
13
  import * as i3 from '@angular/cdk/scrolling';
14
14
  import { CdkScrollableModule } from '@angular/cdk/scrolling';
15
15
  import * as i2$1 from '@angular/cdk/bidi';
16
- import { ESCAPE, hasModifierKey, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';
16
+ import { hasModifierKey, ESCAPE, ENTER, UP_ARROW, DOWN_ARROW, TAB } from '@angular/cdk/keycodes';
17
17
  import { TemplatePortal } from '@angular/cdk/portal';
18
18
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
19
19
  import * as i4 from '@angular/material/form-field';
@@ -54,7 +54,7 @@ const MAT_AUTOCOMPLETE_DEFAULT_OPTIONS = new InjectionToken('mat-autocomplete-de
54
54
  });
55
55
  /** @docs-private */
56
56
  function MAT_AUTOCOMPLETE_DEFAULT_OPTIONS_FACTORY() {
57
- return { autoActiveFirstOption: false };
57
+ return { autoActiveFirstOption: false, autoSelectActiveOption: false };
58
58
  }
59
59
  /** Base class with all of the `MatAutocomplete` functionality. */
60
60
  class _MatAutocompleteBase extends _MatAutocompleteMixinBase {
@@ -85,6 +85,7 @@ class _MatAutocompleteBase extends _MatAutocompleteMixinBase {
85
85
  // option altogether.
86
86
  this.inertGroups = platform?.SAFARI || false;
87
87
  this._autoActiveFirstOption = !!defaults.autoActiveFirstOption;
88
+ this._autoSelectActiveOption = !!defaults.autoSelectActiveOption;
88
89
  }
89
90
  /** Whether the autocomplete panel is open. */
90
91
  get isOpen() {
@@ -100,6 +101,13 @@ class _MatAutocompleteBase extends _MatAutocompleteMixinBase {
100
101
  set autoActiveFirstOption(value) {
101
102
  this._autoActiveFirstOption = coerceBooleanProperty(value);
102
103
  }
104
+ /** Whether the active option should be selected as the user is navigating. */
105
+ get autoSelectActiveOption() {
106
+ return this._autoSelectActiveOption;
107
+ }
108
+ set autoSelectActiveOption(value) {
109
+ this._autoSelectActiveOption = coerceBooleanProperty(value);
110
+ }
103
111
  /**
104
112
  * Takes classes set on the host mat-autocomplete element and applies them to the panel
105
113
  * inside the overlay container to allow for easy styling.
@@ -168,9 +176,9 @@ class _MatAutocompleteBase extends _MatAutocompleteMixinBase {
168
176
  classList[this._hiddenClass] = !this.showPanel;
169
177
  }
170
178
  }
171
- _MatAutocompleteBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive });
172
- _MatAutocompleteBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatAutocompleteBase, inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], displayWith: "displayWith", autoActiveFirstOption: "autoActiveFirstOption", panelWidth: "panelWidth", classList: ["class", "classList"] }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed", optionActivated: "optionActivated" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], usesInheritance: true, ngImport: i0 });
173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteBase, decorators: [{
179
+ _MatAutocompleteBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteBase, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS }, { token: i1.Platform }], target: i0.ɵɵFactoryTarget.Directive });
180
+ _MatAutocompleteBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatAutocompleteBase, inputs: { ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledby: ["aria-labelledby", "ariaLabelledby"], displayWith: "displayWith", autoActiveFirstOption: "autoActiveFirstOption", autoSelectActiveOption: "autoSelectActiveOption", panelWidth: "panelWidth", classList: ["class", "classList"] }, outputs: { optionSelected: "optionSelected", opened: "opened", closed: "closed", optionActivated: "optionActivated" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, static: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true }], usesInheritance: true, ngImport: i0 });
181
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteBase, decorators: [{
174
182
  type: Directive
175
183
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: undefined, decorators: [{
176
184
  type: Inject,
@@ -191,6 +199,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
191
199
  type: Input
192
200
  }], autoActiveFirstOption: [{
193
201
  type: Input
202
+ }], autoSelectActiveOption: [{
203
+ type: Input
194
204
  }], panelWidth: [{
195
205
  type: Input
196
206
  }], optionSelected: [{
@@ -212,9 +222,9 @@ class MatAutocomplete extends _MatAutocompleteBase {
212
222
  this._hiddenClass = 'mat-autocomplete-hidden';
213
223
  }
214
224
  }
215
- MatAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component });
216
- MatAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.0", type: MatAutocomplete, selector: "mat-autocomplete", inputs: { disableRipple: "disableRipple" }, host: { classAttribute: "mat-autocomplete" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: "optionGroups", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], exportAs: ["matAutocomplete"], usesInheritance: true, ngImport: i0, template: "<ng-template let-formFieldId=\"id\">\n <div class=\"mat-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby(formFieldId)\"\n [ngClass]=\"_classList\"\n #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocomplete, decorators: [{
225
+ MatAutocomplete.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocomplete, deps: null, target: i0.ɵɵFactoryTarget.Component });
226
+ MatAutocomplete.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatAutocomplete, selector: "mat-autocomplete", inputs: { disableRipple: "disableRipple" }, host: { classAttribute: "mat-autocomplete" }, providers: [{ provide: MAT_OPTION_PARENT_COMPONENT, useExisting: MatAutocomplete }], queries: [{ propertyName: "optionGroups", predicate: MAT_OPTGROUP, descendants: true }, { propertyName: "options", predicate: MatOption, descendants: true }], exportAs: ["matAutocomplete"], usesInheritance: true, ngImport: i0, template: "<ng-template let-formFieldId=\"id\">\n <div class=\"mat-autocomplete-panel\"\n role=\"listbox\"\n [id]=\"id\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"_getPanelAriaLabelledby(formFieldId)\"\n [ngClass]=\"_classList\"\n #panel>\n <ng-content></ng-content>\n </div>\n</ng-template>\n", styles: [".mat-autocomplete-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;visibility:hidden;max-width:none;max-height:256px;position:relative;width:100%;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.mat-autocomplete-panel.mat-autocomplete-visible{visibility:visible}.mat-autocomplete-panel.mat-autocomplete-hidden{visibility:hidden}.mat-autocomplete-panel-above .mat-autocomplete-panel{border-radius:0;border-top-left-radius:4px;border-top-right-radius:4px}.mat-autocomplete-panel .mat-divider-horizontal{margin-top:-1px}.cdk-high-contrast-active .mat-autocomplete-panel{outline:solid 1px}mat-autocomplete{display:none}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocomplete, decorators: [{
218
228
  type: Component,
219
229
  args: [{ selector: 'mat-autocomplete', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'matAutocomplete', inputs: ['disableRipple'], host: {
220
230
  'class': 'mat-autocomplete',
@@ -242,9 +252,9 @@ class _MatAutocompleteOriginBase {
242
252
  this.elementRef = elementRef;
243
253
  }
244
254
  }
245
- _MatAutocompleteOriginBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
246
- _MatAutocompleteOriginBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatAutocompleteOriginBase, ngImport: i0 });
247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{
255
+ _MatAutocompleteOriginBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteOriginBase, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
256
+ _MatAutocompleteOriginBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatAutocompleteOriginBase, ngImport: i0 });
257
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteOriginBase, decorators: [{
248
258
  type: Directive
249
259
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
250
260
  /**
@@ -253,9 +263,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
253
263
  */
254
264
  class MatAutocompleteOrigin extends _MatAutocompleteOriginBase {
255
265
  }
256
- MatAutocompleteOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive });
257
- MatAutocompleteOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], usesInheritance: true, ngImport: i0 });
258
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{
266
+ MatAutocompleteOrigin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteOrigin, deps: null, target: i0.ɵɵFactoryTarget.Directive });
267
+ MatAutocompleteOrigin.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatAutocompleteOrigin, selector: "[matAutocompleteOrigin]", exportAs: ["matAutocompleteOrigin"], usesInheritance: true, ngImport: i0 });
268
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteOrigin, decorators: [{
259
269
  type: Directive,
260
270
  args: [{
261
271
  selector: '[matAutocompleteOrigin]',
@@ -422,6 +432,7 @@ class _MatAutocompleteTriggerBase {
422
432
  this.autocomplete.closed.emit();
423
433
  }
424
434
  this.autocomplete._isOpen = this._overlayAttached = false;
435
+ this._pendingAutoselectedOption = null;
425
436
  if (this._overlayRef && this._overlayRef.hasAttached()) {
426
437
  this._overlayRef.detach();
427
438
  this._closingActionsSubscription.unsubscribe();
@@ -486,7 +497,7 @@ class _MatAutocompleteTriggerBase {
486
497
  }
487
498
  // Implemented as part of ControlValueAccessor.
488
499
  writeValue(value) {
489
- Promise.resolve().then(() => this._setTriggerValue(value));
500
+ Promise.resolve(null).then(() => this._assignOptionValue(value));
490
501
  }
491
502
  // Implemented as part of ControlValueAccessor.
492
503
  registerOnChange(fn) {
@@ -502,14 +513,15 @@ class _MatAutocompleteTriggerBase {
502
513
  }
503
514
  _handleKeydown(event) {
504
515
  const keyCode = event.keyCode;
516
+ const hasModifier = hasModifierKey(event);
505
517
  // Prevent the default action on all escape key presses. This is here primarily to bring IE
506
518
  // in line with other browsers. By default, pressing escape on IE will cause it to revert
507
519
  // the input value to the one that it had on focus, however it won't dispatch any events
508
520
  // which means that the model value will be out of sync with the view.
509
- if (keyCode === ESCAPE && !hasModifierKey(event)) {
521
+ if (keyCode === ESCAPE && !hasModifier) {
510
522
  event.preventDefault();
511
523
  }
512
- if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifierKey(event)) {
524
+ if (this.activeOption && keyCode === ENTER && this.panelOpen && !hasModifier) {
513
525
  this.activeOption._selectViaInteraction();
514
526
  this._resetActiveItem();
515
527
  event.preventDefault();
@@ -517,7 +529,7 @@ class _MatAutocompleteTriggerBase {
517
529
  else if (this.autocomplete) {
518
530
  const prevActiveItem = this.autocomplete._keyManager.activeItem;
519
531
  const isArrowKey = keyCode === UP_ARROW || keyCode === DOWN_ARROW;
520
- if (this.panelOpen || keyCode === TAB) {
532
+ if (keyCode === TAB || (isArrowKey && !hasModifier && this.panelOpen)) {
521
533
  this.autocomplete._keyManager.onKeydown(event);
522
534
  }
523
535
  else if (isArrowKey && this._canOpen()) {
@@ -525,6 +537,13 @@ class _MatAutocompleteTriggerBase {
525
537
  }
526
538
  if (isArrowKey || this.autocomplete._keyManager.activeItem !== prevActiveItem) {
527
539
  this._scrollToOption(this.autocomplete._keyManager.activeItemIndex || 0);
540
+ if (this.autocomplete.autoSelectActiveOption && this.activeOption) {
541
+ if (!this._pendingAutoselectedOption) {
542
+ this._valueBeforeAutoSelection = this._element.nativeElement.value;
543
+ }
544
+ this._pendingAutoselectedOption = this.activeOption;
545
+ this._assignOptionValue(this.activeOption.value);
546
+ }
528
547
  }
529
548
  }
530
549
  }
@@ -542,6 +561,7 @@ class _MatAutocompleteTriggerBase {
542
561
  // See: https://connect.microsoft.com/IE/feedback/details/885747/
543
562
  if (this._previousValue !== value) {
544
563
  this._previousValue = value;
564
+ this._pendingAutoselectedOption = null;
545
565
  this._onChange(value);
546
566
  if (this._canOpen() && this._document.activeElement === event.target) {
547
567
  this.openPanel();
@@ -558,6 +578,11 @@ class _MatAutocompleteTriggerBase {
558
578
  this._floatLabel(true);
559
579
  }
560
580
  }
581
+ _handleClick() {
582
+ if (this._canOpen() && !this.panelOpen) {
583
+ this.openPanel();
584
+ }
585
+ }
561
586
  /**
562
587
  * In "auto" mode, the label will animate down as soon as focus is lost.
563
588
  * This causes the value to jump when selecting an option with the mouse.
@@ -601,6 +626,7 @@ class _MatAutocompleteTriggerBase {
601
626
  const wasOpen = this.panelOpen;
602
627
  this._resetActiveItem();
603
628
  this.autocomplete._setVisibility();
629
+ this._changeDetectorRef.detectChanges();
604
630
  if (this.panelOpen) {
605
631
  this._overlayRef.updatePosition();
606
632
  // If the `panelOpen` state changed, we need to make sure to emit the `opened`
@@ -626,22 +652,24 @@ class _MatAutocompleteTriggerBase {
626
652
  this._overlayRef = null;
627
653
  }
628
654
  }
629
- _setTriggerValue(value) {
655
+ _assignOptionValue(value) {
630
656
  const toDisplay = this.autocomplete && this.autocomplete.displayWith
631
657
  ? this.autocomplete.displayWith(value)
632
658
  : value;
633
659
  // Simply falling back to an empty string if the display value is falsy does not work properly.
634
660
  // The display value can also be the number zero and shouldn't fall back to an empty string.
635
- const inputValue = toDisplay != null ? toDisplay : '';
661
+ this._updateNativeInputValue(toDisplay != null ? toDisplay : '');
662
+ }
663
+ _updateNativeInputValue(value) {
636
664
  // If it's used within a `MatFormField`, we should set it through the property so it can go
637
665
  // through change detection.
638
666
  if (this._formField) {
639
- this._formField._control.value = inputValue;
667
+ this._formField._control.value = value;
640
668
  }
641
669
  else {
642
- this._element.nativeElement.value = inputValue;
670
+ this._element.nativeElement.value = value;
643
671
  }
644
- this._previousValue = inputValue;
672
+ this._previousValue = value;
645
673
  }
646
674
  /**
647
675
  * This method closes the panel, and if a value is specified, also sets the associated
@@ -649,12 +677,12 @@ class _MatAutocompleteTriggerBase {
649
677
  * stemmed from the user.
650
678
  */
651
679
  _setValueAndClose(event) {
652
- const source = event && event.source;
653
- if (source) {
654
- this._clearPreviousSelectedOption(source);
655
- this._setTriggerValue(source.value);
656
- this._onChange(source.value);
657
- this.autocomplete._emitSelectEvent(source);
680
+ const toSelect = event ? event.source : this._pendingAutoselectedOption;
681
+ if (toSelect) {
682
+ this._clearPreviousSelectedOption(toSelect);
683
+ this._assignOptionValue(toSelect.value);
684
+ this._onChange(toSelect.value);
685
+ this.autocomplete._emitSelectEvent(toSelect);
658
686
  this._element.nativeElement.focus();
659
687
  }
660
688
  this.closePanel();
@@ -680,21 +708,7 @@ class _MatAutocompleteTriggerBase {
680
708
  });
681
709
  overlayRef = this._overlay.create(this._getOverlayConfig());
682
710
  this._overlayRef = overlayRef;
683
- // Use the `keydownEvents` in order to take advantage of
684
- // the overlay event targeting provided by the CDK overlay.
685
- overlayRef.keydownEvents().subscribe(event => {
686
- // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
687
- // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
688
- if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
689
- (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
690
- this._closeKeyEventStream.next();
691
- this._resetActiveItem();
692
- // We need to stop propagation, otherwise the event will eventually
693
- // reach the input itself and cause the overlay to be reopened.
694
- event.stopPropagation();
695
- event.preventDefault();
696
- }
697
- });
711
+ this._handleOverlayEvents(overlayRef);
698
712
  this._viewportSubscription = this._viewportRuler.change().subscribe(() => {
699
713
  if (this.panelOpen && overlayRef) {
700
714
  overlayRef.updateSize({ width: this._getPanelWidth() });
@@ -829,10 +843,34 @@ class _MatAutocompleteTriggerBase {
829
843
  }
830
844
  }
831
845
  }
846
+ /** Handles keyboard events coming from the overlay panel. */
847
+ _handleOverlayEvents(overlayRef) {
848
+ // Use the `keydownEvents` in order to take advantage of
849
+ // the overlay event targeting provided by the CDK overlay.
850
+ overlayRef.keydownEvents().subscribe(event => {
851
+ // Close when pressing ESCAPE or ALT + UP_ARROW, based on the a11y guidelines.
852
+ // See: https://www.w3.org/TR/wai-aria-practices-1.1/#textbox-keyboard-interaction
853
+ if ((event.keyCode === ESCAPE && !hasModifierKey(event)) ||
854
+ (event.keyCode === UP_ARROW && hasModifierKey(event, 'altKey'))) {
855
+ // If the user had typed something in before we autoselected an option, and they decided
856
+ // to cancel the selection, restore the input value to the one they had typed in.
857
+ if (this._pendingAutoselectedOption) {
858
+ this._updateNativeInputValue(this._valueBeforeAutoSelection ?? '');
859
+ this._pendingAutoselectedOption = null;
860
+ }
861
+ this._closeKeyEventStream.next();
862
+ this._resetActiveItem();
863
+ // We need to stop propagation, otherwise the event will eventually
864
+ // reach the input itself and cause the overlay to be reopened.
865
+ event.stopPropagation();
866
+ event.preventDefault();
867
+ }
868
+ });
869
+ }
832
870
  }
833
- _MatAutocompleteTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
834
- _MatAutocompleteTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: ["matAutocomplete", "autocomplete"], position: ["matAutocompletePosition", "position"], connectedTo: ["matAutocompleteConnectedTo", "connectedTo"], autocompleteAttribute: ["autocomplete", "autocompleteAttribute"], autocompleteDisabled: ["matAutocompleteDisabled", "autocompleteDisabled"] }, usesOnChanges: true, ngImport: i0 });
835
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{
871
+ _MatAutocompleteTriggerBase.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteTriggerBase, deps: [{ token: i0.ElementRef }, { token: i1$1.Overlay }, { token: i0.ViewContainerRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }, { token: MAT_AUTOCOMPLETE_SCROLL_STRATEGY }, { token: i2$1.Directionality, optional: true }, { token: MAT_FORM_FIELD, host: true, optional: true }, { token: DOCUMENT, optional: true }, { token: i3.ViewportRuler }, { token: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
872
+ _MatAutocompleteTriggerBase.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: _MatAutocompleteTriggerBase, inputs: { autocomplete: ["matAutocomplete", "autocomplete"], position: ["matAutocompletePosition", "position"], connectedTo: ["matAutocompleteConnectedTo", "connectedTo"], autocompleteAttribute: ["autocomplete", "autocompleteAttribute"], autocompleteDisabled: ["matAutocompleteDisabled", "autocompleteDisabled"] }, usesOnChanges: true, ngImport: i0 });
873
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: _MatAutocompleteTriggerBase, decorators: [{
836
874
  type: Directive
837
875
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
838
876
  type: Inject,
@@ -878,9 +916,9 @@ class MatAutocompleteTrigger extends _MatAutocompleteTriggerBase {
878
916
  this._aboveClass = 'mat-autocomplete-panel-above';
879
917
  }
880
918
  }
881
- MatAutocompleteTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
882
- MatAutocompleteTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.0", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", host: { listeners: { "focusin": "_handleFocus()", "blur": "_onTouched()", "input": "_handleInput($event)", "keydown": "_handleKeydown($event)" }, properties: { "attr.autocomplete": "autocompleteAttribute", "attr.role": "autocompleteDisabled ? null : \"combobox\"", "attr.aria-autocomplete": "autocompleteDisabled ? null : \"list\"", "attr.aria-activedescendant": "(panelOpen && activeOption) ? activeOption.id : null", "attr.aria-expanded": "autocompleteDisabled ? null : panelOpen.toString()", "attr.aria-owns": "(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id", "attr.aria-haspopup": "autocompleteDisabled ? null : \"listbox\"" }, classAttribute: "mat-autocomplete-trigger" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: ["matAutocompleteTrigger"], usesInheritance: true, ngImport: i0 });
883
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{
919
+ MatAutocompleteTrigger.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
920
+ MatAutocompleteTrigger.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", host: { listeners: { "focusin": "_handleFocus()", "blur": "_onTouched()", "input": "_handleInput($event)", "keydown": "_handleKeydown($event)", "click": "_handleClick()" }, properties: { "attr.autocomplete": "autocompleteAttribute", "attr.role": "autocompleteDisabled ? null : \"combobox\"", "attr.aria-autocomplete": "autocompleteDisabled ? null : \"list\"", "attr.aria-activedescendant": "(panelOpen && activeOption) ? activeOption.id : null", "attr.aria-expanded": "autocompleteDisabled ? null : panelOpen.toString()", "attr.aria-owns": "(autocompleteDisabled || !panelOpen) ? null : autocomplete?.id", "attr.aria-haspopup": "autocompleteDisabled ? null : \"listbox\"" }, classAttribute: "mat-autocomplete-trigger" }, providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR], exportAs: ["matAutocompleteTrigger"], usesInheritance: true, ngImport: i0 });
921
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteTrigger, decorators: [{
884
922
  type: Directive,
885
923
  args: [{
886
924
  selector: `input[matAutocomplete], textarea[matAutocomplete]`,
@@ -899,6 +937,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
899
937
  '(blur)': '_onTouched()',
900
938
  '(input)': '_handleInput($event)',
901
939
  '(keydown)': '_handleKeydown($event)',
940
+ '(click)': '_handleClick()',
902
941
  },
903
942
  exportAs: 'matAutocompleteTrigger',
904
943
  providers: [MAT_AUTOCOMPLETE_VALUE_ACCESSOR],
@@ -914,17 +953,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImpor
914
953
  */
915
954
  class MatAutocompleteModule {
916
955
  }
917
- MatAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
918
- MatAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [MatAutocomplete,
956
+ MatAutocompleteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
957
+ MatAutocompleteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteModule, declarations: [MatAutocomplete, MatAutocompleteTrigger, MatAutocompleteOrigin], imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule], exports: [MatAutocomplete,
919
958
  MatAutocompleteTrigger,
920
959
  MatAutocompleteOrigin,
921
960
  CdkScrollableModule,
922
961
  MatOptionModule,
923
962
  MatCommonModule] });
924
- MatAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[OverlayModule, MatOptionModule, MatCommonModule, CommonModule], CdkScrollableModule,
963
+ MatAutocompleteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteModule, providers: [MAT_AUTOCOMPLETE_SCROLL_STRATEGY_FACTORY_PROVIDER], imports: [[OverlayModule, MatOptionModule, MatCommonModule, CommonModule], CdkScrollableModule,
925
964
  MatOptionModule,
926
965
  MatCommonModule] });
927
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.0", ngImport: i0, type: MatAutocompleteModule, decorators: [{
966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatAutocompleteModule, decorators: [{
928
967
  type: NgModule,
929
968
  args: [{
930
969
  imports: [OverlayModule, MatOptionModule, MatCommonModule, CommonModule],