@angular/material 16.2.0 → 17.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (760) hide show
  1. package/_index.scss +19 -63
  2. package/autocomplete/index.d.ts +41 -72
  3. package/autocomplete/testing/index.d.ts +5 -23
  4. package/button/_fab-theme.scss +12 -0
  5. package/card/_card-theme.scss +86 -44
  6. package/checkbox/_checkbox-theme.scss +78 -43
  7. package/checkbox/index.d.ts +22 -42
  8. package/checkbox/testing/index.d.ts +6 -12
  9. package/core/index.d.ts +17 -28
  10. package/core/style/_validation.scss +43 -0
  11. package/core/theming/_inspection.scss +229 -0
  12. package/core/theming/_theming.scss +110 -10
  13. package/core/tokens/m2/mat/_form-field.scss +34 -1
  14. package/core/tokens/m2/mat/_slider.scss +43 -0
  15. package/core/tokens/m2/mdc/_filled-text-field.scss +1 -1
  16. package/core/tokens/m2/mdc/_outlined-text-field.scss +1 -1
  17. package/core/tokens/m2/mdc/_slider.scss +154 -0
  18. package/dialog/index.d.ts +46 -87
  19. package/dialog/testing/index.d.ts +6 -18
  20. package/esm2022/autocomplete/autocomplete-origin.mjs +9 -17
  21. package/esm2022/autocomplete/autocomplete-trigger.mjs +32 -41
  22. package/esm2022/autocomplete/autocomplete.mjs +59 -72
  23. package/esm2022/autocomplete/testing/autocomplete-harness.mjs +20 -33
  24. package/esm2022/button/fab.mjs +8 -8
  25. package/esm2022/card/card.mjs +2 -2
  26. package/esm2022/checkbox/checkbox.mjs +72 -79
  27. package/esm2022/checkbox/testing/checkbox-harness.mjs +41 -36
  28. package/esm2022/core/datetime/native-date-adapter.mjs +14 -11
  29. package/esm2022/core/option/optgroup.mjs +19 -26
  30. package/esm2022/core/option/option.mjs +25 -35
  31. package/esm2022/core/version.mjs +1 -1
  32. package/esm2022/dialog/dialog-container.mjs +52 -77
  33. package/esm2022/dialog/dialog-content-directives.mjs +16 -4
  34. package/esm2022/dialog/dialog-ref.mjs +1 -1
  35. package/esm2022/dialog/dialog.mjs +16 -46
  36. package/esm2022/dialog/public-api.mjs +2 -2
  37. package/esm2022/dialog/testing/dialog-harness.mjs +13 -16
  38. package/esm2022/dialog/testing/dialog-opener.mjs +17 -27
  39. package/esm2022/dialog/testing/index.mjs +2 -2
  40. package/esm2022/form-field/form-field.mjs +3 -3
  41. package/esm2022/form-field/testing/error-harness.mjs +10 -12
  42. package/esm2022/form-field/testing/form-field-harness.mjs +45 -48
  43. package/esm2022/list/action-list.mjs +2 -2
  44. package/esm2022/list/list.mjs +2 -2
  45. package/esm2022/list/nav-list.mjs +2 -2
  46. package/esm2022/list/selection-list.mjs +2 -2
  47. package/esm2022/menu/menu-content.mjs +9 -16
  48. package/esm2022/menu/menu-trigger.mjs +14 -25
  49. package/esm2022/menu/menu.mjs +15 -29
  50. package/esm2022/menu/public-api.mjs +3 -3
  51. package/esm2022/menu/testing/menu-harness.mjs +29 -43
  52. package/esm2022/paginator/paginator.mjs +24 -38
  53. package/esm2022/paginator/testing/paginator-harness.mjs +25 -27
  54. package/esm2022/progress-bar/progress-bar.mjs +2 -2
  55. package/esm2022/progress-spinner/progress-spinner.mjs +2 -2
  56. package/esm2022/radio/radio.mjs +58 -83
  57. package/esm2022/radio/testing/radio-harness.mjs +31 -38
  58. package/esm2022/select/select.mjs +194 -212
  59. package/esm2022/select/testing/select-harness.mjs +18 -23
  60. package/esm2022/slide-toggle/slide-toggle.mjs +43 -53
  61. package/esm2022/slide-toggle/testing/slide-toggle-harness.mjs +33 -40
  62. package/esm2022/slider/slider.mjs +2 -2
  63. package/esm2022/snack-bar/snack-bar-container.mjs +17 -32
  64. package/esm2022/snack-bar/snack-bar-ref.mjs +1 -1
  65. package/esm2022/snack-bar/snack-bar.mjs +11 -25
  66. package/esm2022/snack-bar/testing/snack-bar-harness.mjs +18 -31
  67. package/esm2022/table/row.mjs +7 -5
  68. package/esm2022/table/table-data-source.mjs +15 -18
  69. package/esm2022/table/table.mjs +18 -4
  70. package/esm2022/table/testing/cell-harness.mjs +4 -4
  71. package/esm2022/table/testing/row-harness.mjs +4 -4
  72. package/esm2022/table/testing/table-harness.mjs +22 -24
  73. package/esm2022/tabs/public-api.mjs +7 -8
  74. package/esm2022/tabs/tab-body.mjs +13 -29
  75. package/esm2022/tabs/tab-group.mjs +55 -79
  76. package/esm2022/tabs/tab-header.mjs +13 -34
  77. package/esm2022/tabs/tab-label-wrapper.mjs +6 -18
  78. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +119 -168
  79. package/esm2022/tabs/tab.mjs +25 -37
  80. package/esm2022/tooltip/testing/tooltip-harness.mjs +21 -23
  81. package/esm2022/tooltip/tooltip.mjs +68 -101
  82. package/fesm2022/autocomplete/testing.mjs +20 -33
  83. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  84. package/fesm2022/autocomplete.mjs +97 -127
  85. package/fesm2022/autocomplete.mjs.map +1 -1
  86. package/fesm2022/button.mjs +8 -8
  87. package/fesm2022/button.mjs.map +1 -1
  88. package/fesm2022/card.mjs +2 -2
  89. package/fesm2022/card.mjs.map +1 -1
  90. package/fesm2022/checkbox/testing.mjs +41 -36
  91. package/fesm2022/checkbox/testing.mjs.map +1 -1
  92. package/fesm2022/checkbox.mjs +72 -79
  93. package/fesm2022/checkbox.mjs.map +1 -1
  94. package/fesm2022/core.mjs +49 -61
  95. package/fesm2022/core.mjs.map +1 -1
  96. package/fesm2022/dialog/testing.mjs +30 -43
  97. package/fesm2022/dialog/testing.mjs.map +1 -1
  98. package/fesm2022/dialog.mjs +82 -125
  99. package/fesm2022/dialog.mjs.map +1 -1
  100. package/fesm2022/form-field/testing.mjs +54 -59
  101. package/fesm2022/form-field/testing.mjs.map +1 -1
  102. package/fesm2022/form-field.mjs +2 -2
  103. package/fesm2022/form-field.mjs.map +1 -1
  104. package/fesm2022/list.mjs +8 -8
  105. package/fesm2022/list.mjs.map +1 -1
  106. package/fesm2022/menu/testing.mjs +30 -44
  107. package/fesm2022/menu/testing.mjs.map +1 -1
  108. package/fesm2022/menu.mjs +34 -66
  109. package/fesm2022/menu.mjs.map +1 -1
  110. package/fesm2022/paginator/testing.mjs +25 -27
  111. package/fesm2022/paginator/testing.mjs.map +1 -1
  112. package/fesm2022/paginator.mjs +24 -38
  113. package/fesm2022/paginator.mjs.map +1 -1
  114. package/fesm2022/progress-bar.mjs +2 -2
  115. package/fesm2022/progress-bar.mjs.map +1 -1
  116. package/fesm2022/progress-spinner.mjs +2 -2
  117. package/fesm2022/progress-spinner.mjs.map +1 -1
  118. package/fesm2022/radio/testing.mjs +31 -38
  119. package/fesm2022/radio/testing.mjs.map +1 -1
  120. package/fesm2022/radio.mjs +59 -84
  121. package/fesm2022/radio.mjs.map +1 -1
  122. package/fesm2022/select/testing.mjs +18 -23
  123. package/fesm2022/select/testing.mjs.map +1 -1
  124. package/fesm2022/select.mjs +196 -214
  125. package/fesm2022/select.mjs.map +1 -1
  126. package/fesm2022/slide-toggle/testing.mjs +33 -40
  127. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  128. package/fesm2022/slide-toggle.mjs +43 -53
  129. package/fesm2022/slide-toggle.mjs.map +1 -1
  130. package/fesm2022/slider.mjs +2 -2
  131. package/fesm2022/slider.mjs.map +1 -1
  132. package/fesm2022/snack-bar/testing.mjs +19 -32
  133. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  134. package/fesm2022/snack-bar.mjs +26 -55
  135. package/fesm2022/snack-bar.mjs.map +1 -1
  136. package/fesm2022/table/testing.mjs +28 -30
  137. package/fesm2022/table/testing.mjs.map +1 -1
  138. package/fesm2022/table.mjs +37 -24
  139. package/fesm2022/table.mjs.map +1 -1
  140. package/fesm2022/tabs.mjs +234 -368
  141. package/fesm2022/tabs.mjs.map +1 -1
  142. package/fesm2022/tooltip/testing.mjs +21 -23
  143. package/fesm2022/tooltip/testing.mjs.map +1 -1
  144. package/fesm2022/tooltip.mjs +69 -102
  145. package/fesm2022/tooltip.mjs.map +1 -1
  146. package/form-field/_form-field-focus-overlay.scss +13 -18
  147. package/form-field/_form-field-native-select.scss +30 -67
  148. package/form-field/_form-field-subscript.scss +4 -8
  149. package/form-field/_form-field-theme.scss +15 -48
  150. package/form-field/_mdc-text-field-structure-overrides.scss +20 -0
  151. package/form-field/testing/index.d.ts +14 -44
  152. package/list/_list-theme.scss +9 -0
  153. package/menu/index.d.ts +22 -44
  154. package/menu/testing/index.d.ts +6 -23
  155. package/package.json +7 -286
  156. package/paginator/index.d.ts +6 -22
  157. package/paginator/testing/index.d.ts +9 -22
  158. package/prebuilt-themes/deeppurple-amber.css +1 -1
  159. package/prebuilt-themes/indigo-pink.css +1 -1
  160. package/prebuilt-themes/pink-bluegrey.css +1 -1
  161. package/prebuilt-themes/purple-green.css +1 -1
  162. package/progress-bar/_progress-bar-theme.scss +9 -0
  163. package/progress-spinner/_progress-spinner-theme.scss +11 -0
  164. package/radio/index.d.ts +22 -45
  165. package/radio/testing/index.d.ts +7 -23
  166. package/schematics/migration.json +4 -4
  167. package/schematics/ng-add/index.js +2 -2
  168. package/schematics/ng-add/index.mjs +2 -2
  169. package/schematics/ng-generate/mdc-migration/index_bundled.js +2 -2
  170. package/schematics/ng-generate/mdc-migration/index_bundled.js.map +2 -2
  171. package/schematics/ng-update/index_bundled.js +4 -4
  172. package/schematics/ng-update/index_bundled.js.map +1 -1
  173. package/select/index.d.ts +47 -68
  174. package/select/testing/index.d.ts +9 -22
  175. package/slide-toggle/index.d.ts +17 -27
  176. package/slide-toggle/testing/index.d.ts +6 -13
  177. package/slider/_slider-theme.scss +64 -64
  178. package/snack-bar/_snack-bar-theme.scss +8 -0
  179. package/snack-bar/index.d.ts +40 -62
  180. package/snack-bar/testing/index.d.ts +5 -20
  181. package/table/index.d.ts +2 -31
  182. package/table/testing/index.d.ts +17 -34
  183. package/tabs/index.d.ts +60 -144
  184. package/tooltip/_tooltip-theme.scss +12 -3
  185. package/tooltip/index.d.ts +26 -49
  186. package/tooltip/testing/index.d.ts +7 -17
  187. package/_theming.scss +0 -43
  188. package/_token-theming.scss +0 -2
  189. package/autocomplete/_autocomplete-theme.import.scss +0 -1
  190. package/badge/_badge-legacy-index.scss +0 -3
  191. package/badge/_badge-theme.import.scss +0 -11
  192. package/bottom-sheet/_bottom-sheet-legacy-index.scss +0 -2
  193. package/bottom-sheet/_bottom-sheet-theme.import.scss +0 -10
  194. package/button/_button-base.import.scss +0 -4
  195. package/button/_button-theme.import.scss +0 -13
  196. package/button-toggle/_button-toggle-legacy-index.scss +0 -2
  197. package/button-toggle/_button-toggle-theme.import.scss +0 -15
  198. package/button-toggle/_button-toggle-variables.import.scss +0 -1
  199. package/card/_card-theme.import.scss +0 -3
  200. package/checkbox/_checkbox-theme.import.scss +0 -10
  201. package/chips/_chips-theme.import.scss +0 -4
  202. package/core/_core-legacy-index.scss +0 -16
  203. package/core/_core.import.scss +0 -60
  204. package/core/color/_all-color.import.scss +0 -53
  205. package/core/color/_color-legacy-index.scss +0 -1
  206. package/core/density/private/_all-density.import.scss +0 -15
  207. package/core/density/private/_compatibility.import.scss +0 -4
  208. package/core/density/private/_density-legacy-index.scss +0 -5
  209. package/core/focus-indicators/_focus-indicators-legacy-index.scss +0 -5
  210. package/core/focus-indicators/_focus-indicators.import.scss +0 -23
  211. package/core/mdc-helpers/_mdc-helpers.import.scss +0 -9
  212. package/core/option/_optgroup-theme.import.scss +0 -4
  213. package/core/option/_option-legacy-index.scss +0 -5
  214. package/core/option/_option-theme.import.scss +0 -4
  215. package/core/ripple/_ripple-legacy-index.scss +0 -3
  216. package/core/ripple/_ripple.import.scss +0 -20
  217. package/core/selection/pseudo-checkbox/_pseudo-checkbox-legacy-index.scss +0 -2
  218. package/core/selection/pseudo-checkbox/_pseudo-checkbox-theme.import.scss +0 -17
  219. package/core/style/_button-common.import.scss +0 -4
  220. package/core/style/_checkbox-common.import.scss +0 -11
  221. package/core/style/_elevation.import.scss +0 -17
  222. package/core/style/_form-common.import.scss +0 -16
  223. package/core/style/_layout-common.import.scss +0 -1
  224. package/core/style/_list-common.import.scss +0 -2
  225. package/core/style/_menu-common.import.scss +0 -18
  226. package/core/style/_private.import.scss +0 -15
  227. package/core/style/_style-legacy-index.scss +0 -24
  228. package/core/style/_variables.import.scss +0 -8
  229. package/core/style/_vendor-prefixes.import.scss +0 -1
  230. package/core/theming/_all-theme.import.scss +0 -86
  231. package/core/theming/_palette.import.scss +0 -12
  232. package/core/theming/_theming-legacy-index.scss +0 -22
  233. package/core/theming/_theming.import.scss +0 -24
  234. package/core/typography/_all-typography.import.scss +0 -76
  235. package/core/typography/_typography-legacy-index.scss +0 -18
  236. package/core/typography/_typography-utils.import.scss +0 -9
  237. package/core/typography/_typography.import.scss +0 -14
  238. package/datepicker/_datepicker-legacy-index.scss +0 -9
  239. package/datepicker/_datepicker-theme.import.scss +0 -17
  240. package/dialog/_dialog-legacy-padding.import.scss +0 -1
  241. package/dialog/_dialog-theme.import.scss +0 -1
  242. package/dialog/_mdc-dialog-structure-overrides.import.scss +0 -1
  243. package/divider/_divider-legacy-index.scss +0 -3
  244. package/divider/_divider-offset.import.scss +0 -1
  245. package/divider/_divider-theme.import.scss +0 -6
  246. package/esm2022/legacy-autocomplete/autocomplete-module.mjs +0 -51
  247. package/esm2022/legacy-autocomplete/autocomplete-origin.mjs +0 -28
  248. package/esm2022/legacy-autocomplete/autocomplete-trigger.mjs +0 -60
  249. package/esm2022/legacy-autocomplete/autocomplete.mjs +0 -40
  250. package/esm2022/legacy-autocomplete/index.mjs +0 -9
  251. package/esm2022/legacy-autocomplete/legacy-autocomplete_public_index.mjs +0 -5
  252. package/esm2022/legacy-autocomplete/public-api.mjs +0 -48
  253. package/esm2022/legacy-autocomplete/testing/autocomplete-harness-filters.mjs +0 -9
  254. package/esm2022/legacy-autocomplete/testing/autocomplete-harness.mjs +0 -39
  255. package/esm2022/legacy-autocomplete/testing/index.mjs +0 -9
  256. package/esm2022/legacy-autocomplete/testing/public-api.mjs +0 -9
  257. package/esm2022/legacy-button/button-module.mjs +0 -29
  258. package/esm2022/legacy-button/button.mjs +0 -177
  259. package/esm2022/legacy-button/index.mjs +0 -9
  260. package/esm2022/legacy-button/legacy-button_public_index.mjs +0 -5
  261. package/esm2022/legacy-button/public-api.mjs +0 -10
  262. package/esm2022/legacy-button/testing/button-harness.mjs +0 -82
  263. package/esm2022/legacy-button/testing/index.mjs +0 -9
  264. package/esm2022/legacy-button/testing/public-api.mjs +0 -9
  265. package/esm2022/legacy-card/card-module.mjs +0 -87
  266. package/esm2022/legacy-card/card.mjs +0 -276
  267. package/esm2022/legacy-card/index.mjs +0 -9
  268. package/esm2022/legacy-card/legacy-card_public_index.mjs +0 -5
  269. package/esm2022/legacy-card/public-api.mjs +0 -10
  270. package/esm2022/legacy-card/testing/card-harness-filters.mjs +0 -9
  271. package/esm2022/legacy-card/testing/card-harness.mjs +0 -47
  272. package/esm2022/legacy-card/testing/index.mjs +0 -9
  273. package/esm2022/legacy-card/testing/public-api.mjs +0 -9
  274. package/esm2022/legacy-checkbox/checkbox-module.mjs +0 -31
  275. package/esm2022/legacy-checkbox/checkbox.mjs +0 -137
  276. package/esm2022/legacy-checkbox/index.mjs +0 -9
  277. package/esm2022/legacy-checkbox/legacy-checkbox_public_index.mjs +0 -5
  278. package/esm2022/legacy-checkbox/public-api.mjs +0 -36
  279. package/esm2022/legacy-checkbox/testing/checkbox-harness.mjs +0 -46
  280. package/esm2022/legacy-checkbox/testing/index.mjs +0 -9
  281. package/esm2022/legacy-checkbox/testing/public-api.mjs +0 -9
  282. package/esm2022/legacy-chips/chip-default-options.mjs +0 -15
  283. package/esm2022/legacy-chips/chip-input.mjs +0 -198
  284. package/esm2022/legacy-chips/chip-list.mjs +0 -718
  285. package/esm2022/legacy-chips/chip-text-control.mjs +0 -9
  286. package/esm2022/legacy-chips/chip.mjs +0 -445
  287. package/esm2022/legacy-chips/chips-module.mjs +0 -68
  288. package/esm2022/legacy-chips/index.mjs +0 -9
  289. package/esm2022/legacy-chips/legacy-chips_public_index.mjs +0 -5
  290. package/esm2022/legacy-chips/public-api.mjs +0 -13
  291. package/esm2022/legacy-chips/testing/chip-avatar-harness.mjs +0 -26
  292. package/esm2022/legacy-chips/testing/chip-harness-filters.mjs +0 -2
  293. package/esm2022/legacy-chips/testing/chip-harness.mjs +0 -95
  294. package/esm2022/legacy-chips/testing/chip-input-harness.mjs +0 -86
  295. package/esm2022/legacy-chips/testing/chip-list-harness.mjs +0 -90
  296. package/esm2022/legacy-chips/testing/chip-listbox-harness.mjs +0 -48
  297. package/esm2022/legacy-chips/testing/chip-option-harness.mjs +0 -49
  298. package/esm2022/legacy-chips/testing/chip-remove-harness.mjs +0 -30
  299. package/esm2022/legacy-chips/testing/index.mjs +0 -9
  300. package/esm2022/legacy-chips/testing/public-api.mjs +0 -14
  301. package/esm2022/legacy-core/index.mjs +0 -9
  302. package/esm2022/legacy-core/legacy-core_public_index.mjs +0 -5
  303. package/esm2022/legacy-core/option/index.mjs +0 -69
  304. package/esm2022/legacy-core/option/optgroup.mjs +0 -30
  305. package/esm2022/legacy-core/option/option.mjs +0 -54
  306. package/esm2022/legacy-core/public-api.mjs +0 -170
  307. package/esm2022/legacy-core/testing/index.mjs +0 -9
  308. package/esm2022/legacy-core/testing/optgroup-harness-filters.mjs +0 -9
  309. package/esm2022/legacy-core/testing/optgroup-harness.mjs +0 -47
  310. package/esm2022/legacy-core/testing/option-harness-filters.mjs +0 -9
  311. package/esm2022/legacy-core/testing/option-harness.mjs +0 -58
  312. package/esm2022/legacy-core/testing/public-api.mjs +0 -12
  313. package/esm2022/legacy-dialog/dialog-animations.mjs +0 -17
  314. package/esm2022/legacy-dialog/dialog-config.mjs +0 -22
  315. package/esm2022/legacy-dialog/dialog-container.mjs +0 -85
  316. package/esm2022/legacy-dialog/dialog-content-directives.mjs +0 -197
  317. package/esm2022/legacy-dialog/dialog-module.mjs +0 -57
  318. package/esm2022/legacy-dialog/dialog-ref.mjs +0 -16
  319. package/esm2022/legacy-dialog/dialog.mjs +0 -106
  320. package/esm2022/legacy-dialog/index.mjs +0 -9
  321. package/esm2022/legacy-dialog/legacy-dialog_public_index.mjs +0 -5
  322. package/esm2022/legacy-dialog/public-api.mjs +0 -40
  323. package/esm2022/legacy-dialog/testing/dialog-harness.mjs +0 -36
  324. package/esm2022/legacy-dialog/testing/dialog-opener.mjs +0 -56
  325. package/esm2022/legacy-dialog/testing/index.mjs +0 -9
  326. package/esm2022/legacy-dialog/testing/public-api.mjs +0 -10
  327. package/esm2022/legacy-form-field/error.mjs +0 -46
  328. package/esm2022/legacy-form-field/form-field-module.mjs +0 -67
  329. package/esm2022/legacy-form-field/form-field.mjs +0 -530
  330. package/esm2022/legacy-form-field/hint.mjs +0 -56
  331. package/esm2022/legacy-form-field/index.mjs +0 -9
  332. package/esm2022/legacy-form-field/label.mjs +0 -25
  333. package/esm2022/legacy-form-field/legacy-form-field_public_index.mjs +0 -5
  334. package/esm2022/legacy-form-field/placeholder.mjs +0 -26
  335. package/esm2022/legacy-form-field/prefix.mjs +0 -27
  336. package/esm2022/legacy-form-field/public-api.mjs +0 -62
  337. package/esm2022/legacy-form-field/suffix.mjs +0 -27
  338. package/esm2022/legacy-form-field/testing/error-harness.mjs +0 -26
  339. package/esm2022/legacy-form-field/testing/form-field-harness.mjs +0 -73
  340. package/esm2022/legacy-form-field/testing/index.mjs +0 -9
  341. package/esm2022/legacy-form-field/testing/public-api.mjs +0 -19
  342. package/esm2022/legacy-input/index.mjs +0 -9
  343. package/esm2022/legacy-input/input-module.mjs +0 -45
  344. package/esm2022/legacy-input/input.mjs +0 -62
  345. package/esm2022/legacy-input/legacy-input_public_index.mjs +0 -5
  346. package/esm2022/legacy-input/public-api.mjs +0 -21
  347. package/esm2022/legacy-input/testing/index.mjs +0 -9
  348. package/esm2022/legacy-input/testing/public-api.mjs +0 -24
  349. package/esm2022/legacy-list/index.mjs +0 -9
  350. package/esm2022/legacy-list/legacy-list_public_index.mjs +0 -5
  351. package/esm2022/legacy-list/list-module.mjs +0 -75
  352. package/esm2022/legacy-list/list.mjs +0 -223
  353. package/esm2022/legacy-list/public-api.mjs +0 -22
  354. package/esm2022/legacy-list/selection-list.mjs +0 -619
  355. package/esm2022/legacy-list/testing/action-list-harness.mjs +0 -67
  356. package/esm2022/legacy-list/testing/index.mjs +0 -9
  357. package/esm2022/legacy-list/testing/list-harness-base.mjs +0 -97
  358. package/esm2022/legacy-list/testing/list-harness-filters.mjs +0 -9
  359. package/esm2022/legacy-list/testing/list-harness.mjs +0 -51
  360. package/esm2022/legacy-list/testing/list-item-harness-base.mjs +0 -74
  361. package/esm2022/legacy-list/testing/nav-list-harness.mjs +0 -71
  362. package/esm2022/legacy-list/testing/public-api.mjs +0 -12
  363. package/esm2022/legacy-list/testing/selection-list-harness.mjs +0 -129
  364. package/esm2022/legacy-menu/index.mjs +0 -9
  365. package/esm2022/legacy-menu/legacy-menu_public_index.mjs +0 -5
  366. package/esm2022/legacy-menu/menu-content.mjs +0 -27
  367. package/esm2022/legacy-menu/menu-item.mjs +0 -41
  368. package/esm2022/legacy-menu/menu-module.mjs +0 -50
  369. package/esm2022/legacy-menu/menu-trigger.mjs +0 -31
  370. package/esm2022/legacy-menu/menu.mjs +0 -40
  371. package/esm2022/legacy-menu/public-api.mjs +0 -49
  372. package/esm2022/legacy-menu/testing/index.mjs +0 -9
  373. package/esm2022/legacy-menu/testing/menu-harness.mjs +0 -56
  374. package/esm2022/legacy-menu/testing/public-api.mjs +0 -9
  375. package/esm2022/legacy-paginator/index.mjs +0 -9
  376. package/esm2022/legacy-paginator/legacy-paginator_public_index.mjs +0 -5
  377. package/esm2022/legacy-paginator/paginator-module.mjs +0 -49
  378. package/esm2022/legacy-paginator/paginator.mjs +0 -53
  379. package/esm2022/legacy-paginator/public-api.mjs +0 -36
  380. package/esm2022/legacy-paginator/testing/index.mjs +0 -9
  381. package/esm2022/legacy-paginator/testing/paginator-harness.mjs +0 -41
  382. package/esm2022/legacy-paginator/testing/public-api.mjs +0 -15
  383. package/esm2022/legacy-progress-bar/index.mjs +0 -9
  384. package/esm2022/legacy-progress-bar/legacy-progress-bar_public_index.mjs +0 -5
  385. package/esm2022/legacy-progress-bar/progress-bar-module.mjs +0 -30
  386. package/esm2022/legacy-progress-bar/progress-bar.mjs +0 -190
  387. package/esm2022/legacy-progress-bar/public-api.mjs +0 -11
  388. package/esm2022/legacy-progress-bar/testing/index.mjs +0 -9
  389. package/esm2022/legacy-progress-bar/testing/progress-bar-harness.mjs +0 -38
  390. package/esm2022/legacy-progress-bar/testing/public-api.mjs +0 -9
  391. package/esm2022/legacy-progress-spinner/index.mjs +0 -9
  392. package/esm2022/legacy-progress-spinner/legacy-progress-spinner_public_index.mjs +0 -5
  393. package/esm2022/legacy-progress-spinner/progress-spinner-module.mjs +0 -30
  394. package/esm2022/legacy-progress-spinner/progress-spinner.mjs +0 -286
  395. package/esm2022/legacy-progress-spinner/public-api.mjs +0 -19
  396. package/esm2022/legacy-progress-spinner/testing/index.mjs +0 -9
  397. package/esm2022/legacy-progress-spinner/testing/progress-spinner-harness.mjs +0 -39
  398. package/esm2022/legacy-progress-spinner/testing/public-api.mjs +0 -9
  399. package/esm2022/legacy-radio/index.mjs +0 -9
  400. package/esm2022/legacy-radio/legacy-radio_public_index.mjs +0 -5
  401. package/esm2022/legacy-radio/public-api.mjs +0 -31
  402. package/esm2022/legacy-radio/radio-module.mjs +0 -29
  403. package/esm2022/legacy-radio/radio.mjs +0 -112
  404. package/esm2022/legacy-radio/testing/index.mjs +0 -9
  405. package/esm2022/legacy-radio/testing/public-api.mjs +0 -9
  406. package/esm2022/legacy-radio/testing/radio-harness.mjs +0 -58
  407. package/esm2022/legacy-select/index.mjs +0 -9
  408. package/esm2022/legacy-select/legacy-select_public_index.mjs +0 -5
  409. package/esm2022/legacy-select/public-api.mjs +0 -37
  410. package/esm2022/legacy-select/select-animations.mjs +0 -56
  411. package/esm2022/legacy-select/select-errors.mjs +0 -39
  412. package/esm2022/legacy-select/select-module.mjs +0 -51
  413. package/esm2022/legacy-select/select.mjs +0 -447
  414. package/esm2022/legacy-select/testing/index.mjs +0 -9
  415. package/esm2022/legacy-select/testing/public-api.mjs +0 -9
  416. package/esm2022/legacy-select/testing/select-harness-filters.mjs +0 -9
  417. package/esm2022/legacy-select/testing/select-harness.mjs +0 -36
  418. package/esm2022/legacy-slide-toggle/index.mjs +0 -9
  419. package/esm2022/legacy-slide-toggle/legacy-slide-toggle_public_index.mjs +0 -5
  420. package/esm2022/legacy-slide-toggle/public-api.mjs +0 -32
  421. package/esm2022/legacy-slide-toggle/slide-toggle-config.mjs +0 -18
  422. package/esm2022/legacy-slide-toggle/slide-toggle-module.mjs +0 -42
  423. package/esm2022/legacy-slide-toggle/slide-toggle.mjs +0 -137
  424. package/esm2022/legacy-slide-toggle/testing/index.mjs +0 -9
  425. package/esm2022/legacy-slide-toggle/testing/public-api.mjs +0 -15
  426. package/esm2022/legacy-slide-toggle/testing/slide-toggle-harness.mjs +0 -50
  427. package/esm2022/legacy-slider/index.mjs +0 -9
  428. package/esm2022/legacy-slider/legacy-slider_public_index.mjs +0 -5
  429. package/esm2022/legacy-slider/public-api.mjs +0 -10
  430. package/esm2022/legacy-slider/slider-module.mjs +0 -30
  431. package/esm2022/legacy-slider/slider.mjs +0 -847
  432. package/esm2022/legacy-slider/testing/index.mjs +0 -9
  433. package/esm2022/legacy-slider/testing/public-api.mjs +0 -9
  434. package/esm2022/legacy-slider/testing/slider-harness-filters.mjs +0 -2
  435. package/esm2022/legacy-slider/testing/slider-harness.mjs +0 -122
  436. package/esm2022/legacy-snack-bar/index.mjs +0 -9
  437. package/esm2022/legacy-snack-bar/legacy-snack-bar_public_index.mjs +0 -5
  438. package/esm2022/legacy-snack-bar/public-api.mjs +0 -53
  439. package/esm2022/legacy-snack-bar/simple-snack-bar.mjs +0 -45
  440. package/esm2022/legacy-snack-bar/snack-bar-container.mjs +0 -39
  441. package/esm2022/legacy-snack-bar/snack-bar-module.mjs +0 -34
  442. package/esm2022/legacy-snack-bar/snack-bar.mjs +0 -47
  443. package/esm2022/legacy-snack-bar/testing/index.mjs +0 -9
  444. package/esm2022/legacy-snack-bar/testing/public-api.mjs +0 -9
  445. package/esm2022/legacy-snack-bar/testing/snack-bar-harness.mjs +0 -46
  446. package/esm2022/legacy-table/cell.mjs +0 -163
  447. package/esm2022/legacy-table/index.mjs +0 -9
  448. package/esm2022/legacy-table/legacy-table_public_index.mjs +0 -5
  449. package/esm2022/legacy-table/public-api.mjs +0 -20
  450. package/esm2022/legacy-table/row.mjs +0 -165
  451. package/esm2022/legacy-table/table-data-source.mjs +0 -27
  452. package/esm2022/legacy-table/table-module.mjs +0 -98
  453. package/esm2022/legacy-table/table.mjs +0 -72
  454. package/esm2022/legacy-table/testing/cell-harness.mjs +0 -62
  455. package/esm2022/legacy-table/testing/index.mjs +0 -9
  456. package/esm2022/legacy-table/testing/public-api.mjs +0 -27
  457. package/esm2022/legacy-table/testing/row-harness.mjs +0 -76
  458. package/esm2022/legacy-table/testing/table-harness.mjs +0 -34
  459. package/esm2022/legacy-table/text-column.mjs +0 -65
  460. package/esm2022/legacy-tabs/index.mjs +0 -9
  461. package/esm2022/legacy-tabs/ink-bar.mjs +0 -73
  462. package/esm2022/legacy-tabs/legacy-tabs_public_index.mjs +0 -5
  463. package/esm2022/legacy-tabs/public-api.mjs +0 -94
  464. package/esm2022/legacy-tabs/tab-body.mjs +0 -64
  465. package/esm2022/legacy-tabs/tab-content.mjs +0 -27
  466. package/esm2022/legacy-tabs/tab-group.mjs +0 -72
  467. package/esm2022/legacy-tabs/tab-header.mjs +0 -75
  468. package/esm2022/legacy-tabs/tab-label-wrapper.mjs +0 -30
  469. package/esm2022/legacy-tabs/tab-label.mjs +0 -27
  470. package/esm2022/legacy-tabs/tab-nav-bar/index.mjs +0 -9
  471. package/esm2022/legacy-tabs/tab-nav-bar/tab-nav-bar.mjs +0 -164
  472. package/esm2022/legacy-tabs/tab.mjs +0 -46
  473. package/esm2022/legacy-tabs/tabs-module.mjs +0 -99
  474. package/esm2022/legacy-tabs/testing/index.mjs +0 -9
  475. package/esm2022/legacy-tabs/testing/public-api.mjs +0 -12
  476. package/esm2022/legacy-tabs/testing/tab-group-harness.mjs +0 -61
  477. package/esm2022/legacy-tabs/testing/tab-harness-filters.mjs +0 -2
  478. package/esm2022/legacy-tabs/testing/tab-harness.mjs +0 -71
  479. package/esm2022/legacy-tabs/testing/tab-link-harness.mjs +0 -45
  480. package/esm2022/legacy-tabs/testing/tab-nav-bar-harness.mjs +0 -70
  481. package/esm2022/legacy-tabs/testing/tab-nav-panel-harness.mjs +0 -31
  482. package/esm2022/legacy-tooltip/index.mjs +0 -9
  483. package/esm2022/legacy-tooltip/legacy-tooltip_public_index.mjs +0 -5
  484. package/esm2022/legacy-tooltip/public-api.mjs +0 -47
  485. package/esm2022/legacy-tooltip/testing/index.mjs +0 -9
  486. package/esm2022/legacy-tooltip/testing/public-api.mjs +0 -9
  487. package/esm2022/legacy-tooltip/testing/tooltip-harness.mjs +0 -35
  488. package/esm2022/legacy-tooltip/tooltip-animations.mjs +0 -28
  489. package/esm2022/legacy-tooltip/tooltip-module.mjs +0 -35
  490. package/esm2022/legacy-tooltip/tooltip.mjs +0 -108
  491. package/expansion/_expansion-legacy-index.scss +0 -2
  492. package/expansion/_expansion-theme.import.scss +0 -12
  493. package/expansion/_expansion-variables.import.scss +0 -1
  494. package/fesm2022/legacy-autocomplete/testing.mjs +0 -35
  495. package/fesm2022/legacy-autocomplete/testing.mjs.map +0 -1
  496. package/fesm2022/legacy-autocomplete.mjs +0 -146
  497. package/fesm2022/legacy-autocomplete.mjs.map +0 -1
  498. package/fesm2022/legacy-button/testing.mjs +0 -78
  499. package/fesm2022/legacy-button/testing.mjs.map +0 -1
  500. package/fesm2022/legacy-button.mjs +0 -194
  501. package/fesm2022/legacy-button.mjs.map +0 -1
  502. package/fesm2022/legacy-card/testing.mjs +0 -43
  503. package/fesm2022/legacy-card/testing.mjs.map +0 -1
  504. package/fesm2022/legacy-card.mjs +0 -353
  505. package/fesm2022/legacy-card.mjs.map +0 -1
  506. package/fesm2022/legacy-checkbox/testing.mjs +0 -42
  507. package/fesm2022/legacy-checkbox/testing.mjs.map +0 -1
  508. package/fesm2022/legacy-checkbox.mjs +0 -157
  509. package/fesm2022/legacy-checkbox.mjs.map +0 -1
  510. package/fesm2022/legacy-chips/testing.mjs +0 -365
  511. package/fesm2022/legacy-chips/testing.mjs.map +0 -1
  512. package/fesm2022/legacy-chips.mjs +0 -1399
  513. package/fesm2022/legacy-chips.mjs.map +0 -1
  514. package/fesm2022/legacy-core/testing.mjs +0 -92
  515. package/fesm2022/legacy-core/testing.mjs.map +0 -1
  516. package/fesm2022/legacy-core.mjs +0 -92
  517. package/fesm2022/legacy-core.mjs.map +0 -1
  518. package/fesm2022/legacy-dialog/testing.mjs +0 -80
  519. package/fesm2022/legacy-dialog/testing.mjs.map +0 -1
  520. package/fesm2022/legacy-dialog.mjs +0 -437
  521. package/fesm2022/legacy-dialog.mjs.map +0 -1
  522. package/fesm2022/legacy-form-field/testing.mjs +0 -87
  523. package/fesm2022/legacy-form-field/testing.mjs.map +0 -1
  524. package/fesm2022/legacy-form-field.mjs +0 -726
  525. package/fesm2022/legacy-form-field.mjs.map +0 -1
  526. package/fesm2022/legacy-input/testing.mjs +0 -2
  527. package/fesm2022/legacy-input/testing.mjs.map +0 -1
  528. package/fesm2022/legacy-input.mjs +0 -97
  529. package/fesm2022/legacy-input.mjs.map +0 -1
  530. package/fesm2022/legacy-list/testing.mjs +0 -436
  531. package/fesm2022/legacy-list/testing.mjs.map +0 -1
  532. package/fesm2022/legacy-list.mjs +0 -891
  533. package/fesm2022/legacy-list.mjs.map +0 -1
  534. package/fesm2022/legacy-menu/testing.mjs +0 -52
  535. package/fesm2022/legacy-menu/testing.mjs.map +0 -1
  536. package/fesm2022/legacy-menu.mjs +0 -145
  537. package/fesm2022/legacy-menu.mjs.map +0 -1
  538. package/fesm2022/legacy-paginator/testing.mjs +0 -38
  539. package/fesm2022/legacy-paginator/testing.mjs.map +0 -1
  540. package/fesm2022/legacy-paginator.mjs +0 -92
  541. package/fesm2022/legacy-paginator.mjs.map +0 -1
  542. package/fesm2022/legacy-progress-bar/testing.mjs +0 -34
  543. package/fesm2022/legacy-progress-bar/testing.mjs.map +0 -1
  544. package/fesm2022/legacy-progress-bar.mjs +0 -210
  545. package/fesm2022/legacy-progress-bar.mjs.map +0 -1
  546. package/fesm2022/legacy-progress-spinner/testing.mjs +0 -35
  547. package/fesm2022/legacy-progress-spinner/testing.mjs.map +0 -1
  548. package/fesm2022/legacy-progress-spinner.mjs +0 -312
  549. package/fesm2022/legacy-progress-spinner.mjs.map +0 -1
  550. package/fesm2022/legacy-radio/testing.mjs +0 -54
  551. package/fesm2022/legacy-radio/testing.mjs.map +0 -1
  552. package/fesm2022/legacy-radio.mjs +0 -130
  553. package/fesm2022/legacy-radio.mjs.map +0 -1
  554. package/fesm2022/legacy-select/testing.mjs +0 -32
  555. package/fesm2022/legacy-select/testing.mjs.map +0 -1
  556. package/fesm2022/legacy-select.mjs +0 -541
  557. package/fesm2022/legacy-select.mjs.map +0 -1
  558. package/fesm2022/legacy-slide-toggle/testing.mjs +0 -47
  559. package/fesm2022/legacy-slide-toggle/testing.mjs.map +0 -1
  560. package/fesm2022/legacy-slide-toggle.mjs +0 -177
  561. package/fesm2022/legacy-slide-toggle.mjs.map +0 -1
  562. package/fesm2022/legacy-slider/testing.mjs +0 -118
  563. package/fesm2022/legacy-slider/testing.mjs.map +0 -1
  564. package/fesm2022/legacy-slider.mjs +0 -863
  565. package/fesm2022/legacy-slider.mjs.map +0 -1
  566. package/fesm2022/legacy-snack-bar/testing.mjs +0 -42
  567. package/fesm2022/legacy-snack-bar/testing.mjs.map +0 -1
  568. package/fesm2022/legacy-snack-bar.mjs +0 -128
  569. package/fesm2022/legacy-snack-bar.mjs.map +0 -1
  570. package/fesm2022/legacy-table/testing.mjs +0 -150
  571. package/fesm2022/legacy-table/testing.mjs.map +0 -1
  572. package/fesm2022/legacy-table.mjs +0 -538
  573. package/fesm2022/legacy-table.mjs.map +0 -1
  574. package/fesm2022/legacy-tabs/testing.mjs +0 -239
  575. package/fesm2022/legacy-tabs/testing.mjs.map +0 -1
  576. package/fesm2022/legacy-tabs.mjs +0 -549
  577. package/fesm2022/legacy-tabs.mjs.map +0 -1
  578. package/fesm2022/legacy-tooltip/testing.mjs +0 -31
  579. package/fesm2022/legacy-tooltip/testing.mjs.map +0 -1
  580. package/fesm2022/legacy-tooltip.mjs +0 -148
  581. package/fesm2022/legacy-tooltip.mjs.map +0 -1
  582. package/form-field/_form-field-theme.import.scss +0 -29
  583. package/form-field/_mdc-text-field-theme-variable-refresh.scss +0 -88
  584. package/grid-list/_grid-list-legacy-index.scss +0 -2
  585. package/grid-list/_grid-list-theme.import.scss +0 -10
  586. package/icon/_icon-legacy-index.scss +0 -2
  587. package/icon/_icon-theme.import.scss +0 -5
  588. package/input/_input-theme.import.scss +0 -1
  589. package/legacy-autocomplete/_autocomplete-legacy-index.scss +0 -2
  590. package/legacy-autocomplete/_autocomplete-theme.import.scss +0 -7
  591. package/legacy-autocomplete/_autocomplete-theme.scss +0 -57
  592. package/legacy-autocomplete/index.d.ts +0 -115
  593. package/legacy-autocomplete/testing/index.d.ts +0 -41
  594. package/legacy-button/_button-base.import.scss +0 -21
  595. package/legacy-button/_button-base.scss +0 -114
  596. package/legacy-button/_button-legacy-index.scss +0 -22
  597. package/legacy-button/_button-theme.import.scss +0 -11
  598. package/legacy-button/_button-theme.scss +0 -223
  599. package/legacy-button/index.d.ts +0 -87
  600. package/legacy-button/testing/index.d.ts +0 -49
  601. package/legacy-card/_card-legacy-index.scss +0 -2
  602. package/legacy-card/_card-theme.import.scss +0 -10
  603. package/legacy-card/_card-theme.scss +0 -78
  604. package/legacy-card/index.d.ts +0 -201
  605. package/legacy-card/testing/index.d.ts +0 -56
  606. package/legacy-checkbox/_checkbox-legacy-index.scss +0 -2
  607. package/legacy-checkbox/_checkbox-theme.import.scss +0 -7
  608. package/legacy-checkbox/_checkbox-theme.scss +0 -138
  609. package/legacy-checkbox/index.d.ts +0 -116
  610. package/legacy-checkbox/testing/index.d.ts +0 -30
  611. package/legacy-chips/_chips-legacy-index.scss +0 -7
  612. package/legacy-chips/_chips-theme.import.scss +0 -14
  613. package/legacy-chips/_chips-theme.scss +0 -133
  614. package/legacy-chips/index.d.ts +0 -705
  615. package/legacy-chips/testing/index.d.ts +0 -316
  616. package/legacy-core/_core-theme.scss +0 -65
  617. package/legacy-core/_core.import.scss +0 -5
  618. package/legacy-core/_core.scss +0 -18
  619. package/legacy-core/color/_all-color.import.scss +0 -4
  620. package/legacy-core/color/_all-color.scss +0 -28
  621. package/legacy-core/density/private/_all-density.import.scss +0 -3
  622. package/legacy-core/density/private/_all-density.scss +0 -46
  623. package/legacy-core/density/private/_compatibility.import.scss +0 -4
  624. package/legacy-core/density/private/_compatibility.scss +0 -74
  625. package/legacy-core/index.d.ts +0 -218
  626. package/legacy-core/option/_optgroup-theme.import.scss +0 -27
  627. package/legacy-core/option/_optgroup-theme.scss +0 -52
  628. package/legacy-core/option/_option-legacy-index.scss +0 -5
  629. package/legacy-core/option/_option-theme.import.scss +0 -27
  630. package/legacy-core/option/_option-theme.scss +0 -86
  631. package/legacy-core/testing/index.d.ts +0 -80
  632. package/legacy-core/theming/_all-theme.import.scss +0 -3
  633. package/legacy-core/theming/_all-theme.scss +0 -89
  634. package/legacy-core/typography/_all-typography.import.scss +0 -4
  635. package/legacy-core/typography/_all-typography.scss +0 -105
  636. package/legacy-dialog/_dialog-legacy-index.scss +0 -2
  637. package/legacy-dialog/_dialog-theme.import.scss +0 -10
  638. package/legacy-dialog/_dialog-theme.scss +0 -53
  639. package/legacy-dialog/index.d.ts +0 -269
  640. package/legacy-dialog/testing/index.d.ts +0 -63
  641. package/legacy-form-field/_form-field-fill-theme.import.scss +0 -13
  642. package/legacy-form-field/_form-field-fill-theme.scss +0 -136
  643. package/legacy-form-field/_form-field-legacy-index.scss +0 -29
  644. package/legacy-form-field/_form-field-legacy-theme.import.scss +0 -14
  645. package/legacy-form-field/_form-field-legacy-theme.scss +0 -204
  646. package/legacy-form-field/_form-field-outline-theme.import.scss +0 -13
  647. package/legacy-form-field/_form-field-outline-theme.scss +0 -167
  648. package/legacy-form-field/_form-field-standard-theme.import.scss +0 -11
  649. package/legacy-form-field/_form-field-standard-theme.scss +0 -55
  650. package/legacy-form-field/_form-field-theme.import.scss +0 -29
  651. package/legacy-form-field/_form-field-theme.scss +0 -278
  652. package/legacy-form-field/index.d.ts +0 -370
  653. package/legacy-form-field/testing/index.d.ts +0 -76
  654. package/legacy-input/_input-legacy-index.scss +0 -2
  655. package/legacy-input/_input-theme.import.scss +0 -11
  656. package/legacy-input/_input-theme.scss +0 -115
  657. package/legacy-input/index.d.ts +0 -41
  658. package/legacy-input/testing/index.d.ts +0 -20
  659. package/legacy-list/_list-legacy-index.scss +0 -2
  660. package/legacy-list/_list-theme.import.scss +0 -10
  661. package/legacy-list/_list-theme.scss +0 -124
  662. package/legacy-list/index.d.ts +0 -396
  663. package/legacy-list/testing/index.d.ts +0 -419
  664. package/legacy-menu/_menu-legacy-index.scss +0 -2
  665. package/legacy-menu/_menu-theme.import.scss +0 -10
  666. package/legacy-menu/_menu-theme.scss +0 -84
  667. package/legacy-menu/index.d.ts +0 -127
  668. package/legacy-menu/testing/index.d.ts +0 -47
  669. package/legacy-paginator/_paginator-legacy-index.scss +0 -2
  670. package/legacy-paginator/_paginator-theme.import.scss +0 -11
  671. package/legacy-paginator/_paginator-theme.scss +0 -92
  672. package/legacy-paginator/_paginator-variables.import.scss +0 -1
  673. package/legacy-paginator/_paginator-variables.scss +0 -13
  674. package/legacy-paginator/index.d.ts +0 -87
  675. package/legacy-paginator/testing/index.d.ts +0 -36
  676. package/legacy-prebuilt-themes/legacy-deeppurple-amber.css +0 -1
  677. package/legacy-prebuilt-themes/legacy-indigo-pink.css +0 -1
  678. package/legacy-prebuilt-themes/legacy-pink-bluegrey.css +0 -1
  679. package/legacy-prebuilt-themes/legacy-purple-green.css +0 -1
  680. package/legacy-progress-bar/_progress-bar-legacy-index.scss +0 -2
  681. package/legacy-progress-bar/_progress-bar-theme.import.scss +0 -6
  682. package/legacy-progress-bar/_progress-bar-theme.scss +0 -93
  683. package/legacy-progress-bar/index.d.ts +0 -131
  684. package/legacy-progress-bar/testing/index.d.ts +0 -28
  685. package/legacy-progress-spinner/_progress-spinner-legacy-index.scss +0 -3
  686. package/legacy-progress-spinner/_progress-spinner-theme.import.scss +0 -7
  687. package/legacy-progress-spinner/_progress-spinner-theme.scss +0 -52
  688. package/legacy-progress-spinner/index.d.ts +0 -129
  689. package/legacy-progress-spinner/testing/index.d.ts +0 -29
  690. package/legacy-radio/_radio-legacy-index.scss +0 -2
  691. package/legacy-radio/_radio-theme.import.scss +0 -8
  692. package/legacy-radio/_radio-theme.scss +0 -104
  693. package/legacy-radio/index.d.ts +0 -75
  694. package/legacy-radio/testing/index.d.ts +0 -50
  695. package/legacy-select/_select-legacy-index.scss +0 -2
  696. package/legacy-select/_select-theme.import.scss +0 -11
  697. package/legacy-select/_select-theme.scss +0 -107
  698. package/legacy-select/index.d.ts +0 -230
  699. package/legacy-select/testing/index.d.ts +0 -38
  700. package/legacy-slide-toggle/_slide-toggle-legacy-index.scss +0 -3
  701. package/legacy-slide-toggle/_slide-toggle-theme.import.scss +0 -11
  702. package/legacy-slide-toggle/_slide-toggle-theme.scss +0 -111
  703. package/legacy-slide-toggle/index.d.ts +0 -113
  704. package/legacy-slide-toggle/testing/index.d.ts +0 -34
  705. package/legacy-slider/_slider-legacy-index.scss +0 -3
  706. package/legacy-slider/_slider-theme.import.scss +0 -8
  707. package/legacy-slider/_slider-theme.scss +0 -210
  708. package/legacy-slider/index.d.ts +0 -303
  709. package/legacy-slider/testing/index.d.ts +0 -68
  710. package/legacy-snack-bar/_snack-bar-legacy-index.scss +0 -2
  711. package/legacy-snack-bar/_snack-bar-theme.import.scss +0 -11
  712. package/legacy-snack-bar/_snack-bar-theme.scss +0 -72
  713. package/legacy-snack-bar/index.d.ts +0 -118
  714. package/legacy-snack-bar/testing/index.d.ts +0 -28
  715. package/legacy-table/_table-legacy-index.scss +0 -3
  716. package/legacy-table/_table-theme.import.scss +0 -8
  717. package/legacy-table/_table-theme.scss +0 -78
  718. package/legacy-table/index.d.ts +0 -298
  719. package/legacy-table/testing/index.d.ts +0 -149
  720. package/legacy-tabs/_tabs-common.import.scss +0 -11
  721. package/legacy-tabs/_tabs-common.scss +0 -173
  722. package/legacy-tabs/_tabs-legacy-index.scss +0 -6
  723. package/legacy-tabs/_tabs-theme.import.scss +0 -9
  724. package/legacy-tabs/_tabs-theme.scss +0 -188
  725. package/legacy-tabs/index.d.ts +0 -338
  726. package/legacy-tabs/testing/index.d.ts +0 -195
  727. package/legacy-tooltip/_tooltip-legacy-index.scss +0 -3
  728. package/legacy-tooltip/_tooltip-theme.import.scss +0 -9
  729. package/legacy-tooltip/_tooltip-theme.scss +0 -67
  730. package/legacy-tooltip/index.d.ts +0 -117
  731. package/legacy-tooltip/testing/index.d.ts +0 -30
  732. package/list/_list-theme.import.scss +0 -1
  733. package/menu/_menu-theme.import.scss +0 -2
  734. package/paginator/_paginator-theme.import.scss +0 -6
  735. package/paginator/_paginator-variables.import.scss +0 -1
  736. package/progress-bar/_progress-bar-theme.import.scss +0 -3
  737. package/progress-spinner/_progress-spinner-theme.import.scss +0 -3
  738. package/radio/_radio-theme.import.scss +0 -4
  739. package/select/_select-theme.import.scss +0 -7
  740. package/sidenav/_sidenav-legacy-index.scss +0 -2
  741. package/sidenav/_sidenav-theme.import.scss +0 -8
  742. package/slide-toggle/_slide-toggle-theme.import.scss +0 -7
  743. package/slider/_slider-theme.import.scss +0 -2
  744. package/snack-bar/_snack-bar-theme.import.scss +0 -5
  745. package/sort/_sort-legacy-index.scss +0 -2
  746. package/sort/_sort-theme.import.scss +0 -5
  747. package/stepper/_stepper-legacy-index.scss +0 -7
  748. package/stepper/_stepper-theme.import.scss +0 -16
  749. package/stepper/_stepper-variables.import.scss +0 -6
  750. package/table/_table-flex-styles.import.scss +0 -1
  751. package/table/_table-theme.import.scss +0 -8
  752. package/tabs/_tabs-common.import.scss +0 -11
  753. package/tabs/_tabs-theme.import.scss +0 -5
  754. package/toolbar/_toolbar-legacy-index.scss +0 -4
  755. package/toolbar/_toolbar-theme.import.scss +0 -14
  756. package/toolbar/_toolbar-variables.import.scss +0 -1
  757. package/tooltip/_tooltip-theme.import.scss +0 -2
  758. package/tree/_tree-legacy-index.scss +0 -2
  759. package/tree/_tree-theme.import.scss +0 -9
  760. package/tree/_tree-variables.import.scss +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.mjs","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-container.html","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/module.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog_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 {ViewContainerRef, ComponentFactoryResolver, Injector} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {_defaultParams} from './dialog-animations';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector?: Injector;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */\n ariaModal?: boolean = true;\n\n /**\n * Where the dialog should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Whether to wait for the opening animation to finish before trapping focus. */\n delayFocusTrap?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n /**\n * Duration of the enter animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n enterAnimationDuration?: string | number;\n\n /**\n * Duration of the exit animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n exitAnimationDuration?: string | number;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 {FocusMonitor, FocusTrapFactory, InteractivityChecker} from '@angular/cdk/a11y';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n NgZone,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\n\n/** Event that captures the state of dialog container animations. */\ninterface LegacyDialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/** Class added when the dialog is open. */\nconst OPEN_CLASS = 'mdc-dialog--open';\n\n/** Class added while the dialog is opening. */\nconst OPENING_CLASS = 'mdc-dialog--opening';\n\n/** Class added while the dialog is closing. */\nconst CLOSING_CLASS = 'mdc-dialog--closing';\n\n/** Duration of the opening animation in milliseconds. */\nexport const OPEN_ANIMATION_DURATION = 150;\n\n/** Duration of the closing animation in milliseconds. */\nexport const CLOSE_ANIMATION_DURATION = 75;\n\n/**\n * Base class for the `MatDialogContainer`. The base class does not implement\n * animations as these are left to implementers of the dialog container.\n */\n// tslint:disable-next-line:validate-decorators\n@Component({template: ''})\nexport abstract class _MatDialogContainerBase extends CdkDialogContainer<MatDialogConfig> {\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<LegacyDialogAnimationEvent>();\n\n constructor(\n elementRef: ElementRef,\n focusTrapFactory: FocusTrapFactory,\n @Optional() @Inject(DOCUMENT) _document: any,\n dialogConfig: MatDialogConfig,\n interactivityChecker: InteractivityChecker,\n ngZone: NgZone,\n overlayRef: OverlayRef,\n focusMonitor?: FocusMonitor,\n ) {\n super(\n elementRef,\n focusTrapFactory,\n _document,\n dialogConfig,\n interactivityChecker,\n ngZone,\n overlayRef,\n focusMonitor,\n );\n }\n\n /** Starts the dialog exit animation. */\n abstract _startExitAnimation(): void;\n\n protected override _captureInitialFocus(): void {\n if (!this._config.delayFocusTrap) {\n this._trapFocus();\n }\n }\n\n /**\n * Callback for when the open dialog animation has finished. Intended to\n * be called by sub-classes that use different animation implementations.\n */\n protected _openAnimationDone(totalTime: number) {\n if (this._config.delayFocusTrap) {\n this._trapFocus();\n }\n\n this._animationStateChanged.next({state: 'opened', totalTime});\n }\n}\n\nconst TRANSITION_DURATION_PROPERTY = '--mat-dialog-transition-duration';\n\n// TODO(mmalerba): Remove this function after animation durations are required\n// to be numbers.\n/**\n * Converts a CSS time string to a number in ms. If the given time is already a\n * number, it is assumed to be in ms.\n */\nfunction parseCssTime(time: string | number | undefined): number | null {\n if (time == null) {\n return null;\n }\n if (typeof time === 'number') {\n return time;\n }\n if (time.endsWith('ms')) {\n return coerceNumberProperty(time.substring(0, time.length - 2));\n }\n if (time.endsWith('s')) {\n return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\n }\n if (time === '0') {\n return 0;\n }\n return null; // anything else is invalid.\n}\n\n/**\n * Internal component that wraps user-provided dialog content in a MDC dialog.\n * @docs-private\n */\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Disabled for consistency with the non-MDC dialog container.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n 'class': 'mat-mdc-dialog-container mdc-dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': '_config.ariaModal',\n '[id]': '_config.id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledBy',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n },\n})\nexport class MatDialogContainer extends _MatDialogContainerBase implements OnDestroy {\n /** Whether animations are enabled. */\n _animationsEnabled: boolean = this._animationMode !== 'NoopAnimations';\n\n /** Host element of the dialog container component. */\n private _hostElement: HTMLElement = this._elementRef.nativeElement;\n /** Duration of the dialog open animation. */\n private _enterAnimationDuration = this._animationsEnabled\n ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION\n : 0;\n /** Duration of the dialog close animation. */\n private _exitAnimationDuration = this._animationsEnabled\n ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION\n : 0;\n /** Current timer for dialog animations. */\n private _animationTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n elementRef: ElementRef,\n focusTrapFactory: FocusTrapFactory,\n @Optional() @Inject(DOCUMENT) document: any,\n dialogConfig: MatDialogConfig,\n checker: InteractivityChecker,\n ngZone: NgZone,\n overlayRef: OverlayRef,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string,\n focusMonitor?: FocusMonitor,\n ) {\n super(\n elementRef,\n focusTrapFactory,\n document,\n dialogConfig,\n checker,\n ngZone,\n overlayRef,\n focusMonitor,\n );\n }\n\n protected override _contentAttached(): void {\n // Delegate to the original dialog-container initialization (i.e. saving the\n // previous element, setting up the focus trap and moving focus to the container).\n super._contentAttached();\n\n // Note: Usually we would be able to use the MDC dialog foundation here to handle\n // the dialog animation for us, but there are a few reasons why we just leverage\n // their styles and not use the runtime foundation code:\n // 1. Foundation does not allow us to disable animations.\n // 2. Foundation contains unnecessary features we don't need and aren't\n // tree-shakeable. e.g. background scrim, keyboard event handlers for ESC button.\n // 3. Foundation uses unnecessary timers for animations to work around limitations\n // in React's `setState` mechanism.\n // https://github.com/material-components/material-components-web/pull/3682.\n this._startOpenAnimation();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n }\n\n /** Starts the dialog open animation if enabled. */\n private _startOpenAnimation() {\n this._animationStateChanged.emit({state: 'opening', totalTime: this._enterAnimationDuration});\n\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(\n TRANSITION_DURATION_PROPERTY,\n `${this._enterAnimationDuration}ms`,\n );\n\n // We need to give the `setProperty` call from above some time to be applied.\n // One would expect that the open class is added once the animation finished, but MDC\n // uses the open class in combination with the opening class to start the animation.\n this._requestAnimationFrame(() => this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS));\n this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\n } else {\n this._hostElement.classList.add(OPEN_CLASS);\n // Note: We could immediately finish the dialog opening here with noop animations,\n // but we defer until next tick so that consumers can subscribe to `afterOpened`.\n // Executing this immediately would mean that `afterOpened` emits synchronously\n // on `dialog.open` before the consumer had a change to subscribe to `afterOpened`.\n Promise.resolve().then(() => this._finishDialogOpen());\n }\n }\n\n /**\n * Starts the exit animation of the dialog if enabled. This method is\n * called by the dialog ref.\n */\n _startExitAnimation(): void {\n this._animationStateChanged.emit({state: 'closing', totalTime: this._exitAnimationDuration});\n this._hostElement.classList.remove(OPEN_CLASS);\n\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(\n TRANSITION_DURATION_PROPERTY,\n `${this._exitAnimationDuration}ms`,\n );\n\n // We need to give the `setProperty` call from above some time to be applied.\n this._requestAnimationFrame(() => this._hostElement.classList.add(CLOSING_CLASS));\n this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\n } else {\n // This subscription to the `OverlayRef#backdropClick` observable in the `DialogRef` is\n // set up before any user can subscribe to the backdrop click. The subscription triggers\n // the dialog close and this method synchronously. If we'd synchronously emit the `CLOSED`\n // animation state event if animations are disabled, the overlay would be disposed\n // immediately and all other subscriptions to `DialogRef#backdropClick` would be silently\n // skipped. We work around this by waiting with the dialog close until the next tick when\n // all subscriptions have been fired as expected. This is not an ideal solution, but\n // there doesn't seem to be any other good way. Alternatives that have been considered:\n // 1. Deferring `DialogRef.close`. This could be a breaking change due to a new microtask.\n // Also this issue is specific to the MDC implementation where the dialog could\n // technically be closed synchronously. In the non-MDC one, Angular animations are used\n // and closing always takes at least a tick.\n // 2. Ensuring that user subscriptions to `backdropClick`, `keydownEvents` in the dialog\n // ref are first. This would solve the issue, but has the risk of memory leaks and also\n // doesn't solve the case where consumers call `DialogRef.close` in their subscriptions.\n // Based on the fact that this is specific to the MDC-based implementation of the dialog\n // animations, the defer is applied here.\n Promise.resolve().then(() => this._finishDialogClose());\n }\n }\n\n /**\n * Completes the dialog open by clearing potential animation classes, trapping\n * focus and emitting an opened event.\n */\n private _finishDialogOpen = () => {\n this._clearAnimationClasses();\n this._openAnimationDone(this._enterAnimationDuration);\n };\n\n /**\n * Completes the dialog close by clearing potential animation classes, restoring\n * focus and emitting a closed event.\n */\n private _finishDialogClose = () => {\n this._clearAnimationClasses();\n this._animationStateChanged.emit({state: 'closed', totalTime: this._exitAnimationDuration});\n };\n\n /** Clears all dialog animation classes. */\n private _clearAnimationClasses() {\n this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\n }\n\n private _waitForAnimationToComplete(duration: number, callback: () => void) {\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n\n // Note that we want this timer to run inside the NgZone, because we want\n // the related events like `afterClosed` to be inside the zone as well.\n this._animationTimer = setTimeout(callback, duration);\n }\n\n /** Runs a callback in `requestAnimationFrame`, if available. */\n private _requestAnimationFrame(callback: () => void) {\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n });\n }\n}\n","<div class=\"mdc-dialog__container\">\n <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n</div>\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\n/** Possible states of the lifecycle of a dialog. */\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {DialogPosition, MatDialogConfig} from './dialog-config';\nimport {_MatDialogContainerBase} from './dialog-container';\nimport {filter, take} from 'rxjs/operators';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentRef} from '@angular/core';\n\nexport const enum MatDialogState {\n OPEN,\n CLOSING,\n CLOSED,\n}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /**\n * `ComponentRef` of the component opened into the dialog. Will be\n * null when the dialog is opened using a `TemplateRef`.\n */\n readonly componentRef: ComponentRef<T> | null;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined;\n\n /** Unique ID for the dialog. */\n id: string;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n // TODO(crisbeto): we shouldn't have to declare this property, because `DialogRef.close`\n // already has a second `options` parameter that we can use. The problem is that internal tests\n // have assertions like `expect(MatDialogRef.close).toHaveBeenCalledWith(foo)` which will break,\n // because it'll be called with two arguments by things like `MatDialogClose`.\n /** Interaction that caused the dialog to close. */\n private _closeInteractionType: FocusOrigin | undefined;\n\n constructor(\n private _ref: DialogRef<R, T>,\n config: MatDialogConfig,\n public _containerInstance: _MatDialogContainerBase,\n ) {\n this.disableClose = config.disableClose;\n this.id = _ref.id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'opened'),\n take(1),\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'closed'),\n take(1),\n )\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _ref.overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._finishDialogClose();\n });\n\n merge(\n this.backdropClick(),\n this.keydownEvents().pipe(\n filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)),\n ),\n ).subscribe(event => {\n if (!this.disableClose) {\n event.preventDefault();\n _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'closing'),\n take(1),\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._ref.overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(\n () => this._finishDialogClose(),\n event.totalTime + 100,\n );\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._ref.closed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._ref.backdropClick;\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._ref.keydownEvents;\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._ref.config.positionStrategy as GlobalPositionStrategy;\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._ref.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._ref.updateSize(width, height);\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._ref.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._ref.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._ref.close(this._result, {focusOrigin: this._closeInteractionType});\n this.componentInstance = null!;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n (ref as unknown as {_closeInteractionType: FocusOrigin})._closeInteractionType = interactionType;\n return ref.close(result);\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 {ComponentType, Overlay, OverlayContainer, ScrollStrategy} from '@angular/cdk/overlay';\nimport {Location} from '@angular/common';\nimport {\n ANIMATION_MODULE_TYPE,\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {_MatDialogContainerBase, MatDialogContainer} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\nimport {defer, Observable, Subject} from 'rxjs';\nimport {Dialog, DialogConfig} from '@angular/cdk/dialog';\nimport {startWith} from 'rxjs/operators';\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatMdcDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken<MatDialogConfig>(\n 'mat-mdc-dialog-default-options',\n);\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-mdc-dialog-scroll-strategy',\n);\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay,\n): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/**\n * Base class for dialog services. The base dialog service allows\n * for arbitrary dialog refs and dialog container components.\n */\n@Injectable()\nexport abstract class _MatDialogBase<C extends _MatDialogContainerBase> implements OnDestroy {\n private readonly _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _scrollStrategy: () => ScrollStrategy;\n protected _idPrefix = 'mat-dialog-';\n private _dialog: Dialog;\n protected dialogConfigClass = MatDialogConfig;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n private _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() =>\n this.openDialogs.length\n ? this._getAfterAllClosed()\n : this._getAfterAllClosed().pipe(startWith(undefined)),\n ) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n injector: Injector,\n private _defaultOptions: MatDialogConfig | undefined,\n private _parentDialog: _MatDialogBase<C> | undefined,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 15.0.0\n */\n _overlayContainer: OverlayContainer,\n scrollStrategy: any,\n private _dialogRefConstructor: Type<MatDialogRef<any>>,\n private _dialogContainerType: Type<C>,\n private _dialogDataToken: InjectionToken<any>,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 14.0.0\n */\n _animationMode?: 'NoopAnimations' | 'BrowserAnimations',\n ) {\n this._scrollStrategy = scrollStrategy;\n this._dialog = injector.get(Dialog);\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(\n template: TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(\n template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R> {\n let dialogRef: MatDialogRef<T, R>;\n config = {...(this._defaultOptions || new MatDialogConfig()), ...config};\n config.id = config.id || `${this._idPrefix}${uniqueId++}`;\n config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\n\n const cdkRef = this._dialog.open<R, D, T>(componentOrTemplateRef, {\n ...config,\n positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on destroy, because this service cleans up its open dialogs as well.\n // We want to do the cleanup here, rather than the CDK service, because the CDK destroys\n // the dialogs immediately whereas we want it to wait for the animations to finish.\n closeOnDestroy: false,\n // Disable closing on detachments so that we can sync up the animation.\n // The Material dialog ref handles this manually.\n closeOnOverlayDetachments: false,\n container: {\n type: this._dialogContainerType,\n providers: () => [\n // Provide our config as the CDK config as well since it has the same interface as the\n // CDK one, but it contains the actual values passed in by the user for things like\n // `disableClose` which we disable for the CDK dialog since we handle it ourselves.\n {provide: this.dialogConfigClass, useValue: config},\n {provide: DialogConfig, useValue: config},\n ],\n },\n templateContext: () => ({dialogRef}),\n providers: (ref, cdkConfig, dialogContainer) => {\n dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\n dialogRef.updatePosition(config?.position);\n return [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: cdkConfig.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef},\n ];\n },\n });\n\n // This can't be assigned in the `providers` callback, because\n // the instance hasn't been assigned to the CDK ref yet.\n (dialogRef! as {componentRef: ComponentRef<T>}).componentRef = cdkRef.componentRef!;\n dialogRef!.componentInstance = cdkRef.componentInstance!;\n\n this.openDialogs.push(dialogRef!);\n this.afterOpened.next(dialogRef!);\n\n dialogRef!.afterClosed().subscribe(() => {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n if (!this.openDialogs.length) {\n this._getAfterAllClosed().next();\n }\n }\n });\n\n return dialogRef!;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n dialogs[i].close();\n }\n }\n}\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog extends _MatDialogBase<MatDialogContainer> {\n constructor(\n overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() @SkipSelf() parentDialog: MatDialog,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 15.0.0\n */\n overlayContainer: OverlayContainer,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 14.0.0\n */\n @Optional()\n @Inject(ANIMATION_MODULE_TYPE)\n animationMode?: 'NoopAnimations' | 'BrowserAnimations',\n ) {\n super(\n overlay,\n injector,\n defaultOptions,\n parentDialog,\n overlayContainer,\n scrollStrategy,\n MatDialogRef,\n MatDialogContainer,\n MAT_DIALOG_DATA,\n animationMode,\n );\n\n this._idPrefix = 'mat-mdc-dialog-';\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 {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\n\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n },\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screen-reader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(\n this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse',\n this.dialogResult,\n );\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-mdc-dialog-title mdc-dialog__title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit {\n @Input() id: string = `mat-mdc-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog,\n ) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n const container = this._dialogRef._containerInstance;\n\n if (container && !container._ariaLabelledBy) {\n container._ariaLabelledBy = this.id;\n }\n });\n }\n }\n}\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-mdc-dialog-content mdc-dialog__content'},\n})\nexport class MatDialogContent {}\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {\n 'class': 'mat-mdc-dialog-actions mdc-dialog__actions',\n '[class.mat-mdc-dialog-actions-align-center]': 'align === \"center\"',\n '[class.mat-mdc-dialog-actions-align-end]': 'align === \"end\"',\n },\n})\nexport class MatDialogActions {\n /**\n * Horizontal alignment of action buttons.\n */\n @Input() align?: 'start' | 'center' | 'end' = 'start';\n}\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-mdc-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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 {DialogModule} from '@angular/cdk/dialog';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n@NgModule({\n imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER],\n})\nexport class MatDialogModule {}\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n query,\n animateChild,\n group,\n} from '@angular/animations';\n\n/**\n * Default parameters for the animation for backwards compatibility.\n * @docs-private\n */\nexport const _defaultParams = {\n params: {enterAnimationDuration: '150ms', exitAnimationDuration: '75ms'},\n};\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition(\n '* => enter',\n group([\n animate(\n '{{enterAnimationDuration}} cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}),\n ),\n query('@*', animateChild(), {optional: true}),\n ]),\n _defaultParams,\n ),\n transition(\n '* => void, * => exit',\n group([\n animate('{{exitAnimationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0})),\n query('@*', animateChild(), {optional: true}),\n ]),\n _defaultParams,\n ),\n ]),\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.MatDialogConfig","i3","i1","ANIMATION_MODULE_TYPE","i1.MatDialogRef","i2.MatDialog"],"mappings":"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"}
