@angular/material 10.0.0-rc.3 → 10.1.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 (627) hide show
  1. package/_theming.scss +17 -17
  2. package/autocomplete/index.metadata.json +1 -1
  3. package/autocomplete/testing/autocomplete-harness.d.ts +2 -0
  4. package/bundles/material-autocomplete-testing.umd.js +11 -0
  5. package/bundles/material-autocomplete-testing.umd.js.map +1 -1
  6. package/bundles/material-autocomplete-testing.umd.min.js +2 -2
  7. package/bundles/material-autocomplete-testing.umd.min.js.map +1 -1
  8. package/bundles/material-autocomplete.umd.js +3 -1
  9. package/bundles/material-autocomplete.umd.js.map +1 -1
  10. package/bundles/material-autocomplete.umd.min.js +5 -5
  11. package/bundles/material-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/material-badge-testing.umd.min.js +1 -1
  13. package/bundles/material-badge-testing.umd.min.js.map +1 -1
  14. package/bundles/material-bottom-sheet-testing.umd.min.js +1 -1
  15. package/bundles/material-bottom-sheet-testing.umd.min.js.map +1 -1
  16. package/bundles/material-button-testing.umd.js +11 -0
  17. package/bundles/material-button-testing.umd.js.map +1 -1
  18. package/bundles/material-button-testing.umd.min.js +2 -2
  19. package/bundles/material-button-testing.umd.min.js.map +1 -1
  20. package/bundles/material-button-toggle-testing.umd.js +11 -0
  21. package/bundles/material-button-toggle-testing.umd.js.map +1 -1
  22. package/bundles/material-button-toggle-testing.umd.min.js +3 -3
  23. package/bundles/material-button-toggle-testing.umd.min.js.map +1 -1
  24. package/bundles/material-button-toggle.umd.js +12 -3
  25. package/bundles/material-button-toggle.umd.js.map +1 -1
  26. package/bundles/material-button-toggle.umd.min.js +2 -2
  27. package/bundles/material-button-toggle.umd.min.js.map +1 -1
  28. package/bundles/material-button.umd.js +7 -2
  29. package/bundles/material-button.umd.js.map +1 -1
  30. package/bundles/material-button.umd.min.js +4 -4
  31. package/bundles/material-button.umd.min.js.map +1 -1
  32. package/bundles/material-card-testing.umd.js +335 -0
  33. package/bundles/material-card-testing.umd.js.map +1 -0
  34. package/bundles/material-card-testing.umd.min.js +44 -0
  35. package/bundles/material-card-testing.umd.min.js.map +1 -0
  36. package/bundles/material-checkbox-testing.umd.js +11 -0
  37. package/bundles/material-checkbox-testing.umd.js.map +1 -1
  38. package/bundles/material-checkbox-testing.umd.min.js +3 -3
  39. package/bundles/material-checkbox-testing.umd.min.js.map +1 -1
  40. package/bundles/material-checkbox.umd.js.map +1 -1
  41. package/bundles/material-chips.umd.js +36 -12
  42. package/bundles/material-chips.umd.js.map +1 -1
  43. package/bundles/material-chips.umd.min.js +4 -4
  44. package/bundles/material-chips.umd.min.js.map +1 -1
  45. package/bundles/material-core-testing.umd.min.js +1 -1
  46. package/bundles/material-core-testing.umd.min.js.map +1 -1
  47. package/bundles/material-core.umd.js +11 -3
  48. package/bundles/material-core.umd.js.map +1 -1
  49. package/bundles/material-core.umd.min.js +11 -11
  50. package/bundles/material-core.umd.min.js.map +1 -1
  51. package/bundles/material-datepicker.umd.js +20 -11
  52. package/bundles/material-datepicker.umd.js.map +1 -1
  53. package/bundles/material-datepicker.umd.min.js +5 -5
  54. package/bundles/material-datepicker.umd.min.js.map +1 -1
  55. package/bundles/material-dialog-testing.umd.min.js +1 -1
  56. package/bundles/material-dialog-testing.umd.min.js.map +1 -1
  57. package/bundles/material-dialog.umd.js +45 -8
  58. package/bundles/material-dialog.umd.js.map +1 -1
  59. package/bundles/material-dialog.umd.min.js +14 -7
  60. package/bundles/material-dialog.umd.min.js.map +1 -1
  61. package/bundles/material-divider-testing.umd.min.js +1 -1
  62. package/bundles/material-divider-testing.umd.min.js.map +1 -1
  63. package/bundles/material-expansion-testing.umd.js +11 -0
  64. package/bundles/material-expansion-testing.umd.js.map +1 -1
  65. package/bundles/material-expansion-testing.umd.min.js +3 -3
  66. package/bundles/material-expansion-testing.umd.min.js.map +1 -1
  67. package/bundles/material-form-field-testing.umd.js +32 -0
  68. package/bundles/material-form-field-testing.umd.js.map +1 -1
  69. package/bundles/material-form-field-testing.umd.min.js +4 -4
  70. package/bundles/material-form-field-testing.umd.min.js.map +1 -1
  71. package/bundles/material-form-field.umd.js +47 -21
  72. package/bundles/material-form-field.umd.js.map +1 -1
  73. package/bundles/material-form-field.umd.min.js +5 -5
  74. package/bundles/material-form-field.umd.min.js.map +1 -1
  75. package/bundles/material-grid-list-testing.umd.min.js +1 -1
  76. package/bundles/material-grid-list-testing.umd.min.js.map +1 -1
  77. package/bundles/material-grid-list.umd.js +2 -2
  78. package/bundles/material-grid-list.umd.js.map +1 -1
  79. package/bundles/material-grid-list.umd.min.js +2 -2
  80. package/bundles/material-grid-list.umd.min.js.map +1 -1
  81. package/bundles/material-input-testing.umd.js +23 -6
  82. package/bundles/material-input-testing.umd.js.map +1 -1
  83. package/bundles/material-input-testing.umd.min.js +3 -3
  84. package/bundles/material-input-testing.umd.min.js.map +1 -1
  85. package/bundles/material-input.umd.js +28 -3
  86. package/bundles/material-input.umd.js.map +1 -1
  87. package/bundles/material-input.umd.min.js +3 -3
  88. package/bundles/material-input.umd.min.js.map +1 -1
  89. package/bundles/material-list-testing.umd.js +33 -0
  90. package/bundles/material-list-testing.umd.js.map +1 -1
  91. package/bundles/material-list-testing.umd.min.js +2 -2
  92. package/bundles/material-list-testing.umd.min.js.map +1 -1
  93. package/bundles/material-list.umd.js +3 -3
  94. package/bundles/material-list.umd.min.js +1 -1
  95. package/bundles/material-list.umd.min.js.map +1 -1
  96. package/bundles/material-menu-testing.umd.js +22 -0
  97. package/bundles/material-menu-testing.umd.js.map +1 -1
  98. package/bundles/material-menu-testing.umd.min.js +2 -2
  99. package/bundles/material-menu-testing.umd.min.js.map +1 -1
  100. package/bundles/material-menu.umd.js +13 -2
  101. package/bundles/material-menu.umd.js.map +1 -1
  102. package/bundles/material-menu.umd.min.js +4 -4
  103. package/bundles/material-menu.umd.min.js.map +1 -1
  104. package/bundles/material-paginator-testing.umd.min.js +1 -1
  105. package/bundles/material-paginator-testing.umd.min.js.map +1 -1
  106. package/bundles/material-progress-bar-testing.umd.min.js +1 -1
  107. package/bundles/material-progress-bar-testing.umd.min.js.map +1 -1
  108. package/bundles/material-progress-spinner-testing.umd.js +1 -1
  109. package/bundles/material-progress-spinner-testing.umd.js.map +1 -1
  110. package/bundles/material-progress-spinner-testing.umd.min.js +2 -2
  111. package/bundles/material-progress-spinner-testing.umd.min.js.map +1 -1
  112. package/bundles/material-progress-spinner.umd.js +2 -2
  113. package/bundles/material-progress-spinner.umd.min.js +3 -3
  114. package/bundles/material-progress-spinner.umd.min.js.map +1 -1
  115. package/bundles/material-radio-testing.umd.js +11 -0
  116. package/bundles/material-radio-testing.umd.js.map +1 -1
  117. package/bundles/material-radio-testing.umd.min.js +3 -3
  118. package/bundles/material-radio-testing.umd.min.js.map +1 -1
  119. package/bundles/material-radio.umd.js +15 -5
  120. package/bundles/material-radio.umd.js.map +1 -1
  121. package/bundles/material-radio.umd.min.js +2 -2
  122. package/bundles/material-radio.umd.min.js.map +1 -1
  123. package/bundles/material-select-testing.umd.js +11 -0
  124. package/bundles/material-select-testing.umd.js.map +1 -1
  125. package/bundles/material-select-testing.umd.min.js +2 -2
  126. package/bundles/material-select-testing.umd.min.js.map +1 -1
  127. package/bundles/material-select.umd.js +11 -3
  128. package/bundles/material-select.umd.js.map +1 -1
  129. package/bundles/material-select.umd.min.js +4 -4
  130. package/bundles/material-select.umd.min.js.map +1 -1
  131. package/bundles/material-sidenav-testing.umd.min.js +1 -1
  132. package/bundles/material-sidenav-testing.umd.min.js.map +1 -1
  133. package/bundles/material-sidenav.umd.js +41 -17
  134. package/bundles/material-sidenav.umd.js.map +1 -1
  135. package/bundles/material-sidenav.umd.min.js +2 -2
  136. package/bundles/material-sidenav.umd.min.js.map +1 -1
  137. package/bundles/material-slide-toggle-testing.umd.js +11 -0
  138. package/bundles/material-slide-toggle-testing.umd.js.map +1 -1
  139. package/bundles/material-slide-toggle-testing.umd.min.js +2 -2
  140. package/bundles/material-slide-toggle-testing.umd.min.js.map +1 -1
  141. package/bundles/material-slide-toggle.umd.js.map +1 -1
  142. package/bundles/material-slider-testing.umd.js +11 -0
  143. package/bundles/material-slider-testing.umd.js.map +1 -1
  144. package/bundles/material-slider-testing.umd.min.js +2 -2
  145. package/bundles/material-slider-testing.umd.min.js.map +1 -1
  146. package/bundles/material-snack-bar-testing.umd.min.js +1 -1
  147. package/bundles/material-snack-bar-testing.umd.min.js.map +1 -1
  148. package/bundles/material-snack-bar.umd.js +47 -39
  149. package/bundles/material-snack-bar.umd.js.map +1 -1
  150. package/bundles/material-snack-bar.umd.min.js +2 -2
  151. package/bundles/material-snack-bar.umd.min.js.map +1 -1
  152. package/bundles/material-sort-testing.umd.js +10 -10
  153. package/bundles/material-sort-testing.umd.js.map +1 -1
  154. package/bundles/material-sort-testing.umd.min.js +3 -3
  155. package/bundles/material-sort-testing.umd.min.js.map +1 -1
  156. package/bundles/material-sort.umd.js +25 -12
  157. package/bundles/material-sort.umd.js.map +1 -1
  158. package/bundles/material-sort.umd.min.js +5 -5
  159. package/bundles/material-sort.umd.min.js.map +1 -1
  160. package/bundles/material-table-testing.umd.min.js +1 -1
  161. package/bundles/material-table-testing.umd.min.js.map +1 -1
  162. package/bundles/material-table.umd.min.js +2 -2
  163. package/bundles/material-table.umd.min.js.map +1 -1
  164. package/bundles/material-tabs-testing.umd.min.js +1 -1
  165. package/bundles/material-tabs-testing.umd.min.js.map +1 -1
  166. package/bundles/material-tabs.umd.js +23 -4
  167. package/bundles/material-tabs.umd.js.map +1 -1
  168. package/bundles/material-tabs.umd.min.js +5 -12
  169. package/bundles/material-tabs.umd.min.js.map +1 -1
  170. package/bundles/material-toolbar-testing.umd.js +330 -0
  171. package/bundles/material-toolbar-testing.umd.js.map +1 -0
  172. package/bundles/material-toolbar-testing.umd.min.js +44 -0
  173. package/bundles/material-toolbar-testing.umd.min.js.map +1 -0
  174. package/bundles/material-tooltip-testing.umd.min.js +1 -1
  175. package/bundles/material-tooltip-testing.umd.min.js.map +1 -1
  176. package/bundles/material-tooltip.umd.js +14 -1
  177. package/bundles/material-tooltip.umd.js.map +1 -1
  178. package/bundles/material-tooltip.umd.min.js +3 -3
  179. package/bundles/material-tooltip.umd.min.js.map +1 -1
  180. package/bundles/material-tree.umd.js.map +1 -1
  181. package/button/_button-base.scss +1 -1
  182. package/button/_button-theme.scss +8 -8
  183. package/button/index.metadata.json +1 -1
  184. package/button/testing/button-harness.d.ts +2 -0
  185. package/button-toggle/button-toggle.d.ts +10 -3
  186. package/button-toggle/index.metadata.json +1 -1
  187. package/button-toggle/testing/button-toggle-harness.d.ts +2 -0
  188. package/card/testing/card-harness-filters.d.ts +17 -0
  189. package/card/testing/card-harness.d.ts +36 -0
  190. package/card/testing/index.d.ts +8 -0
  191. package/card/testing/package.json +9 -0
  192. package/card/testing/public-api.d.ts +9 -0
  193. package/checkbox/index.metadata.json +1 -1
  194. package/checkbox/testing/checkbox-harness.d.ts +2 -0
  195. package/chips/chip.d.ts +19 -1
  196. package/chips/index.metadata.json +1 -1
  197. package/core/focus-indicators/_focus-indicators.scss +6 -6
  198. package/core/index.metadata.json +1 -1
  199. package/core/option/optgroup.d.ts +7 -0
  200. package/core/ripple/ripple-ref.d.ts +21 -2
  201. package/core/ripple/ripple-renderer.d.ts +1 -19
  202. package/core/ripple/ripple.d.ts +2 -2
  203. package/core/style/_list-common.scss +1 -1
  204. package/datepicker/date-range-input-parts.d.ts +2 -4
  205. package/datepicker/date-range-input.d.ts +4 -4
  206. package/datepicker/date-range-picker.d.ts +10 -3
  207. package/datepicker/datepicker.d.ts +2 -3
  208. package/datepicker/index.metadata.json +1 -1
  209. package/datepicker/public-api.d.ts +1 -1
  210. package/dialog/dialog-container.d.ts +9 -2
  211. package/dialog/dialog-content-directives.d.ts +1 -0
  212. package/dialog/dialog-ref.d.ts +7 -0
  213. package/dialog/index.metadata.json +1 -1
  214. package/esm2015/autocomplete/autocomplete-module.js +18 -22
  215. package/esm2015/autocomplete/autocomplete-origin.js +16 -20
  216. package/esm2015/autocomplete/autocomplete-trigger.js +519 -521
  217. package/esm2015/autocomplete/autocomplete.js +126 -130
  218. package/esm2015/autocomplete/testing/autocomplete-harness.js +99 -97
  219. package/esm2015/badge/badge-module.js +13 -17
  220. package/esm2015/badge/badge.js +184 -188
  221. package/esm2015/badge/testing/badge-harness.js +74 -78
  222. package/esm2015/bottom-sheet/bottom-sheet-container.js +161 -165
  223. package/esm2015/bottom-sheet/bottom-sheet-module.js +15 -19
  224. package/esm2015/bottom-sheet/bottom-sheet.js +124 -128
  225. package/esm2015/bottom-sheet/testing/bottom-sheet-harness.js +29 -33
  226. package/esm2015/button/button-module.js +20 -24
  227. package/esm2015/button/button.js +111 -114
  228. package/esm2015/button/testing/button-harness.js +60 -58
  229. package/esm2015/button-toggle/button-toggle-module.js +10 -14
  230. package/esm2015/button-toggle/button-toggle.js +368 -368
  231. package/esm2015/button-toggle/testing/button-toggle-group-harness.js +42 -46
  232. package/esm2015/button-toggle/testing/button-toggle-harness.js +113 -111
  233. package/esm2015/card/card-module.js +30 -34
  234. package/esm2015/card/card.js +147 -203
  235. package/esm2015/card/testing/card-harness-filters.js +8 -0
  236. package/esm2015/card/testing/card-harness.js +52 -0
  237. package/esm2015/card/testing/index.js +9 -0
  238. package/esm2015/card/testing/public-api.js +10 -0
  239. package/esm2015/card/testing/testing.externs.js +0 -0
  240. package/esm2015/checkbox/checkbox-module.js +21 -29
  241. package/esm2015/checkbox/checkbox-required-validator.js +9 -13
  242. package/esm2015/checkbox/checkbox.js +315 -319
  243. package/esm2015/checkbox/testing/checkbox-harness.js +150 -148
  244. package/esm2015/chips/chip-input.js +119 -123
  245. package/esm2015/chips/chip-list.js +572 -576
  246. package/esm2015/chips/chip.js +333 -328
  247. package/esm2015/chips/chips-module.js +16 -20
  248. package/esm2015/core/animation/animation.js +12 -20
  249. package/esm2015/core/common-behaviors/common-module.js +91 -95
  250. package/esm2015/core/datetime/index.js +19 -27
  251. package/esm2015/core/datetime/native-date-adapter.js +202 -206
  252. package/esm2015/core/error/error-options.js +16 -24
  253. package/esm2015/core/line/line.js +18 -26
  254. package/esm2015/core/option/index.js +10 -14
  255. package/esm2015/core/option/optgroup.js +36 -33
  256. package/esm2015/core/option/option.js +181 -185
  257. package/esm2015/core/ripple/index.js +10 -14
  258. package/esm2015/core/ripple/ripple-ref.js +1 -1
  259. package/esm2015/core/ripple/ripple-renderer.js +1 -1
  260. package/esm2015/core/ripple/ripple.js +102 -106
  261. package/esm2015/core/selection/index.js +9 -13
  262. package/esm2015/core/selection/pseudo-checkbox/pseudo-checkbox.js +32 -36
  263. package/esm2015/core/testing/optgroup-harness.js +39 -43
  264. package/esm2015/core/testing/option-harness.js +51 -55
  265. package/esm2015/core/version.js +1 -1
  266. package/esm2015/datepicker/calendar-body.js +214 -218
  267. package/esm2015/datepicker/calendar.js +295 -303
  268. package/esm2015/datepicker/date-range-input-parts.js +214 -229
  269. package/esm2015/datepicker/date-range-input.js +244 -242
  270. package/esm2015/datepicker/date-range-picker.js +19 -23
  271. package/esm2015/datepicker/date-range-selection-strategy.js +31 -35
  272. package/esm2015/datepicker/date-selection-model.js +110 -122
  273. package/esm2015/datepicker/datepicker-base.js +418 -426
  274. package/esm2015/datepicker/datepicker-input-base.js +227 -224
  275. package/esm2015/datepicker/datepicker-input.js +111 -115
  276. package/esm2015/datepicker/datepicker-intl.js +37 -41
  277. package/esm2015/datepicker/datepicker-module.js +62 -66
  278. package/esm2015/datepicker/datepicker-toggle.js +81 -89
  279. package/esm2015/datepicker/datepicker.js +13 -17
  280. package/esm2015/datepicker/month-view.js +283 -287
  281. package/esm2015/datepicker/multi-year-view.js +198 -202
  282. package/esm2015/datepicker/public-api.js +2 -2
  283. package/esm2015/datepicker/year-view.js +220 -224
  284. package/esm2015/dialog/dialog-container.js +175 -164
  285. package/esm2015/dialog/dialog-content-directives.js +105 -114
  286. package/esm2015/dialog/dialog-module.js +32 -36
  287. package/esm2015/dialog/dialog-ref.js +17 -3
  288. package/esm2015/dialog/dialog.js +236 -240
  289. package/esm2015/dialog/testing/dialog-harness.js +58 -62
  290. package/esm2015/divider/divider-module.js +10 -14
  291. package/esm2015/divider/divider.js +33 -37
  292. package/esm2015/divider/testing/divider-harness.js +16 -20
  293. package/esm2015/expansion/accordion.js +73 -77
  294. package/esm2015/expansion/expansion-module.js +26 -30
  295. package/esm2015/expansion/expansion-panel-content.js +13 -17
  296. package/esm2015/expansion/expansion-panel-header.js +168 -180
  297. package/esm2015/expansion/expansion-panel.js +144 -152
  298. package/esm2015/expansion/testing/accordion-harness.js +24 -28
  299. package/esm2015/expansion/testing/expansion-harness.js +136 -134
  300. package/esm2015/form-field/error.js +26 -23
  301. package/esm2015/form-field/form-field-control.js +6 -10
  302. package/esm2015/form-field/form-field-module.js +31 -35
  303. package/esm2015/form-field/form-field.js +407 -409
  304. package/esm2015/form-field/hint.js +35 -29
  305. package/esm2015/form-field/label.js +8 -12
  306. package/esm2015/form-field/placeholder.js +8 -12
  307. package/esm2015/form-field/prefix.js +16 -13
  308. package/esm2015/form-field/suffix.js +16 -13
  309. package/esm2015/form-field/testing/form-field-harness.js +220 -206
  310. package/esm2015/grid-list/grid-list-module.js +26 -30
  311. package/esm2015/grid-list/grid-list.js +108 -112
  312. package/esm2015/grid-list/grid-tile.js +91 -111
  313. package/esm2015/grid-list/testing/grid-list-harness.js +62 -66
  314. package/esm2015/grid-list/testing/grid-tile-harness.js +69 -73
  315. package/esm2015/grid-list/tile-styler.js +1 -1
  316. package/esm2015/icon/icon-module.js +10 -14
  317. package/esm2015/icon/icon-registry.js +406 -410
  318. package/esm2015/icon/icon.js +228 -232
  319. package/esm2015/icon/testing/fake-icon-registry.js +66 -74
  320. package/esm2015/input/autosize.js +30 -34
  321. package/esm2015/input/input-module.js +21 -25
  322. package/esm2015/input/input.js +305 -284
  323. package/esm2015/input/testing/input-harness.js +129 -123
  324. package/esm2015/list/list-module.js +32 -36
  325. package/esm2015/list/list.js +165 -189
  326. package/esm2015/list/selection-list.js +503 -511
  327. package/esm2015/list/testing/action-list-harness.js +55 -57
  328. package/esm2015/list/testing/list-harness.js +31 -39
  329. package/esm2015/list/testing/list-item-harness-base.js +13 -17
  330. package/esm2015/list/testing/nav-list-harness.js +62 -64
  331. package/esm2015/list/testing/selection-list-harness.js +136 -138
  332. package/esm2015/menu/menu-content.js +74 -71
  333. package/esm2015/menu/menu-item.js +119 -123
  334. package/esm2015/menu/menu-module.js +29 -37
  335. package/esm2015/menu/menu-panel.js +1 -1
  336. package/esm2015/menu/menu-trigger.js +402 -405
  337. package/esm2015/menu/menu.js +329 -339
  338. package/esm2015/menu/testing/menu-harness.js +193 -189
  339. package/esm2015/paginator/paginator-intl.js +36 -40
  340. package/esm2015/paginator/paginator-module.js +16 -20
  341. package/esm2015/paginator/paginator.js +205 -209
  342. package/esm2015/paginator/testing/paginator-harness.js +91 -95
  343. package/esm2015/progress-bar/progress-bar-module.js +10 -14
  344. package/esm2015/progress-bar/progress-bar.js +114 -118
  345. package/esm2015/progress-bar/testing/progress-bar-harness.js +27 -31
  346. package/esm2015/progress-spinner/progress-spinner-module.js +17 -21
  347. package/esm2015/progress-spinner/progress-spinner.js +181 -189
  348. package/esm2015/progress-spinner/testing/progress-spinner-harness.js +28 -32
  349. package/esm2015/radio/radio-module.js +10 -14
  350. package/esm2015/radio/radio.js +437 -444
  351. package/esm2015/radio/testing/radio-harness.js +241 -243
  352. package/esm2015/select/select-module.js +23 -27
  353. package/esm2015/select/select.js +917 -918
  354. package/esm2015/select/testing/select-harness.js +138 -136
  355. package/esm2015/sidenav/drawer.js +632 -620
  356. package/esm2015/sidenav/sidenav-module.js +31 -35
  357. package/esm2015/sidenav/sidenav.js +104 -116
  358. package/esm2015/sidenav/testing/drawer-harness.js +40 -44
  359. package/esm2015/sidenav/testing/sidenav-harness.js +20 -24
  360. package/esm2015/slide-toggle/slide-toggle-module.js +27 -35
  361. package/esm2015/slide-toggle/slide-toggle-required-validator.js +9 -13
  362. package/esm2015/slide-toggle/slide-toggle.js +184 -188
  363. package/esm2015/slide-toggle/testing/slide-toggle-harness.js +123 -121
  364. package/esm2015/slider/slider-module.js +10 -14
  365. package/esm2015/slider/slider.js +640 -644
  366. package/esm2015/slider/testing/slider-harness.js +129 -127
  367. package/esm2015/snack-bar/simple-snack-bar.js +32 -36
  368. package/esm2015/snack-bar/snack-bar-container.js +144 -148
  369. package/esm2015/snack-bar/snack-bar-module.js +17 -21
  370. package/esm2015/snack-bar/snack-bar-ref.js +1 -1
  371. package/esm2015/snack-bar/snack-bar.js +208 -205
  372. package/esm2015/snack-bar/testing/snack-bar-harness.js +112 -116
  373. package/esm2015/sort/sort-header-intl.js +21 -21
  374. package/esm2015/sort/sort-header.js +200 -194
  375. package/esm2015/sort/sort-module.js +11 -15
  376. package/esm2015/sort/sort.js +92 -96
  377. package/esm2015/sort/testing/sort-harness.js +28 -32
  378. package/esm2015/sort/testing/sort-header-harness.js +66 -67
  379. package/esm2015/stepper/step-header.js +78 -82
  380. package/esm2015/stepper/step-label.js +8 -12
  381. package/esm2015/stepper/stepper-button.js +23 -31
  382. package/esm2015/stepper/stepper-icon.js +16 -20
  383. package/esm2015/stepper/stepper-intl.js +15 -19
  384. package/esm2015/stepper/stepper-module.js +40 -44
  385. package/esm2015/stepper/stepper.js +139 -155
  386. package/esm2015/table/cell.js +94 -122
  387. package/esm2015/table/row.js +90 -118
  388. package/esm2015/table/table-module.js +13 -17
  389. package/esm2015/table/table.js +26 -30
  390. package/esm2015/table/testing/cell-harness.js +56 -68
  391. package/esm2015/table/testing/row-harness.js +90 -102
  392. package/esm2015/table/testing/table-harness.js +65 -69
  393. package/esm2015/table/text-column.js +17 -21
  394. package/esm2015/tabs/index.js +4 -2
  395. package/esm2015/tabs/ink-bar.js +55 -59
  396. package/esm2015/tabs/paginated-tab-header.js +415 -419
  397. package/esm2015/tabs/tab-body.js +179 -191
  398. package/esm2015/tabs/tab-content.js +21 -16
  399. package/esm2015/tabs/tab-group.js +263 -271
  400. package/esm2015/tabs/tab-header.js +69 -77
  401. package/esm2015/tabs/tab-label-wrapper.js +29 -33
  402. package/esm2015/tabs/tab-label.js +16 -13
  403. package/esm2015/tabs/tab-nav-bar/tab-nav-bar.js +199 -215
  404. package/esm2015/tabs/tab.js +80 -83
  405. package/esm2015/tabs/tabs-module.js +38 -42
  406. package/esm2015/tabs/testing/tab-group-harness.js +52 -56
  407. package/esm2015/tabs/testing/tab-harness.js +78 -82
  408. package/esm2015/toolbar/testing/index.js +9 -0
  409. package/esm2015/toolbar/testing/public-api.js +10 -0
  410. package/esm2015/toolbar/testing/testing.externs.js +0 -0
  411. package/esm2015/toolbar/testing/toolbar-harness-filters.js +8 -0
  412. package/esm2015/toolbar/testing/toolbar-harness.js +47 -0
  413. package/esm2015/toolbar/toolbar-module.js +10 -14
  414. package/esm2015/toolbar/toolbar.js +61 -69
  415. package/esm2015/tooltip/testing/tooltip-harness.js +43 -47
  416. package/esm2015/tooltip/tooltip-module.js +17 -21
  417. package/esm2015/tooltip/tooltip.js +502 -497
  418. package/esm2015/tree/data-source/flat-data-source.js +1 -1
  419. package/esm2015/tree/node.js +99 -111
  420. package/esm2015/tree/outlet.js +19 -23
  421. package/esm2015/tree/padding.js +13 -17
  422. package/esm2015/tree/toggle.js +15 -19
  423. package/esm2015/tree/tree-module.js +10 -14
  424. package/esm2015/tree/tree.js +23 -27
  425. package/expansion/testing/expansion-harness.d.ts +2 -0
  426. package/fesm2015/autocomplete/testing.js +98 -95
  427. package/fesm2015/autocomplete/testing.js.map +1 -1
  428. package/fesm2015/autocomplete.js +677 -687
  429. package/fesm2015/autocomplete.js.map +1 -1
  430. package/fesm2015/badge/testing.js +73 -76
  431. package/fesm2015/badge/testing.js.map +1 -1
  432. package/fesm2015/badge.js +195 -201
  433. package/fesm2015/badge.js.map +1 -1
  434. package/fesm2015/bottom-sheet/testing.js +28 -31
  435. package/fesm2015/bottom-sheet/testing.js.map +1 -1
  436. package/fesm2015/bottom-sheet.js +297 -306
  437. package/fesm2015/bottom-sheet.js.map +1 -1
  438. package/fesm2015/button/testing.js +59 -56
  439. package/fesm2015/button/testing.js.map +1 -1
  440. package/fesm2015/button-toggle/testing.js +155 -155
  441. package/fesm2015/button-toggle/testing.js.map +1 -1
  442. package/fesm2015/button-toggle.js +377 -378
  443. package/fesm2015/button-toggle.js.map +1 -1
  444. package/fesm2015/button.js +129 -133
  445. package/fesm2015/button.js.map +1 -1
  446. package/fesm2015/card/testing.js +79 -0
  447. package/fesm2015/card/testing.js.map +1 -0
  448. package/fesm2015/card.js +175 -220
  449. package/fesm2015/card.js.map +1 -1
  450. package/fesm2015/checkbox/testing.js +149 -146
  451. package/fesm2015/checkbox/testing.js.map +1 -1
  452. package/fesm2015/checkbox.js +342 -354
  453. package/fesm2015/checkbox.js.map +1 -1
  454. package/fesm2015/chips.js +1039 -1039
  455. package/fesm2015/chips.js.map +1 -1
  456. package/fesm2015/core/testing.js +88 -94
  457. package/fesm2015/core/testing.js.map +1 -1
  458. package/fesm2015/core.js +729 -773
  459. package/fesm2015/core.js.map +1 -1
  460. package/fesm2015/datepicker.js +2821 -2884
  461. package/fesm2015/datepicker.js.map +1 -1
  462. package/fesm2015/dialog/testing.js +57 -60
  463. package/fesm2015/dialog/testing.js.map +1 -1
  464. package/fesm2015/dialog.js +564 -549
  465. package/fesm2015/dialog.js.map +1 -1
  466. package/fesm2015/divider/testing.js +15 -18
  467. package/fesm2015/divider/testing.js.map +1 -1
  468. package/fesm2015/divider.js +41 -47
  469. package/fesm2015/divider.js.map +1 -1
  470. package/fesm2015/expansion/testing.js +159 -159
  471. package/fesm2015/expansion/testing.js.map +1 -1
  472. package/fesm2015/expansion.js +422 -446
  473. package/fesm2015/expansion.js.map +1 -1
  474. package/fesm2015/form-field/testing.js +219 -204
  475. package/fesm2015/form-field/testing.js.map +1 -1
  476. package/fesm2015/form-field.js +538 -532
  477. package/fesm2015/form-field.js.map +1 -1
  478. package/fesm2015/grid-list/testing.js +129 -135
  479. package/fesm2015/grid-list/testing.js.map +1 -1
  480. package/fesm2015/grid-list.js +221 -242
  481. package/fesm2015/grid-list.js.map +1 -1
  482. package/fesm2015/icon/testing.js +65 -71
  483. package/fesm2015/icon/testing.js.map +1 -1
  484. package/fesm2015/icon.js +660 -669
  485. package/fesm2015/icon.js.map +1 -1
  486. package/fesm2015/input/testing.js +128 -121
  487. package/fesm2015/input/testing.js.map +1 -1
  488. package/fesm2015/input.js +353 -337
  489. package/fesm2015/input.js.map +1 -1
  490. package/fesm2015/list/testing.js +298 -307
  491. package/fesm2015/list/testing.js.map +1 -1
  492. package/fesm2015/list.js +698 -725
  493. package/fesm2015/list.js.map +1 -1
  494. package/fesm2015/menu/testing.js +192 -186
  495. package/fesm2015/menu/testing.js.map +1 -1
  496. package/fesm2015/menu.js +948 -962
  497. package/fesm2015/menu.js.map +1 -1
  498. package/fesm2015/paginator/testing.js +90 -93
  499. package/fesm2015/paginator/testing.js.map +1 -1
  500. package/fesm2015/paginator.js +247 -256
  501. package/fesm2015/paginator.js.map +1 -1
  502. package/fesm2015/progress-bar/testing.js +26 -29
  503. package/fesm2015/progress-bar/testing.js.map +1 -1
  504. package/fesm2015/progress-bar.js +122 -128
  505. package/fesm2015/progress-bar.js.map +1 -1
  506. package/fesm2015/progress-spinner/testing.js +27 -30
  507. package/fesm2015/progress-spinner/testing.js.map +1 -1
  508. package/fesm2015/progress-spinner.js +196 -205
  509. package/fesm2015/progress-spinner.js.map +1 -1
  510. package/fesm2015/radio/testing.js +240 -240
  511. package/fesm2015/radio/testing.js.map +1 -1
  512. package/fesm2015/radio.js +447 -453
  513. package/fesm2015/radio.js.map +1 -1
  514. package/fesm2015/select/testing.js +137 -134
  515. package/fesm2015/select/testing.js.map +1 -1
  516. package/fesm2015/select.js +939 -941
  517. package/fesm2015/select.js.map +1 -1
  518. package/fesm2015/sidenav/testing.js +58 -64
  519. package/fesm2015/sidenav/testing.js.map +1 -1
  520. package/fesm2015/sidenav.js +765 -762
  521. package/fesm2015/sidenav.js.map +1 -1
  522. package/fesm2015/slide-toggle/testing.js +122 -119
  523. package/fesm2015/slide-toggle/testing.js.map +1 -1
  524. package/fesm2015/slide-toggle.js +217 -229
  525. package/fesm2015/slide-toggle.js.map +1 -1
  526. package/fesm2015/slider/testing.js +128 -125
  527. package/fesm2015/slider/testing.js.map +1 -1
  528. package/fesm2015/slider.js +648 -654
  529. package/fesm2015/slider.js.map +1 -1
  530. package/fesm2015/snack-bar/testing.js +111 -114
  531. package/fesm2015/snack-bar/testing.js.map +1 -1
  532. package/fesm2015/snack-bar.js +426 -431
  533. package/fesm2015/snack-bar.js.map +1 -1
  534. package/fesm2015/sort/testing.js +92 -95
  535. package/fesm2015/sort/testing.js.map +1 -1
  536. package/fesm2015/sort.js +320 -318
  537. package/fesm2015/sort.js.map +1 -1
  538. package/fesm2015/stepper.js +312 -345
  539. package/fesm2015/stepper.js.map +1 -1
  540. package/fesm2015/table/testing.js +208 -229
  541. package/fesm2015/table/testing.js.map +1 -1
  542. package/fesm2015/table.js +235 -286
  543. package/fesm2015/table.js.map +1 -1
  544. package/fesm2015/tabs/testing.js +128 -134
  545. package/fesm2015/tabs/testing.js.map +1 -1
  546. package/fesm2015/tabs.js +1362 -1399
  547. package/fesm2015/tabs.js.map +1 -1
  548. package/fesm2015/toolbar/testing.js +74 -0
  549. package/fesm2015/toolbar/testing.js.map +1 -0
  550. package/fesm2015/toolbar.js +69 -78
  551. package/fesm2015/toolbar.js.map +1 -1
  552. package/fesm2015/tooltip/testing.js +42 -45
  553. package/fesm2015/tooltip/testing.js.map +1 -1
  554. package/fesm2015/tooltip.js +517 -513
  555. package/fesm2015/tooltip.js.map +1 -1
  556. package/fesm2015/tree.js +173 -197
  557. package/fesm2015/tree.js.map +1 -1
  558. package/form-field/error.d.ts +7 -0
  559. package/form-field/hint.d.ts +10 -0
  560. package/form-field/index.metadata.json +1 -1
  561. package/form-field/prefix.d.ts +7 -0
  562. package/form-field/suffix.d.ts +7 -0
  563. package/form-field/testing/form-field-harness.d.ts +8 -0
  564. package/grid-list/grid-list.d.ts +2 -1
  565. package/grid-list/index.metadata.json +1 -1
  566. package/grid-list/tile-styler.d.ts +10 -5
  567. package/input/_input-theme.scss +2 -2
  568. package/input/index.metadata.json +1 -1
  569. package/input/input.d.ts +6 -2
  570. package/input/testing/input-harness.d.ts +2 -0
  571. package/list/index.metadata.json +1 -1
  572. package/list/testing/action-list-harness.d.ts +2 -0
  573. package/list/testing/nav-list-harness.d.ts +2 -0
  574. package/list/testing/selection-list-harness.d.ts +2 -0
  575. package/menu/index.metadata.json +1 -1
  576. package/menu/menu-content.d.ts +7 -1
  577. package/menu/menu-panel.d.ts +1 -0
  578. package/menu/menu.d.ts +4 -0
  579. package/menu/testing/menu-harness.d.ts +4 -0
  580. package/package.json +6 -6
  581. package/prebuilt-themes/deeppurple-amber.css +1 -1
  582. package/prebuilt-themes/indigo-pink.css +1 -1
  583. package/prebuilt-themes/pink-bluegrey.css +1 -1
  584. package/prebuilt-themes/purple-green.css +1 -1
  585. package/progress-spinner/index.metadata.json +1 -1
  586. package/radio/index.metadata.json +1 -1
  587. package/radio/radio.d.ts +6 -0
  588. package/radio/testing/radio-harness.d.ts +2 -0
  589. package/schematics/migration.json +5 -0
  590. package/schematics/ng-add/index.js +2 -2
  591. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +3 -3
  592. package/schematics/ng-generate/navigation/schema.json +5 -0
  593. package/schematics/ng-update/data/index.js +1 -1
  594. package/schematics/ng-update/index.d.ts +2 -0
  595. package/schematics/ng-update/index.js +7 -2
  596. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +639 -639
  597. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.js +1 -1
  598. package/select/index.metadata.json +1 -1
  599. package/select/select.d.ts +6 -0
  600. package/select/testing/select-harness.d.ts +2 -0
  601. package/sidenav/drawer.d.ts +15 -3
  602. package/sidenav/index.metadata.json +1 -1
  603. package/slide-toggle/index.metadata.json +1 -1
  604. package/slide-toggle/testing/slide-toggle-harness.d.ts +2 -0
  605. package/slider/testing/slider-harness.d.ts +2 -0
  606. package/snack-bar/index.metadata.json +1 -1
  607. package/snack-bar/simple-snack-bar.d.ts +13 -1
  608. package/snack-bar/snack-bar-container.d.ts +16 -3
  609. package/snack-bar/snack-bar-ref.d.ts +3 -3
  610. package/snack-bar/snack-bar.d.ts +10 -3
  611. package/sort/index.metadata.json +1 -1
  612. package/sort/sort-header-intl.d.ts +5 -1
  613. package/sort/sort-header.d.ts +3 -1
  614. package/sort/testing/sort-header-harness.d.ts +6 -2
  615. package/tabs/index.d.ts +3 -1
  616. package/tabs/index.metadata.json +1 -1
  617. package/tabs/tab-content.d.ts +7 -1
  618. package/tabs/tab-label.d.ts +7 -0
  619. package/toolbar/testing/index.d.ts +8 -0
  620. package/toolbar/testing/package.json +9 -0
  621. package/toolbar/testing/public-api.d.ts +9 -0
  622. package/toolbar/testing/toolbar-harness-filters.d.ts +13 -0
  623. package/toolbar/testing/toolbar-harness.d.ts +31 -0
  624. package/tooltip/index.metadata.json +1 -1
  625. package/tooltip/tooltip.d.ts +1 -0
  626. package/tree/data-source/flat-data-source.d.ts +4 -4
  627. package/tree/index.metadata.json +1 -1
