@angular/material 19.2.2 → 19.2.4

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 (308) hide show
  1. package/autocomplete/index.d.ts +90 -124
  2. package/autocomplete/testing/index.d.ts +6 -11
  3. package/badge/index.d.ts +8 -112
  4. package/badge/testing/index.d.ts +7 -8
  5. package/badge.d-49a8a74b.d.ts +98 -0
  6. package/bottom-sheet/index.d.ts +88 -103
  7. package/bottom-sheet/testing/index.d.ts +4 -6
  8. package/button/index.d.ts +10 -259
  9. package/button/testing/index.d.ts +6 -10
  10. package/button-toggle/index.d.ts +12 -285
  11. package/button-toggle/testing/index.d.ts +38 -37
  12. package/button-toggle.d-edc8acff.d.ts +257 -0
  13. package/card/index.d.ts +80 -117
  14. package/card/testing/index.d.ts +11 -15
  15. package/checkbox/index.d.ts +57 -86
  16. package/checkbox/testing/index.d.ts +6 -10
  17. package/chips/index.d.ts +598 -692
  18. package/chips/testing/index.d.ts +78 -93
  19. package/common-module.d-0e6515ae.d.ts +43 -0
  20. package/core/index.d.ts +50 -979
  21. package/core/testing/index.d.ts +3 -65
  22. package/core/tokens/m3/definitions/_md-comp-elevated-card.scss +3 -1
  23. package/core/tokens/m3/definitions/_md-sys-color.scss +44 -2
  24. package/core/tokens/m3/definitions/_md-sys-typescale.scss +20 -1
  25. package/date-adapter.d-c6835d41.d.ts +267 -0
  26. package/date-range-input-harness.d-549a9f7e.d.ts +278 -0
  27. package/datepicker/index.d.ts +1436 -1586
  28. package/datepicker/testing/index.d.ts +5 -287
  29. package/dialog/index.d.ts +59 -459
  30. package/dialog/testing/index.d.ts +22 -26
  31. package/dialog.d-7187c941.d.ts +357 -0
  32. package/divider/index.d.ts +6 -11
  33. package/divider/testing/index.d.ts +2 -16
  34. package/divider-harness.d-d34fede4.d.ts +14 -0
  35. package/error-options.d-448d9046.d.ts +17 -0
  36. package/expansion/index.d.ts +139 -190
  37. package/expansion/testing/index.d.ts +25 -31
  38. package/fesm2022/autocomplete/testing.mjs +2 -1
  39. package/fesm2022/autocomplete/testing.mjs.map +1 -1
  40. package/fesm2022/autocomplete.mjs +38 -18
  41. package/fesm2022/autocomplete.mjs.map +1 -1
  42. package/fesm2022/badge/testing.mjs.map +1 -1
  43. package/fesm2022/badge.mjs +4 -7
  44. package/fesm2022/badge.mjs.map +1 -1
  45. package/fesm2022/bottom-sheet/testing.mjs.map +1 -1
  46. package/fesm2022/bottom-sheet.mjs +3 -5
  47. package/fesm2022/bottom-sheet.mjs.map +1 -1
  48. package/fesm2022/button/testing.mjs.map +1 -1
  49. package/fesm2022/button-toggle/testing.mjs.map +1 -1
  50. package/fesm2022/button-toggle.mjs +12 -5
  51. package/fesm2022/button-toggle.mjs.map +1 -1
  52. package/fesm2022/button.mjs +14 -481
  53. package/fesm2022/button.mjs.map +1 -1
  54. package/fesm2022/card/testing.mjs.map +1 -1
  55. package/fesm2022/card.mjs +3 -5
  56. package/fesm2022/card.mjs.map +1 -1
  57. package/fesm2022/checkbox/testing.mjs.map +1 -1
  58. package/fesm2022/checkbox.mjs +12 -6
  59. package/fesm2022/checkbox.mjs.map +1 -1
  60. package/fesm2022/chips/testing.mjs.map +1 -1
  61. package/fesm2022/chips.mjs +11 -6
  62. package/fesm2022/chips.mjs.map +1 -1
  63. package/fesm2022/common-module-a39ee957.mjs +42 -0
  64. package/fesm2022/common-module-a39ee957.mjs.map +1 -0
  65. package/fesm2022/core/testing.mjs +3 -76
  66. package/fesm2022/core/testing.mjs.map +1 -1
  67. package/fesm2022/core.mjs +27 -1587
  68. package/fesm2022/core.mjs.map +1 -1
  69. package/fesm2022/date-formats-b618acb8.mjs +190 -0
  70. package/fesm2022/date-formats-b618acb8.mjs.map +1 -0
  71. package/fesm2022/date-range-input-harness-ee47cdb0.mjs +467 -0
  72. package/fesm2022/date-range-input-harness-ee47cdb0.mjs.map +1 -0
  73. package/fesm2022/datepicker/testing.mjs +5 -465
  74. package/fesm2022/datepicker/testing.mjs.map +1 -1
  75. package/fesm2022/datepicker.mjs +64 -30
  76. package/fesm2022/datepicker.mjs.map +1 -1
  77. package/fesm2022/dialog/testing.mjs +12 -1
  78. package/fesm2022/dialog/testing.mjs.map +1 -1
  79. package/fesm2022/dialog.mjs +14 -901
  80. package/fesm2022/dialog.mjs.map +1 -1
  81. package/fesm2022/divider/testing.mjs +2 -17
  82. package/fesm2022/divider/testing.mjs.map +1 -1
  83. package/fesm2022/divider-harness-3394f29a.mjs +18 -0
  84. package/fesm2022/divider-harness-3394f29a.mjs.map +1 -0
  85. package/fesm2022/divider.mjs +3 -5
  86. package/fesm2022/divider.mjs.map +1 -1
  87. package/fesm2022/error-options-aca21924.mjs +29 -0
  88. package/fesm2022/error-options-aca21924.mjs.map +1 -0
  89. package/fesm2022/error-state-8f4ce1af.mjs +37 -0
  90. package/fesm2022/error-state-8f4ce1af.mjs.map +1 -0
  91. package/fesm2022/expansion/testing.mjs.map +1 -1
  92. package/fesm2022/expansion.mjs +5 -7
  93. package/fesm2022/expansion.mjs.map +1 -1
  94. package/fesm2022/form-field/testing/control.mjs +2 -10
  95. package/fesm2022/form-field/testing/control.mjs.map +1 -1
  96. package/fesm2022/form-field/testing.mjs +7 -6
  97. package/fesm2022/form-field/testing.mjs.map +1 -1
  98. package/fesm2022/form-field-50ec956f.mjs +1076 -0
  99. package/fesm2022/form-field-50ec956f.mjs.map +1 -0
  100. package/fesm2022/form-field-control-harness-af6fd278.mjs +11 -0
  101. package/fesm2022/form-field-control-harness-af6fd278.mjs.map +1 -0
  102. package/fesm2022/form-field.mjs +14 -1110
  103. package/fesm2022/form-field.mjs.map +1 -1
  104. package/fesm2022/grid-list/testing.mjs +1 -1
  105. package/fesm2022/grid-list/testing.mjs.map +1 -1
  106. package/fesm2022/grid-list.mjs +8 -151
  107. package/fesm2022/grid-list.mjs.map +1 -1
  108. package/fesm2022/icon/testing.mjs +5 -5
  109. package/fesm2022/icon/testing.mjs.map +1 -1
  110. package/fesm2022/icon-button-655c4ed3.mjs +275 -0
  111. package/fesm2022/icon-button-655c4ed3.mjs.map +1 -0
  112. package/fesm2022/icon-module-881c6455.mjs +395 -0
  113. package/fesm2022/icon-module-881c6455.mjs.map +1 -0
  114. package/fesm2022/icon-registry-e1064d47.mjs +639 -0
  115. package/fesm2022/icon-registry-e1064d47.mjs.map +1 -0
  116. package/fesm2022/icon.mjs +11 -1016
  117. package/fesm2022/icon.mjs.map +1 -1
  118. package/fesm2022/index-2f2536d6.mjs +22 -0
  119. package/fesm2022/index-2f2536d6.mjs.map +1 -0
  120. package/fesm2022/index-a36e3c7c.mjs +20 -0
  121. package/fesm2022/index-a36e3c7c.mjs.map +1 -0
  122. package/fesm2022/input/testing.mjs +5 -113
  123. package/fesm2022/input/testing.mjs.map +1 -1
  124. package/fesm2022/input-harness-ed59decc.mjs +115 -0
  125. package/fesm2022/input-harness-ed59decc.mjs.map +1 -0
  126. package/fesm2022/input-value-accessor-8a79a24e.mjs +12 -0
  127. package/fesm2022/input-value-accessor-8a79a24e.mjs.map +1 -0
  128. package/fesm2022/input.mjs +14 -16
  129. package/fesm2022/input.mjs.map +1 -1
  130. package/fesm2022/internal-form-field-5960ea2e.mjs +27 -0
  131. package/fesm2022/internal-form-field-5960ea2e.mjs.map +1 -0
  132. package/fesm2022/line-11b0093d.mjs +59 -0
  133. package/fesm2022/line-11b0093d.mjs.map +1 -0
  134. package/fesm2022/list/testing.mjs +2 -2
  135. package/fesm2022/list/testing.mjs.map +1 -1
  136. package/fesm2022/list.mjs +10 -7
  137. package/fesm2022/list.mjs.map +1 -1
  138. package/fesm2022/menu/testing.mjs.map +1 -1
  139. package/fesm2022/menu.mjs +20 -8
  140. package/fesm2022/menu.mjs.map +1 -1
  141. package/fesm2022/module-0776ab9b.mjs +38 -0
  142. package/fesm2022/module-0776ab9b.mjs.map +1 -0
  143. package/fesm2022/module-087ecec3.mjs +970 -0
  144. package/fesm2022/module-087ecec3.mjs.map +1 -0
  145. package/fesm2022/module-6b33072b.mjs +218 -0
  146. package/fesm2022/module-6b33072b.mjs.map +1 -0
  147. package/fesm2022/module-b0a3e0af.mjs +1293 -0
  148. package/fesm2022/module-b0a3e0af.mjs.map +1 -0
  149. package/fesm2022/module-b3de5709.mjs +899 -0
  150. package/fesm2022/module-b3de5709.mjs.map +1 -0
  151. package/fesm2022/optgroup-harness-5e66b138.mjs +36 -0
  152. package/fesm2022/optgroup-harness-5e66b138.mjs.map +1 -0
  153. package/fesm2022/option-cb353f7a.mjs +348 -0
  154. package/fesm2022/option-cb353f7a.mjs.map +1 -0
  155. package/fesm2022/option-harness-3b7c1106.mjs +46 -0
  156. package/fesm2022/option-harness-3b7c1106.mjs.map +1 -0
  157. package/fesm2022/paginator/testing.mjs +4 -1
  158. package/fesm2022/paginator/testing.mjs.map +1 -1
  159. package/fesm2022/paginator.mjs +43 -13
  160. package/fesm2022/paginator.mjs.map +1 -1
  161. package/fesm2022/progress-bar/testing.mjs +0 -4
  162. package/fesm2022/progress-bar/testing.mjs.map +1 -1
  163. package/fesm2022/progress-bar.mjs +8 -6
  164. package/fesm2022/progress-bar.mjs.map +1 -1
  165. package/fesm2022/progress-spinner/testing.mjs +0 -4
  166. package/fesm2022/progress-spinner/testing.mjs.map +1 -1
  167. package/fesm2022/progress-spinner.mjs +8 -6
  168. package/fesm2022/progress-spinner.mjs.map +1 -1
  169. package/fesm2022/pseudo-checkbox-4a60d45e.mjs +52 -0
  170. package/fesm2022/pseudo-checkbox-4a60d45e.mjs.map +1 -0
  171. package/fesm2022/pseudo-checkbox-module-31a58606.mjs +20 -0
  172. package/fesm2022/pseudo-checkbox-module-31a58606.mjs.map +1 -0
  173. package/fesm2022/public-api-c5ab57f5.mjs +147 -0
  174. package/fesm2022/public-api-c5ab57f5.mjs.map +1 -0
  175. package/fesm2022/radio/testing.mjs.map +1 -1
  176. package/fesm2022/radio.mjs +13 -5
  177. package/fesm2022/radio.mjs.map +1 -1
  178. package/fesm2022/ripple-5bdada85.mjs +639 -0
  179. package/fesm2022/ripple-5bdada85.mjs.map +1 -0
  180. package/fesm2022/ripple-loader-dabcd93d.mjs +165 -0
  181. package/fesm2022/ripple-loader-dabcd93d.mjs.map +1 -0
  182. package/fesm2022/select/testing.mjs +5 -121
  183. package/fesm2022/select/testing.mjs.map +1 -1
  184. package/fesm2022/select-harness-8c55824d.mjs +123 -0
  185. package/fesm2022/select-harness-8c55824d.mjs.map +1 -0
  186. package/fesm2022/select.mjs +30 -1284
  187. package/fesm2022/select.mjs.map +1 -1
  188. package/fesm2022/sidenav/testing.mjs +1 -1
  189. package/fesm2022/sidenav/testing.mjs.map +1 -1
  190. package/fesm2022/sidenav.mjs +9 -9
  191. package/fesm2022/sidenav.mjs.map +1 -1
  192. package/fesm2022/slide-toggle/testing.mjs.map +1 -1
  193. package/fesm2022/slide-toggle.mjs +7 -5
  194. package/fesm2022/slide-toggle.mjs.map +1 -1
  195. package/fesm2022/slider/testing.mjs.map +1 -1
  196. package/fesm2022/slider.mjs +6 -5
  197. package/fesm2022/slider.mjs.map +1 -1
  198. package/fesm2022/snack-bar/testing.mjs.map +1 -1
  199. package/fesm2022/snack-bar.mjs +15 -7
  200. package/fesm2022/snack-bar.mjs.map +1 -1
  201. package/fesm2022/sort/testing.mjs.map +1 -1
  202. package/fesm2022/sort.mjs +13 -7
  203. package/fesm2022/sort.mjs.map +1 -1
  204. package/fesm2022/stepper/testing.mjs.map +1 -1
  205. package/fesm2022/stepper.mjs +21 -8
  206. package/fesm2022/stepper.mjs.map +1 -1
  207. package/fesm2022/structural-styles-326dcb39.mjs +18 -0
  208. package/fesm2022/structural-styles-326dcb39.mjs.map +1 -0
  209. package/fesm2022/table/testing.mjs.map +1 -1
  210. package/fesm2022/table.mjs +3 -5
  211. package/fesm2022/table.mjs.map +1 -1
  212. package/fesm2022/tabs/testing.mjs.map +1 -1
  213. package/fesm2022/tabs.mjs +11 -15
  214. package/fesm2022/tabs.mjs.map +1 -1
  215. package/fesm2022/timepicker/testing.mjs +1 -1
  216. package/fesm2022/timepicker/testing.mjs.map +1 -1
  217. package/fesm2022/timepicker.mjs +20 -10
  218. package/fesm2022/timepicker.mjs.map +1 -1
  219. package/fesm2022/toolbar/testing.mjs.map +1 -1
  220. package/fesm2022/toolbar.mjs +3 -5
  221. package/fesm2022/toolbar.mjs.map +1 -1
  222. package/fesm2022/tooltip/testing.mjs.map +1 -1
  223. package/fesm2022/tooltip.mjs +15 -960
  224. package/fesm2022/tooltip.mjs.map +1 -1
  225. package/fesm2022/tree/testing.mjs.map +1 -1
  226. package/fesm2022/tree.mjs +3 -5
  227. package/fesm2022/tree.mjs.map +1 -1
  228. package/form-field/index.d.ts +16 -508
  229. package/form-field/testing/control/index.d.ts +2 -10
  230. package/form-field/testing/index.d.ts +19 -24
  231. package/form-field-control-harness.d-2d91f25a.d.ts +10 -0
  232. package/form-field-control.d-eb86711c.d.ts +62 -0
  233. package/form-field.d-2edbc094.d.ts +367 -0
  234. package/grid-list/index.d.ts +128 -152
  235. package/grid-list/testing/index.d.ts +39 -44
  236. package/icon/index.d.ts +9 -470
  237. package/icon/testing/index.d.ts +41 -44
  238. package/icon-module.d-aa3bbba0.d.ts +167 -0
  239. package/icon-registry.d-1dffe9de.d.ts +286 -0
  240. package/index.d-0536b706.d.ts +11 -0
  241. package/index.d-37e31cd3.d.ts +13 -0
  242. package/index.d.ts +2 -3
  243. package/input/index.d.ts +33 -62
  244. package/input/testing/index.d.ts +13 -71
  245. package/input-harness.d-4eecd1d3.d.ts +60 -0
  246. package/line.d-570a2537.d.ts +25 -0
  247. package/list/index.d.ts +155 -244
  248. package/list/testing/index.d.ts +158 -180
  249. package/list-option-types.d-8739f903.d.ts +15 -0
  250. package/menu/index.d.ts +183 -231
  251. package/menu/testing/index.d.ts +17 -23
  252. package/module.d-74a721b9.d.ts +326 -0
  253. package/module.d-ba05faa6.d.ts +448 -0
  254. package/module.d-c17c834e.d.ts +18 -0
  255. package/module.d-f490a6d4.d.ts +224 -0
  256. package/optgroup-harness.d-7f741f69.d.ts +31 -0
  257. package/option-harness.d-3d33fc9a.d.ts +34 -0
  258. package/option-parent.d-559ad5c5.d.ts +19 -0
  259. package/option.d-6f493d78.d.ts +146 -0
  260. package/package.json +2 -2
  261. package/paginator/index.d.ts +31 -216
  262. package/paginator/testing/index.d.ts +14 -15
  263. package/paginator.d-40b1766e.d.ts +199 -0
  264. package/palette.d-ec4a617c.d.ts +4 -0
  265. package/progress-bar/index.d.ts +40 -59
  266. package/progress-bar/testing/index.d.ts +7 -10
  267. package/progress-spinner/index.d.ts +8 -110
  268. package/progress-spinner/testing/index.d.ts +10 -11
  269. package/progress-spinner.d-1fc040c5.d.ts +96 -0
  270. package/pseudo-checkbox-module.d-3abc0461.d.ts +44 -0
  271. package/radio/index.d.ts +151 -170
  272. package/radio/testing/index.d.ts +61 -67
  273. package/ripple-loader.d-8aac2988.d.ts +48 -0
  274. package/ripple.d-2fb57d04.d.ts +255 -0
  275. package/schematics/ng-add/index.js +1 -1
  276. package/schematics/ng-add/index.mjs +1 -1
  277. package/schematics/ng-generate/theme-color/index_bundled.js +2 -2
  278. package/schematics/ng-generate/theme-color/schema.json +10 -0
  279. package/schematics/ng-update/index_bundled.js +31 -31
  280. package/select/index.d.ts +25 -500
  281. package/select/testing/index.d.ts +5 -67
  282. package/select-harness.d-7441a7ac.d.ts +63 -0
  283. package/sidenav/index.d.ts +49 -92
  284. package/sidenav/testing/index.d.ts +58 -63
  285. package/slide-toggle/index.d.ts +53 -85
  286. package/slide-toggle/testing/index.d.ts +17 -21
  287. package/slider/index.d.ts +281 -328
  288. package/slider/testing/index.d.ts +42 -47
  289. package/snack-bar/index.d.ts +152 -185
  290. package/snack-bar/testing/index.d.ts +7 -9
  291. package/sort/index.d.ts +61 -169
  292. package/sort/testing/index.d.ts +22 -25
  293. package/sort-direction.d-f4ce4649.d.ts +3 -0
  294. package/sort.d-c2b79a45.d.ts +87 -0
  295. package/stepper/index.d.ts +115 -167
  296. package/stepper/testing/index.d.ts +43 -52
  297. package/table/index.d.ts +97 -156
  298. package/table/testing/index.d.ts +64 -78
  299. package/tabs/index.d.ts +309 -383
  300. package/tabs/testing/index.d.ts +67 -76
  301. package/timepicker/index.d.ts +126 -159
  302. package/timepicker/testing/index.d.ts +20 -26
  303. package/toolbar/index.d.ts +15 -26
  304. package/toolbar/testing/index.d.ts +13 -16
  305. package/tooltip/index.d.ts +11 -355
  306. package/tooltip/testing/index.d.ts +7 -10
  307. package/tree/index.d.ts +117 -163
  308. package/tree/testing/index.d.ts +52 -58
