@angular/material 17.0.0-rc.1 → 17.0.0-rc.3

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 (251) hide show
  1. package/button/_button-base.scss +37 -18
  2. package/button/_button-theme.scss +86 -142
  3. package/button/_fab-theme.scss +21 -49
  4. package/button/_icon-button-theme.scss +25 -25
  5. package/core/_core-theme.scss +4 -4
  6. package/core/ripple/_ripple-theme.scss +27 -17
  7. package/core/ripple/_ripple.scss +8 -0
  8. package/core/theming/_theming.scss +0 -14
  9. package/core/tokens/m2/mat/_fab.scss +87 -0
  10. package/core/tokens/m2/mat/_filled-button.scss +76 -0
  11. package/core/tokens/m2/mat/_icon-button.scss +73 -0
  12. package/core/tokens/m2/mat/_outlined-button.scss +73 -0
  13. package/core/tokens/m2/mat/_protected-button.scss +76 -0
  14. package/core/tokens/m2/mat/_ripple.scss +49 -0
  15. package/core/tokens/m2/mat/_text-button.scss +73 -0
  16. package/core/tokens/m2/mdc/_extended-fab.scss +3 -0
  17. package/core/tokens/m2/mdc/_fab.scss +17 -3
  18. package/core/tokens/m2/mdc/_filled-button.scss +24 -18
  19. package/core/tokens/m2/mdc/_icon-button.scss +0 -3
  20. package/core/tokens/m2/mdc/_outlined-button.scss +120 -0
  21. package/core/tokens/m2/mdc/_protected-button.scss +24 -19
  22. package/dialog/index.d.ts +2 -1
  23. package/esm2022/autocomplete/autocomplete-origin.mjs +3 -3
  24. package/esm2022/autocomplete/autocomplete-trigger.mjs +3 -3
  25. package/esm2022/autocomplete/autocomplete.mjs +3 -3
  26. package/esm2022/autocomplete/module.mjs +4 -4
  27. package/esm2022/badge/badge-module.mjs +4 -4
  28. package/esm2022/badge/badge.mjs +3 -3
  29. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +3 -3
  30. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +4 -4
  31. package/esm2022/bottom-sheet/bottom-sheet.mjs +3 -3
  32. package/esm2022/button/button-base.mjs +6 -6
  33. package/esm2022/button/button.mjs +8 -8
  34. package/esm2022/button/fab.mjs +16 -16
  35. package/esm2022/button/icon-button.mjs +8 -8
  36. package/esm2022/button/module.mjs +4 -4
  37. package/esm2022/button-toggle/button-toggle-module.mjs +4 -4
  38. package/esm2022/button-toggle/button-toggle.mjs +6 -6
  39. package/esm2022/card/card.mjs +42 -42
  40. package/esm2022/card/module.mjs +4 -4
  41. package/esm2022/checkbox/checkbox-required-validator.mjs +3 -3
  42. package/esm2022/checkbox/checkbox.mjs +3 -3
  43. package/esm2022/checkbox/module.mjs +8 -8
  44. package/esm2022/chips/chip-action.mjs +3 -3
  45. package/esm2022/chips/chip-edit-input.mjs +3 -3
  46. package/esm2022/chips/chip-grid.mjs +3 -3
  47. package/esm2022/chips/chip-icons.mjs +9 -9
  48. package/esm2022/chips/chip-input.mjs +3 -3
  49. package/esm2022/chips/chip-listbox.mjs +3 -3
  50. package/esm2022/chips/chip-option.mjs +3 -3
  51. package/esm2022/chips/chip-row.mjs +3 -3
  52. package/esm2022/chips/chip-set.mjs +3 -3
  53. package/esm2022/chips/chip.mjs +3 -3
  54. package/esm2022/chips/module.mjs +4 -4
  55. package/esm2022/core/common-behaviors/common-module.mjs +4 -4
  56. package/esm2022/core/datetime/index.mjs +8 -8
  57. package/esm2022/core/datetime/native-date-adapter.mjs +3 -3
  58. package/esm2022/core/error/error-options.mjs +6 -6
  59. package/esm2022/core/line/line.mjs +7 -7
  60. package/esm2022/core/option/index.mjs +4 -4
  61. package/esm2022/core/option/optgroup.mjs +3 -3
  62. package/esm2022/core/option/option.mjs +3 -3
  63. package/esm2022/core/private/ripple-loader.mjs +3 -3
  64. package/esm2022/core/ripple/index.mjs +4 -4
  65. package/esm2022/core/ripple/ripple.mjs +3 -3
  66. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +4 -4
  67. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  68. package/esm2022/core/version.mjs +1 -1
  69. package/esm2022/datepicker/calendar-body.mjs +3 -3
  70. package/esm2022/datepicker/calendar.mjs +6 -6
  71. package/esm2022/datepicker/date-range-input-parts.mjs +9 -9
  72. package/esm2022/datepicker/date-range-input.mjs +3 -3
  73. package/esm2022/datepicker/date-range-picker.mjs +3 -3
  74. package/esm2022/datepicker/date-range-selection-strategy.mjs +3 -3
  75. package/esm2022/datepicker/date-selection-model.mjs +9 -9
  76. package/esm2022/datepicker/datepicker-actions.mjs +9 -9
  77. package/esm2022/datepicker/datepicker-base.mjs +6 -6
  78. package/esm2022/datepicker/datepicker-input-base.mjs +3 -3
  79. package/esm2022/datepicker/datepicker-input.mjs +3 -3
  80. package/esm2022/datepicker/datepicker-intl.mjs +3 -3
  81. package/esm2022/datepicker/datepicker-module.mjs +4 -4
  82. package/esm2022/datepicker/datepicker-toggle.mjs +6 -6
  83. package/esm2022/datepicker/datepicker.mjs +3 -3
  84. package/esm2022/datepicker/month-view.mjs +3 -3
  85. package/esm2022/datepicker/multi-year-view.mjs +3 -3
  86. package/esm2022/datepicker/year-view.mjs +3 -3
  87. package/esm2022/dialog/dialog-container.mjs +3 -3
  88. package/esm2022/dialog/dialog-content-directives.mjs +12 -12
  89. package/esm2022/dialog/dialog.mjs +4 -4
  90. package/esm2022/dialog/module.mjs +4 -4
  91. package/esm2022/divider/divider-module.mjs +4 -4
  92. package/esm2022/divider/divider.mjs +3 -3
  93. package/esm2022/expansion/accordion.mjs +3 -3
  94. package/esm2022/expansion/expansion-module.mjs +4 -4
  95. package/esm2022/expansion/expansion-panel-content.mjs +3 -3
  96. package/esm2022/expansion/expansion-panel-header.mjs +9 -9
  97. package/esm2022/expansion/expansion-panel.mjs +6 -6
  98. package/esm2022/form-field/directives/error.mjs +3 -3
  99. package/esm2022/form-field/directives/floating-label.mjs +3 -3
  100. package/esm2022/form-field/directives/hint.mjs +3 -3
  101. package/esm2022/form-field/directives/label.mjs +3 -3
  102. package/esm2022/form-field/directives/line-ripple.mjs +3 -3
  103. package/esm2022/form-field/directives/notched-outline.mjs +3 -3
  104. package/esm2022/form-field/directives/prefix.mjs +3 -3
  105. package/esm2022/form-field/directives/suffix.mjs +3 -3
  106. package/esm2022/form-field/form-field-control.mjs +3 -3
  107. package/esm2022/form-field/form-field.mjs +3 -3
  108. package/esm2022/form-field/module.mjs +4 -4
  109. package/esm2022/grid-list/grid-list-module.mjs +4 -4
  110. package/esm2022/grid-list/grid-list.mjs +3 -3
  111. package/esm2022/grid-list/grid-tile.mjs +15 -15
  112. package/esm2022/icon/icon-module.mjs +4 -4
  113. package/esm2022/icon/icon-registry.mjs +3 -3
  114. package/esm2022/icon/icon.mjs +3 -3
  115. package/esm2022/icon/testing/fake-icon-registry.mjs +7 -7
  116. package/esm2022/input/input.mjs +3 -3
  117. package/esm2022/input/module.mjs +4 -4
  118. package/esm2022/list/action-list.mjs +3 -3
  119. package/esm2022/list/list-base.mjs +6 -6
  120. package/esm2022/list/list-item-sections.mjs +18 -18
  121. package/esm2022/list/list-module.mjs +4 -4
  122. package/esm2022/list/list-option.mjs +3 -3
  123. package/esm2022/list/list.mjs +6 -6
  124. package/esm2022/list/nav-list.mjs +3 -3
  125. package/esm2022/list/selection-list.mjs +3 -3
  126. package/esm2022/list/subheader.mjs +3 -3
  127. package/esm2022/menu/menu-content.mjs +3 -3
  128. package/esm2022/menu/menu-item.mjs +3 -3
  129. package/esm2022/menu/menu-trigger.mjs +3 -3
  130. package/esm2022/menu/menu.mjs +3 -3
  131. package/esm2022/menu/module.mjs +4 -4
  132. package/esm2022/paginator/module.mjs +4 -4
  133. package/esm2022/paginator/paginator-intl.mjs +3 -3
  134. package/esm2022/paginator/paginator.mjs +3 -3
  135. package/esm2022/progress-bar/module.mjs +4 -4
  136. package/esm2022/progress-bar/progress-bar.mjs +3 -3
  137. package/esm2022/progress-spinner/module.mjs +4 -4
  138. package/esm2022/progress-spinner/progress-spinner.mjs +3 -3
  139. package/esm2022/radio/module.mjs +4 -4
  140. package/esm2022/radio/radio.mjs +6 -6
  141. package/esm2022/select/module.mjs +4 -4
  142. package/esm2022/select/select.mjs +6 -6
  143. package/esm2022/sidenav/drawer.mjs +9 -9
  144. package/esm2022/sidenav/sidenav-module.mjs +4 -4
  145. package/esm2022/sidenav/sidenav.mjs +9 -9
  146. package/esm2022/slide-toggle/module.mjs +8 -8
  147. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +3 -3
  148. package/esm2022/slide-toggle/slide-toggle.mjs +3 -3
  149. package/esm2022/slider/module.mjs +4 -4
  150. package/esm2022/slider/slider-input.mjs +6 -6
  151. package/esm2022/slider/slider-thumb.mjs +3 -3
  152. package/esm2022/slider/slider.mjs +3 -3
  153. package/esm2022/snack-bar/module.mjs +4 -4
  154. package/esm2022/snack-bar/simple-snack-bar.mjs +3 -3
  155. package/esm2022/snack-bar/snack-bar-container.mjs +5 -5
  156. package/esm2022/snack-bar/snack-bar-content.mjs +9 -9
  157. package/esm2022/snack-bar/snack-bar.mjs +3 -3
  158. package/esm2022/sort/sort-header-intl.mjs +3 -3
  159. package/esm2022/sort/sort-header.mjs +3 -3
  160. package/esm2022/sort/sort-module.mjs +4 -4
  161. package/esm2022/sort/sort.mjs +3 -3
  162. package/esm2022/stepper/step-content.mjs +3 -3
  163. package/esm2022/stepper/step-header.mjs +3 -3
  164. package/esm2022/stepper/step-label.mjs +3 -3
  165. package/esm2022/stepper/stepper-button.mjs +6 -6
  166. package/esm2022/stepper/stepper-icon.mjs +3 -3
  167. package/esm2022/stepper/stepper-intl.mjs +3 -3
  168. package/esm2022/stepper/stepper-module.mjs +4 -4
  169. package/esm2022/stepper/stepper.mjs +6 -6
  170. package/esm2022/table/cell.mjs +21 -21
  171. package/esm2022/table/module.mjs +4 -4
  172. package/esm2022/table/row.mjs +21 -21
  173. package/esm2022/table/table.mjs +6 -6
  174. package/esm2022/table/text-column.mjs +3 -3
  175. package/esm2022/tabs/module.mjs +4 -4
  176. package/esm2022/tabs/paginated-tab-header.mjs +3 -3
  177. package/esm2022/tabs/tab-body.mjs +6 -6
  178. package/esm2022/tabs/tab-content.mjs +3 -3
  179. package/esm2022/tabs/tab-group.mjs +3 -3
  180. package/esm2022/tabs/tab-header.mjs +3 -3
  181. package/esm2022/tabs/tab-label-wrapper.mjs +3 -3
  182. package/esm2022/tabs/tab-label.mjs +3 -3
  183. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +9 -9
  184. package/esm2022/tabs/tab.mjs +3 -3
  185. package/esm2022/toolbar/toolbar-module.mjs +4 -4
  186. package/esm2022/toolbar/toolbar.mjs +6 -6
  187. package/esm2022/tooltip/module.mjs +4 -4
  188. package/esm2022/tooltip/tooltip.mjs +6 -6
  189. package/esm2022/tree/node.mjs +9 -9
  190. package/esm2022/tree/outlet.mjs +3 -3
  191. package/esm2022/tree/padding.mjs +3 -3
  192. package/esm2022/tree/toggle.mjs +3 -3
  193. package/esm2022/tree/tree-module.mjs +4 -4
  194. package/esm2022/tree/tree.mjs +3 -3
  195. package/fesm2022/autocomplete.mjs +13 -13
  196. package/fesm2022/badge.mjs +7 -7
  197. package/fesm2022/bottom-sheet.mjs +10 -10
  198. package/fesm2022/button-toggle.mjs +10 -10
  199. package/fesm2022/button.mjs +42 -42
  200. package/fesm2022/button.mjs.map +1 -1
  201. package/fesm2022/card.mjs +46 -46
  202. package/fesm2022/checkbox.mjs +14 -14
  203. package/fesm2022/chips.mjs +40 -40
  204. package/fesm2022/core.mjs +56 -56
  205. package/fesm2022/core.mjs.map +1 -1
  206. package/fesm2022/datepicker.mjs +82 -82
  207. package/fesm2022/dialog.mjs +22 -22
  208. package/fesm2022/dialog.mjs.map +1 -1
  209. package/fesm2022/divider.mjs +7 -7
  210. package/fesm2022/expansion.mjs +25 -25
  211. package/fesm2022/form-field.mjs +34 -34
  212. package/fesm2022/grid-list.mjs +22 -22
  213. package/fesm2022/icon/testing.mjs +7 -7
  214. package/fesm2022/icon.mjs +10 -10
  215. package/fesm2022/input.mjs +7 -7
  216. package/fesm2022/list.mjs +49 -49
  217. package/fesm2022/menu.mjs +16 -16
  218. package/fesm2022/paginator.mjs +10 -10
  219. package/fesm2022/progress-bar.mjs +7 -7
  220. package/fesm2022/progress-spinner.mjs +7 -7
  221. package/fesm2022/radio.mjs +10 -10
  222. package/fesm2022/select.mjs +10 -10
  223. package/fesm2022/sidenav.mjs +22 -22
  224. package/fesm2022/slide-toggle.mjs +14 -14
  225. package/fesm2022/slider.mjs +16 -16
  226. package/fesm2022/snack-bar.mjs +23 -23
  227. package/fesm2022/snack-bar.mjs.map +1 -1
  228. package/fesm2022/sort.mjs +13 -13
  229. package/fesm2022/stepper.mjs +31 -31
  230. package/fesm2022/table.mjs +55 -55
  231. package/fesm2022/tabs.mjs +40 -40
  232. package/fesm2022/toolbar.mjs +10 -10
  233. package/fesm2022/tooltip.mjs +10 -10
  234. package/fesm2022/tree.mjs +25 -25
  235. package/package.json +2 -2
  236. package/prebuilt-themes/deeppurple-amber.css +1 -1
  237. package/prebuilt-themes/indigo-pink.css +1 -1
  238. package/prebuilt-themes/pink-bluegrey.css +1 -1
  239. package/prebuilt-themes/purple-green.css +1 -1
  240. package/schematics/migration.json +1 -1
  241. package/schematics/ng-add/fonts/material-fonts.js +1 -3
  242. package/schematics/ng-add/fonts/material-fonts.mjs +1 -3
  243. package/schematics/ng-add/index.js +1 -1
  244. package/schematics/ng-add/index.mjs +1 -1
  245. package/schematics/ng-generate/mdc-migration/index_bundled.js +1664 -936
  246. package/schematics/ng-generate/mdc-migration/index_bundled.js.map +4 -4
  247. package/schematics/ng-generate/navigation/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.ts.template +4 -1
  248. package/schematics/ng-update/index_bundled.js +123 -30
  249. package/schematics/ng-update/index_bundled.js.map +4 -4
  250. package/button/_button-theme-private.scss +0 -67
  251. package/core/density/private/_compatibility.scss +0 -74