1
+ {"version":3,"file":"dialog.mjs","sources":["../../../../../../src/material/dialog/dialog-config.ts","../../../../../../src/material/dialog/dialog-container.ts","../../../../../../src/material/dialog/dialog-container.html","../../../../../../src/material/dialog/dialog-ref.ts","../../../../../../src/material/dialog/dialog.ts","../../../../../../src/material/dialog/dialog-content-directives.ts","../../../../../../src/material/dialog/module.ts","../../../../../../src/material/dialog/dialog-animations.ts","../../../../../../src/material/dialog/dialog_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 {ViewContainerRef, ComponentFactoryResolver, Injector} from '@angular/core';\nimport {Direction} from '@angular/cdk/bidi';\nimport {ScrollStrategy} from '@angular/cdk/overlay';\nimport {_defaultParams} from './dialog-animations';\n\n/** Options for where to set focus to automatically on dialog open */\nexport type AutoFocusTarget = 'dialog' | 'first-tabbable' | 'first-heading';\n\n/** Valid ARIA roles for a dialog element. */\nexport type DialogRole = 'dialog' | 'alertdialog';\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\n/**\n * Configuration for opening a modal dialog with the MatDialog service.\n */\nexport class MatDialogConfig<D = any> {\n /**\n * Where the attached component should live in Angular's *logical* component tree.\n * This affects what is available for injection and the change detection order for the\n * component instantiated inside of the dialog. This does not affect where the dialog\n * content will be rendered.\n */\n viewContainerRef?: ViewContainerRef;\n\n /**\n * Injector used for the instantiation of the component to be attached. If provided,\n * takes precedence over the injector indirectly provided by `ViewContainerRef`.\n */\n injector?: Injector;\n\n /** ID for the dialog. If omitted, a unique one will be generated. */\n id?: string;\n\n /** The ARIA role of the dialog element. */\n role?: DialogRole = 'dialog';\n\n /** Custom class for the overlay pane. */\n panelClass?: string | string[] = '';\n\n /** Whether the dialog has a backdrop. */\n hasBackdrop?: boolean = true;\n\n /** Custom class for the backdrop. */\n backdropClass?: string | string[] = '';\n\n /** Whether the user can use escape or clicking on the backdrop to close the modal. */\n disableClose?: boolean = false;\n\n /** Width of the dialog. */\n width?: string = '';\n\n /** Height of the dialog. */\n height?: string = '';\n\n /** Min-width of the dialog. If a number is provided, assumes pixel units. */\n minWidth?: number | string;\n\n /** Min-height of the dialog. If a number is provided, assumes pixel units. */\n minHeight?: number | string;\n\n /** Max-width of the dialog. If a number is provided, assumes pixel units. Defaults to 80vw. */\n maxWidth?: number | string = '80vw';\n\n /** Max-height of the dialog. If a number is provided, assumes pixel units. */\n maxHeight?: number | string;\n\n /** Position overrides. */\n position?: DialogPosition;\n\n /** Data being injected into the child component. */\n data?: D | null = null;\n\n /** Layout direction for the dialog's content. */\n direction?: Direction;\n\n /** ID of the element that describes the dialog. */\n ariaDescribedBy?: string | null = null;\n\n /** ID of the element that labels the dialog. */\n ariaLabelledBy?: string | null = null;\n\n /** Aria label to assign to the dialog element. */\n ariaLabel?: string | null = null;\n\n /** Whether this is a modal dialog. Used to set the `aria-modal` attribute. */\n ariaModal?: boolean = true;\n\n /**\n * Where the dialog should focus on open.\n * @breaking-change 14.0.0 Remove boolean option from autoFocus. Use string or\n * AutoFocusTarget instead.\n */\n autoFocus?: AutoFocusTarget | string | boolean = 'first-tabbable';\n\n /**\n * Whether the dialog should restore focus to the\n * previously-focused element, after it's closed.\n */\n restoreFocus?: boolean = true;\n\n /** Whether to wait for the opening animation to finish before trapping focus. */\n delayFocusTrap?: boolean = true;\n\n /** Scroll strategy to be used for the dialog. */\n scrollStrategy?: ScrollStrategy;\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * Note that this usually doesn't include clicking on links (unless the user is using\n * the `HashLocationStrategy`).\n */\n closeOnNavigation?: boolean = true;\n\n /** Alternate `ComponentFactoryResolver` to use when resolving the associated component. */\n componentFactoryResolver?: ComponentFactoryResolver;\n\n /**\n * Duration of the enter animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n enterAnimationDuration?: string | number;\n\n /**\n * Duration of the exit animation in ms.\n * Should be a number, string type is deprecated.\n * @breaking-change 17.0.0 Remove string signature.\n */\n exitAnimationDuration?: string | number;\n\n // TODO(jelbourn): add configuration for lifecycle hooks, ARIA labelling.\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 {FocusMonitor, FocusTrapFactory, InteractivityChecker} from '@angular/cdk/a11y';\nimport {OverlayRef} from '@angular/cdk/overlay';\nimport {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n NgZone,\n OnDestroy,\n Optional,\n ViewEncapsulation,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {ANIMATION_MODULE_TYPE} from '@angular/platform-browser/animations';\nimport {CdkDialogContainer} from '@angular/cdk/dialog';\nimport {coerceNumberProperty} from '@angular/cdk/coercion';\n\n/** Event that captures the state of dialog container animations. */\ninterface LegacyDialogAnimationEvent {\n state: 'opened' | 'opening' | 'closing' | 'closed';\n totalTime: number;\n}\n\n/** Class added when the dialog is open. */\nconst OPEN_CLASS = 'mdc-dialog--open';\n\n/** Class added while the dialog is opening. */\nconst OPENING_CLASS = 'mdc-dialog--opening';\n\n/** Class added while the dialog is closing. */\nconst CLOSING_CLASS = 'mdc-dialog--closing';\n\n/** Duration of the opening animation in milliseconds. */\nexport const OPEN_ANIMATION_DURATION = 150;\n\n/** Duration of the closing animation in milliseconds. */\nexport const CLOSE_ANIMATION_DURATION = 75;\n\n@Component({\n selector: 'mat-dialog-container',\n templateUrl: 'dialog-container.html',\n styleUrls: ['dialog.css'],\n encapsulation: ViewEncapsulation.None,\n // Disabled for consistency with the non-MDC dialog container.\n // tslint:disable-next-line:validate-decorators\n changeDetection: ChangeDetectionStrategy.Default,\n host: {\n 'class': 'mat-mdc-dialog-container mdc-dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': '_config.ariaModal',\n '[id]': '_config.id',\n '[attr.role]': '_config.role',\n '[attr.aria-labelledby]': '_config.ariaLabel ? null : _ariaLabelledByQueue[0]',\n '[attr.aria-label]': '_config.ariaLabel',\n '[attr.aria-describedby]': '_config.ariaDescribedBy || null',\n '[class._mat-animation-noopable]': '!_animationsEnabled',\n },\n})\nexport class MatDialogContainer extends CdkDialogContainer<MatDialogConfig> implements OnDestroy {\n /** Emits when an animation state changes. */\n _animationStateChanged = new EventEmitter<LegacyDialogAnimationEvent>();\n\n /** Whether animations are enabled. */\n _animationsEnabled: boolean = this._animationMode !== 'NoopAnimations';\n\n /** Host element of the dialog container component. */\n private _hostElement: HTMLElement = this._elementRef.nativeElement;\n /** Duration of the dialog open animation. */\n private _enterAnimationDuration = this._animationsEnabled\n ? parseCssTime(this._config.enterAnimationDuration) ?? OPEN_ANIMATION_DURATION\n : 0;\n /** Duration of the dialog close animation. */\n private _exitAnimationDuration = this._animationsEnabled\n ? parseCssTime(this._config.exitAnimationDuration) ?? CLOSE_ANIMATION_DURATION\n : 0;\n /** Current timer for dialog animations. */\n private _animationTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n elementRef: ElementRef,\n focusTrapFactory: FocusTrapFactory,\n @Optional() @Inject(DOCUMENT) _document: any,\n dialogConfig: MatDialogConfig,\n interactivityChecker: InteractivityChecker,\n ngZone: NgZone,\n overlayRef: OverlayRef,\n @Optional() @Inject(ANIMATION_MODULE_TYPE) private _animationMode?: string,\n focusMonitor?: FocusMonitor,\n ) {\n super(\n elementRef,\n focusTrapFactory,\n _document,\n dialogConfig,\n interactivityChecker,\n ngZone,\n overlayRef,\n focusMonitor,\n );\n }\n\n protected override _contentAttached(): void {\n // Delegate to the original dialog-container initialization (i.e. saving the\n // previous element, setting up the focus trap and moving focus to the container).\n super._contentAttached();\n\n // Note: Usually we would be able to use the MDC dialog foundation here to handle\n // the dialog animation for us, but there are a few reasons why we just leverage\n // their styles and not use the runtime foundation code:\n // 1. Foundation does not allow us to disable animations.\n // 2. Foundation contains unnecessary features we don't need and aren't\n // tree-shakeable. e.g. background scrim, keyboard event handlers for ESC button.\n // 3. Foundation uses unnecessary timers for animations to work around limitations\n // in React's `setState` mechanism.\n // https://github.com/material-components/material-components-web/pull/3682.\n this._startOpenAnimation();\n }\n\n /** Starts the dialog open animation if enabled. */\n private _startOpenAnimation() {\n this._animationStateChanged.emit({state: 'opening', totalTime: this._enterAnimationDuration});\n\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(\n TRANSITION_DURATION_PROPERTY,\n `${this._enterAnimationDuration}ms`,\n );\n\n // We need to give the `setProperty` call from above some time to be applied.\n // One would expect that the open class is added once the animation finished, but MDC\n // uses the open class in combination with the opening class to start the animation.\n this._requestAnimationFrame(() => this._hostElement.classList.add(OPENING_CLASS, OPEN_CLASS));\n this._waitForAnimationToComplete(this._enterAnimationDuration, this._finishDialogOpen);\n } else {\n this._hostElement.classList.add(OPEN_CLASS);\n // Note: We could immediately finish the dialog opening here with noop animations,\n // but we defer until next tick so that consumers can subscribe to `afterOpened`.\n // Executing this immediately would mean that `afterOpened` emits synchronously\n // on `dialog.open` before the consumer had a change to subscribe to `afterOpened`.\n Promise.resolve().then(() => this._finishDialogOpen());\n }\n }\n\n /**\n * Starts the exit animation of the dialog if enabled. This method is\n * called by the dialog ref.\n */\n _startExitAnimation(): void {\n this._animationStateChanged.emit({state: 'closing', totalTime: this._exitAnimationDuration});\n this._hostElement.classList.remove(OPEN_CLASS);\n\n if (this._animationsEnabled) {\n this._hostElement.style.setProperty(\n TRANSITION_DURATION_PROPERTY,\n `${this._exitAnimationDuration}ms`,\n );\n\n // We need to give the `setProperty` call from above some time to be applied.\n this._requestAnimationFrame(() => this._hostElement.classList.add(CLOSING_CLASS));\n this._waitForAnimationToComplete(this._exitAnimationDuration, this._finishDialogClose);\n } else {\n // This subscription to the `OverlayRef#backdropClick` observable in the `DialogRef` is\n // set up before any user can subscribe to the backdrop click. The subscription triggers\n // the dialog close and this method synchronously. If we'd synchronously emit the `CLOSED`\n // animation state event if animations are disabled, the overlay would be disposed\n // immediately and all other subscriptions to `DialogRef#backdropClick` would be silently\n // skipped. We work around this by waiting with the dialog close until the next tick when\n // all subscriptions have been fired as expected. This is not an ideal solution, but\n // there doesn't seem to be any other good way. Alternatives that have been considered:\n // 1. Deferring `DialogRef.close`. This could be a breaking change due to a new microtask.\n // Also this issue is specific to the MDC implementation where the dialog could\n // technically be closed synchronously. In the non-MDC one, Angular animations are used\n // and closing always takes at least a tick.\n // 2. Ensuring that user subscriptions to `backdropClick`, `keydownEvents` in the dialog\n // ref are first. This would solve the issue, but has the risk of memory leaks and also\n // doesn't solve the case where consumers call `DialogRef.close` in their subscriptions.\n // Based on the fact that this is specific to the MDC-based implementation of the dialog\n // animations, the defer is applied here.\n Promise.resolve().then(() => this._finishDialogClose());\n }\n }\n\n /**\n * Completes the dialog open by clearing potential animation classes, trapping\n * focus and emitting an opened event.\n */\n private _finishDialogOpen = () => {\n this._clearAnimationClasses();\n this._openAnimationDone(this._enterAnimationDuration);\n };\n\n /**\n * Completes the dialog close by clearing potential animation classes, restoring\n * focus and emitting a closed event.\n */\n private _finishDialogClose = () => {\n this._clearAnimationClasses();\n this._animationStateChanged.emit({state: 'closed', totalTime: this._exitAnimationDuration});\n };\n\n /** Clears all dialog animation classes. */\n private _clearAnimationClasses() {\n this._hostElement.classList.remove(OPENING_CLASS, CLOSING_CLASS);\n }\n\n private _waitForAnimationToComplete(duration: number, callback: () => void) {\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n\n // Note that we want this timer to run inside the NgZone, because we want\n // the related events like `afterClosed` to be inside the zone as well.\n this._animationTimer = setTimeout(callback, duration);\n }\n\n /** Runs a callback in `requestAnimationFrame`, if available. */\n private _requestAnimationFrame(callback: () => void) {\n this._ngZone.runOutsideAngular(() => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(callback);\n } else {\n callback();\n }\n });\n }\n\n protected override _captureInitialFocus(): void {\n if (!this._config.delayFocusTrap) {\n this._trapFocus();\n }\n }\n\n /**\n * Callback for when the open dialog animation has finished. Intended to\n * be called by sub-classes that use different animation implementations.\n */\n protected _openAnimationDone(totalTime: number) {\n if (this._config.delayFocusTrap) {\n this._trapFocus();\n }\n\n this._animationStateChanged.next({state: 'opened', totalTime});\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n if (this._animationTimer !== null) {\n clearTimeout(this._animationTimer);\n }\n }\n}\n\nconst TRANSITION_DURATION_PROPERTY = '--mat-dialog-transition-duration';\n\n// TODO(mmalerba): Remove this function after animation durations are required\n// to be numbers.\n/**\n * Converts a CSS time string to a number in ms. If the given time is already a\n * number, it is assumed to be in ms.\n */\nfunction parseCssTime(time: string | number | undefined): number | null {\n if (time == null) {\n return null;\n }\n if (typeof time === 'number') {\n return time;\n }\n if (time.endsWith('ms')) {\n return coerceNumberProperty(time.substring(0, time.length - 2));\n }\n if (time.endsWith('s')) {\n return coerceNumberProperty(time.substring(0, time.length - 1)) * 1000;\n }\n if (time === '0') {\n return 0;\n }\n return null; // anything else is invalid.\n}\n","<div class=\"mdc-dialog__container\">\n <div class=\"mat-mdc-dialog-surface mdc-dialog__surface\">\n <ng-template cdkPortalOutlet></ng-template>\n </div>\n</div>\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\n/** Possible states of the lifecycle of a dialog. */\nimport {FocusOrigin} from '@angular/cdk/a11y';\nimport {merge, Observable, Subject} from 'rxjs';\nimport {DialogRef} from '@angular/cdk/dialog';\nimport {DialogPosition, MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer} from './dialog-container';\nimport {filter, take} from 'rxjs/operators';\nimport {ESCAPE, hasModifierKey} from '@angular/cdk/keycodes';\nimport {GlobalPositionStrategy} from '@angular/cdk/overlay';\nimport {ComponentRef} from '@angular/core';\n\nexport const enum MatDialogState {\n OPEN,\n CLOSING,\n CLOSED,\n}\n\n/**\n * Reference to a dialog opened via the MatDialog service.\n */\nexport class MatDialogRef<T, R = any> {\n /** The instance of component opened into the dialog. */\n componentInstance: T;\n\n /**\n * `ComponentRef` of the component opened into the dialog. Will be\n * null when the dialog is opened using a `TemplateRef`.\n */\n readonly componentRef: ComponentRef<T> | null;\n\n /** Whether the user is allowed to close the dialog. */\n disableClose: boolean | undefined;\n\n /** Unique ID for the dialog. */\n id: string;\n\n /** Subject for notifying the user that the dialog has finished opening. */\n private readonly _afterOpened = new Subject<void>();\n\n /** Subject for notifying the user that the dialog has started closing. */\n private readonly _beforeClosed = new Subject<R | undefined>();\n\n /** Result to be passed to afterClosed. */\n private _result: R | undefined;\n\n /** Handle to the timeout that's running as a fallback in case the exit animation doesn't fire. */\n private _closeFallbackTimeout: number;\n\n /** Current state of the dialog. */\n private _state = MatDialogState.OPEN;\n\n // TODO(crisbeto): we shouldn't have to declare this property, because `DialogRef.close`\n // already has a second `options` parameter that we can use. The problem is that internal tests\n // have assertions like `expect(MatDialogRef.close).toHaveBeenCalledWith(foo)` which will break,\n // because it'll be called with two arguments by things like `MatDialogClose`.\n /** Interaction that caused the dialog to close. */\n private _closeInteractionType: FocusOrigin | undefined;\n\n constructor(\n private _ref: DialogRef<R, T>,\n config: MatDialogConfig,\n public _containerInstance: MatDialogContainer,\n ) {\n this.disableClose = config.disableClose;\n this.id = _ref.id;\n\n // Emit when opening animation completes\n _containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'opened'),\n take(1),\n )\n .subscribe(() => {\n this._afterOpened.next();\n this._afterOpened.complete();\n });\n\n // Dispose overlay when closing animation is complete\n _containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'closed'),\n take(1),\n )\n .subscribe(() => {\n clearTimeout(this._closeFallbackTimeout);\n this._finishDialogClose();\n });\n\n _ref.overlayRef.detachments().subscribe(() => {\n this._beforeClosed.next(this._result);\n this._beforeClosed.complete();\n this._finishDialogClose();\n });\n\n merge(\n this.backdropClick(),\n this.keydownEvents().pipe(\n filter(event => event.keyCode === ESCAPE && !this.disableClose && !hasModifierKey(event)),\n ),\n ).subscribe(event => {\n if (!this.disableClose) {\n event.preventDefault();\n _closeDialogVia(this, event.type === 'keydown' ? 'keyboard' : 'mouse');\n }\n });\n }\n\n /**\n * Close the dialog.\n * @param dialogResult Optional result to return to the dialog opener.\n */\n close(dialogResult?: R): void {\n this._result = dialogResult;\n\n // Transition the backdrop in parallel to the dialog.\n this._containerInstance._animationStateChanged\n .pipe(\n filter(event => event.state === 'closing'),\n take(1),\n )\n .subscribe(event => {\n this._beforeClosed.next(dialogResult);\n this._beforeClosed.complete();\n this._ref.overlayRef.detachBackdrop();\n\n // The logic that disposes of the overlay depends on the exit animation completing, however\n // it isn't guaranteed if the parent view is destroyed while it's running. Add a fallback\n // timeout which will clean everything up if the animation hasn't fired within the specified\n // amount of time plus 100ms. We don't need to run this outside the NgZone, because for the\n // vast majority of cases the timeout will have been cleared before it has the chance to fire.\n this._closeFallbackTimeout = setTimeout(\n () => this._finishDialogClose(),\n event.totalTime + 100,\n );\n });\n\n this._state = MatDialogState.CLOSING;\n this._containerInstance._startExitAnimation();\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished opening.\n */\n afterOpened(): Observable<void> {\n return this._afterOpened;\n }\n\n /**\n * Gets an observable that is notified when the dialog is finished closing.\n */\n afterClosed(): Observable<R | undefined> {\n return this._ref.closed;\n }\n\n /**\n * Gets an observable that is notified when the dialog has started closing.\n */\n beforeClosed(): Observable<R | undefined> {\n return this._beforeClosed;\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n backdropClick(): Observable<MouseEvent> {\n return this._ref.backdropClick;\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n keydownEvents(): Observable<KeyboardEvent> {\n return this._ref.keydownEvents;\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n updatePosition(position?: DialogPosition): this {\n let strategy = this._ref.config.positionStrategy as GlobalPositionStrategy;\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this._ref.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize(width: string = '', height: string = ''): this {\n this._ref.updateSize(width, height);\n return this;\n }\n\n /** Add a CSS class or an array of classes to the overlay pane. */\n addPanelClass(classes: string | string[]): this {\n this._ref.addPanelClass(classes);\n return this;\n }\n\n /** Remove a CSS class or an array of classes from the overlay pane. */\n removePanelClass(classes: string | string[]): this {\n this._ref.removePanelClass(classes);\n return this;\n }\n\n /** Gets the current state of the dialog's lifecycle. */\n getState(): MatDialogState {\n return this._state;\n }\n\n /**\n * Finishes the dialog close by updating the state of the dialog\n * and disposing the overlay.\n */\n private _finishDialogClose() {\n this._state = MatDialogState.CLOSED;\n this._ref.close(this._result, {focusOrigin: this._closeInteractionType});\n this.componentInstance = null!;\n }\n}\n\n/**\n * Closes the dialog with the specified interaction type. This is currently not part of\n * `MatDialogRef` as that would conflict with custom dialog ref mocks provided in tests.\n * More details. See: https://github.com/angular/components/pull/9257#issuecomment-651342226.\n */\n// TODO: Move this back into `MatDialogRef` when we provide an official mock dialog ref.\nexport function _closeDialogVia<R>(ref: MatDialogRef<R>, interactionType: FocusOrigin, result?: R) {\n (ref as unknown as {_closeInteractionType: FocusOrigin})._closeInteractionType = interactionType;\n return ref.close(result);\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 {ComponentType, Overlay, OverlayContainer, ScrollStrategy} from '@angular/cdk/overlay';\nimport {Location} from '@angular/common';\nimport {\n ANIMATION_MODULE_TYPE,\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n OnDestroy,\n Optional,\n SkipSelf,\n TemplateRef,\n Type,\n} from '@angular/core';\nimport {MatDialogConfig} from './dialog-config';\nimport {MatDialogContainer} from './dialog-container';\nimport {MatDialogRef} from './dialog-ref';\nimport {defer, Observable, Subject} from 'rxjs';\nimport {Dialog, DialogConfig} from '@angular/cdk/dialog';\nimport {startWith} from 'rxjs/operators';\n\n/** Injection token that can be used to access the data that was passed in to a dialog. */\nexport const MAT_DIALOG_DATA = new InjectionToken<any>('MatMdcDialogData');\n\n/** Injection token that can be used to specify default dialog options. */\nexport const MAT_DIALOG_DEFAULT_OPTIONS = new InjectionToken<MatDialogConfig>(\n 'mat-mdc-dialog-default-options',\n);\n\n/** Injection token that determines the scroll handling while the dialog is open. */\nexport const MAT_DIALOG_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mat-mdc-dialog-scroll-strategy',\n);\n\n/** @docs-private */\nexport function MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay,\n): () => ScrollStrategy {\n return () => overlay.scrollStrategies.block();\n}\n\n/** @docs-private */\nexport const MAT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: MAT_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MAT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY,\n};\n\n// Counter for unique dialog ids.\nlet uniqueId = 0;\n\n/**\n * Service to open Material Design modal dialogs.\n */\n@Injectable()\nexport class MatDialog implements OnDestroy {\n private readonly _openDialogsAtThisLevel: MatDialogRef<any>[] = [];\n private readonly _afterAllClosedAtThisLevel = new Subject<void>();\n private readonly _afterOpenedAtThisLevel = new Subject<MatDialogRef<any>>();\n private _dialog: Dialog;\n protected dialogConfigClass = MatDialogConfig;\n\n private readonly _dialogRefConstructor: Type<MatDialogRef<any>>;\n private readonly _dialogContainerType: Type<MatDialogContainer>;\n private readonly _dialogDataToken: InjectionToken<any>;\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): MatDialogRef<any>[] {\n return this._parentDialog ? this._parentDialog.openDialogs : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpened(): Subject<MatDialogRef<any>> {\n return this._parentDialog ? this._parentDialog.afterOpened : this._afterOpenedAtThisLevel;\n }\n\n private _getAfterAllClosed(): Subject<void> {\n const parent = this._parentDialog;\n return parent ? parent._getAfterAllClosed() : this._afterAllClosedAtThisLevel;\n }\n\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n readonly afterAllClosed: Observable<void> = defer(() =>\n this.openDialogs.length\n ? this._getAfterAllClosed()\n : this._getAfterAllClosed().pipe(startWith(undefined)),\n ) as Observable<any>;\n\n constructor(\n private _overlay: Overlay,\n injector: Injector,\n /**\n * @deprecated `_location` parameter to be removed.\n * @breaking-change 10.0.0\n */\n @Optional() location: Location,\n @Optional() @Inject(MAT_DIALOG_DEFAULT_OPTIONS) private _defaultOptions: MatDialogConfig,\n @Inject(MAT_DIALOG_SCROLL_STRATEGY) private _scrollStrategy: any,\n @Optional() @SkipSelf() private _parentDialog: MatDialog,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 15.0.0\n */\n _overlayContainer: OverlayContainer,\n /**\n * @deprecated No longer used. To be removed.\n * @breaking-change 14.0.0\n */\n @Optional()\n @Inject(ANIMATION_MODULE_TYPE)\n _animationMode?: 'NoopAnimations' | 'BrowserAnimations',\n ) {\n this._dialog = injector.get(Dialog);\n\n this._dialogRefConstructor = MatDialogRef;\n this._dialogContainerType = MatDialogContainer;\n this._dialogDataToken = MAT_DIALOG_DATA;\n }\n\n /**\n * Opens a modal dialog containing the given component.\n * @param component Type of the component to load into the dialog.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(\n component: ComponentType<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n /**\n * Opens a modal dialog containing the given template.\n * @param template TemplateRef to instantiate as the dialog content.\n * @param config Extra configuration options.\n * @returns Reference to the newly-opened dialog.\n */\n open<T, D = any, R = any>(\n template: TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(\n template: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R>;\n\n open<T, D = any, R = any>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: MatDialogConfig<D>,\n ): MatDialogRef<T, R> {\n let dialogRef: MatDialogRef<T, R>;\n config = {...(this._defaultOptions || new MatDialogConfig()), ...config};\n config.id = config.id || `mat-mdc-dialog-${uniqueId++}`;\n config.scrollStrategy = config.scrollStrategy || this._scrollStrategy();\n\n const cdkRef = this._dialog.open<R, D, T>(componentOrTemplateRef, {\n ...config,\n positionStrategy: this._overlay.position().global().centerHorizontally().centerVertically(),\n // Disable closing since we need to sync it up to the animation ourselves.\n disableClose: true,\n // Disable closing on destroy, because this service cleans up its open dialogs as well.\n // We want to do the cleanup here, rather than the CDK service, because the CDK destroys\n // the dialogs immediately whereas we want it to wait for the animations to finish.\n closeOnDestroy: false,\n // Disable closing on detachments so that we can sync up the animation.\n // The Material dialog ref handles this manually.\n closeOnOverlayDetachments: false,\n container: {\n type: this._dialogContainerType,\n providers: () => [\n // Provide our config as the CDK config as well since it has the same interface as the\n // CDK one, but it contains the actual values passed in by the user for things like\n // `disableClose` which we disable for the CDK dialog since we handle it ourselves.\n {provide: this.dialogConfigClass, useValue: config},\n {provide: DialogConfig, useValue: config},\n ],\n },\n templateContext: () => ({dialogRef}),\n providers: (ref, cdkConfig, dialogContainer) => {\n dialogRef = new this._dialogRefConstructor(ref, config, dialogContainer);\n dialogRef.updatePosition(config?.position);\n return [\n {provide: this._dialogContainerType, useValue: dialogContainer},\n {provide: this._dialogDataToken, useValue: cdkConfig.data},\n {provide: this._dialogRefConstructor, useValue: dialogRef},\n ];\n },\n });\n\n // This can't be assigned in the `providers` callback, because\n // the instance hasn't been assigned to the CDK ref yet.\n (dialogRef! as {componentRef: ComponentRef<T>}).componentRef = cdkRef.componentRef!;\n dialogRef!.componentInstance = cdkRef.componentInstance!;\n\n this.openDialogs.push(dialogRef!);\n this.afterOpened.next(dialogRef!);\n\n dialogRef!.afterClosed().subscribe(() => {\n const index = this.openDialogs.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n\n if (!this.openDialogs.length) {\n this._getAfterAllClosed().next();\n }\n }\n });\n\n return dialogRef!;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n closeAll(): void {\n this._closeDialogs(this.openDialogs);\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n getDialogById(id: string): MatDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n ngOnDestroy() {\n // Only close the dialogs at this level on destroy\n // since the parent service may still be active.\n this._closeDialogs(this._openDialogsAtThisLevel);\n this._afterAllClosedAtThisLevel.complete();\n this._afterOpenedAtThisLevel.complete();\n }\n\n private _closeDialogs(dialogs: MatDialogRef<any>[]) {\n let i = dialogs.length;\n\n while (i--) {\n dialogs[i].close();\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 {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\n\nimport {MatDialog} from './dialog';\nimport {_closeDialogVia, MatDialogRef} from './dialog-ref';\n\n/** Counter used to generate unique IDs for dialog elements. */\nlet dialogElementUid = 0;\n\n/**\n * Button that will close the current dialog.\n */\n@Directive({\n selector: '[mat-dialog-close], [matDialogClose]',\n exportAs: 'matDialogClose',\n host: {\n '(click)': '_onButtonClick($event)',\n '[attr.aria-label]': 'ariaLabel || null',\n '[attr.type]': 'type',\n },\n})\nexport class MatDialogClose implements OnInit, OnChanges {\n /** Screen-reader label for the button. */\n @Input('aria-label') ariaLabel: string;\n\n /** Default to \"button\" to prevents accidental form submits. */\n @Input() type: 'submit' | 'button' | 'reset' = 'button';\n\n /** Dialog close input. */\n @Input('mat-dialog-close') dialogResult: any;\n\n @Input('matDialogClose') _matDialogClose: any;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() public dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog,\n ) {}\n\n ngOnInit() {\n if (!this.dialogRef) {\n // When this directive is included in a dialog via TemplateRef (rather than being\n // in a Component), the DialogRef isn't available via injection because embedded\n // views cannot be given a custom injector. Instead, we look up the DialogRef by\n // ID. This must occur in `onInit`, as the ID binding for the dialog container won't\n // be resolved at constructor time.\n this.dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const proxiedChange = changes['_matDialogClose'] || changes['_matDialogCloseResult'];\n\n if (proxiedChange) {\n this.dialogResult = proxiedChange.currentValue;\n }\n }\n\n _onButtonClick(event: MouseEvent) {\n // Determinate the focus origin using the click event, because using the FocusMonitor will\n // result in incorrect origins. Most of the time, close buttons will be auto focused in the\n // dialog, and therefore clicking the button won't result in a focus change. This means that\n // the FocusMonitor won't detect any origin change, and will always output `program`.\n _closeDialogVia(\n this.dialogRef,\n event.screenX === 0 && event.screenY === 0 ? 'keyboard' : 'mouse',\n this.dialogResult,\n );\n }\n}\n\n/**\n * Title of a dialog element. Stays fixed to the top of the dialog when scrolling.\n */\n@Directive({\n selector: '[mat-dialog-title], [matDialogTitle]',\n exportAs: 'matDialogTitle',\n host: {\n 'class': 'mat-mdc-dialog-title mdc-dialog__title',\n '[id]': 'id',\n },\n})\nexport class MatDialogTitle implements OnInit, OnDestroy {\n @Input() id: string = `mat-mdc-dialog-title-${dialogElementUid++}`;\n\n constructor(\n // The dialog title directive is always used in combination with a `MatDialogRef`.\n // tslint:disable-next-line: lightweight-tokens\n @Optional() private _dialogRef: MatDialogRef<any>,\n private _elementRef: ElementRef<HTMLElement>,\n private _dialog: MatDialog,\n ) {}\n\n ngOnInit() {\n if (!this._dialogRef) {\n this._dialogRef = getClosestDialog(this._elementRef, this._dialog.openDialogs)!;\n }\n\n if (this._dialogRef) {\n Promise.resolve().then(() => {\n // Note: we null check the queue, because there are some internal\n // tests that are mocking out `MatDialogRef` incorrectly.\n this._dialogRef._containerInstance?._ariaLabelledByQueue?.push(this.id);\n });\n }\n }\n\n ngOnDestroy() {\n // Note: we null check the queue, because there are some internal\n // tests that are mocking out `MatDialogRef` incorrectly.\n const queue = this._dialogRef?._containerInstance?._ariaLabelledByQueue;\n\n if (queue) {\n Promise.resolve().then(() => {\n const index = queue.indexOf(this.id);\n\n if (index > -1) {\n queue.splice(index, 1);\n }\n });\n }\n }\n}\n\n/**\n * Scrollable content container of a dialog.\n */\n@Directive({\n selector: `[mat-dialog-content], mat-dialog-content, [matDialogContent]`,\n host: {'class': 'mat-mdc-dialog-content mdc-dialog__content'},\n})\nexport class MatDialogContent {}\n\n/**\n * Container for the bottom action buttons in a dialog.\n * Stays fixed to the bottom when scrolling.\n */\n@Directive({\n selector: `[mat-dialog-actions], mat-dialog-actions, [matDialogActions]`,\n host: {\n 'class': 'mat-mdc-dialog-actions mdc-dialog__actions',\n '[class.mat-mdc-dialog-actions-align-center]': 'align === \"center\"',\n '[class.mat-mdc-dialog-actions-align-end]': 'align === \"end\"',\n },\n})\nexport class MatDialogActions {\n /**\n * Horizontal alignment of action buttons.\n */\n @Input() align?: 'start' | 'center' | 'end' = 'start';\n}\n\n/**\n * Finds the closest MatDialogRef to an element by looking at the DOM.\n * @param element Element relative to which to look for a dialog.\n * @param openDialogs References to the currently-open dialogs.\n */\nfunction getClosestDialog(element: ElementRef<HTMLElement>, openDialogs: MatDialogRef<any>[]) {\n let parent: HTMLElement | null = element.nativeElement.parentElement;\n\n while (parent && !parent.classList.contains('mat-mdc-dialog-container')) {\n parent = parent.parentElement;\n }\n\n return parent ? openDialogs.find(dialog => dialog.id === parent!.id) : null;\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 {DialogModule} from '@angular/cdk/dialog';\nimport {OverlayModule} from '@angular/cdk/overlay';\nimport {PortalModule} from '@angular/cdk/portal';\nimport {NgModule} from '@angular/core';\nimport {MatCommonModule} from '@angular/material/core';\nimport {MAT_DIALOG_SCROLL_STRATEGY_PROVIDER, MatDialog} from './dialog';\nimport {MatDialogContainer} from './dialog-container';\nimport {\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogTitle,\n} from './dialog-content-directives';\n\n@NgModule({\n imports: [DialogModule, OverlayModule, PortalModule, MatCommonModule],\n exports: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatCommonModule,\n ],\n declarations: [\n MatDialogContainer,\n MatDialogClose,\n MatDialogTitle,\n MatDialogActions,\n MatDialogContent,\n ],\n providers: [MatDialog, MAT_DIALOG_SCROLL_STRATEGY_PROVIDER],\n})\nexport class MatDialogModule {}\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 {\n animate,\n state,\n style,\n transition,\n trigger,\n AnimationTriggerMetadata,\n query,\n animateChild,\n group,\n} from '@angular/animations';\n\n/**\n * Default parameters for the animation for backwards compatibility.\n * @docs-private\n */\nexport const _defaultParams = {\n params: {enterAnimationDuration: '150ms', exitAnimationDuration: '75ms'},\n};\n\n/**\n * Animations used by MatDialog.\n * @docs-private\n */\nexport const matDialogAnimations: {\n readonly dialogContainer: AnimationTriggerMetadata;\n} = {\n /** Animation that is applied on the dialog container by default. */\n dialogContainer: trigger('dialogContainer', [\n // Note: The `enter` animation transitions to `transform: none`, because for some reason\n // specifying the transform explicitly, causes IE both to blur the dialog content and\n // decimate the animation performance. Leaving it as `none` solves both issues.\n state('void, exit', style({opacity: 0, transform: 'scale(0.7)'})),\n state('enter', style({transform: 'none'})),\n transition(\n '* => enter',\n group([\n animate(\n '{{enterAnimationDuration}} cubic-bezier(0, 0, 0.2, 1)',\n style({transform: 'none', opacity: 1}),\n ),\n query('@*', animateChild(), {optional: true}),\n ]),\n _defaultParams,\n ),\n transition(\n '* => void, * => exit',\n group([\n animate('{{exitAnimationDuration}} cubic-bezier(0.4, 0.0, 0.2, 1)', style({opacity: 0})),\n query('@*', animateChild(), {optional: true}),\n ]),\n _defaultParams,\n ),\n ]),\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.MatDialogConfig","i3","i1","ANIMATION_MODULE_TYPE","i1.MatDialogRef","i2.MatDialog"],"mappings":"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"}
@@ -4,17 +4,8 @@ import { MatInputHarness } from '@angular/material/input/testing';
4
4
  import { MatSelectHarness } from '@angular/material/select/testing';