@@ -17,6 +17,12 @@ import { mixinDisableRipple, MatCommonModule, MatRippleModule } from '@angular/m
17
17
  * default options for all button toggles within an app.
18
18
  */
19
19
  const MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS = new InjectionToken('MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS');
20
+ /**
21
+ * Injection token that can be used to reference instances of `MatButtonToggleGroup`.
22
+ * It serves as alternative token to the actual `MatButtonToggleGroup` class which
23
+ * could cause unnecessary retention of the class and its component metadata.
24
+ */
25
+ const MAT_BUTTON_TOGGLE_GROUP = new InjectionToken('MatButtonToggleGroup');
20
26
  /**
21
27
  * Provider Expression that allows mat-button-toggle-group to register as a ControlValueAccessor.
22
28
  * This allows it to support [(ngModel)].
@@ -40,403 +46,399 @@ class MatButtonToggleChange {
40
46
  }
41
47
  }
42
48
  /** Exclusive selection button toggle group that behaves like a radio-button group. */
43
- let MatButtonToggleGroup = /** @class */ (() => {
44
- class MatButtonToggleGroup {
45
- constructor(_changeDetector, defaultOptions) {
46
- this._changeDetector = _changeDetector;
47
- this._vertical = false;
48
- this._multiple = false;
49
- this._disabled = false;
50
- /**
51
- * The method to be called in order to update ngModel.
52
- * Now `ngModel` binding is not supported in multiple selection mode.
53
- */
54
- this._controlValueAccessorChangeFn = () => { };
55
- /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
56
- this._onTouched = () => { };
57
- this._name = `mat-button-toggle-group-${_uniqueIdCounter++}`;
58
- /**
59
- * Event that emits whenever the value of the group changes.
60
- * Used to facilitate two-way data binding.
61
- * @docs-private
62
- */
63
- this.valueChange = new EventEmitter();
64
- /** Event emitted when the group's value changes. */
65
- this.change = new EventEmitter();
66
- this.appearance =
67
- defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';
68
- }
69
- /** `name` attribute for the underlying `input` element. */
70
- get name() { return this._name; }
71
- set name(value) {
72
- this._name = value;
73
- if (this._buttonToggles) {
74
- this._buttonToggles.forEach(toggle => {
75
- toggle.name = this._name;
76
- toggle._markForCheck();
77
- });
78
- }
79
- }
80
- /** Whether the toggle group is vertical. */
81
- get vertical() { return this._vertical; }
82
- set vertical(value) {
83
- this._vertical = coerceBooleanProperty(value);
84
- }
85
- /** Value of the toggle group. */
86
- get value() {
87
- const selected = this._selectionModel ? this._selectionModel.selected : [];
88
- if (this.multiple) {
89
- return selected.map(toggle => toggle.value);
90
- }
91
- return selected[0] ? selected[0].value : undefined;
92
- }
93
- set value(newValue) {
94
- this._setSelectionByValue(newValue);
95
- this.valueChange.emit(this.value);
96
- }
97
- /** Selected button toggles in the group. */
98
- get selected() {
99
- const selected = this._selectionModel ? this._selectionModel.selected : [];
100
- return this.multiple ? selected : (selected[0] || null);
101
- }
102
- /** Whether multiple button toggles can be selected. */
103
- get multiple() { return this._multiple; }
104
- set multiple(value) {
105
- this._multiple = coerceBooleanProperty(value);
106
- }
107
- /** Whether multiple button toggle group is disabled. */
108
- get disabled() { return this._disabled; }
109
- set disabled(value) {
110
- this._disabled = coerceBooleanProperty(value);
111
- if (this._buttonToggles) {
112
- this._buttonToggles.forEach(toggle => toggle._markForCheck());
113
- }
114
- }
115
- ngOnInit() {
116
- this._selectionModel = new SelectionModel(this.multiple, undefined, false);
117
- }
118
- ngAfterContentInit() {
119
- this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));
120
- }
49
+ class MatButtonToggleGroup {
50
+ constructor(_changeDetector, defaultOptions) {
51
+ this._changeDetector = _changeDetector;
52
+ this._vertical = false;
53
+ this._multiple = false;
54
+ this._disabled = false;
121
55
  /**
122
- * Sets the model value. Implemented as part of ControlValueAccessor.
123
- * @param value Value to be set to the model.
56
+ * The method to be called in order to update ngModel.
57
+ * Now `ngModel` binding is not supported in multiple selection mode.
124
58
  */
125
- writeValue(value) {
126
- this.value = value;
127
- this._changeDetector.markForCheck();
128
- }
129
- // Implemented as part of ControlValueAccessor.
130
- registerOnChange(fn) {
131
- this._controlValueAccessorChangeFn = fn;
132
- }
133
- // Implemented as part of ControlValueAccessor.
134
- registerOnTouched(fn) {
135
- this._onTouched = fn;
59
+ this._controlValueAccessorChangeFn = () => { };
60
+ /** onTouch function registered via registerOnTouch (ControlValueAccessor). */
61
+ this._onTouched = () => { };
62
+ this._name = `mat-button-toggle-group-${_uniqueIdCounter++}`;
63
+ /**
64
+ * Event that emits whenever the value of the group changes.
65
+ * Used to facilitate two-way data binding.
66
+ * @docs-private
67
+ */
68
+ this.valueChange = new EventEmitter();
69
+ /** Event emitted when the group's value changes. */
70
+ this.change = new EventEmitter();
71
+ this.appearance =
72
+ defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';
73
+ }
74
+ /** `name` attribute for the underlying `input` element. */
75
+ get name() { return this._name; }
76
+ set name(value) {
77
+ this._name = value;
78
+ if (this._buttonToggles) {
79
+ this._buttonToggles.forEach(toggle => {
80
+ toggle.name = this._name;
81
+ toggle._markForCheck();
82
+ });
136
83
  }
137
- // Implemented as part of ControlValueAccessor.
138
- setDisabledState(isDisabled) {
139
- this.disabled = isDisabled;
84
+ }
85
+ /** Whether the toggle group is vertical. */
86
+ get vertical() { return this._vertical; }
87
+ set vertical(value) {
88
+ this._vertical = coerceBooleanProperty(value);
89
+ }
90
+ /** Value of the toggle group. */
91
+ get value() {
92
+ const selected = this._selectionModel ? this._selectionModel.selected : [];
93
+ if (this.multiple) {
94
+ return selected.map(toggle => toggle.value);
140
95
  }
141
- /** Dispatch change event with current selection and group value. */
142
- _emitChangeEvent() {
143
- const selected = this.selected;
144
- const source = Array.isArray(selected) ? selected[selected.length - 1] : selected;
145
- const event = new MatButtonToggleChange(source, this.value);
146
- this._controlValueAccessorChangeFn(event.value);
147
- this.change.emit(event);
96
+ return selected[0] ? selected[0].value : undefined;
97
+ }
98
+ set value(newValue) {
99
+ this._setSelectionByValue(newValue);
100
+ this.valueChange.emit(this.value);
101
+ }
102
+ /** Selected button toggles in the group. */
103
+ get selected() {
104
+ const selected = this._selectionModel ? this._selectionModel.selected : [];
105
+ return this.multiple ? selected : (selected[0] || null);
106
+ }
107
+ /** Whether multiple button toggles can be selected. */
108
+ get multiple() { return this._multiple; }
109
+ set multiple(value) {
110
+ this._multiple = coerceBooleanProperty(value);
111
+ }
112
+ /** Whether multiple button toggle group is disabled. */
113
+ get disabled() { return this._disabled; }
114
+ set disabled(value) {
115
+ this._disabled = coerceBooleanProperty(value);
116
+ if (this._buttonToggles) {
117
+ this._buttonToggles.forEach(toggle => toggle._markForCheck());
148
118
  }
149
- /**
150
- * Syncs a button toggle's selected state with the model value.
151
- * @param toggle Toggle to be synced.
152
- * @param select Whether the toggle should be selected.
153
- * @param isUserInput Whether the change was a result of a user interaction.
154
- * @param deferEvents Whether to defer emitting the change events.
155
- */
156
- _syncButtonToggle(toggle, select, isUserInput = false, deferEvents = false) {
157
- // Deselect the currently-selected toggle, if we're in single-selection
158
- // mode and the button being toggled isn't selected at the moment.
159
- if (!this.multiple && this.selected && !toggle.checked) {
160
- this.selected.checked = false;
161
- }
162
- if (this._selectionModel) {
163
- if (select) {
164
- this._selectionModel.select(toggle);
165
- }
166
- else {
167
- this._selectionModel.deselect(toggle);
168
- }
169
- }
170
- else {
171
- deferEvents = true;
172
- }
173
- // We need to defer in some cases in order to avoid "changed after checked errors", however
174
- // the side-effect is that we may end up updating the model value out of sequence in others
175
- // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.
176
- if (deferEvents) {
177
- Promise.resolve().then(() => this._updateModelValue(isUserInput));
119
+ }
120
+ ngOnInit() {
121
+ this._selectionModel = new SelectionModel(this.multiple, undefined, false);
122
+ }
123
+ ngAfterContentInit() {
124
+ this._selectionModel.select(...this._buttonToggles.filter(toggle => toggle.checked));
125
+ }
126
+ /**
127
+ * Sets the model value. Implemented as part of ControlValueAccessor.
128
+ * @param value Value to be set to the model.
129
+ */
130
+ writeValue(value) {
131
+ this.value = value;
132
+ this._changeDetector.markForCheck();
133
+ }
134
+ // Implemented as part of ControlValueAccessor.
135
+ registerOnChange(fn) {
136
+ this._controlValueAccessorChangeFn = fn;
137
+ }
138
+ // Implemented as part of ControlValueAccessor.
139
+ registerOnTouched(fn) {
140
+ this._onTouched = fn;
141
+ }
142
+ // Implemented as part of ControlValueAccessor.
143
+ setDisabledState(isDisabled) {
144
+ this.disabled = isDisabled;
145
+ }
146
+ /** Dispatch change event with current selection and group value. */
147
+ _emitChangeEvent() {
148
+ const selected = this.selected;
149
+ const source = Array.isArray(selected) ? selected[selected.length - 1] : selected;
150
+ const event = new MatButtonToggleChange(source, this.value);
151
+ this._controlValueAccessorChangeFn(event.value);
152
+ this.change.emit(event);
153
+ }
154
+ /**
155
+ * Syncs a button toggle's selected state with the model value.
156
+ * @param toggle Toggle to be synced.
157
+ * @param select Whether the toggle should be selected.
158
+ * @param isUserInput Whether the change was a result of a user interaction.
159
+ * @param deferEvents Whether to defer emitting the change events.
160
+ */
161
+ _syncButtonToggle(toggle, select, isUserInput = false, deferEvents = false) {
162
+ // Deselect the currently-selected toggle, if we're in single-selection
163
+ // mode and the button being toggled isn't selected at the moment.
164
+ if (!this.multiple && this.selected && !toggle.checked) {
165
+ this.selected.checked = false;
166
+ }
167
+ if (this._selectionModel) {
168
+ if (select) {
169
+ this._selectionModel.select(toggle);
178
170
  }
179
171
  else {
180
- this._updateModelValue(isUserInput);
172
+ this._selectionModel.deselect(toggle);
181
173
  }
182
174
  }
183
- /** Checks whether a button toggle is selected. */
184
- _isSelected(toggle) {
185
- return this._selectionModel && this._selectionModel.isSelected(toggle);
175
+ else {
176
+ deferEvents = true;
186
177
  }
187
- /** Determines whether a button toggle should be checked on init. */
188
- _isPrechecked(toggle) {
189
- if (typeof this._rawValue === 'undefined') {
190
- return false;
191
- }
192
- if (this.multiple && Array.isArray(this._rawValue)) {
193
- return this._rawValue.some(value => toggle.value != null && value === toggle.value);
194
- }
195
- return toggle.value === this._rawValue;
178
+ // We need to defer in some cases in order to avoid "changed after checked errors", however
179
+ // the side-effect is that we may end up updating the model value out of sequence in others
180
+ // The `deferEvents` flag allows us to decide whether to do it on a case-by-case basis.
181
+ if (deferEvents) {
182
+ Promise.resolve().then(() => this._updateModelValue(isUserInput));
196
183
  }
197
- /** Updates the selection state of the toggles in the group based on a value. */
198
- _setSelectionByValue(value) {
199
- this._rawValue = value;
200
- if (!this._buttonToggles) {
201
- return;
202
- }
203
- if (this.multiple && value) {
204
- if (!Array.isArray(value)) {
205
- throw Error('Value must be an array in multiple-selection mode.');
206
- }
207
- this._clearSelection();
208
- value.forEach((currentValue) => this._selectValue(currentValue));
209
- }
210
- else {
211
- this._clearSelection();
212
- this._selectValue(value);
213
- }
184
+ else {
185
+ this._updateModelValue(isUserInput);
214
186
  }
215
- /** Clears the selected toggles. */
216
- _clearSelection() {
217
- this._selectionModel.clear();
218
- this._buttonToggles.forEach(toggle => toggle.checked = false);
187
+ }
188
+ /** Checks whether a button toggle is selected. */
189
+ _isSelected(toggle) {
190
+ return this._selectionModel && this._selectionModel.isSelected(toggle);
191
+ }
192
+ /** Determines whether a button toggle should be checked on init. */
193
+ _isPrechecked(toggle) {
194
+ if (typeof this._rawValue === 'undefined') {
195
+ return false;
219
196
  }
220
- /** Selects a value if there's a toggle that corresponds to it. */
221
- _selectValue(value) {
222
- const correspondingOption = this._buttonToggles.find(toggle => {
223
- return toggle.value != null && toggle.value === value;
224
- });
225
- if (correspondingOption) {
226
- correspondingOption.checked = true;
227
- this._selectionModel.select(correspondingOption);
228
- }
197
+ if (this.multiple && Array.isArray(this._rawValue)) {
198
+ return this._rawValue.some(value => toggle.value != null && value === toggle.value);
229
199
  }
230
- /** Syncs up the group's value with the model and emits the change event. */
231
- _updateModelValue(isUserInput) {
232
- // Only emit the change event for user input.
233
- if (isUserInput) {
234
- this._emitChangeEvent();
200
+ return toggle.value === this._rawValue;
201
+ }
202
+ /** Updates the selection state of the toggles in the group based on a value. */
203
+ _setSelectionByValue(value) {
204
+ this._rawValue = value;
205
+ if (!this._buttonToggles) {
206
+ return;
207
+ }
208
+ if (this.multiple && value) {
209
+ if (!Array.isArray(value)) {
210
+ throw Error('Value must be an array in multiple-selection mode.');
235
211
  }
236
- // Note: we emit this one no matter whether it was a user interaction, because
237
- // it is used by Angular to sync up the two-way data binding.
238
- this.valueChange.emit(this.value);
212
+ this._clearSelection();
213
+ value.forEach((currentValue) => this._selectValue(currentValue));
214
+ }
215
+ else {
216
+ this._clearSelection();
217
+ this._selectValue(value);
218
+ }
219
+ }
220
+ /** Clears the selected toggles. */
221
+ _clearSelection() {
222
+ this._selectionModel.clear();
223
+ this._buttonToggles.forEach(toggle => toggle.checked = false);
224
+ }
225
+ /** Selects a value if there's a toggle that corresponds to it. */
226
+ _selectValue(value) {
227
+ const correspondingOption = this._buttonToggles.find(toggle => {
228
+ return toggle.value != null && toggle.value === value;
229
+ });
230
+ if (correspondingOption) {
231
+ correspondingOption.checked = true;
232
+ this._selectionModel.select(correspondingOption);
239
233
  }
240
234
  }
241
- MatButtonToggleGroup.decorators = [
242
- { type: Directive, args: [{
243
- selector: 'mat-button-toggle-group',
244
- providers: [MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR],
245
- host: {
246
- 'role': 'group',
247
- 'class': 'mat-button-toggle-group',
248
- '[attr.aria-disabled]': 'disabled',
249
- '[class.mat-button-toggle-vertical]': 'vertical',
250
- '[class.mat-button-toggle-group-appearance-standard]': 'appearance === "standard"',
251
- },
252
- exportAs: 'matButtonToggleGroup',
253
- },] }
254
- ];
255
- MatButtonToggleGroup.ctorParameters = () => [
256
- { type: ChangeDetectorRef },
257
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,] }] }
258
- ];
259
- MatButtonToggleGroup.propDecorators = {
260
- _buttonToggles: [{ type: ContentChildren, args: [forwardRef(() => MatButtonToggle), {
261
- // Note that this would technically pick up toggles
262
- // from nested groups, but that's not a case that we support.
263
- descendants: true
264
- },] }],
265
- appearance: [{ type: Input }],
266
- name: [{ type: Input }],
267
- vertical: [{ type: Input }],
268
- value: [{ type: Input }],
269
- valueChange: [{ type: Output }],
270
- multiple: [{ type: Input }],
271
- disabled: [{ type: Input }],
272
- change: [{ type: Output }]
273
- };
274
- return MatButtonToggleGroup;
275
- })();
235
+ /** Syncs up the group's value with the model and emits the change event. */
236
+ _updateModelValue(isUserInput) {
237
+ // Only emit the change event for user input.
238
+ if (isUserInput) {
239
+ this._emitChangeEvent();
240
+ }
241
+ // Note: we emit this one no matter whether it was a user interaction, because
242
+ // it is used by Angular to sync up the two-way data binding.
243
+ this.valueChange.emit(this.value);
244
+ }
245
+ }
246
+ MatButtonToggleGroup.decorators = [
247
+ { type: Directive, args: [{
248
+ selector: 'mat-button-toggle-group',
249
+ providers: [
250
+ MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,
251
+ { provide: MAT_BUTTON_TOGGLE_GROUP, useExisting: MatButtonToggleGroup },
252
+ ],
253
+ host: {
254
+ 'role': 'group',
255
+ 'class': 'mat-button-toggle-group',
256
+ '[attr.aria-disabled]': 'disabled',
257
+ '[class.mat-button-toggle-vertical]': 'vertical',
258
+ '[class.mat-button-toggle-group-appearance-standard]': 'appearance === "standard"',
259
+ },
260
+ exportAs: 'matButtonToggleGroup',
261
+ },] }
262
+ ];
263
+ MatButtonToggleGroup.ctorParameters = () => [
264
+ { type: ChangeDetectorRef },
265
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,] }] }
266
+ ];
267
+ MatButtonToggleGroup.propDecorators = {
268
+ _buttonToggles: [{ type: ContentChildren, args: [forwardRef(() => MatButtonToggle), {
269
+ // Note that this would technically pick up toggles
270
+ // from nested groups, but that's not a case that we support.
271
+ descendants: true
272
+ },] }],
273
+ appearance: [{ type: Input }],
274
+ name: [{ type: Input }],
275
+ vertical: [{ type: Input }],
276
+ value: [{ type: Input }],
277
+ valueChange: [{ type: Output }],
278
+ multiple: [{ type: Input }],
279
+ disabled: [{ type: Input }],
280
+ change: [{ type: Output }]
281
+ };
276
282
  // Boilerplate for applying mixins to the MatButtonToggle class.
277
283
  /** @docs-private */
278
284
  class MatButtonToggleBase {
279
285
  }
280
286
  const _MatButtonToggleMixinBase = mixinDisableRipple(MatButtonToggleBase);
281
287
  /** Single button inside of a toggle group. */
282
- let MatButtonToggle = /** @class */ (() => {
283
- class MatButtonToggle extends _MatButtonToggleMixinBase {
284
- constructor(toggleGroup, _changeDetectorRef, _elementRef, _focusMonitor, defaultTabIndex, defaultOptions) {
285
- super();
286
- this._changeDetectorRef = _changeDetectorRef;
287
- this._elementRef = _elementRef;
288
- this._focusMonitor = _focusMonitor;
289
- this._isSingleSelector = false;
290
- this._checked = false;
291
- /**
292
- * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element
293
- */
294
- this.ariaLabelledby = null;
295
- this._disabled = false;
296
- /** Event emitted when the group value changes. */
297
- this.change = new EventEmitter();
298
- const parsedTabIndex = Number(defaultTabIndex);
299
- this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;
300
- this.buttonToggleGroup = toggleGroup;
301
- this.appearance =
302
- defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';
303
- }
304
- /** Unique ID for the underlying `button` element. */
305
- get buttonId() { return `${this.id}-button`; }
306
- /** The appearance style of the button. */
307
- get appearance() {
308
- return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;
309
- }
310
- set appearance(value) {
311
- this._appearance = value;
312
- }
313
- /** Whether the button is checked. */
314
- get checked() {
315
- return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;
316
- }
317
- set checked(value) {
318
- const newValue = coerceBooleanProperty(value);
319
- if (newValue !== this._checked) {
320
- this._checked = newValue;
321
- if (this.buttonToggleGroup) {
322
- this.buttonToggleGroup._syncButtonToggle(this, this._checked);
323
- }
324
- this._changeDetectorRef.markForCheck();
288
+ class MatButtonToggle extends _MatButtonToggleMixinBase {
289
+ constructor(toggleGroup, _changeDetectorRef, _elementRef, _focusMonitor, defaultTabIndex, defaultOptions) {
290
+ super();
291
+ this._changeDetectorRef = _changeDetectorRef;
292
+ this._elementRef = _elementRef;
293
+ this._focusMonitor = _focusMonitor;
294
+ this._isSingleSelector = false;
295
+ this._checked = false;
296
+ /**
297
+ * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element
298
+ */
299
+ this.ariaLabelledby = null;
300
+ this._disabled = false;
301
+ /** Event emitted when the group value changes. */
302
+ this.change = new EventEmitter();
303
+ const parsedTabIndex = Number(defaultTabIndex);
304
+ this.tabIndex = (parsedTabIndex || parsedTabIndex === 0) ? parsedTabIndex : null;
305
+ this.buttonToggleGroup = toggleGroup;
306
+ this.appearance =
307
+ defaultOptions && defaultOptions.appearance ? defaultOptions.appearance : 'standard';
308
+ }
309
+ /** Unique ID for the underlying `button` element. */
310
+ get buttonId() { return `${this.id}-button`; }
311
+ /** The appearance style of the button. */
312
+ get appearance() {
313
+ return this.buttonToggleGroup ? this.buttonToggleGroup.appearance : this._appearance;
314
+ }
315
+ set appearance(value) {
316
+ this._appearance = value;
317
+ }
318
+ /** Whether the button is checked. */
319
+ get checked() {
320
+ return this.buttonToggleGroup ? this.buttonToggleGroup._isSelected(this) : this._checked;
321
+ }
322
+ set checked(value) {
323
+ const newValue = coerceBooleanProperty(value);
324
+ if (newValue !== this._checked) {
325
+ this._checked = newValue;
326
+ if (this.buttonToggleGroup) {
327
+ this.buttonToggleGroup._syncButtonToggle(this, this._checked);
325
328
  }
329
+ this._changeDetectorRef.markForCheck();
326
330
  }
327
- /** Whether the button is disabled. */
328
- get disabled() {
329
- return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);
330
- }
331
- set disabled(value) { this._disabled = coerceBooleanProperty(value); }
332
- ngOnInit() {
333
- const group = this.buttonToggleGroup;
334
- this._isSingleSelector = group && !group.multiple;
335
- this._type = this._isSingleSelector ? 'radio' : 'checkbox';
336
- this.id = this.id || `mat-button-toggle-${_uniqueIdCounter++}`;
337
- if (this._isSingleSelector) {
338
- this.name = group.name;
339
- }
340
- if (group) {
341
- if (group._isPrechecked(this)) {
342
- this.checked = true;
343
- }
344
- else if (group._isSelected(this) !== this._checked) {
345
- // As as side effect of the circular dependency between the toggle group and the button,
346
- // we may end up in a state where the button is supposed to be checked on init, but it
347
- // isn't, because the checked value was assigned too early. This can happen when Ivy
348
- // assigns the static input value before the `ngOnInit` has run.
349
- group._syncButtonToggle(this, this._checked);
350
- }
331
+ }
332
+ /** Whether the button is disabled. */
333
+ get disabled() {
334
+ return this._disabled || (this.buttonToggleGroup && this.buttonToggleGroup.disabled);
335
+ }
336
+ set disabled(value) { this._disabled = coerceBooleanProperty(value); }
337
+ ngOnInit() {
338
+ const group = this.buttonToggleGroup;
339
+ this._isSingleSelector = group && !group.multiple;
340
+ this.id = this.id || `mat-button-toggle-${_uniqueIdCounter++}`;
341
+ if (this._isSingleSelector) {
342
+ this.name = group.name;
343
+ }
344
+ if (group) {
345
+ if (group._isPrechecked(this)) {
346
+ this.checked = true;
351
347
  }
352
- }
353
- ngAfterViewInit() {
354
- this._focusMonitor.monitor(this._elementRef, true);
355
- }
356
- ngOnDestroy() {
357
- const group = this.buttonToggleGroup;
358
- this._focusMonitor.stopMonitoring(this._elementRef);
359
- // Remove the toggle from the selection once it's destroyed. Needs to happen
360
- // on the next tick in order to avoid "changed after checked" errors.
361
- if (group && group._isSelected(this)) {
362
- group._syncButtonToggle(this, false, false, true);
348
+ else if (group._isSelected(this) !== this._checked) {
349
+ // As as side effect of the circular dependency between the toggle group and the button,
350
+ // we may end up in a state where the button is supposed to be checked on init, but it
351
+ // isn't, because the checked value was assigned too early. This can happen when Ivy
352
+ // assigns the static input value before the `ngOnInit` has run.
353
+ group._syncButtonToggle(this, this._checked);
363
354
  }
364
355
  }
365
- /** Focuses the button. */
366
- focus(options) {
367
- this._buttonElement.nativeElement.focus(options);
356
+ }
357
+ ngAfterViewInit() {
358
+ this._focusMonitor.monitor(this._elementRef, true);
359
+ }
360
+ ngOnDestroy() {
361
+ const group = this.buttonToggleGroup;
362
+ this._focusMonitor.stopMonitoring(this._elementRef);
363
+ // Remove the toggle from the selection once it's destroyed. Needs to happen
364
+ // on the next tick in order to avoid "changed after checked" errors.
365
+ if (group && group._isSelected(this)) {
366
+ group._syncButtonToggle(this, false, false, true);
368
367
  }
369
- /** Checks the button toggle due to an interaction with the underlying native button. */
370
- _onButtonClick() {
371
- const newChecked = this._isSingleSelector ? true : !this._checked;
372
- if (newChecked !== this._checked) {
373
- this._checked = newChecked;
374
- if (this.buttonToggleGroup) {
375
- this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);
376
- this.buttonToggleGroup._onTouched();
377
- }
368
+ }
369
+ /** Focuses the button. */
370
+ focus(options) {
371
+ this._buttonElement.nativeElement.focus(options);
372
+ }
373
+ /** Checks the button toggle due to an interaction with the underlying native button. */
374
+ _onButtonClick() {
375
+ const newChecked = this._isSingleSelector ? true : !this._checked;
376
+ if (newChecked !== this._checked) {
377
+ this._checked = newChecked;
378
+ if (this.buttonToggleGroup) {
379
+ this.buttonToggleGroup._syncButtonToggle(this, this._checked, true);
380
+ this.buttonToggleGroup._onTouched();
378
381
  }
379
- // Emit a change event when it's the single selector
380
- this.change.emit(new MatButtonToggleChange(this, this.value));
381
- }
382
- /**
383
- * Marks the button toggle as needing checking for change detection.
384
- * This method is exposed because the parent button toggle group will directly
385
- * update bound properties of the radio button.
386
- */
387
- _markForCheck() {
388
- // When the group value changes, the button will not be notified.
389
- // Use `markForCheck` to explicit update button toggle's status.
390
- this._changeDetectorRef.markForCheck();
391
382
  }
383
+ // Emit a change event when it's the single selector
384
+ this.change.emit(new MatButtonToggleChange(this, this.value));
385
+ }
386
+ /**
387
+ * Marks the button toggle as needing checking for change detection.
388
+ * This method is exposed because the parent button toggle group will directly
389
+ * update bound properties of the radio button.
390
+ */
391
+ _markForCheck() {
392
+ // When the group value changes, the button will not be notified.
393
+ // Use `markForCheck` to explicit update button toggle's status.
394
+ this._changeDetectorRef.markForCheck();
392
395
  }
393
- MatButtonToggle.decorators = [
394
- { type: Component, args: [{
395
- selector: 'mat-button-toggle',
396
- template: "<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [attr.aria-pressed]=\"checked\"\n [disabled]=\"disabled || null\"\n [attr.name]=\"name || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (click)=\"_onButtonClick()\">\n <div class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </div>\n</button>\n\n<div class=\"mat-button-toggle-focus-overlay\"></div>\n<div class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"this.disableRipple || this.disabled\">\n</div>\n",
397
- encapsulation: ViewEncapsulation.None,
398
- exportAs: 'matButtonToggle',
399
- changeDetection: ChangeDetectionStrategy.OnPush,
400
- inputs: ['disableRipple'],
401
- host: {
402
- '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',
403
- '[class.mat-button-toggle-checked]': 'checked',
404
- '[class.mat-button-toggle-disabled]': 'disabled',
405
- '[class.mat-button-toggle-appearance-standard]': 'appearance === "standard"',
406
- 'class': 'mat-button-toggle',
407
- // Always reset the tabindex to -1 so it doesn't conflict with the one on the `button`,
408
- // but can still receive focus from things like cdkFocusInitial.
409
- '[attr.tabindex]': '-1',
410
- '[attr.id]': 'id',
411
- '[attr.name]': 'null',
412
- '(focus)': 'focus()',
413
- },
414
- styles: [".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:transparent}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.cdk-high-contrast-active .mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:.5}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}.cdk-high-contrast-active .mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.5}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 36px}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\n"]
415
- },] }
416
- ];
417
- MatButtonToggle.ctorParameters = () => [
418
- { type: MatButtonToggleGroup, decorators: [{ type: Optional }] },
419
- { type: ChangeDetectorRef },
420
- { type: ElementRef },
421
- { type: FocusMonitor },
422
- { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
423
- { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,] }] }
424
- ];
425
- MatButtonToggle.propDecorators = {
426
- ariaLabel: [{ type: Input, args: ['aria-label',] }],
427
- ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],
428
- _buttonElement: [{ type: ViewChild, args: ['button',] }],
429
- id: [{ type: Input }],
430
- name: [{ type: Input }],
431
- value: [{ type: Input }],
432
- tabIndex: [{ type: Input }],
433
- appearance: [{ type: Input }],
434
- checked: [{ type: Input }],
435
- disabled: [{ type: Input }],
436
- change: [{ type: Output }]
437
- };
438
- return MatButtonToggle;
439
- })();
396
+ }
397
+ MatButtonToggle.decorators = [
398
+ { type: Component, args: [{
399
+ selector: 'mat-button-toggle',
400
+ template: "<button #button class=\"mat-button-toggle-button mat-focus-indicator\"\n type=\"button\"\n [id]=\"buttonId\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [attr.aria-pressed]=\"checked\"\n [disabled]=\"disabled || null\"\n [attr.name]=\"name || null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledby\"\n (click)=\"_onButtonClick()\">\n <div class=\"mat-button-toggle-label-content\">\n <ng-content></ng-content>\n </div>\n</button>\n\n<div class=\"mat-button-toggle-focus-overlay\"></div>\n<div class=\"mat-button-toggle-ripple\" matRipple\n [matRippleTrigger]=\"button\"\n [matRippleDisabled]=\"this.disableRipple || this.disabled\">\n</div>\n",
401
+ encapsulation: ViewEncapsulation.None,
402
+ exportAs: 'matButtonToggle',
403
+ changeDetection: ChangeDetectionStrategy.OnPush,
404
+ inputs: ['disableRipple'],
405
+ host: {
406
+ '[class.mat-button-toggle-standalone]': '!buttonToggleGroup',
407
+ '[class.mat-button-toggle-checked]': 'checked',
408
+ '[class.mat-button-toggle-disabled]': 'disabled',
409
+ '[class.mat-button-toggle-appearance-standard]': 'appearance === "standard"',
410
+ 'class': 'mat-button-toggle',
411
+ // Always reset the tabindex to -1 so it doesn't conflict with the one on the `button`,
412
+ // but can still receive focus from things like cdkFocusInitial.
413
+ '[attr.tabindex]': '-1',
414
+ '[attr.id]': 'id',
415
+ '[attr.name]': 'null',
416
+ '(focus)': 'focus()',
417
+ },
418
+ styles: [".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:transparent}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.cdk-high-contrast-active .mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:.5}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}.cdk-high-contrast-active .mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.5}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{border-radius:inherit;pointer-events:none;opacity:0;top:0;left:0;right:0;bottom:0;position:absolute}.mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 36px}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}\n"]
419
+ },] }
420
+ ];
421
+ MatButtonToggle.ctorParameters = () => [
422
+ { type: MatButtonToggleGroup, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BUTTON_TOGGLE_GROUP,] }] },
423
+ { type: ChangeDetectorRef },
424
+ { type: ElementRef },
425
+ { type: FocusMonitor },
426
+ { type: String, decorators: [{ type: Attribute, args: ['tabindex',] }] },
427
+ { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS,] }] }
428
+ ];
429
+ MatButtonToggle.propDecorators = {
430
+ ariaLabel: [{ type: Input, args: ['aria-label',] }],
431
+ ariaLabelledby: [{ type: Input, args: ['aria-labelledby',] }],
432
+ _buttonElement: [{ type: ViewChild, args: ['button',] }],
433
+ id: [{ type: Input }],
434
+ name: [{ type: Input }],
435
+ value: [{ type: Input }],
436
+ tabIndex: [{ type: Input }],
437
+ appearance: [{ type: Input }],
438
+ checked: [{ type: Input }],
439
+ disabled: [{ type: Input }],
440
+ change: [{ type: Output }]
441
+ };
440
442
 
441
443
  /**
442
444
  * @license
@@ -445,18 +447,15 @@ let MatButtonToggle = /** @class */ (() => {
445
447
  * Use of this source code is governed by an MIT-style license that can be
446
448
  * found in the LICENSE file at https://angular.io/license
447
449
  */
448
- let MatButtonToggleModule = /** @class */ (() => {
449
- class MatButtonToggleModule {
450
- }
451
- MatButtonToggleModule.decorators = [
452
- { type: NgModule, args: [{
453
- imports: [MatCommonModule, MatRippleModule],
454
- exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle],
455
- declarations: [MatButtonToggleGroup, MatButtonToggle],
456
- },] }
457
- ];
458
- return MatButtonToggleModule;
459
- })();
450
+ class MatButtonToggleModule {
451
+ }
452
+ MatButtonToggleModule.decorators = [
453
+ { type: NgModule, args: [{
454
+ imports: [MatCommonModule, MatRippleModule],
455
+ exports: [MatCommonModule, MatButtonToggleGroup, MatButtonToggle],
456
+ declarations: [MatButtonToggleGroup, MatButtonToggle],
457
+ },] }
458
+ ];
460
459
 
461
460
  /**
462
461
  * @license
@@ -470,5 +469,5 @@ let MatButtonToggleModule = /** @class */ (() => {
470
469
  * Generated bundle index. Do not edit.
471
470
  */
472
471
 
473
- export { MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleModule };
472
+ export { MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS, MAT_BUTTON_TOGGLE_GROUP, MAT_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR, MatButtonToggle, MatButtonToggleChange, MatButtonToggleGroup, MatButtonToggleModule };
474
473
  //# sourceMappingURL=button-toggle.js.map