@@ -1,6 +1,6 @@
1
- @use 'sass:map';
2
1
  @use '@material/touch-target' as mdc-touch-target;
3
2
 
3
+ @use '../core/tokens/token-utils';
4
4
  @use '../core/style/layout-common';
5
5
  @use '../core/mdc-helpers/mdc-helpers';
6
6
 
@@ -40,11 +40,6 @@
40
40
  .mat-mdc-button-persistent-ripple::before {
41
41
  content: '';
42
42
  opacity: 0;
43
- background-color: var(--mat-mdc-button-persistent-ripple-color);
44
- }
45
-
46
- .mat-ripple-element {
47
- background-color: var(--mat-mdc-button-ripple-color);
48
43
  }
49
44
 
50
45
  // The content should appear over the state and ripple layers, otherwise they may adversely affect
@@ -63,6 +58,33 @@
63
58
  }
64
59
  }
65
60
 
61
+ @mixin mat-private-button-ripple($prefix, $slots) {
62
+ @include token-utils.use-tokens($prefix, $slots) {
63
+ .mat-ripple-element {
64
+ @include token-utils.create-token-slot(background-color, ripple-color);
65
+ }
66
+
67
+ .mat-mdc-button-persistent-ripple::before {
68
+ @include token-utils.create-token-slot(background-color, state-layer-color);
69
+ }
70
+
71
+ &:hover .mat-mdc-button-persistent-ripple::before {
72
+ @include token-utils.create-token-slot(opacity, hover-state-layer-opacity);
73
+ }
74
+
75
+ &.cdk-program-focused,
76
+ &.cdk-keyboard-focused {
77
+ .mat-mdc-button-persistent-ripple::before {
78
+ @include token-utils.create-token-slot(opacity, focus-state-layer-opacity);
79
+ }
80
+ }
81
+
82
+ &:active .mat-mdc-button-persistent-ripple::before {
83
+ @include token-utils.create-token-slot(opacity, pressed-state-layer-opacity);
84
+ }
85
+ }
86
+ }
87
+
66
88
  // MDC's disabled buttons define a default cursor with pointer-events none. However, they select
