@angular/material 18.1.0-rc.0 → 18.1.1

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 (294) hide show
  1. package/button/_button-base.scss +13 -6
  2. package/button/_button-theme.scss +26 -27
  3. package/button/_icon-button-theme.scss +18 -9
  4. package/core/theming/_color-api-backwards-compatibility.scss +2 -0
  5. package/core/tokens/_token-utils.scss +33 -23
  6. package/core/tokens/m2/mat/_form-field.scss +2 -3
  7. package/core/tokens/m2/mat/_optgroup.scss +0 -9
  8. package/core/tokens/m2/mat/_option.scss +0 -9
  9. package/core/tokens/m2/mat/_paginator.scss +1 -2
  10. package/core/tokens/m2/mdc/_circular-progress.scss +2 -2
  11. package/core/tokens/m2/mdc/_extended-fab.scss +5 -6
  12. package/core/tokens/m2/mdc/_fab-small.scss +4 -4
  13. package/core/tokens/m2/mdc/_fab.scss +4 -4
  14. package/core/tokens/m2/mdc/_protected-button.scss +13 -7
  15. package/core/tokens/m2/mdc/_slider.scss +3 -6
  16. package/core/tokens/m2/mdc/_switch.scss +12 -8
  17. package/core/tokens/m3/mat/_icon-button.scss +31 -2
  18. package/core/tokens/m3/mdc/_icon-button.scss +21 -2
  19. package/core/tokens/m3/mdc/_protected-button.scss +22 -5
  20. package/core/tokens/m3/mdc/_slider.scss +9 -2
  21. package/core/tokens/m3/mdc/_switch.scss +13 -2
  22. package/datepicker/index.d.ts +5 -1
  23. package/esm2022/autocomplete/autocomplete-origin.mjs +4 -4
  24. package/esm2022/autocomplete/autocomplete-trigger.mjs +4 -4
  25. package/esm2022/autocomplete/autocomplete.mjs +4 -4
  26. package/esm2022/autocomplete/module.mjs +5 -5
  27. package/esm2022/badge/badge-module.mjs +5 -5
  28. package/esm2022/badge/badge.mjs +7 -7
  29. package/esm2022/bottom-sheet/bottom-sheet-container.mjs +4 -4
  30. package/esm2022/bottom-sheet/bottom-sheet-module.mjs +5 -5
  31. package/esm2022/bottom-sheet/bottom-sheet.mjs +4 -4
  32. package/esm2022/button/button-base.mjs +7 -7
  33. package/esm2022/button/button.mjs +9 -9
  34. package/esm2022/button/fab.mjs +17 -17
  35. package/esm2022/button/icon-button.mjs +7 -7
  36. package/esm2022/button/module.mjs +5 -5
  37. package/esm2022/button-toggle/button-toggle-module.mjs +5 -5
  38. package/esm2022/button-toggle/button-toggle.mjs +7 -7
  39. package/esm2022/card/card.mjs +43 -43
  40. package/esm2022/card/module.mjs +5 -5
  41. package/esm2022/checkbox/checkbox-required-validator.mjs +4 -4
  42. package/esm2022/checkbox/checkbox.mjs +4 -4
  43. package/esm2022/checkbox/module.mjs +9 -9
  44. package/esm2022/chips/chip-action.mjs +4 -4
  45. package/esm2022/chips/chip-edit-input.mjs +4 -4
  46. package/esm2022/chips/chip-grid.mjs +28 -10
  47. package/esm2022/chips/chip-icons.mjs +10 -10
  48. package/esm2022/chips/chip-input.mjs +4 -4
  49. package/esm2022/chips/chip-listbox.mjs +4 -4
  50. package/esm2022/chips/chip-option.mjs +4 -4
  51. package/esm2022/chips/chip-row.mjs +4 -4
  52. package/esm2022/chips/chip-set.mjs +4 -4
  53. package/esm2022/chips/chip.mjs +4 -4
  54. package/esm2022/chips/module.mjs +5 -5
  55. package/esm2022/core/common-behaviors/common-module.mjs +5 -5
  56. package/esm2022/core/datetime/index.mjs +9 -9
  57. package/esm2022/core/datetime/native-date-adapter.mjs +4 -4
  58. package/esm2022/core/error/error-options.mjs +7 -7
  59. package/esm2022/core/internal-form-field/internal-form-field.mjs +5 -5
  60. package/esm2022/core/line/line.mjs +8 -8
  61. package/esm2022/core/option/index.mjs +5 -5
  62. package/esm2022/core/option/optgroup.mjs +4 -4
  63. package/esm2022/core/option/option.mjs +4 -4
  64. package/esm2022/core/private/ripple-loader.mjs +4 -4
  65. package/esm2022/core/ripple/index.mjs +5 -5
  66. package/esm2022/core/ripple/ripple.mjs +4 -4
  67. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox-module.mjs +5 -5
  68. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +4 -4
  69. package/esm2022/core/version.mjs +1 -1
  70. package/esm2022/datepicker/calendar-body.mjs +4 -4
  71. package/esm2022/datepicker/calendar.mjs +7 -7
  72. package/esm2022/datepicker/date-range-input-parts.mjs +10 -10
  73. package/esm2022/datepicker/date-range-input.mjs +4 -4
  74. package/esm2022/datepicker/date-range-picker.mjs +4 -4
  75. package/esm2022/datepicker/date-range-selection-strategy.mjs +4 -4
  76. package/esm2022/datepicker/date-selection-model.mjs +10 -10
  77. package/esm2022/datepicker/datepicker-actions.mjs +10 -10
  78. package/esm2022/datepicker/datepicker-base.mjs +7 -7
  79. package/esm2022/datepicker/datepicker-input-base.mjs +4 -4
  80. package/esm2022/datepicker/datepicker-input.mjs +4 -4
  81. package/esm2022/datepicker/datepicker-intl.mjs +4 -4
  82. package/esm2022/datepicker/datepicker-module.mjs +5 -5
  83. package/esm2022/datepicker/datepicker-toggle.mjs +7 -7
  84. package/esm2022/datepicker/datepicker.mjs +4 -4
  85. package/esm2022/datepicker/month-view.mjs +4 -4
  86. package/esm2022/datepicker/multi-year-view.mjs +4 -4
  87. package/esm2022/datepicker/year-view.mjs +4 -4
  88. package/esm2022/dialog/dialog-container.mjs +4 -4
  89. package/esm2022/dialog/dialog-content-directives.mjs +16 -16
  90. package/esm2022/dialog/dialog.mjs +4 -4
  91. package/esm2022/dialog/module.mjs +5 -5
  92. package/esm2022/divider/divider-module.mjs +5 -5
  93. package/esm2022/divider/divider.mjs +4 -4
  94. package/esm2022/expansion/accordion.mjs +4 -4
  95. package/esm2022/expansion/expansion-module.mjs +5 -5
  96. package/esm2022/expansion/expansion-panel-content.mjs +4 -4
  97. package/esm2022/expansion/expansion-panel-header.mjs +11 -11
  98. package/esm2022/expansion/expansion-panel.mjs +7 -7
  99. package/esm2022/form-field/directives/error.mjs +4 -4
  100. package/esm2022/form-field/directives/floating-label.mjs +4 -4
  101. package/esm2022/form-field/directives/hint.mjs +4 -4
  102. package/esm2022/form-field/directives/label.mjs +4 -4
  103. package/esm2022/form-field/directives/line-ripple.mjs +4 -4
  104. package/esm2022/form-field/directives/notched-outline.mjs +5 -5
  105. package/esm2022/form-field/directives/prefix.mjs +4 -4
  106. package/esm2022/form-field/directives/suffix.mjs +4 -4
  107. package/esm2022/form-field/form-field-control.mjs +4 -4
  108. package/esm2022/form-field/form-field.mjs +6 -6
  109. package/esm2022/form-field/module.mjs +5 -5
  110. package/esm2022/grid-list/grid-list-module.mjs +5 -5
  111. package/esm2022/grid-list/grid-list.mjs +4 -4
  112. package/esm2022/grid-list/grid-tile.mjs +16 -16
  113. package/esm2022/icon/icon-module.mjs +5 -5
  114. package/esm2022/icon/icon-registry.mjs +4 -4
  115. package/esm2022/icon/icon.mjs +4 -4
  116. package/esm2022/icon/testing/fake-icon-registry.mjs +8 -8
  117. package/esm2022/input/input.mjs +4 -4
  118. package/esm2022/input/module.mjs +5 -5
  119. package/esm2022/list/action-list.mjs +5 -5
  120. package/esm2022/list/list-base.mjs +7 -7
  121. package/esm2022/list/list-item-sections.mjs +19 -19
  122. package/esm2022/list/list-module.mjs +5 -5
  123. package/esm2022/list/list-option.mjs +20 -6
  124. package/esm2022/list/list.mjs +14 -8
  125. package/esm2022/list/nav-list.mjs +5 -5
  126. package/esm2022/list/selection-list.mjs +6 -6
  127. package/esm2022/list/subheader.mjs +4 -4
  128. package/esm2022/menu/menu-content.mjs +4 -4
  129. package/esm2022/menu/menu-item.mjs +4 -4
  130. package/esm2022/menu/menu-trigger.mjs +4 -4
  131. package/esm2022/menu/menu.mjs +4 -4
  132. package/esm2022/menu/module.mjs +5 -5
  133. package/esm2022/paginator/module.mjs +5 -5
  134. package/esm2022/paginator/paginator-intl.mjs +4 -4
  135. package/esm2022/paginator/paginator.mjs +4 -4
  136. package/esm2022/progress-bar/module.mjs +5 -5
  137. package/esm2022/progress-bar/progress-bar.mjs +4 -4
  138. package/esm2022/progress-spinner/module.mjs +5 -5
  139. package/esm2022/progress-spinner/progress-spinner.mjs +5 -5
  140. package/esm2022/radio/module.mjs +5 -5
  141. package/esm2022/radio/radio.mjs +7 -7
  142. package/esm2022/select/module.mjs +5 -5
  143. package/esm2022/select/select.mjs +7 -7
  144. package/esm2022/sidenav/drawer.mjs +10 -10
  145. package/esm2022/sidenav/sidenav-module.mjs +5 -5
  146. package/esm2022/sidenav/sidenav.mjs +10 -10
  147. package/esm2022/slide-toggle/module.mjs +9 -9
  148. package/esm2022/slide-toggle/slide-toggle-required-validator.mjs +4 -4
  149. package/esm2022/slide-toggle/slide-toggle.mjs +6 -6
  150. package/esm2022/slider/module.mjs +5 -5
  151. package/esm2022/slider/slider-input.mjs +7 -7
  152. package/esm2022/slider/slider-thumb.mjs +4 -4
  153. package/esm2022/slider/slider.mjs +5 -5
  154. package/esm2022/snack-bar/module.mjs +5 -5
  155. package/esm2022/snack-bar/simple-snack-bar.mjs +4 -4
  156. package/esm2022/snack-bar/snack-bar-container.mjs +4 -4
  157. package/esm2022/snack-bar/snack-bar-content.mjs +10 -10
  158. package/esm2022/snack-bar/snack-bar.mjs +4 -4
  159. package/esm2022/sort/sort-header-intl.mjs +4 -4
  160. package/esm2022/sort/sort-header.mjs +4 -4
  161. package/esm2022/sort/sort-module.mjs +5 -5
  162. package/esm2022/sort/sort.mjs +4 -4
  163. package/esm2022/stepper/step-content.mjs +4 -4
  164. package/esm2022/stepper/step-header.mjs +4 -4
  165. package/esm2022/stepper/step-label.mjs +4 -4
  166. package/esm2022/stepper/stepper-button.mjs +7 -7
  167. package/esm2022/stepper/stepper-icon.mjs +4 -4
  168. package/esm2022/stepper/stepper-intl.mjs +4 -4
  169. package/esm2022/stepper/stepper-module.mjs +5 -5
  170. package/esm2022/stepper/stepper.mjs +7 -7
  171. package/esm2022/table/cell.mjs +22 -22
  172. package/esm2022/table/module.mjs +5 -5
  173. package/esm2022/table/row.mjs +22 -22
  174. package/esm2022/table/table.mjs +7 -7
  175. package/esm2022/table/text-column.mjs +4 -4
  176. package/esm2022/tabs/ink-bar.mjs +4 -4
  177. package/esm2022/tabs/module.mjs +5 -5
  178. package/esm2022/tabs/paginated-tab-header.mjs +4 -4
  179. package/esm2022/tabs/tab-body.mjs +7 -7
  180. package/esm2022/tabs/tab-content.mjs +4 -4
  181. package/esm2022/tabs/tab-group.mjs +4 -4
  182. package/esm2022/tabs/tab-header.mjs +5 -5
  183. package/esm2022/tabs/tab-label-wrapper.mjs +4 -4
  184. package/esm2022/tabs/tab-label.mjs +4 -4
  185. package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +11 -11
  186. package/esm2022/tabs/tab.mjs +4 -4
  187. package/esm2022/tabs/tabs-animations.mjs +2 -2
  188. package/esm2022/toolbar/toolbar-module.mjs +5 -5
  189. package/esm2022/toolbar/toolbar.mjs +7 -7
  190. package/esm2022/tooltip/module.mjs +5 -5
  191. package/esm2022/tooltip/tooltip.mjs +7 -7
  192. package/esm2022/tree/node.mjs +10 -10
  193. package/esm2022/tree/outlet.mjs +4 -4
  194. package/esm2022/tree/padding.mjs +4 -4
  195. package/esm2022/tree/toggle.mjs +4 -4
  196. package/esm2022/tree/tree-module.mjs +5 -5
  197. package/esm2022/tree/tree.mjs +4 -4
  198. package/fesm2022/autocomplete.mjs +13 -13
  199. package/fesm2022/autocomplete.mjs.map +1 -1
  200. package/fesm2022/badge.mjs +10 -10
  201. package/fesm2022/badge.mjs.map +1 -1
  202. package/fesm2022/bottom-sheet.mjs +10 -10
  203. package/fesm2022/bottom-sheet.mjs.map +1 -1
  204. package/fesm2022/button-toggle.mjs +10 -10
  205. package/fesm2022/button-toggle.mjs.map +1 -1
  206. package/fesm2022/button.mjs +40 -40
  207. package/fesm2022/button.mjs.map +1 -1
  208. package/fesm2022/card.mjs +46 -46
  209. package/fesm2022/card.mjs.map +1 -1
  210. package/fesm2022/checkbox.mjs +14 -14
  211. package/fesm2022/checkbox.mjs.map +1 -1
  212. package/fesm2022/chips.mjs +64 -46
  213. package/fesm2022/chips.mjs.map +1 -1
  214. package/fesm2022/core.mjs +60 -60
  215. package/fesm2022/core.mjs.map +1 -1
  216. package/fesm2022/datepicker.mjs +82 -82
  217. package/fesm2022/datepicker.mjs.map +1 -1
  218. package/fesm2022/dialog.mjs +25 -25
  219. package/fesm2022/dialog.mjs.map +1 -1
  220. package/fesm2022/divider.mjs +7 -7
  221. package/fesm2022/divider.mjs.map +1 -1
  222. package/fesm2022/expansion.mjs +26 -26
  223. package/fesm2022/expansion.mjs.map +1 -1
  224. package/fesm2022/form-field.mjs +37 -37
  225. package/fesm2022/form-field.mjs.map +1 -1
  226. package/fesm2022/grid-list.mjs +22 -22
  227. package/fesm2022/grid-list.mjs.map +1 -1
  228. package/fesm2022/icon/testing.mjs +7 -7
  229. package/fesm2022/icon/testing.mjs.map +1 -1
  230. package/fesm2022/icon.mjs +10 -10
  231. package/fesm2022/icon.mjs.map +1 -1
  232. package/fesm2022/input.mjs +7 -7
  233. package/fesm2022/input.mjs.map +1 -1
  234. package/fesm2022/list.mjs +76 -56
  235. package/fesm2022/list.mjs.map +1 -1
  236. package/fesm2022/menu.mjs +16 -16
  237. package/fesm2022/menu.mjs.map +1 -1
  238. package/fesm2022/paginator.mjs +10 -10
  239. package/fesm2022/paginator.mjs.map +1 -1
  240. package/fesm2022/progress-bar.mjs +7 -7
  241. package/fesm2022/progress-bar.mjs.map +1 -1
  242. package/fesm2022/progress-spinner.mjs +8 -8
  243. package/fesm2022/progress-spinner.mjs.map +1 -1
  244. package/fesm2022/radio.mjs +10 -10
  245. package/fesm2022/radio.mjs.map +1 -1
  246. package/fesm2022/select.mjs +10 -10
  247. package/fesm2022/select.mjs.map +1 -1
  248. package/fesm2022/sidenav.mjs +22 -22
  249. package/fesm2022/sidenav.mjs.map +1 -1
  250. package/fesm2022/slide-toggle.mjs +16 -16
  251. package/fesm2022/slide-toggle.mjs.map +1 -1
  252. package/fesm2022/slider.mjs +17 -17
  253. package/fesm2022/slider.mjs.map +1 -1
  254. package/fesm2022/snack-bar.mjs +22 -22
  255. package/fesm2022/snack-bar.mjs.map +1 -1
  256. package/fesm2022/sort.mjs +13 -13
  257. package/fesm2022/sort.mjs.map +1 -1
  258. package/fesm2022/stepper.mjs +31 -31
  259. package/fesm2022/stepper.mjs.map +1 -1
  260. package/fesm2022/table.mjs +55 -55
  261. package/fesm2022/table.mjs.map +1 -1
  262. package/fesm2022/tabs.mjs +46 -46
  263. package/fesm2022/tabs.mjs.map +1 -1
  264. package/fesm2022/toolbar.mjs +10 -10
  265. package/fesm2022/toolbar.mjs.map +1 -1
  266. package/fesm2022/tooltip.mjs +10 -10
  267. package/fesm2022/tooltip.mjs.map +1 -1
  268. package/fesm2022/tree.mjs +25 -25
  269. package/fesm2022/tree.mjs.map +1 -1
  270. package/form-field/_form-field-subscript.scss +1 -3
  271. package/form-field/_form-field-theme.scss +20 -20
  272. package/form-field/_mdc-text-field-density-overrides.scss +2 -2
  273. package/form-field/_mdc-text-field-structure-overrides.scss +2 -13
  274. package/form-field/_mdc-text-field-structure.scss +610 -0
  275. package/list/_list-inherited-structure.scss +516 -0
  276. package/list/_list-item-hcm-indicator.scss +2 -3
  277. package/list/_list-theme.scss +17 -18
  278. package/list/index.d.ts +2 -0
  279. package/package.json +7 -7
  280. package/prebuilt-themes/azure-blue.css +1 -1
  281. package/prebuilt-themes/cyan-orange.css +1 -1
  282. package/prebuilt-themes/deeppurple-amber.css +1 -1
  283. package/prebuilt-themes/indigo-pink.css +1 -1
  284. package/prebuilt-themes/magenta-violet.css +1 -1
  285. package/prebuilt-themes/pink-bluegrey.css +1 -1
  286. package/prebuilt-themes/purple-green.css +1 -1
  287. package/prebuilt-themes/rose-red.css +1 -1
  288. package/progress-spinner/_progress-spinner-theme.scss +11 -14
  289. package/schematics/ng-add/index.js +2 -2
  290. package/schematics/ng-add/index.mjs +2 -2
  291. package/slide-toggle/_slide-toggle-theme.scss +21 -26
  292. package/slider/_slider-theme.scss +24 -41
  293. package/tabs/_tabs-common.scss +14 -0
  294. package/list/_list-option-trailing-avatar-compat.scss +0 -59