5
5
  import { MatDatepickerInputHarness, MatDateRangeInputHarness } from '@angular/material/datepicker/testing';
6
6
 
7
- class _MatErrorHarnessBase extends ComponentHarness {
8
- /** Gets a promise for the error's label text. */
9
- async getText() {
10
- return (await this.host()).text();
11
- }
12
- static _getErrorPredicate(type, options) {
13
- return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text));
14
- }
15
- }
16
7
  /** Harness for interacting with an MDC-based `mat-error` in tests. */
17
- class MatErrorHarness extends _MatErrorHarnessBase {
8
+ class MatErrorHarness extends ComponentHarness {
18
9
  static { this.hostSelector = '.mat-mdc-form-field-error'; }
19
10
  /**
20
11
  * Gets a `HarnessPredicate` that can be used to search for an error with specific
@@ -23,11 +14,61 @@ class MatErrorHarness extends _MatErrorHarnessBase {
23
14
  * @return a `HarnessPredicate` configured with the given options.
24
15
  */
25
16
  static with(options = {}) {
26
- return _MatErrorHarnessBase._getErrorPredicate(this, options);
17
+ return MatErrorHarness._getErrorPredicate(this, options);
18
+ }
19
+ static _getErrorPredicate(type, options) {
20
+ return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) => HarnessPredicate.stringMatches(harness.getText(), text));
21
+ }
22
+ /** Gets a promise for the error's label text. */
23
+ async getText() {
24
+ return (await this.host()).text();
27
25
  }