67
89
  // :disabled for this, which does not affect anchor tags.
68
90
  // TODO(andrewseguin): Discuss with the MDC team about a mixin we can call for applying this style,
@@ -76,6 +98,15 @@
76
98
  }
77
99
  }
78
100
 
101
+ // Hides the touch target on lower densities.
102
+ @mixin mat-private-button-touch-target-density($scale) {
103
+ @include mdc-helpers.if-touch-targets-unsupported($scale) {
104
+ .mat-mdc-button-touch-target {
105
+ display: none;
106
+ }
107
+ }
108
+ }
109
+
79
110
  @mixin mat-private-button-touch-target($is-square) {
80
111
  // Element used to ensure that the button has a touch target that meets the required minimum.
81
112
  // Note that we use this, instead of MDC's built-in `mdc-button--touch` class, because the MDC
@@ -89,15 +120,3 @@
89
120
  $query: mdc-helpers.$mdc-base-styles-query);
90
121
  }
91
122
  }
92
-
93
- // Changes a button token set to exclude the ripple styles.
94
- @function mat-private-button-remove-ripple($tokens) {
95
- @return map.merge($tokens, (
96
- focus-state-layer-color: null,
97
- focus-state-layer-opacity: null,
98
- hover-state-layer-color: null,
99
- hover-state-layer-opacity: null,
100
- pressed-state-layer-color: null,
101
- pressed-state-layer-opacity: null,
102
- ));
103
- }
@@ -1,168 +1,136 @@
1
1
  @use '@material/button/button' as mdc-button;