@@ -0,0 +1,610 @@
1
+ @use '@angular/cdk';
2
+ @use '../core/style/vendor-prefixes';
3
+ @use '../core/tokens/token-utils';
4
+ @use '../core/tokens/m2/mdc/filled-text-field' as tokens-mdc-filled-text-field;
5
+ @use '../core/tokens/m2/mdc/outlined-text-field' as tokens-mdc-outlined-text-field;
6
+
7
+ // Includes the structural styles for the form field inherited from MDC.
8
+ @mixin private-text-field-structure {
9
+ $filled-slots: (tokens-mdc-filled-text-field.$prefix,
10
+ tokens-mdc-filled-text-field.get-token-slots());
11
+ $outlined-slots: (tokens-mdc-outlined-text-field.$prefix,
12
+ tokens-mdc-outlined-text-field.get-token-slots());
13
+
14
+ .mdc-text-field {
15
+ display: inline-flex;
16
+ align-items: baseline;
17
+ padding: 0 16px;
18
+ position: relative;
19
+ box-sizing: border-box;
20
+ overflow: hidden;
21
+ will-change: opacity, transform, color;
22
+
23
+ // TODO(crisbeto): The filled form field overrides these while the outlined doesn't.
24
+ // The correct thing to do would be to remove them from here and have the one based on the
25
+ // token in the outlined appearance. We keep them as is for now to avoid screenshot diffs.
26
+ border-top-left-radius: 4px;
27
+ border-top-right-radius: 4px;
28
+ border-bottom-right-radius: 0;
29
+ border-bottom-left-radius: 0;
30
+ }
31
+
32
+ .mdc-text-field__input {
33
+ width: 100%;
34
+ min-width: 0;
35
+ border: none;
36
+ border-radius: 0;
37
+ background: none;
38
+ padding: 0;
39
+ -moz-appearance: none;
40
+ -webkit-appearance: none;
41
+
42
+ // TODO(crisbeto): this height gets overwritten eventually, but there are some internal
43
+ // tests that depend on this being here in weird ways so we're keeping it around for now.
44
+ height: 28px;
45
+
46
+ // Note that while this style and the `-ms-clear` are identical, we can't combine
47
+ // them because if one of them isn't supported, it'll invalidate the whole rule.
48
+ &::-webkit-calendar-picker-indicator {
49
+ display: none;
50
+ }
51
+
52
+ &::-ms-clear {
53
+ display: none;
54
+ }
55
+
56
+ &:focus {
57
+ outline: none;
58
+ }
59
+
60
+ &:invalid {
61
+ box-shadow: none;
62
+ }
63
+
64
+ @include vendor-prefixes.input-placeholder {
65
+ opacity: 0;
66
+ }
67
+
68
+ .mdc-text-field--no-label &,
69
+ .mdc-text-field--focused & {
70
+ @include vendor-prefixes.input-placeholder {
71
+ opacity: 1;
72
+ }
73
+ }
74
+
75
+ .mdc-text-field--outlined &,
76
+ .mdc-text-field--filled.mdc-text-field--no-label & {
77
+ height: 100%;
78
+ }
79
+
80
+ .mdc-text-field--outlined & {
81
+ display: flex;
82
+ border: none !important;
83
+ background-color: transparent;
84
+ }
85
+
86
+ .mdc-text-field--disabled & {
87
+ pointer-events: auto;
88
+ }
89
+
90
+ @include token-utils.use-tokens($filled-slots...) {
91
+ @include _input-tokens('.mdc-text-field--filled');
92
+ }
93
+
94
+ @include token-utils.use-tokens($outlined-slots...) {
95
+ @include _input-tokens('.mdc-text-field--outlined');
96
+ }
97
+
98
+ @include cdk.high-contrast(active, off) {
99
+ .mdc-text-field--disabled & {
100
+ background-color: Window;
101
+ }
102
+ }
103
+ }
104
+
105
+ .mdc-text-field--filled {
106
+ height: 56px;
107
+ border-bottom-right-radius: 0;
108
+ border-bottom-left-radius: 0;
109
+
110
+ @include token-utils.use-tokens($filled-slots...) {
111
+ @include token-utils.create-token-slot(border-top-left-radius, container-shape);
112
+ @include token-utils.create-token-slot(border-top-right-radius, container-shape);
113
+
114
+ &:not(.mdc-text-field--disabled) {
115
+ @include token-utils.create-token-slot(background-color, container-color);
116
+ }
117
+
118
+ &.mdc-text-field--disabled {
119
+ @include token-utils.create-token-slot(background-color, disabled-container-color);
120
+ }
121
+ }
122
+ }
123
+
124
+ .mdc-text-field--outlined {
125
+ height: 56px;
126
+ overflow: visible;
127
+ padding-left: 16px;
128
+ padding-right: 16px;
129
+
130
+ @include _supports-max {
131
+ @include token-utils.use-tokens($outlined-slots...) {
132
+ $shape-var: token-utils.get-token-variable(container-shape);
133
+ padding-right: max(16px, var(#{$shape-var}));
134
+ padding-left: max(16px, calc(var(#{$shape-var}) + 4px));
135
+
136
+ [dir='rtl'] & {
137
+ padding-right: max(16px, calc(var(#{$shape-var}) + 4px));
138
+ padding-left: max(16px, var(#{$shape-var}));
139
+ }
140
+ }
141
+ }
142
+ }
143
+
144
+ .mdc-floating-label {
145
+ position: absolute;
146
+ left: 0;
147
+ transform-origin: left top;
148
+ line-height: 1.15rem;
149
+ text-align: left;
150
+ text-overflow: ellipsis;
151
+ white-space: nowrap;
152
+ cursor: text;
153
+ overflow: hidden;
154
+ will-change: transform;
155
+
156
+ [dir='rtl'] & {
157
+ right: 0;
158
+ left: auto;
159
+ transform-origin: right top;
160
+ text-align: right;
161
+ }
162
+
163
+ .mdc-text-field & {
164
+ top: 50%;
165
+ transform: translateY(-50%);
166
+ pointer-events: none;
167
+ }
168
+
169
+ .mdc-notched-outline & {
170
+ display: inline-block;
171
+ position: relative;
172
+ max-width: 100%;
173
+ }
174
+
175
+ .mdc-text-field--outlined & {
176
+ left: 4px;
177
+ right: auto;
178
+ }
179
+
180
+ [dir='rtl'] .mdc-text-field--outlined & {
181
+ left: auto;
182
+ right: 4px;
183
+ }
184
+
185
+ .mdc-text-field--filled & {
186
+ left: 16px;
187
+ right: auto;
188
+ }
189
+
190
+ [dir='rtl'] .mdc-text-field--filled & {
191
+ left: auto;
192
+ right: 16px;
193
+ }
194
+
195
+ .mdc-text-field--disabled & {
196
+ cursor: default;
197
+
198
+ @include cdk.high-contrast(active, off) {
199
+ z-index: 1;
200
+ }
201
+ }
202
+
203
+ .mdc-text-field--filled.mdc-text-field--no-label & {
204
+ display: none;
205
+ }
206
+
207
+ @include token-utils.use-tokens($filled-slots...) {
208
+ @include _floating-label-tokens('.mdc-text-field--filled');
209
+ }
210
+
211
+ @include token-utils.use-tokens($outlined-slots...) {
212
+ @include _floating-label-tokens('.mdc-text-field--outlined');
213
+ }
214
+ }
215
+
216
+ .mdc-floating-label--float-above {
217
+ cursor: auto;
218
+ transform: translateY(-106%) scale(0.75);
219
+
220
+ .mdc-text-field--filled & {
221
+ transform: translateY(-106%) scale(0.75);
222
+ }
223
+
224
+ .mdc-text-field--outlined & {
225
+ transform: translateY(-37.25px) scale(1);
226
+ font-size: 0.75rem;
227
+ }
228
+
229
+ .mdc-notched-outline & {
230
+ text-overflow: clip;
231
+ }
232
+
233
+ .mdc-notched-outline--upgraded & {
234
+ max-width: 133.3333333333%;
235
+ }
236
+
237
+ .mdc-text-field--outlined.mdc-notched-outline--upgraded &,
238
+ .mdc-text-field--outlined .mdc-notched-outline--upgraded & {
239
+ transform: translateY(-34.75px) scale(0.75);
240
+ }
241
+
242
+ .mdc-text-field--outlined.mdc-notched-outline--upgraded &,
243
+ .mdc-text-field--outlined .mdc-notched-outline--upgraded & {
244
+ font-size: 1rem;
245
+ }
246
+ }
247
+
248
+ .mdc-floating-label--required {
249
+ &:not(.mdc-floating-label--hide-required-marker)::after {
250
+ margin-left: 1px;
251
+ margin-right: 0;
252
+ content: '*';
253
+
254
+ [dir='rtl'] & {
255
+ margin-left: 0;
256
+ margin-right: 1px;
257
+ }
258
+ }
259
+ }
260
+
261
+ .mdc-notched-outline {
262
+ display: flex;
263
+ position: absolute;
264
+ top: 0;
265
+ right: 0;
266
+ left: 0;
267
+ box-sizing: border-box;
268
+ width: 100%;
269
+ max-width: 100%;
270
+ height: 100%;
271
+ text-align: left;
272
+ pointer-events: none;
273
+
274
+ [dir='rtl'] & {
275
+ text-align: right;
276
+ }
277
+
278
+ .mdc-text-field--outlined & {
279
+ z-index: 1;
280
+ }
281
+ }
282
+
283
+ .mat-mdc-notch-piece {
284
+ box-sizing: border-box;
285
+ height: 100%;
286
+ pointer-events: none;
287
+ border-top: 1px solid;
288
+ border-bottom: 1px solid;
289
+
290
+ .mdc-text-field--focused & {
291
+ border-width: 2px;
292
+ }
293
+
294
+ @include token-utils.use-tokens($outlined-slots...) {
295
+ // Moved out into variables because the selectors we inherited were too long.
296
+ $enabled-selector: '.mdc-text-field--outlined:not(.mdc-text-field--disabled)';
297
+ $hover-selector: ':not(.mdc-text-field--focused):hover';
298
+
299
+ #{$enabled-selector} & {
300
+ @include token-utils.create-token-slot(border-color, outline-color);
301
+ @include token-utils.create-token-slot(border-width, outline-width);
302
+ }
303
+
304
+ #{$enabled-selector}#{$hover-selector} & {
305
+ @include token-utils.create-token-slot(border-color, hover-outline-color);
306
+ }
307
+
308
+ #{$enabled-selector}.mdc-text-field--focused & {
309
+ @include token-utils.create-token-slot(border-color, focus-outline-color);
310
+ }
311
+
312
+ .mdc-text-field--outlined.mdc-text-field--disabled & {
313
+ @include token-utils.create-token-slot(border-color, disabled-outline-color);
314
+ }
315
+
316
+ #{$enabled-selector}.mdc-text-field--invalid & {
317
+ @include token-utils.create-token-slot(border-color, error-outline-color);
318
+ }
319
+
320
+ #{$enabled-selector}.mdc-text-field--invalid#{$hover-selector} .mdc-notched-outline & {
321
+ @include token-utils.create-token-slot(border-color, error-hover-outline-color);
322
+ }
323
+
324
+ #{$enabled-selector}.mdc-text-field--invalid.mdc-text-field--focused & {
325
+ @include token-utils.create-token-slot(border-color, error-focus-outline-color);
326
+ }
327
+
328
+ #{$enabled-selector}.mdc-text-field--focused .mdc-notched-outline & {
329
+ @include token-utils.create-token-slot(border-width, focus-outline-width);
330
+ }
331
+ }
332
+ }
333
+
334
+ .mdc-notched-outline__leading {
335
+ border-left: 1px solid;
336
+ border-right: none;
337
+ border-top-right-radius: 0;
338
+ border-bottom-right-radius: 0;
339
+ width: 12px;
340
+
341
+ @include token-utils.use-tokens($outlined-slots...) {
342
+ @include token-utils.create-token-slot(border-top-left-radius, container-shape);
343
+ @include token-utils.create-token-slot(border-bottom-left-radius, container-shape);
344
+
345
+ @include _supports-max {
346
+ .mdc-text-field--outlined .mdc-notched-outline & {
347
+ $shape-var: token-utils.get-token-variable(container-shape);
348
+ width: max(12px, var(#{$shape-var}));
349
+ }
350
+ }
351
+ }
352
+
353
+ [dir='rtl'] & {
354
+ border-left: none;
355
+ border-right: 1px solid;
356
+ border-bottom-left-radius: 0;
357
+ border-top-left-radius: 0;
358
+
359
+ @include token-utils.use-tokens($outlined-slots...) {
360
+ @include token-utils.create-token-slot(border-top-right-radius, container-shape);
361
+ @include token-utils.create-token-slot(border-bottom-right-radius, container-shape);
362
+ }
363
+ }
364
+ }
365
+
366
+ .mdc-notched-outline__trailing {
367
+ flex-grow: 1;
368
+ border-left: none;
369
+ border-right: 1px solid;
370
+ border-top-left-radius: 0;
371
+ border-bottom-left-radius: 0;
372
+
373
+ @include token-utils.use-tokens($outlined-slots...) {
374
+ @include token-utils.create-token-slot(border-top-right-radius, container-shape);
375
+ @include token-utils.create-token-slot(border-bottom-right-radius, container-shape);
376
+ }
377
+
378
+ [dir='rtl'] & {
379
+ border-left: 1px solid;
380
+ border-right: none;
381
+ border-top-right-radius: 0;
382
+ border-bottom-right-radius: 0;
383
+
384
+ @include token-utils.use-tokens($outlined-slots...) {
385
+ @include token-utils.create-token-slot(border-top-left-radius, container-shape);
386
+ @include token-utils.create-token-slot(border-bottom-left-radius, container-shape);
387
+ }
388
+ }
389
+ }
390
+
391
+ .mdc-notched-outline__notch {
392
+ flex: 0 0 auto;
393
+ width: auto;
394
+ max-width: calc(100% - 24px);
395
+
396
+ @include token-utils.use-tokens($outlined-slots...) {
397
+ @include _supports-max {
398
+ .mdc-text-field--outlined .mdc-notched-outline & {
399
+ $shape-var: token-utils.get-token-variable(container-shape);
400
+ max-width: calc(100% - max(12px, var(#{$shape-var})) * 2);
401
+ }
402
+ }
403
+ }
404
+
405
+ .mdc-text-field--outlined .mdc-notched-outline--notched & {
406
+ padding-top: 1px;
407
+ }
408
+
409
+ .mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched & {
410
+ padding-top: 2px;
411
+ }
412
+
413
+ .mdc-notched-outline--notched & {
414
+ padding-left: 0;
415
+ padding-right: 8px;
416
+ border-top: none;
417
+ }
418
+
419
+ [dir='rtl'] .mdc-notched-outline--notched & {
420
+ padding-left: 8px;
421
+ padding-right: 0;
422
+ }
423
+
424
+ .mdc-notched-outline--no-label & {
425
+ display: none;
426
+ }
427
+ }
428
+
429
+ .mdc-line-ripple {
430
+ &::before, &::after {
431
+ position: absolute;
432
+ bottom: 0;
433
+ left: 0;
434
+ width: 100%;
435
+ border-bottom-style: solid;
436
+ content: '';
437
+ }
438
+
439
+ &::before {
440
+ z-index: 1;
441
+
442
+ @include token-utils.use-tokens($filled-slots...) {
443
+ $enabled-field: '.mdc-text-field--filled:not(.mdc-text-field--disabled)';
444
+
445
+ @include token-utils.create-token-slot(border-bottom-width, active-indicator-height);
446
+
447
+ #{$enabled-field} & {
448
+ @include token-utils.create-token-slot(border-bottom-color, active-indicator-color);
449
+ }
450
+
451
+ #{$enabled-field}:not(.mdc-text-field--focused):hover & {
452
+ @include token-utils.create-token-slot(border-bottom-color, hover-active-indicator-color);
453
+ }
454
+
455
+ .mdc-text-field--filled.mdc-text-field--disabled & {
456
+ @include token-utils.create-token-slot(border-bottom-color,
457
+ disabled-active-indicator-color);
458
+ }
459
+
460
+ #{$enabled-field}.mdc-text-field--invalid & {
461
+ @include token-utils.create-token-slot(border-bottom-color, error-active-indicator-color);
462
+ }
463
+
464
+ #{$enabled-field}.mdc-text-field--invalid:not(.mdc-text-field--focused):hover & {
465
+ @include token-utils.create-token-slot(border-bottom-color,
466
+ error-hover-active-indicator-color);
467
+ }
468
+ }
469
+ }
470
+
471
+ &::after {
472
+ transform: scaleX(0);
473
+ opacity: 0;
474
+ z-index: 2;
475
+
476
+ @include token-utils.use-tokens($filled-slots...) {
477
+ .mdc-text-field--filled & {
478
+ @include token-utils.create-token-slot(border-bottom-width,
479
+ focus-active-indicator-height);
480
+ }
481
+
482
+ .mdc-text-field--filled:not(.mdc-text-field--disabled) & {
483
+ @include token-utils.create-token-slot(border-bottom-color, focus-active-indicator-color);
484
+ }
485
+
486
+ .mdc-text-field--filled.mdc-text-field--invalid:not(.mdc-text-field--disabled) & {
487
+ @include token-utils.create-token-slot(border-bottom-color,
488
+ error-focus-active-indicator-color);
489
+ }
490
+ }
491
+ }
492
+ }
493
+
494
+ .mdc-line-ripple--active::after {
495
+ transform: scaleX(1);
496
+ opacity: 1;
497
+ }
498
+
499
+ .mdc-line-ripple--deactivating::after {
500
+ opacity: 0;
501
+ }
502
+
503
+ .mdc-text-field--disabled {
504
+ pointer-events: none;
505
+ }
506
+ }
507
+
508
+ // Includes the tokens for the floating label for a specific form field variant.
509
+ @mixin _floating-label-tokens($selector) {
510
+ $enabled-field: '#{$selector}:not(.mdc-text-field--disabled)';
511
+
512
+ #{$enabled-field} & {
513
+ @include token-utils.create-token-slot(color, label-text-color);
514
+ }
515
+
516
+ #{$enabled-field}.mdc-text-field--focused & {
517
+ @include token-utils.create-token-slot(color, focus-label-text-color);
518
+ }
519
+
520
+ #{$enabled-field}:not(.mdc-text-field--focused):hover & {
521
+ @include token-utils.create-token-slot(color, hover-label-text-color);
522
+ }
523
+
524
+ #{$selector}.mdc-text-field--disabled & {
525
+ @include token-utils.create-token-slot(color, disabled-label-text-color);
526
+ }
527
+
528
+ #{$enabled-field}.mdc-text-field--invalid & {
529
+ @include token-utils.create-token-slot(color, error-label-text-color);
530
+ }
531
+
532
+ #{$enabled-field}.mdc-text-field--invalid.mdc-text-field--focused & {
533
+ @include token-utils.create-token-slot(color, error-focus-label-text-color);
534
+ }
535
+
536
+ #{$enabled-field}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover & {
537
+ @include token-utils.create-token-slot(color, error-hover-label-text-color);
538
+ }
539
+
540
+ #{$selector} & {
541
+ @include token-utils.create-token-slot(font-family, label-text-font);
542
+ @include token-utils.create-token-slot(font-size, label-text-size);
543
+ @include token-utils.create-token-slot(font-weight, label-text-weight);
544
+ @include token-utils.create-token-slot(letter-spacing, label-text-tracking);
545
+ }
546
+ }
547
+
548
+ // Includes the tokens for the input for a specific form field variant.
549
+ @mixin _input-tokens($selector) {
550
+ #{$selector}:not(.mdc-text-field--disabled) & {
551
+ @include token-utils.create-token-slot(color, input-text-color);
552
+ @include token-utils.create-token-slot(caret-color, caret-color);
553
+
554
+ @include vendor-prefixes.input-placeholder {
555
+ @include token-utils.create-token-slot(color, input-text-placeholder-color);
556
+ }
557
+ }
558
+
559
+ #{$selector}.mdc-text-field--invalid:not(.mdc-text-field--disabled) & {
560
+ @include token-utils.create-token-slot(caret-color, error-caret-color);
561
+ }
562
+
563
+ #{$selector}.mdc-text-field--disabled & {
564
+ @include token-utils.create-token-slot(color, disabled-input-text-color);
565
+ }
566
+ }
567
+
568
+ // Wraps the content in a `@supports` query targeting the `max` CSS function.
569
+ @mixin _supports-max {
570
+ // stylelint-disable material/no-prefixes
571
+ @supports (top: max(0%)) {
572
+ @content;
573
+ }
574
+ // stylelint-enable
575
+ }
576
+
577
+ // Includes the animation styles for the form field inherited from MDC.
578
+ @mixin private-text-field-animations {
579
+ $timing-curve: cubic-bezier(0.4, 0, 0.2, 1);
580
+
581
+ .mdc-floating-label {
582
+ transition: transform 150ms $timing-curve, color 150ms $timing-curve;
583
+ }
584
+
585
+ .mdc-text-field__input {
586
+ transition: opacity 150ms $timing-curve;
587
+
588
+ @include vendor-prefixes.input-placeholder {
589
+ transition: opacity 67ms $timing-curve;
590
+ }
591
+ }
592
+
593
+ &.mdc-text-field--no-label,
594
+ &.mdc-text-field--focused {
595
+ .mdc-text-field__input {
596
+ @include vendor-prefixes.input-placeholder {
597
+ transition-delay: 40ms;
598
+ transition-duration: 110ms;
599
+ }
600
+ }
601
+ }
602
+
603
+ .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before {
604
+ transition-duration: 75ms;
605
+ }
606
+
607
+ .mdc-line-ripple::after {
608
+ transition: transform 180ms $timing-curve, opacity 180ms $timing-curve;
609
+ }
610
+ }