28
26
  }
29
27
 
30
- class _MatFormFieldHarnessBase extends ComponentHarness {
28
+ class MatFormFieldHarness extends ComponentHarness {
29
+ constructor() {
30
+ super(...arguments);
31
+ this._prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');
32
+ this._suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');
33
+ this._label = this.locatorForOptional('.mdc-floating-label');
34
+ this._hints = this.locatorForAll('.mat-mdc-form-field-hint');
35
+ this._inputControl = this.locatorForOptional(MatInputHarness);
36
+ this._selectControl = this.locatorForOptional(MatSelectHarness);
37
+ this._datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);
38
+ this._dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);
39
+ this._textField = this.locatorFor('.mat-mdc-text-field-wrapper');
40
+ this._errorHarness = MatErrorHarness;
41
+ }
42
+ static { this.hostSelector = '.mat-mdc-form-field'; }
43
+ /**
44
+ * Gets a `HarnessPredicate` that can be used to search for a form field with specific
45
+ * attributes.
46
+ * @param options Options for filtering which form field instances are considered a match.
47
+ * @return a `HarnessPredicate` configured with the given options.
48
+ */
49
+ static with(options = {}) {
50
+ return new HarnessPredicate(this, options)
51
+ .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) => HarnessPredicate.stringMatches(await harness.getLabel(), text))
52
+ .addOption('hasErrors', options.hasErrors, async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors)
53
+ .addOption('isValid', options.isValid, async (harness, isValid) => (await harness.isControlValid()) === isValid);
54
+ }
55
+ /** Gets the appearance of the form-field. */
56
+ async getAppearance() {
57
+ const textFieldEl = await this._textField();
58
+ if (await textFieldEl.hasClass('mdc-text-field--outlined')) {
59
+ return 'outline';
60
+ }
61
+ return 'fill';
62
+ }
63
+ /** Whether the form-field has a label. */
64
+ async hasLabel() {
65
+ return (await this._label()) !== null;
66
+ }
67
+ /** Whether the label is currently floating. */
68
+ async isLabelFloating() {
69
+ const labelEl = await this._label();
70
+ return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;
71
+ }
31
72
  /** Gets the label of the form-field. */