2
- @use '@material/button/button-theme' as mdc-button-theme;
3
2
  @use '@material/button/button-text-theme' as mdc-button-text-theme;
4
3
  @use '@material/button/button-filled-theme' as mdc-button-filled-theme;
5
4
  @use '@material/button/button-protected-theme' as mdc-button-protected-theme;
6
5
  @use '@material/button/button-outlined-theme' as mdc-button-outlined-theme;
7
- @use '@material/theme/theme-color' as mdc-theme-color;
8
6
  @use '@material/elevation/elevation-theme' as mdc-elevation-theme;
9
7
 
10
- @use './button-theme-private';
8
+ @use './button-base';
11
9
  @use '../core/mdc-helpers/mdc-helpers';
12
10
  @use '../core/theming/theming';
13
11
  @use '../core/theming/inspection';
12
+ @use '../core/tokens/token-utils';
14
13
  @use '../core/typography/typography';
15
14
  @use '../core/tokens/m2/mdc/filled-button' as tokens-mdc-filled-button;
15
+ @use '../core/tokens/m2/mat/filled-button' as tokens-mat-filled-button;
16
+ @use '../core/tokens/m2/mdc/outlined-button' as tokens-mdc-outlined-button;
17
+ @use '../core/tokens/m2/mat/outlined-button' as tokens-mat-outlined-button;
16
18
  @use '../core/tokens/m2/mdc/protected-button' as tokens-mdc-protected-button;
19
+ @use '../core/tokens/m2/mat/protected-button' as tokens-mat-protected-button;
17
20
  @use '../core/tokens/m2/mdc/text-button' as tokens-mdc-text-button;
21
+ @use '../core/tokens/m2/mat/text-button' as tokens-mat-text-button;
18
22
 