@@ -1,8 +1,19 @@
1
1
  import { ContentContainerComponentHarness, HarnessPredicate, TestKey } from '@angular/cdk/testing';
2
2
  import { __decorate, __metadata } from 'tslib';
3
3
  import { inject, NgZone, Component, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
4
- import { MatDialog, MatDialogModule } from '@angular/material/dialog';
5
4
  import { NoopAnimationsModule } from '@angular/platform-browser/animations';
5
+ import { j as MatDialog, n as MatDialogModule } from '../module-b3de5709.mjs';
6
+ import '@angular/cdk/dialog';
7
+ import '@angular/cdk/overlay';
8
+ import '@angular/cdk/portal';
9
+ import '@angular/cdk/coercion';
10
+ import 'rxjs';
11
+ import 'rxjs/operators';
12
+ import '@angular/cdk/keycodes';
13
+ import '@angular/cdk/a11y';
14
+ import '@angular/cdk/scrolling';
15
+ import '../common-module-a39ee957.mjs';
16
+ import '@angular/cdk/bidi';
6
17
 
7
18
  /** Selectors for different sections of the mat-dialog that can contain user content. */
8
19
  var MatDialogSection;
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/dialog/testing/dialog-harness.ts","../../../../../../../src/material/dialog/testing/dialog-opener.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.dev/license\n */\n\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {DialogHarnessFilters} from './dialog-harness-filters';\nimport {DialogRole} from '@angular/material/dialog';\n\n/** Selectors for different sections of the mat-dialog that can contain user content. */\nexport enum MatDialogSection {\n TITLE = '.mat-mdc-dialog-title',\n CONTENT = '.mat-mdc-dialog-content',\n ACTIONS = '.mat-mdc-dialog-actions',\n}\n\n/** Harness for interacting with a standard `MatDialog` in tests. */\nexport class MatDialogHarness\n // @breaking-change 14.0.0 change generic type to MatDialogSection.\n extends ContentContainerComponentHarness<MatDialogSection | string>\n{\n /** The selector for the host element of a `MatDialog` instance. */\n static hostSelector = '.mat-mdc-dialog-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatDialogHarness>(\n this: ComponentHarnessConstructor<T>,\n options: DialogHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n protected _title = this.locatorForOptional(MatDialogSection.TITLE);\n protected _content = this.locatorForOptional(MatDialogSection.CONTENT);\n protected _actions = this.locatorForOptional(MatDialogSection.ACTIONS);\n\n /** Gets the id of the dialog. */\n async getId(): Promise<string | null> {\n const id = await (await this.host()).getAttribute('id');\n // In case no id has been specified, the \"id\" property always returns\n // an empty string. To make this method more explicit, we return null.\n return id !== '' ? id : null;\n }\n\n /** Gets the role of the dialog. */\n async getRole(): Promise<DialogRole | null> {\n return (await this.host()).getAttribute('role') as Promise<DialogRole | null>;\n }\n\n /** Gets the value of the dialog's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the dialog's \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Gets the value of the dialog's \"aria-describedby\" attribute. */\n async getAriaDescribedby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-describedby');\n }\n\n /**\n * Closes the dialog by pressing escape.\n *\n * Note: this method does nothing if `disableClose` has been set to `true` for the dialog.\n */\n async close(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n\n /** Gets the dialog's text. */\n async getText() {\n return (await this.host()).text();\n }\n\n /** Gets the dialog's title text. This only works if the dialog is using mat-dialog-title. */\n async getTitleText() {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the dialog's content text. This only works if the dialog is using mat-dialog-content. */\n async getContentText() {\n return (await this._content())?.text() ?? '';\n }\n\n /** Gets the dialog's actions text. This only works if the dialog is using mat-dialog-actions. */\n async getActionsText() {\n return (await this._actions())?.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.dev/license\n */\n\nimport {ComponentType} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n NgModule,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '@angular/material/dialog';\nimport {NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {Subscription} from 'rxjs';\n\n/** Test component that immediately opens a dialog when bootstrapped. */\n@Component({\n selector: 'mat-test-dialog-opener',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatTestDialogOpener<T = unknown, R = unknown> implements OnDestroy {\n dialog = inject(MatDialog);\n\n /** Component that should be opened with the MatDialog `open` method. */\n protected static component: ComponentType<unknown> | undefined;\n\n /** Config that should be provided to the MatDialog `open` method. */\n protected static config: MatDialogConfig | undefined;\n\n /** MatDialogRef returned from the MatDialog `open` method. */\n dialogRef: MatDialogRef<T, R>;\n\n /** Data passed to the `MatDialog` close method. */\n closedResult: R | undefined;\n\n private readonly _afterClosedSubscription: Subscription;\n\n private readonly _ngZone = inject(NgZone);\n\n /** Static method that prepares this class to open the provided component. */\n static withComponent<T = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: MatDialogConfig,\n ) {\n MatTestDialogOpener.component = component;\n MatTestDialogOpener.config = config;\n return MatTestDialogOpener as ComponentType<MatTestDialogOpener<T, R>>;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n if (!MatTestDialogOpener.component) {\n throw new Error(`MatTestDialogOpener does not have a component provided.`);\n }\n\n this.dialogRef = this._ngZone.run(() =>\n this.dialog.open<T, R>(\n MatTestDialogOpener.component as ComponentType<T>,\n MatTestDialogOpener.config || {},\n ),\n );\n this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => {\n this.closedResult = result;\n });\n }\n\n ngOnDestroy() {\n this._afterClosedSubscription.unsubscribe();\n MatTestDialogOpener.component = undefined;\n MatTestDialogOpener.config = undefined;\n }\n}\n\n@NgModule({\n imports: [MatDialogModule, NoopAnimationsModule, MatTestDialogOpener],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.mjs","sources":["../../../../../../../src/material/dialog/testing/dialog-harness.ts","../../../../../../../src/material/dialog/testing/dialog-opener.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.dev/license\n */\n\nimport {\n ComponentHarnessConstructor,\n ContentContainerComponentHarness,\n HarnessPredicate,\n TestKey,\n} from '@angular/cdk/testing';\nimport {DialogHarnessFilters} from './dialog-harness-filters';\nimport {DialogRole} from '../../dialog';\n\n/** Selectors for different sections of the mat-dialog that can contain user content. */\nexport enum MatDialogSection {\n TITLE = '.mat-mdc-dialog-title',\n CONTENT = '.mat-mdc-dialog-content',\n ACTIONS = '.mat-mdc-dialog-actions',\n}\n\n/** Harness for interacting with a standard `MatDialog` in tests. */\nexport class MatDialogHarness\n // @breaking-change 14.0.0 change generic type to MatDialogSection.\n extends ContentContainerComponentHarness<MatDialogSection | string>\n{\n /** The selector for the host element of a `MatDialog` instance. */\n static hostSelector = '.mat-mdc-dialog-container';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a dialog with specific attributes.\n * @param options Options for filtering which dialog instances are considered a match.\n * @return a `HarnessPredicate` configured with the given options.\n */\n static with<T extends MatDialogHarness>(\n this: ComponentHarnessConstructor<T>,\n options: DialogHarnessFilters = {},\n ): HarnessPredicate<T> {\n return new HarnessPredicate(this, options);\n }\n\n protected _title = this.locatorForOptional(MatDialogSection.TITLE);\n protected _content = this.locatorForOptional(MatDialogSection.CONTENT);\n protected _actions = this.locatorForOptional(MatDialogSection.ACTIONS);\n\n /** Gets the id of the dialog. */\n async getId(): Promise<string | null> {\n const id = await (await this.host()).getAttribute('id');\n // In case no id has been specified, the \"id\" property always returns\n // an empty string. To make this method more explicit, we return null.\n return id !== '' ? id : null;\n }\n\n /** Gets the role of the dialog. */\n async getRole(): Promise<DialogRole | null> {\n return (await this.host()).getAttribute('role') as Promise<DialogRole | null>;\n }\n\n /** Gets the value of the dialog's \"aria-label\" attribute. */\n async getAriaLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** Gets the value of the dialog's \"aria-labelledby\" attribute. */\n async getAriaLabelledby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-labelledby');\n }\n\n /** Gets the value of the dialog's \"aria-describedby\" attribute. */\n async getAriaDescribedby(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-describedby');\n }\n\n /**\n * Closes the dialog by pressing escape.\n *\n * Note: this method does nothing if `disableClose` has been set to `true` for the dialog.\n */\n async close(): Promise<void> {\n await (await this.host()).sendKeys(TestKey.ESCAPE);\n }\n\n /** Gets the dialog's text. */\n async getText() {\n return (await this.host()).text();\n }\n\n /** Gets the dialog's title text. This only works if the dialog is using mat-dialog-title. */\n async getTitleText() {\n return (await this._title())?.text() ?? '';\n }\n\n /** Gets the dialog's content text. This only works if the dialog is using mat-dialog-content. */\n async getContentText() {\n return (await this._content())?.text() ?? '';\n }\n\n /** Gets the dialog's actions text. This only works if the dialog is using mat-dialog-actions. */\n async getActionsText() {\n return (await this._actions())?.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.dev/license\n */\n\nimport {ComponentType} from '@angular/cdk/overlay';\nimport {\n ChangeDetectionStrategy,\n Component,\n NgModule,\n NgZone,\n OnDestroy,\n ViewEncapsulation,\n inject,\n} from '@angular/core';\nimport {MatDialog, MatDialogConfig, MatDialogModule, MatDialogRef} from '../../dialog';\nimport {NoopAnimationsModule} from '@angular/platform-browser/animations';\nimport {Subscription} from 'rxjs';\n\n/** Test component that immediately opens a dialog when bootstrapped. */\n@Component({\n selector: 'mat-test-dialog-opener',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MatTestDialogOpener<T = unknown, R = unknown> implements OnDestroy {\n dialog = inject(MatDialog);\n\n /** Component that should be opened with the MatDialog `open` method. */\n protected static component: ComponentType<unknown> | undefined;\n\n /** Config that should be provided to the MatDialog `open` method. */\n protected static config: MatDialogConfig | undefined;\n\n /** MatDialogRef returned from the MatDialog `open` method. */\n dialogRef: MatDialogRef<T, R>;\n\n /** Data passed to the `MatDialog` close method. */\n closedResult: R | undefined;\n\n private readonly _afterClosedSubscription: Subscription;\n\n private readonly _ngZone = inject(NgZone);\n\n /** Static method that prepares this class to open the provided component. */\n static withComponent<T = unknown, R = unknown>(\n component: ComponentType<T>,\n config?: MatDialogConfig,\n ) {\n MatTestDialogOpener.component = component;\n MatTestDialogOpener.config = config;\n return MatTestDialogOpener as ComponentType<MatTestDialogOpener<T, R>>;\n }\n\n constructor(...args: unknown[]);\n\n constructor() {\n if (!MatTestDialogOpener.component) {\n throw new Error(`MatTestDialogOpener does not have a component provided.`);\n }\n\n this.dialogRef = this._ngZone.run(() =>\n this.dialog.open<T, R>(\n MatTestDialogOpener.component as ComponentType<T>,\n MatTestDialogOpener.config || {},\n ),\n );\n this._afterClosedSubscription = this.dialogRef.afterClosed().subscribe(result => {\n this.closedResult = result;\n });\n }\n\n ngOnDestroy() {\n this._afterClosedSubscription.unsubscribe();\n MatTestDialogOpener.component = undefined;\n MatTestDialogOpener.config = undefined;\n }\n}\n\n@NgModule({\n imports: [MatDialogModule, NoopAnimationsModule, MatTestDialogOpener],\n})\nexport class MatTestDialogOpenerModule {}\n"],"names":[],"mappings":"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"}