32
73
  async getLabel() {
33
74
  const labelEl = await this._label();
@@ -150,54 +191,8 @@ class _MatFormFieldHarnessBase extends ComponentHarness {
150
191
  return isTouched || isUntouched;
151
192
  }
152
193
  }
153
- /** Harness for interacting with a MDC-based form-field's in tests. */
154
- class MatFormFieldHarness extends _MatFormFieldHarnessBase {
155
- constructor() {
156
- super(...arguments);
157
- this._prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');
158
- this._suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');
159
- this._label = this.locatorForOptional('.mdc-floating-label');
160
- this._hints = this.locatorForAll('.mat-mdc-form-field-hint');
161
- this._inputControl = this.locatorForOptional(MatInputHarness);
162
- this._selectControl = this.locatorForOptional(MatSelectHarness);
163
- this._datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);
164
- this._dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);
165
- this._errorHarness = MatErrorHarness;
166
- this._mdcTextField = this.locatorFor('.mat-mdc-text-field-wrapper');
167
- }
168
- static { this.hostSelector = '.mat-mdc-form-field'; }
169
- /**
170
- * Gets a `HarnessPredicate` that can be used to search for a form field with specific
171
- * attributes.
172
- * @param options Options for filtering which form field instances are considered a match.
173
- * @return a `HarnessPredicate` configured with the given options.
174
- */
175
- static with(options = {}) {
176
- return new HarnessPredicate(this, options)
177
- .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) => HarnessPredicate.stringMatches(await harness.getLabel(), text))
178
- .addOption('hasErrors', options.hasErrors, async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors)
179
- .addOption('isValid', options.isValid, async (harness, isValid) => (await harness.isControlValid()) === isValid);
180
- }
181
- /** Gets the appearance of the form-field. */
182
- async getAppearance() {
183
- const textFieldEl = await this._mdcTextField();
184
- if (await textFieldEl.hasClass('mdc-text-field--outlined')) {
185
- return 'outline';
186
- }
187
- return 'fill';
188
- }
189
- /** Whether the form-field has a label. */
190
- async hasLabel() {
191
- return (await this._label()) !== null;
192
- }
193
- /** Whether the label is currently floating. */
194
- async isLabelFloating() {
195
- const labelEl = await this._label();
196
- return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;
197
- }
198
- }
199
194
 