19
- @function _on-color($theme, $palette) {
20
- $is-dark: inspection.get-theme-type($theme) == dark;
21
- @return if(mdc-helpers.variable-safe-contrast-tone($palette, $is-dark) == 'dark', #000, #fff);
22
- }
23
23
 
24
- @mixin _outlined-button-variant($color) {
25
- @include mdc-button-outlined-theme.theme((
26
- label-text-color: $color,
27
- ));
28
- }
24
+ @mixin _text-button-variant($theme, $palette) {
25
+ $mdc-tokens: if($palette,
26
+ tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, $palette),
27
+ tokens-mdc-text-button.get-color-tokens($theme)
28
+ );
29
29
 
30
- @mixin base($theme) {
31
- // TODO(mmalerba): Move button base tokens here
30
+ $mat-tokens: if($palette,
31
+ tokens-mat-text-button.private-get-color-palette-color-tokens($theme, $palette),
32
+ tokens-mat-text-button.get-color-tokens($theme)
33
+ );
34
+
35
+ @include mdc-button-text-theme.theme($mdc-tokens);
36
+ @include token-utils.create-token-values(tokens-mat-text-button.$prefix, $mat-tokens);
32
37
  }
33
38
 
34
- @mixin color($theme) {
35
- @include mdc-helpers.using-mdc-theme($theme) {
36
- $is-dark: inspection.get-theme-type($theme) == dark;
37
- $on-surface: mdc-theme-color.prop-value(on-surface);
38
- $disabled-ink-color: rgba($on-surface, if($is-dark, 0.5, 0.38));
39
- $primary: mdc-theme-color.prop-value(primary);
40
- $secondary: mdc-theme-color.prop-value(secondary);
41
- $error: mdc-theme-color.prop-value(error);
42
-
43
- .mat-mdc-outlined-button {
44
- @include mdc-button-outlined-theme.theme((
45
- outline-color: rgba(mdc-theme-color.prop-value(on-surface), 0.12)
46
- ));
47
-
48
- &.mat-unthemed {
49
- @include _outlined-button-variant($on-surface);
50
- }
39
+ @mixin _filled-button-variant($theme, $palette) {
40
+ $mdc-tokens: if($palette,
41
+ tokens-mdc-filled-button.private-get-color-palette-color-tokens($theme, $palette),
42
+ tokens-mdc-filled-button.get-color-tokens($theme)
43
+ );
51
44
 
52
- &.mat-primary {
53
- @include _outlined-button-variant($primary);
54
- }
45
+ $mat-tokens: if($palette,
46
+ tokens-mat-filled-button.private-get-color-palette-color-tokens($theme, $palette),
47
+ tokens-mat-filled-button.get-color-tokens($theme)
48
+ );
55
49
 
56
- &.mat-accent {
57
- @include _outlined-button-variant($secondary);
58
- }
50
+ @include mdc-button-filled-theme.theme($mdc-tokens);
51
+ @include token-utils.create-token-values(tokens-mat-filled-button.$prefix, $mat-tokens);
52
+ }
59
53
 
60
- &.mat-warn {
61
- @include _outlined-button-variant($error);
62
- }
54
+ @mixin _protected-button-variant($theme, $palette) {
55
+ $mdc-tokens: if($palette,
56
+ tokens-mdc-protected-button.private-get-color-palette-color-tokens($theme, $palette),
57
+ tokens-mdc-protected-button.get-color-tokens($theme)
58
+ );
63
59
 
64
- @include button-theme-private.apply-disabled-style() {
65
- @include mdc-button-outlined-theme.theme((
66
- // We need to pass both the disabled and enabled values, because the enabled
67
- // ones apply to anchors while the disabled ones are for buttons.
68
- label-text-color: $disabled-ink-color,
69
- disabled-label-text-color: $disabled-ink-color,
70
- outline-color: rgba($on-surface, 0.12),
71
- disabled-outline-color: rgba($on-surface, 0.12),
72
- ));
73
- }
74
- }
60
+ $mat-tokens: if($palette,
61
+ tokens-mat-protected-button.private-get-color-palette-color-tokens($theme, $palette),
62
+ tokens-mat-protected-button.get-color-tokens($theme)
63
+ );
75
64
 
76
- // Ripple colors
77
- .mat-mdc-button, .mat-mdc-outlined-button {
78
- @include button-theme-private.ripple-theme-styles($theme, false);
79
- }
65
+ @include mdc-button-protected-theme.theme($mdc-tokens);
66
+ @include token-utils.create-token-values(tokens-mat-protected-button.$prefix, $mat-tokens);
67
+ }
80
68
 
81
- .mat-mdc-raised-button, .mat-mdc-unelevated-button {
82
- @include button-theme-private.ripple-theme-styles($theme, true);
83
- }
84
- }
69
+ @mixin _outlined-button-variant($theme, $palette) {
70
+ $mdc-tokens: if($palette,
71
+ tokens-mdc-outlined-button.private-get-color-palette-color-tokens($theme, $palette),
72
+ tokens-mdc-outlined-button.get-color-tokens($theme)
73
+ );
74
+
75
+ $mat-tokens: if($palette,
76
+ tokens-mat-outlined-button.private-get-color-palette-color-tokens($theme, $palette),
77
+ tokens-mat-outlined-button.get-color-tokens($theme)
78
+ );
85
79
 
86
- $surface: inspection.get-theme-color($theme, background, card);
87
- $primary: inspection.get-theme-color($theme, primary);
88
- $accent: inspection.get-theme-color($theme, accent);
89
- $error: inspection.get-theme-color($theme, warn);
80
+ @include mdc-button-outlined-theme.theme($mdc-tokens);
81
+ @include token-utils.create-token-values(tokens-mat-outlined-button.$prefix, $mat-tokens);
82
+ }
90
83
 
91
- $on-surface: _on-color($theme, $surface);
92
- $on-primary: _on-color($theme, $primary);
93
- $on-accent: _on-color($theme, $accent);
94
- $on-error: _on-color($theme, $error);
84
+ @mixin base($theme) {
85
+ // TODO(mmalerba): Move button base tokens here
86
+ }
95
87
 
88
+ @mixin color($theme) {
96
89
  .mat-mdc-button {
97
- @include mdc-button-text-theme.theme(tokens-mdc-text-button.get-color-tokens($theme));
90
+ @include _text-button-variant($theme, null);
98
91
 
99
92
  &.mat-primary {
100
- @include mdc-button-text-theme.theme(
101
- tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, primary));
93
+ @include _text-button-variant($theme, primary);
102
94
  }
103
95
 
104
96
  &.mat-accent {
105
- @include mdc-button-text-theme.theme(
106
- tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, accent));
97
+ @include _text-button-variant($theme, accent);
107
98
  }
108
99
 
109
100
  &.mat-warn {
110
- @include mdc-button-text-theme.theme(
111
- tokens-mdc-text-button.private-get-color-palette-color-tokens($theme, warn));
101
+ @include _text-button-variant($theme, warn);
112
102
  }
113
103
  }
114
104
 
115
105
  .mat-mdc-unelevated-button {
116
- $default-color-tokens: tokens-mdc-filled-button.get-color-tokens($theme, $surface, $on-surface);
117
- $primary-color-tokens: tokens-mdc-filled-button.get-color-tokens($theme, $primary, $on-primary);
118
- $accent-color-tokens: tokens-mdc-filled-button.get-color-tokens($theme, $accent, $on-accent);
119
- $warn-color-tokens: tokens-mdc-filled-button.get-color-tokens($theme, $error, $on-error);
120
-
121
- &.mat-unthemed {
122
- @include mdc-button-filled-theme.theme($default-color-tokens);
123
- }
106
+ @include _filled-button-variant($theme, null);
124
107
 
125
108
  &.mat-primary {
126
- @include mdc-button-filled-theme.theme($primary-color-tokens);
109
+ @include _filled-button-variant($theme, primary);
127
110
  }
128
111
 
129
112
  &.mat-accent {
130
- @include mdc-button-filled-theme.theme($accent-color-tokens);
113
+ @include _filled-button-variant($theme, accent);
131
114
  }
132
115
 
133
116
  &.mat-warn {
134
- @include mdc-button-filled-theme.theme($warn-color-tokens);
117
+ @include _filled-button-variant($theme, warn);
135
118
  }
136
119
  }
137
120
 
138
121
  .mat-mdc-raised-button {
139
- $default-color-tokens: tokens-mdc-protected-button.get-color-tokens(
140
- $theme,
141
- $surface,
142
- $on-surface
143
- );
144
- $primary-color-tokens: tokens-mdc-protected-button.get-color-tokens(
145
- $theme,
146
- $primary,
147
- $on-primary
148
- );
149
- $accent-color-tokens: tokens-mdc-protected-button.get-color-tokens($theme, $accent, $on-accent);
150
- $warn-color-tokens: tokens-mdc-protected-button.get-color-tokens($theme, $error, $on-error);
151
-
152
- &.mat-unthemed {
153
- @include mdc-button-protected-theme.theme($default-color-tokens);
154
- }
122
+ @include _protected-button-variant($theme, null);
155
123
 
156
124
  &.mat-primary {
157
- @include mdc-button-protected-theme.theme($primary-color-tokens);
125
+ @include _protected-button-variant($theme, primary);
158
126
  }
159
127
 
160
128
  &.mat-accent {
161
- @include mdc-button-protected-theme.theme($accent-color-tokens);
129
+ @include _protected-button-variant($theme, accent);
162
130
  }
163
131
 
164
132
  &.mat-warn {
165
- @include mdc-button-protected-theme.theme($warn-color-tokens);
133
+ @include _protected-button-variant($theme, warn);
166
134
  }
167
135
 
168
136
  // TODO(wagnermaciel): Remove this workaround when b/301126527 is resolved
@@ -179,41 +147,19 @@
179
147
  }
180
148
  }