200
195
  // Re-export the base control harness from the "form-field/testing/control" entry-point. To
201
196
 
202
- export { MatErrorHarness, MatFormFieldHarness, _MatErrorHarnessBase, _MatFormFieldHarnessBase };
197
+ export { MatErrorHarness, MatFormFieldHarness };
203
198
  //# sourceMappingURL=testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/form-field/testing/error-harness.ts","../../../../../../../src/material/form-field/testing/form-field-harness.ts","../../../../../../../src/material/form-field/testing/public-api.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 BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of error harness instances. */\nexport interface ErrorHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\n}\n\nexport abstract class _MatErrorHarnessBase extends ComponentHarness {\n /** Gets a promise for the error's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\n }\n\n protected static _getErrorPredicate<T extends MatErrorHarness>(\n type: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n}\n\n/** Harness for interacting with an MDC-based `mat-error` in tests. */\nexport class MatErrorHarness extends _MatErrorHarnessBase {\n static hostSelector = '.mat-mdc-form-field-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an error with specific\n * attributes.\n * @param options Options for filtering which error instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatErrorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return _MatErrorHarnessBase._getErrorPredicate(this, options);\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 {\n AsyncFactoryFn,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n TestElement,\n} from '@angular/cdk/testing';\nimport {ErrorHarnessFilters, MatErrorHarness} from './error-harness';\nimport {MatInputHarness} from '@angular/material/input/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {MatSelectHarness} from '@angular/material/select/testing';\nimport {\n MatDatepickerInputHarness,\n MatDateRangeInputHarness,\n} from '@angular/material/datepicker/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\ninterface ErrorBase extends ComponentHarness {\n getText(): Promise<string>;\n}\n\nexport abstract class _MatFormFieldHarnessBase<\n ControlHarness extends MatFormFieldControlHarness,\n ErrorType extends ComponentHarnessConstructor<ErrorBase> & {\n with: (options?: ErrorHarnessFilters) => HarnessPredicate<ErrorBase>;\n },\n> extends ComponentHarness {\n protected abstract _prefixContainer: AsyncFactoryFn<TestElement | null>;\n protected abstract _suffixContainer: AsyncFactoryFn<TestElement | null>;\n protected abstract _label: AsyncFactoryFn<TestElement | null>;\n protected abstract _hints: AsyncFactoryFn<TestElement[]>;\n protected abstract _inputControl: AsyncFactoryFn<ControlHarness | null>;\n protected abstract _selectControl: AsyncFactoryFn<ControlHarness | null>;\n protected abstract _datepickerInputControl: AsyncFactoryFn<ControlHarness | null>;\n protected abstract _dateRangeInputControl: AsyncFactoryFn<ControlHarness | null>;\n protected abstract _errorHarness: ErrorType;\n\n /** Gets the appearance of the form-field. */\n abstract getAppearance(): Promise<string>;\n\n /** Whether the label is currently floating. */\n abstract isLabelFloating(): Promise<boolean>;\n\n /** Whether the form-field has a label. */\n abstract hasLabel(): Promise<boolean>;\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string | null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<ControlHarness | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: ComponentHarnessConstructor<X>,\n ): Promise<X | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: HarnessPredicate<X>,\n ): Promise<X | null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input, datepickerInput, dateRangeInput] = await parallel(() => [\n this._selectControl(),\n this._inputControl(),\n this._datepickerInputControl(),\n this._dateRangeInputControl(),\n ]);\n\n // Match the datepicker inputs first since they can also have a `MatInput`.\n return datepickerInput || dateRangeInput || select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary' | 'accent' | 'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this.getErrors();\n return parallel(() => errors.map(e => e.getText()));\n }\n\n /** Gets all of the error harnesses in the form field. */\n async getErrors(filter: ErrorHarnessFilters = {}): Promise<MatErrorHarness[]> {\n return this.locatorForAll(this._errorHarness.with(filter))();\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] = await parallel(() => [\n hostEl.hasClass('ng-touched'),\n hostEl.hasClass('ng-untouched'),\n ]);\n return isTouched || isUntouched;\n }\n}\n\n// TODO(devversion): support support chip list harness\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness =\n | MatInputHarness\n | MatSelectHarness\n | MatDatepickerInputHarness\n | MatDateRangeInputHarness;\n\n/** Harness for interacting with a MDC-based form-field's in tests. */\nexport class MatFormFieldHarness extends _MatFormFieldHarnessBase<\n FormFieldControlHarness,\n typeof MatErrorHarness\n> {\n static hostSelector = '.mat-mdc-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a form field with specific\n * attributes.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFormFieldHarness>(\n this: ComponentHarnessConstructor<T>,\n options: FormFieldHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text),\n )\n .addOption(\n 'hasErrors',\n options.hasErrors,\n async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors,\n )\n .addOption(\n 'isValid',\n options.isValid,\n async (harness, isValid) => (await harness.isControlValid()) === isValid,\n );\n }\n\n protected _prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');\n protected _suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');\n protected _label = this.locatorForOptional('.mdc-floating-label');\n protected _hints = this.locatorForAll('.mat-mdc-form-field-hint');\n protected _inputControl = this.locatorForOptional(MatInputHarness);\n protected _selectControl = this.locatorForOptional(MatSelectHarness);\n protected _datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);\n protected _dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);\n protected _errorHarness = MatErrorHarness;\n private _mdcTextField = this.locatorFor('.mat-mdc-text-field-wrapper');\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'fill' | 'outline'> {\n const textFieldEl = await this._mdcTextField();\n if (await textFieldEl.hasClass('mdc-text-field--outlined')) {\n return 'outline';\n }\n return 'fill';\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this._label()) !== null;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const labelEl = await this._label();\n return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;\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\n// Re-export the base control harness from the \"form-field/testing/control\" entry-point. To\n// avoid circular dependencies, harnesses for form-field controls (i.e. input, select)\n// need to import the base form-field control harness through a separate entry-point.\nexport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\n\nexport * from './form-field-harness-filters';\nexport * from './form-field-harness';\nexport * from './error-harness';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/form-field/testing/error-harness.ts","../../../../../../../src/material/form-field/testing/form-field-harness.ts","../../../../../../../src/material/form-field/testing/public-api.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 BaseHarnessFilters,\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\n/** A set of criteria that can be used to filter a list of error harness instances. */\nexport interface ErrorHarnessFilters extends BaseHarnessFilters {\n /** Only find instances whose text matches the given value. */\n text?: string | RegExp;\n}\n\n/** Harness for interacting with an MDC-based `mat-error` in tests. */\nexport class MatErrorHarness extends ComponentHarness {\n static hostSelector = '.mat-mdc-form-field-error';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for an error with specific\n * attributes.\n * @param options Options for filtering which error instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatErrorHarness>(\n this: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters = {},\n ): HarnessPredicate<T> {\n return MatErrorHarness._getErrorPredicate(this, options);\n }\n\n protected static _getErrorPredicate<T extends MatErrorHarness>(\n type: ComponentHarnessConstructor<T>,\n options: ErrorHarnessFilters,\n ): HarnessPredicate<T> {\n return new HarnessPredicate(type, options).addOption('text', options.text, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getText(), text),\n );\n }\n\n /** Gets a promise for the error's label text. */\n async getText(): Promise<string> {\n return (await this.host()).text();\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 {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n HarnessQuery,\n parallel,\n} from '@angular/cdk/testing';\nimport {ErrorHarnessFilters, MatErrorHarness} from './error-harness';\nimport {MatInputHarness} from '@angular/material/input/testing';\nimport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\nimport {MatSelectHarness} from '@angular/material/select/testing';\nimport {\n MatDatepickerInputHarness,\n MatDateRangeInputHarness,\n} from '@angular/material/datepicker/testing';\nimport {FormFieldHarnessFilters} from './form-field-harness-filters';\n\n/** Possible harnesses of controls which can be bound to a form-field. */\nexport type FormFieldControlHarness =\n | MatInputHarness\n | MatSelectHarness\n | MatDatepickerInputHarness\n | MatDateRangeInputHarness;\n\nexport class MatFormFieldHarness extends ComponentHarness {\n private _prefixContainer = this.locatorForOptional('.mat-mdc-form-field-text-prefix');\n private _suffixContainer = this.locatorForOptional('.mat-mdc-form-field-text-suffix');\n private _label = this.locatorForOptional('.mdc-floating-label');\n private _hints = this.locatorForAll('.mat-mdc-form-field-hint');\n private _inputControl = this.locatorForOptional(MatInputHarness);\n private _selectControl = this.locatorForOptional(MatSelectHarness);\n private _datepickerInputControl = this.locatorForOptional(MatDatepickerInputHarness);\n private _dateRangeInputControl = this.locatorForOptional(MatDateRangeInputHarness);\n private _textField = this.locatorFor('.mat-mdc-text-field-wrapper');\n private _errorHarness = MatErrorHarness;\n\n static hostSelector = '.mat-mdc-form-field';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a form field with specific\n * attributes.\n * @param options Options for filtering which form field instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatFormFieldHarness>(\n this: ComponentHarnessConstructor<T>,\n options: FormFieldHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options)\n .addOption('floatingLabelText', options.floatingLabelText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getLabel(), text),\n )\n .addOption(\n 'hasErrors',\n options.hasErrors,\n async (harness, hasErrors) => (await harness.hasErrors()) === hasErrors,\n )\n .addOption(\n 'isValid',\n options.isValid,\n async (harness, isValid) => (await harness.isControlValid()) === isValid,\n );\n }\n\n /** Gets the appearance of the form-field. */\n async getAppearance(): Promise<'fill' | 'outline'> {\n const textFieldEl = await this._textField();\n if (await textFieldEl.hasClass('mdc-text-field--outlined')) {\n return 'outline';\n }\n return 'fill';\n }\n\n /** Whether the form-field has a label. */\n async hasLabel(): Promise<boolean> {\n return (await this._label()) !== null;\n }\n\n /** Whether the label is currently floating. */\n async isLabelFloating(): Promise<boolean> {\n const labelEl = await this._label();\n return labelEl !== null ? await labelEl.hasClass('mdc-floating-label--float-above') : false;\n }\n\n /** Gets the label of the form-field. */\n async getLabel(): Promise<string | null> {\n const labelEl = await this._label();\n return labelEl ? labelEl.text() : null;\n }\n\n /** Whether the form-field has errors. */\n async hasErrors(): Promise<boolean> {\n return (await this.getTextErrors()).length > 0;\n }\n\n /** Whether the form-field is disabled. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-disabled');\n }\n\n /** Whether the form-field is currently autofilled. */\n async isAutofilled(): Promise<boolean> {\n return (await this.host()).hasClass('mat-form-field-autofilled');\n }\n\n /**\n * Gets the harness of the control that is bound to the form-field. Only\n * default controls such as \"MatInputHarness\" and \"MatSelectHarness\" are\n * supported.\n */\n async getControl(): Promise<FormFieldControlHarness | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness type.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: ComponentHarnessConstructor<X>,\n ): Promise<X | null>;\n\n /**\n * Gets the harness of the control that is bound to the form-field. Searches\n * for a control that matches the specified harness predicate.\n */\n async getControl<X extends MatFormFieldControlHarness>(\n type: HarnessPredicate<X>,\n ): Promise<X | null>;\n\n // Implementation of the \"getControl\" method overload signatures.\n async getControl<X extends MatFormFieldControlHarness>(type?: HarnessQuery<X>) {\n if (type) {\n return this.locatorForOptional(type)();\n }\n const [select, input, datepickerInput, dateRangeInput] = await parallel(() => [\n this._selectControl(),\n this._inputControl(),\n this._datepickerInputControl(),\n this._dateRangeInputControl(),\n ]);\n\n // Match the datepicker inputs first since they can also have a `MatInput`.\n return datepickerInput || dateRangeInput || select || input;\n }\n\n /** Gets the theme color of the form-field. */\n async getThemeColor(): Promise<'primary' | 'accent' | 'warn'> {\n const hostEl = await this.host();\n const [isAccent, isWarn] = await parallel(() => {\n return [hostEl.hasClass('mat-accent'), hostEl.hasClass('mat-warn')];\n });\n if (isAccent) {\n return 'accent';\n } else if (isWarn) {\n return 'warn';\n }\n return 'primary';\n }\n\n /** Gets error messages which are currently displayed in the form-field. */\n async getTextErrors(): Promise<string[]> {\n const errors = await this.getErrors();\n return parallel(() => errors.map(e => e.getText()));\n }\n\n /** Gets all of the error harnesses in the form field. */\n async getErrors(filter: ErrorHarnessFilters = {}): Promise<MatErrorHarness[]> {\n return this.locatorForAll(this._errorHarness.with(filter))();\n }\n\n /** Gets hint messages which are currently displayed in the form-field. */\n async getTextHints(): Promise<string[]> {\n const hints = await this._hints();\n return parallel(() => hints.map(e => e.text()));\n }\n\n /** Gets the text inside the prefix element. */\n async getPrefixText(): Promise<string> {\n const prefix = await this._prefixContainer();\n return prefix ? prefix.text() : '';\n }\n\n /** Gets the text inside the suffix element. */\n async getSuffixText(): Promise<string> {\n const suffix = await this._suffixContainer();\n return suffix ? suffix.text() : '';\n }\n\n /**\n * Whether the form control has been touched. Returns \"null\"\n * if no form control is set up.\n */\n async isControlTouched(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-touched');\n }\n\n /**\n * Whether the form control is dirty. Returns \"null\"\n * if no form control is set up.\n */\n async isControlDirty(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-dirty');\n }\n\n /**\n * Whether the form control is valid. Returns \"null\"\n * if no form control is set up.\n */\n async isControlValid(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-valid');\n }\n\n /**\n * Whether the form control is pending validation. Returns \"null\"\n * if no form control is set up.\n */\n async isControlPending(): Promise<boolean | null> {\n if (!(await this._hasFormControl())) {\n return null;\n }\n return (await this.host()).hasClass('ng-pending');\n }\n\n /** Checks whether the form-field control has set up a form control. */\n private async _hasFormControl(): Promise<boolean> {\n const hostEl = await this.host();\n // If no form \"NgControl\" is bound to the form-field control, the form-field\n // is not able to forward any control status classes. Therefore if either the\n // \"ng-touched\" or \"ng-untouched\" class is set, we know that it has a form control\n const [isTouched, isUntouched] = await parallel(() => [\n hostEl.hasClass('ng-touched'),\n hostEl.hasClass('ng-untouched'),\n ]);\n return isTouched || isUntouched;\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\n// Re-export the base control harness from the \"form-field/testing/control\" entry-point. To\n// avoid circular dependencies, harnesses for form-field controls (i.e. input, select)\n// need to import the base form-field control harness through a separate entry-point.\nexport {MatFormFieldControlHarness} from '@angular/material/form-field/testing/control';\n\nexport * from './form-field-harness-filters';\nexport * from './form-field-harness';\nexport * from './error-harness';\n"],"names":[],"mappings":"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"}