181
149
 
182
- $is-dark: inspection.get-theme-type($theme) == dark;
183
- $disabled-ink-color: rgba($on-surface, if($is-dark, 0.5, 0.38));
184
- $disabled-container-color: rgba($on-surface, 0.12);
150
+ .mat-mdc-outlined-button {
151
+ @include _outlined-button-variant($theme, null);
185
152
 
186
- // TODO: these disabled styles are a bit too specific currently.
187
- // Once the buttons are fully tokenized, we should rework how they're applied.
188
- .mat-mdc-button {
189
- @include button-theme-private.apply-disabled-style() {
190
- @include mdc-button-text-theme.theme((
191
- disabled-label-text-color: $disabled-ink-color,
192
- label-text-color: $disabled-ink-color,
193
- ));
153
+ &.mat-primary {
154
+ @include _outlined-button-variant($theme, primary);
194
155
  }
195
- }
196
156
 
197
- .mat-mdc-raised-button {
198
- @include button-theme-private.apply-disabled-style() {
199
- @include mdc-elevation-theme.elevation(0);
200
- @include mdc-button-protected-theme.theme((
201
- disabled-container-color: $disabled-container-color,
202
- disabled-label-text-color: $disabled-ink-color,
203
- container-color: $disabled-container-color,
204
- label-text-color: $disabled-ink-color,
205
- ));
157
+ &.mat-accent {
158
+ @include _outlined-button-variant($theme, accent);
206
159
  }
207
- }
208
160
 
209
- .mat-mdc-unelevated-button {
210
- @include button-theme-private.apply-disabled-style() {
211
- @include mdc-button-filled-theme.theme((
212
- disabled-container-color: $disabled-container-color,
213
- disabled-label-text-color: $disabled-ink-color,
214
- container-color: $disabled-container-color,
215
- label-text-color: $disabled-ink-color,
216
- ));
161
+ &.mat-warn {
162
+ @include _outlined-button-variant($theme, warn);
217
163
  }
218
164
  }
219
165
  }
@@ -230,27 +176,25 @@
230
176
  .mat-mdc-button {
231
177
  $density-tokens: tokens-mdc-text-button.get-density-tokens($theme);
232
178
  @include mdc-button-text-theme.theme($density-tokens);
233
- @include button-theme-private.touch-target-density($density-scale);
179
+ @include button-base.mat-private-button-touch-target-density($density-scale);
234
180
  }
235
181
 
236
182
  .mat-mdc-raised-button {
237
183
  $density-tokens: tokens-mdc-protected-button.get-density-tokens($theme);
238
184
  @include mdc-button-protected-theme.theme($density-tokens);
239
- @include button-theme-private.touch-target-density($density-scale);
185
+ @include button-base.mat-private-button-touch-target-density($density-scale);
240
186
  }
241
187
 
242
188
  .mat-mdc-unelevated-button {
243
189
  $density-tokens: tokens-mdc-filled-button.get-density-tokens($theme);
244
190
  @include mdc-button-filled-theme.theme($density-tokens);
245
- @include button-theme-private.touch-target-density($density-scale);
191
+ @include button-base.mat-private-button-touch-target-density($density-scale);
246
192
  }
247
193
 
248
194
  .mat-mdc-outlined-button {
249
- // Use `mat-mdc-button-base` to increase the specificity over the button's structural styles.
250
- &.mat-mdc-button-base {
251
- @include mdc-button-theme.density($density-scale, $query: mdc-helpers.$mdc-base-styles-query);
252
- @include button-theme-private.touch-target-density($density-scale);
253
- }
195
+ $density-tokens: tokens-mdc-outlined-button.get-density-tokens($theme);
196
+ @include mdc-button-outlined-theme.theme($density-tokens);
197
+ @include button-base.mat-private-button-touch-target-density($density-scale);
254
198
  }
255
199
  }
256
200
 
@@ -2,13 +2,14 @@
2
2
  @use '@material/fab/fab-theme' as mdc-fab-theme;
3
3
  @use '@material/fab/extended-fab-theme' as mdc-extended-fab-theme;
4
4
 
5
- @use './button-theme-private';
6
5
  @use '../core/mdc-helpers/mdc-helpers';
7
6
  @use '../core/style/sass-utils';
8
7
  @use '../core/theming/theming';
9
8
  @use '../core/theming/inspection';
10
9
  @use '../core/tokens/m2/mdc/fab' as tokens-mdc-fab;
11
10
  @use '../core/tokens/m2/mdc/extended-fab' as tokens-mdc-extended-fab;
11
+ @use '../core/tokens/m2/mat/fab' as tokens-mat-fab;
12
+ @use '../core/tokens/token-utils';
12
13
  @use '../core/typography/typography';
13
14
 
14
15
  @mixin base($theme) {
@@ -21,67 +22,38 @@
21
22
  }
22
23
  }
23
24
 
24
- @mixin _fab-variant($foreground, $background) {
25
- $color-tokens: (
26
- container-color: $background,
27
- icon-color: $foreground
25
+ @mixin _fab-variant($theme, $palette) {
26
+ $mdc-tokens: if($palette,
27
+ tokens-mdc-fab.private-get-color-palette-color-tokens($theme, $palette),
28
+ tokens-mdc-fab.get-color-tokens($theme)
28
29
  );
29
- @include mdc-fab-theme.theme($color-tokens);
30
30
 
31
- --mat-mdc-fab-color: #{$foreground};
32
- }
31
+ $mat-tokens: if($palette,
32
+ tokens-mat-fab.private-get-color-palette-color-tokens($theme, $palette),
33
+ tokens-mat-fab.get-color-tokens($theme)
34
+ );
33
35
 
34
- @function white-or-black($color, $is-dark) {
35
- @return if(mdc-helpers.variable-safe-contrast-tone($color, $is-dark) == 'dark', #000, #fff);
36
+ @include mdc-fab-theme.theme($mdc-tokens);
37
+ @include token-utils.create-token-values(tokens-mat-fab.$prefix, $mat-tokens);
36
38
  }
37
39
 
38
40
  @mixin color($theme) {
39
- $is-dark: inspection.get-theme-type($theme) == dark;
40
-
41
- $surface: inspection.get-theme-color($theme, background, card);
42
- $primary: inspection.get-theme-color($theme, primary);
43
- $accent: inspection.get-theme-color($theme, accent);
44
- $warn: inspection.get-theme-color($theme, warn);
45
-
46
- $on-surface: white-or-black($surface, $is-dark);
47
- $on-primary: white-or-black($primary, $is-dark);
48
- $on-accent: white-or-black($accent, $is-dark);
49
- $on-warn: white-or-black($warn, $is-dark);
50
-
51
- $disabled: rgba($on-surface, 0.12);
52
- $on-disabled: rgba($on-surface, if($is-dark, 0.5, 0.38));
53
-
54
41
  @include sass-utils.current-selector-or-root() {
55
- // TODO(wagnermaciel): The ripple-theme-styles mixin depends heavily on
56
- // being wrapped by using-mdc-theme. This workaround needs to be
57
- // revisited w/ a more holistic solution.
42
+ @include _fab-variant($theme, null);
43
+
58
44
  .mat-mdc-fab,
59
45
  .mat-mdc-mini-fab {
60
- @include mdc-helpers.using-mdc-theme($theme) {
61
- @include button-theme-private.ripple-theme-styles($theme, true);
46
+ &.mat-primary {
47
+ @include _fab-variant($theme, primary);
62
48
  }
63
- }
64
49
 
65
- :disabled, a[disabled='true'] {
66
- @include button-theme-private.apply-disabled-style() {
67
- @include _fab-variant($on-disabled, $disabled);
50
+ &.mat-accent {
51
+ @include _fab-variant($theme, accent);
68
52
  }
69
- }
70
-
71
- .mat-unthemed {
72
- @include _fab-variant($on-surface, $surface);
73
- }
74
-
75
- .mat-primary {
76
- @include _fab-variant($on-primary, $primary);
77
- }
78
-
79
- .mat-accent {
80
- @include _fab-variant($on-accent, $accent);
81
- }
82
53
 
83
- .mat-warn {
84
- @include _fab-variant($on-warn, $warn);
54
+ &.mat-warn {
55
+ @include _fab-variant($theme, warn);
56
+ }
85
57
  }
86
58
  }
87
59
  }
@@ -2,48 +2,47 @@
2
2
  @use '@material/density/functions' as mdc-density-functions;
3
3
  @use '@material/icon-button/icon-button-theme' as mdc-icon-button-theme;
4
4
  @use '../core/tokens/m2/mdc/icon-button' as tokens-mdc-icon-button;
5
+ @use '../core/tokens/m2/mat/icon-button' as tokens-mat-icon-button;
5
6
 
6
- @use './button-theme-private';
7
+ @use './button-base';
8
+ @use '../core/tokens/token-utils';
7
9
  @use '../core/theming/theming';
8
10
  @use '../core/theming/inspection';
9
11
 
10
- $_icon-size: 24px;
11
-
12
- // TODO(crisbeto): move these into tokens
13
- @mixin _ripple-color($color) {
14
- --mat-mdc-button-persistent-ripple-color: #{$color};
15
- --mat-mdc-button-ripple-color: #{rgba($color, 0.1)};
16
- }
17
12
 
18
13
  @mixin base($theme) {
19
14
  // TODO(mmalerba): Move icon button base tokens here
20
15
  }
21
16
 
22
- @mixin color($theme) {
23
- $color-tokens: tokens-mdc-icon-button.get-color-tokens($theme);
24
- $is-dark: inspection.get-theme-type($theme) == dark;
17
+ @mixin _icon-button-variant($theme, $palette) {
18
+ $mdc-tokens: if($palette,
19
+ tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, $palette),
20
+ tokens-mdc-icon-button.get-color-tokens($theme)
21
+ );
25
22
 
23
+ $mat-tokens: if($palette,
24
+ tokens-mat-icon-button.private-get-color-palette-color-tokens($theme, $palette),
25
+ tokens-mat-icon-button.get-color-tokens($theme)
26
+ );
27
+
28
+ @include mdc-icon-button-theme.theme($mdc-tokens);
29
+ @include token-utils.create-token-values(tokens-mat-icon-button.$prefix, $mat-tokens);
30
+ }
31
+
32
+ @mixin color($theme) {
26
33
  .mat-mdc-icon-button {
27
- @include button-theme-private.ripple-theme-styles($theme, false);
28
- @include mdc-icon-button-theme.theme($color-tokens);
29
- @include _ripple-color(if($is-dark, #fff, #000));
34
+ @include _icon-button-variant($theme, null);
30
35
 
31
36
  &.mat-primary {
32
- @include _ripple-color(inspection.get-theme-color($theme, primary));
33
- @include mdc-icon-button-theme.theme(
34
- tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, primary));
37
+ @include _icon-button-variant($theme, primary);
35
38
  }
36
39
 
37
40
  &.mat-accent {
38
- @include _ripple-color(inspection.get-theme-color($theme, accent));
39
- @include mdc-icon-button-theme.theme(
40
- tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, accent));
41
+ @include _icon-button-variant($theme, accent);
41
42
  }
42
43
 
43
44
  &.mat-warn {
44
- @include _ripple-color(inspection.get-theme-color($theme, warn));
45
- @include mdc-icon-button-theme.theme(
46
- tokens-mdc-icon-button.private-get-color-palette-color-tokens($theme, warn));
45
+ @include _icon-button-variant($theme, warn);
47
46
  }
48
47
  }
49
48
  }
@@ -51,6 +50,7 @@ $_icon-size: 24px;
51
50
  @mixin typography($theme) {}
52
51
 
53
52
  @mixin density($theme) {
53
+ $icon-size: 24px;
54
54
  $density-scale: inspection.get-theme-density($theme);
55
55
  // Manually apply the expected density theming, and include the padding
56
56
  // as it was applied before
@@ -81,9 +81,9 @@ $_icon-size: 24px;
81
81
  // fails validation because the variable is "undefined" in the sass stack.
82
82
  width: var(--mdc-icon-button-state-layer-size);
83
83
  height: var(--mdc-icon-button-state-layer-size);
84
- padding: math.div($calculated-size - $_icon-size, 2);
84
+ padding: math.div($calculated-size - $icon-size, 2);
85
85
 
86
- @include button-theme-private.touch-target-density($density-scale);
86
+ @include button-base.mat-private-button-touch-target-density($density-scale);
87
87
  }
88
88
  }
89
89
 
@@ -54,16 +54,16 @@
54
54
  @include option-theme.typography($theme);
55
55
  @include optgroup-theme.typography($theme);
56
56
  @include pseudo-checkbox-theme.typography($theme);
57
- // TODO(mmalerba): add typography mixin for this.
58
- // @include ripple-theme.typography($config);
57
+ @include ripple-theme.typography($theme);
59
58
  }
60
59
 
61
60
  @mixin density($theme) {
62
61
  @include option-theme.density($theme);
63
62
  @include optgroup-theme.density($theme);
63
+ @include ripple-theme.density($theme);
64
+
64
65
  // TODO(mmalerba): add density mixins for these.
65
- // @include ripple-theme.density($density-scale);
66
- // @include pseudo-checkbox-theme.density($density-scale);
66
+ // @include pseudo-checkbox-theme.density($theme);
67
67
  }
68
68
 
69
69
  // Mixin that renders all of the core styles that depend on the theme.