@material/web 1.0.0 → 1.0.2-nightly.6a1fb38.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 (370) hide show
  1. package/all.d.ts +2 -0
  2. package/all.js +2 -0
  3. package/all.js.map +1 -1
  4. package/button/elevated-button.js +5 -1
  5. package/button/elevated-button.js.map +1 -1
  6. package/button/internal/_elevation.scss +32 -32
  7. package/button/internal/_icon.scss +22 -23
  8. package/button/internal/_outlined-button.scss +21 -19
  9. package/button/internal/_shared.scss +84 -77
  10. package/button/internal/_touch-target.scss +4 -0
  11. package/button/internal/button.d.ts +7 -11
  12. package/button/internal/button.js +52 -38
  13. package/button/internal/button.js.map +1 -1
  14. package/button/internal/elevated-button.d.ts +1 -1
  15. package/button/internal/elevated-button.js +1 -1
  16. package/button/internal/elevated-button.js.map +1 -1
  17. package/button/internal/filled-button.d.ts +1 -1
  18. package/button/internal/filled-button.js +1 -1
  19. package/button/internal/filled-button.js.map +1 -1
  20. package/button/internal/filled-tonal-button.d.ts +1 -1
  21. package/button/internal/filled-tonal-button.js +1 -1
  22. package/button/internal/filled-tonal-button.js.map +1 -1
  23. package/button/internal/outlined-button.d.ts +1 -1
  24. package/button/internal/outlined-button.js +2 -2
  25. package/button/internal/outlined-button.js.map +1 -1
  26. package/button/internal/outlined-styles.css.js +1 -1
  27. package/button/internal/outlined-styles.css.js.map +1 -1
  28. package/button/internal/shared-elevation-styles.css.js +1 -1
  29. package/button/internal/shared-elevation-styles.css.js.map +1 -1
  30. package/button/internal/shared-styles.css.js +1 -1
  31. package/button/internal/shared-styles.css.js.map +1 -1
  32. package/checkbox/internal/_checkbox.scss +6 -0
  33. package/checkbox/internal/checkbox-styles.css.js +1 -1
  34. package/checkbox/internal/checkbox-styles.css.js.map +1 -1
  35. package/checkbox/internal/checkbox.d.ts +16 -23
  36. package/checkbox/internal/checkbox.js +38 -52
  37. package/checkbox/internal/checkbox.js.map +1 -1
  38. package/chips/filter-chip.js +5 -1
  39. package/chips/filter-chip.js.map +1 -1
  40. package/chips/harness.js.map +1 -1
  41. package/chips/input-chip.js +6 -1
  42. package/chips/input-chip.js.map +1 -1
  43. package/chips/internal/assist-chip.js +8 -4
  44. package/chips/internal/assist-chip.js.map +1 -1
  45. package/chips/internal/chip-set.js +6 -4
  46. package/chips/internal/chip-set.js.map +1 -1
  47. package/chips/internal/chip.d.ts +3 -0
  48. package/chips/internal/chip.js +7 -5
  49. package/chips/internal/chip.js.map +1 -1
  50. package/chips/internal/filter-chip.d.ts +2 -0
  51. package/chips/internal/filter-chip.js +11 -5
  52. package/chips/internal/filter-chip.js.map +1 -1
  53. package/chips/internal/input-chip.d.ts +2 -0
  54. package/chips/internal/input-chip.js +10 -4
  55. package/chips/internal/input-chip.js.map +1 -1
  56. package/chips/internal/multi-action-chip.js.map +1 -1
  57. package/chips/internal/trailing-icons.d.ts +1 -1
  58. package/chips/internal/trailing-icons.js +6 -5
  59. package/chips/internal/trailing-icons.js.map +1 -1
  60. package/common.d.ts +2 -0
  61. package/common.js +2 -0
  62. package/common.js.map +1 -1
  63. package/dialog/harness.js +1 -2
  64. package/dialog/harness.js.map +1 -1
  65. package/dialog/internal/_dialog.scss +1 -1
  66. package/dialog/internal/animations.js +14 -12
  67. package/dialog/internal/animations.js.map +1 -1
  68. package/dialog/internal/dialog-styles.css.js +1 -1
  69. package/dialog/internal/dialog-styles.css.js.map +1 -1
  70. package/dialog/internal/dialog.d.ts +6 -6
  71. package/dialog/internal/dialog.js +24 -24
  72. package/dialog/internal/dialog.js.map +1 -1
  73. package/fab/harness.js.map +1 -1
  74. package/fab/internal/_fab.scss +4 -0
  75. package/fab/internal/fab-styles.css.js +1 -1
  76. package/fab/internal/fab-styles.css.js.map +1 -1
  77. package/fab/internal/fab.js.map +1 -1
  78. package/fab/internal/shared.js +10 -11
  79. package/fab/internal/shared.js.map +1 -1
  80. package/field/harness.js.map +1 -1
  81. package/field/internal/_content.scss +185 -174
  82. package/field/internal/_filled-field.scss +147 -135
  83. package/field/internal/_label.scss +83 -72
  84. package/field/internal/_outlined-field.scss +276 -261
  85. package/field/internal/_supporting-text.scss +53 -42
  86. package/field/internal/field.js +26 -22
  87. package/field/internal/field.js.map +1 -1
  88. package/field/internal/filled-styles.css.js +1 -1
  89. package/field/internal/filled-styles.css.js.map +1 -1
  90. package/field/internal/outlined-styles.css.js +1 -1
  91. package/field/internal/outlined-styles.css.js.map +1 -1
  92. package/field/internal/shared-styles.css.js +1 -1
  93. package/field/internal/shared-styles.css.js.map +1 -1
  94. package/focus/internal/focus-ring.d.ts +2 -0
  95. package/focus/internal/focus-ring.js +3 -3
  96. package/focus/internal/focus-ring.js.map +1 -1
  97. package/icon/internal/_icon.scss +7 -4
  98. package/icon/internal/icon-styles.css.js +1 -1
  99. package/icon/internal/icon-styles.css.js.map +1 -1
  100. package/iconbutton/internal/icon-button.d.ts +9 -4
  101. package/iconbutton/internal/icon-button.js +35 -22
  102. package/iconbutton/internal/icon-button.js.map +1 -1
  103. package/internal/aria/aria.d.ts +4 -26
  104. package/internal/aria/aria.js +10 -28
  105. package/internal/aria/aria.js.map +1 -1
  106. package/internal/aria/delegate.js +2 -2
  107. package/internal/aria/delegate.js.map +1 -1
  108. package/internal/controller/attachable-controller.js +3 -5
  109. package/internal/controller/attachable-controller.js.map +1 -1
  110. package/internal/controller/form-submitter.d.ts +3 -5
  111. package/internal/controller/form-submitter.js +5 -7
  112. package/internal/controller/form-submitter.js.map +1 -1
  113. package/internal/controller/is-rtl.js +2 -2
  114. package/internal/controller/is-rtl.js.map +1 -1
  115. package/internal/controller/string-converter.js +1 -1
  116. package/internal/controller/string-converter.js.map +1 -1
  117. package/internal/motion/animation.js.map +1 -1
  118. package/labs/behaviors/element-internals.d.ts +45 -0
  119. package/labs/behaviors/element-internals.js +50 -0
  120. package/labs/behaviors/element-internals.js.map +1 -0
  121. package/labs/behaviors/focusable.d.ts +39 -0
  122. package/labs/behaviors/focusable.js +82 -0
  123. package/labs/behaviors/focusable.js.map +1 -0
  124. package/labs/behaviors/form-associated.d.ts +199 -0
  125. package/labs/behaviors/form-associated.js +155 -0
  126. package/labs/behaviors/form-associated.js.map +1 -0
  127. package/labs/behaviors/mixin.d.ts +54 -0
  128. package/labs/behaviors/mixin.js +7 -0
  129. package/labs/behaviors/mixin.js.map +1 -0
  130. package/labs/card/_elevated-card.scss +6 -0
  131. package/labs/card/_filled-card.scss +6 -0
  132. package/labs/card/_outlined-card.scss +6 -0
  133. package/labs/card/elevated-card.d.ts +18 -0
  134. package/labs/card/elevated-card.js +21 -0
  135. package/labs/card/elevated-card.js.map +1 -0
  136. package/labs/card/filled-card.d.ts +18 -0
  137. package/labs/card/filled-card.js +21 -0
  138. package/labs/card/filled-card.js.map +1 -0
  139. package/labs/card/internal/_elevated-card.scss +35 -0
  140. package/labs/card/internal/_filled-card.scss +35 -0
  141. package/labs/card/internal/_outlined-card.scss +39 -0
  142. package/labs/card/internal/_shared.scss +40 -0
  143. package/labs/card/internal/card.d.ts +13 -0
  144. package/labs/card/internal/card.js +20 -0
  145. package/labs/card/internal/card.js.map +1 -0
  146. package/labs/card/internal/elevated-styles.css.js +9 -0
  147. package/labs/card/internal/elevated-styles.css.js.map +1 -0
  148. package/labs/card/internal/elevated-styles.scss +10 -0
  149. package/labs/card/internal/filled-styles.css.js +9 -0
  150. package/labs/card/internal/filled-styles.css.js.map +1 -0
  151. package/labs/card/internal/filled-styles.scss +10 -0
  152. package/labs/card/internal/outlined-styles.css.js +9 -0
  153. package/labs/card/internal/outlined-styles.css.js.map +1 -0
  154. package/labs/card/internal/outlined-styles.scss +10 -0
  155. package/labs/card/internal/shared-styles.css.js +9 -0
  156. package/labs/card/internal/shared-styles.css.js.map +1 -0
  157. package/labs/card/internal/shared-styles.scss +10 -0
  158. package/labs/card/outlined-card.d.ts +18 -0
  159. package/labs/card/outlined-card.js +21 -0
  160. package/labs/card/outlined-card.js.map +1 -0
  161. package/labs/item/internal/_item.scss +1 -1
  162. package/labs/item/internal/item-styles.css.js +1 -1
  163. package/labs/item/internal/item-styles.css.js.map +1 -1
  164. package/labs/item/internal/item.js +8 -8
  165. package/labs/item/internal/item.js.map +1 -1
  166. package/labs/navigationbar/internal/constants.js.map +1 -1
  167. package/labs/navigationbar/internal/navigation-bar.d.ts +3 -0
  168. package/labs/navigationbar/internal/navigation-bar.js +18 -11
  169. package/labs/navigationbar/internal/navigation-bar.js.map +1 -1
  170. package/labs/navigationdrawer/internal/navigation-drawer-modal.d.ts +3 -0
  171. package/labs/navigationdrawer/internal/navigation-drawer-modal.js +10 -3
  172. package/labs/navigationdrawer/internal/navigation-drawer-modal.js.map +1 -1
  173. package/labs/navigationdrawer/internal/navigation-drawer.d.ts +3 -0
  174. package/labs/navigationdrawer/internal/navigation-drawer.js +8 -1
  175. package/labs/navigationdrawer/internal/navigation-drawer.js.map +1 -1
  176. package/labs/navigationtab/harness.js.map +1 -1
  177. package/labs/navigationtab/internal/navigation-tab.d.ts +6 -0
  178. package/labs/navigationtab/internal/navigation-tab.js +43 -27
  179. package/labs/navigationtab/internal/navigation-tab.js.map +1 -1
  180. package/labs/navigationtab/internal/state.js.map +1 -1
  181. package/labs/segmentedbutton/internal/segmented-button.d.ts +3 -0
  182. package/labs/segmentedbutton/internal/segmented-button.js +26 -12
  183. package/labs/segmentedbutton/internal/segmented-button.js.map +1 -1
  184. package/labs/segmentedbuttonset/internal/segmented-button-set.d.ts +5 -0
  185. package/labs/segmentedbuttonset/internal/segmented-button-set.js +14 -9
  186. package/labs/segmentedbuttonset/internal/segmented-button-set.js.map +1 -1
  187. package/list/harness.d.ts +3 -2
  188. package/list/harness.js.map +1 -1
  189. package/list/internal/list-controller.d.ts +1 -1
  190. package/list/internal/list-controller.js +7 -3
  191. package/list/internal/list-controller.js.map +1 -1
  192. package/list/internal/list-navigation-helpers.js.map +1 -1
  193. package/list/internal/list.d.ts +2 -2
  194. package/list/internal/list.js +8 -6
  195. package/list/internal/list.js.map +1 -1
  196. package/list/internal/listitem/_list-item.scss +18 -0
  197. package/list/internal/listitem/harness.d.ts +3 -3
  198. package/list/internal/listitem/harness.js.map +1 -1
  199. package/list/internal/listitem/list-item-styles.css.js +1 -1
  200. package/list/internal/listitem/list-item-styles.css.js.map +1 -1
  201. package/list/internal/listitem/list-item.d.ts +3 -2
  202. package/list/internal/listitem/list-item.js +20 -21
  203. package/list/internal/listitem/list-item.js.map +1 -1
  204. package/list/list-item.d.ts +4 -12
  205. package/list/list-item.js +5 -14
  206. package/list/list-item.js.map +1 -1
  207. package/menu/harness.js.map +1 -1
  208. package/menu/internal/_menu.scss +20 -1
  209. package/menu/internal/controllers/menuItemController.d.ts +7 -0
  210. package/menu/internal/controllers/menuItemController.js +17 -4
  211. package/menu/internal/controllers/menuItemController.js.map +1 -1
  212. package/menu/internal/controllers/shared.d.ts +9 -1
  213. package/menu/internal/controllers/shared.js +4 -4
  214. package/menu/internal/controllers/shared.js.map +1 -1
  215. package/menu/internal/controllers/surfacePositionController.d.ts +15 -2
  216. package/menu/internal/controllers/surfacePositionController.js +134 -56
  217. package/menu/internal/controllers/surfacePositionController.js.map +1 -1
  218. package/menu/internal/controllers/typeaheadController.js +19 -14
  219. package/menu/internal/controllers/typeaheadController.js.map +1 -1
  220. package/menu/internal/menu-styles.css.js +1 -1
  221. package/menu/internal/menu-styles.css.js.map +1 -1
  222. package/menu/internal/menu.d.ts +55 -17
  223. package/menu/internal/menu.js +175 -88
  224. package/menu/internal/menu.js.map +1 -1
  225. package/menu/internal/menuitem/_menu-item.scss +24 -0
  226. package/menu/internal/menuitem/harness.d.ts +3 -1
  227. package/menu/internal/menuitem/harness.js.map +1 -1
  228. package/menu/internal/menuitem/menu-item-styles.css.js +1 -1
  229. package/menu/internal/menuitem/menu-item-styles.css.js.map +1 -1
  230. package/menu/internal/menuitem/menu-item.d.ts +3 -2
  231. package/menu/internal/menuitem/menu-item.js +20 -20
  232. package/menu/internal/menuitem/menu-item.js.map +1 -1
  233. package/menu/internal/submenu/sub-menu.d.ts +9 -8
  234. package/menu/internal/submenu/sub-menu.js +35 -22
  235. package/menu/internal/submenu/sub-menu.js.map +1 -1
  236. package/menu/internal/types.js.map +1 -1
  237. package/menu/menu-item.js +1 -2
  238. package/menu/menu-item.js.map +1 -1
  239. package/menu/menu.js +1 -2
  240. package/menu/menu.js.map +1 -1
  241. package/package.json +1 -1
  242. package/progress/internal/_circular-progress.scss +2 -2
  243. package/progress/internal/_linear-progress.scss +1 -1
  244. package/progress/internal/circular-progress-styles.css.js +1 -1
  245. package/progress/internal/circular-progress-styles.css.js.map +1 -1
  246. package/progress/internal/circular-progress.js +11 -10
  247. package/progress/internal/circular-progress.js.map +1 -1
  248. package/progress/internal/linear-progress-styles.css.js +1 -1
  249. package/progress/internal/linear-progress-styles.css.js.map +1 -1
  250. package/progress/internal/linear-progress.d.ts +1 -1
  251. package/progress/internal/linear-progress.js +3 -3
  252. package/progress/internal/linear-progress.js.map +1 -1
  253. package/progress/internal/progress.js +4 -2
  254. package/progress/internal/progress.js.map +1 -1
  255. package/radio/internal/_radio.scss +144 -123
  256. package/radio/internal/radio-styles.css.js +1 -1
  257. package/radio/internal/radio-styles.css.js.map +1 -1
  258. package/radio/internal/radio.d.ts +12 -23
  259. package/radio/internal/radio.js +31 -50
  260. package/radio/internal/radio.js.map +1 -1
  261. package/radio/internal/single-selection-controller.js +1 -1
  262. package/radio/internal/single-selection-controller.js.map +1 -1
  263. package/radio/radio.js +1 -2
  264. package/radio/radio.js.map +1 -1
  265. package/ripple/internal/ripple.js +21 -18
  266. package/ripple/internal/ripple.js.map +1 -1
  267. package/select/filled-select.js +1 -2
  268. package/select/filled-select.js.map +1 -1
  269. package/select/harness.js +1 -1
  270. package/select/harness.js.map +1 -1
  271. package/select/internal/_shared.scss +4 -0
  272. package/select/internal/select.d.ts +25 -34
  273. package/select/internal/select.js +101 -91
  274. package/select/internal/select.js.map +1 -1
  275. package/select/internal/selectoption/select-option.d.ts +8 -6
  276. package/select/internal/selectoption/select-option.js +25 -23
  277. package/select/internal/selectoption/select-option.js.map +1 -1
  278. package/select/internal/selectoption/selectOptionController.js +1 -1
  279. package/select/internal/selectoption/selectOptionController.js.map +1 -1
  280. package/select/internal/shared-styles.css.js +1 -1
  281. package/select/internal/shared-styles.css.js.map +1 -1
  282. package/select/outlined-select.js +1 -2
  283. package/select/outlined-select.js.map +1 -1
  284. package/select/select-option.js +1 -2
  285. package/select/select-option.js.map +1 -1
  286. package/slider/harness.js +5 -5
  287. package/slider/harness.js.map +1 -1
  288. package/slider/internal/_slider.scss +68 -30
  289. package/slider/internal/slider-styles.css.js +1 -1
  290. package/slider/internal/slider-styles.css.js.map +1 -1
  291. package/slider/internal/slider.d.ts +16 -25
  292. package/slider/internal/slider.js +111 -115
  293. package/slider/internal/slider.js.map +1 -1
  294. package/switch/internal/_handle.scss +159 -141
  295. package/switch/internal/_icon.scss +95 -72
  296. package/switch/internal/_switch.scss +90 -95
  297. package/switch/internal/_track.scss +110 -77
  298. package/switch/internal/switch-styles.css.js +1 -1
  299. package/switch/internal/switch-styles.css.js.map +1 -1
  300. package/switch/internal/switch.d.ts +9 -25
  301. package/switch/internal/switch.js +31 -57
  302. package/switch/internal/switch.js.map +1 -1
  303. package/switch/switch.js +1 -2
  304. package/switch/switch.js.map +1 -1
  305. package/tabs/harness.js +3 -3
  306. package/tabs/harness.js.map +1 -1
  307. package/tabs/internal/_tab.scss +27 -35
  308. package/tabs/internal/primary-tab.d.ts +0 -2
  309. package/tabs/internal/tab-styles.css.js +1 -1
  310. package/tabs/internal/tab-styles.css.js.map +1 -1
  311. package/tabs/internal/tab.d.ts +10 -5
  312. package/tabs/internal/tab.js +43 -22
  313. package/tabs/internal/tab.js.map +1 -1
  314. package/tabs/internal/tabs.d.ts +7 -4
  315. package/tabs/internal/tabs.js +23 -22
  316. package/tabs/internal/tabs.js.map +1 -1
  317. package/textfield/filled-text-field.js +1 -2
  318. package/textfield/filled-text-field.js.map +1 -1
  319. package/textfield/harness.js +3 -2
  320. package/textfield/harness.js.map +1 -1
  321. package/textfield/internal/text-field.d.ts +33 -18
  322. package/textfield/internal/text-field.js +96 -58
  323. package/textfield/internal/text-field.js.map +1 -1
  324. package/textfield/outlined-text-field.js +1 -2
  325. package/textfield/outlined-text-field.js.map +1 -1
  326. package/tokens/_index.scss +3 -0
  327. package/tokens/_md-comp-elevated-card.scss +63 -0
  328. package/tokens/_md-comp-filled-card.scss +63 -0
  329. package/tokens/_md-comp-icon.scss +2 -0
  330. package/tokens/_md-comp-outlined-card.scss +69 -0
  331. package/tokens/_md-comp-test-table.scss +1 -0
  332. package/internal/controller/element-internals.d.ts +0 -35
  333. package/internal/controller/element-internals.js +0 -24
  334. package/internal/controller/element-internals.js.map +0 -1
  335. package/list/internal/listitem/forced-colors-styles.css.js +0 -9
  336. package/list/internal/listitem/forced-colors-styles.css.js.map +0 -1
  337. package/list/internal/listitem/forced-colors-styles.scss +0 -19
  338. package/menu/internal/forced-colors-styles.css.js +0 -9
  339. package/menu/internal/forced-colors-styles.css.js.map +0 -1
  340. package/menu/internal/forced-colors-styles.scss +0 -12
  341. package/menu/internal/menuitem/forced-colors-styles.css.js +0 -9
  342. package/menu/internal/menuitem/forced-colors-styles.css.js.map +0 -1
  343. package/menu/internal/menuitem/forced-colors-styles.scss +0 -26
  344. package/radio/internal/forced-colors-styles.css.js +0 -9
  345. package/radio/internal/forced-colors-styles.css.js.map +0 -1
  346. package/radio/internal/forced-colors-styles.scss +0 -29
  347. package/select/internal/filled-forced-colors-styles.css.d.ts +0 -1
  348. package/select/internal/filled-forced-colors-styles.css.js +0 -9
  349. package/select/internal/filled-forced-colors-styles.css.js.map +0 -1
  350. package/select/internal/filled-forced-colors-styles.scss +0 -29
  351. package/select/internal/outlined-forced-colors-styles.css.d.ts +0 -1
  352. package/select/internal/outlined-forced-colors-styles.css.js +0 -9
  353. package/select/internal/outlined-forced-colors-styles.css.js.map +0 -1
  354. package/select/internal/outlined-forced-colors-styles.scss +0 -29
  355. package/switch/internal/forced-colors-styles.css.d.ts +0 -1
  356. package/switch/internal/forced-colors-styles.css.js +0 -9
  357. package/switch/internal/forced-colors-styles.css.js.map +0 -1
  358. package/switch/internal/forced-colors-styles.scss +0 -42
  359. package/textfield/internal/filled-forced-colors-styles.css.d.ts +0 -1
  360. package/textfield/internal/filled-forced-colors-styles.css.js +0 -9
  361. package/textfield/internal/filled-forced-colors-styles.css.js.map +0 -1
  362. package/textfield/internal/filled-forced-colors-styles.scss +0 -29
  363. package/textfield/internal/outlined-forced-colors-styles.css.d.ts +0 -1
  364. package/textfield/internal/outlined-forced-colors-styles.css.js +0 -9
  365. package/textfield/internal/outlined-forced-colors-styles.css.js.map +0 -1
  366. package/textfield/internal/outlined-forced-colors-styles.scss +0 -29
  367. /package/{list/internal/listitem/forced-colors-styles.css.d.ts → labs/card/internal/elevated-styles.css.d.ts} +0 -0
  368. /package/{menu/internal/forced-colors-styles.css.d.ts → labs/card/internal/filled-styles.css.d.ts} +0 -0
  369. /package/{menu/internal/menuitem/forced-colors-styles.css.d.ts → labs/card/internal/outlined-styles.css.d.ts} +0 -0
  370. /package/{radio/internal/forced-colors-styles.css.d.ts → labs/card/internal/shared-styles.css.d.ts} +0 -0
@@ -38,319 +38,334 @@ $_md-sys-motion: tokens.md-sys-motion-values();
38
38
  @mixin styles() {
39
39
  $tokens: tokens.md-comp-outlined-field-values();
40
40
 
41
- :host {
42
- @each $token, $value in $tokens {
43
- --_#{$token}: var(--md-outlined-field-#{$token}, #{$value});
41
+ @layer styles {
42
+ :host {
43
+ @each $token, $value in $tokens {
44
+ --_#{$token}: var(--md-outlined-field-#{$token}, #{$value});
45
+ }
46
+
47
+ // Support logical shape properties
48
+ --_container-shape-start-start: var(
49
+ --md-outlined-field-container-shape-start-start,
50
+ var(--_container-shape)
51
+ );
52
+ --_container-shape-start-end: var(
53
+ --md-outlined-field-container-shape-start-end,
54
+ var(--_container-shape)
55
+ );
56
+ --_container-shape-end-end: var(
57
+ --md-outlined-field-container-shape-end-end,
58
+ var(--_container-shape)
59
+ );
60
+ --_container-shape-end-start: var(
61
+ --md-outlined-field-container-shape-end-start,
62
+ var(--_container-shape)
63
+ );
44
64
  }
45
65
 
46
- // Support logical shape properties
47
- --_container-shape-start-start: var(
48
- --md-outlined-field-container-shape-start-start,
49
- var(--_container-shape)
50
- );
51
- --_container-shape-start-end: var(
52
- --md-outlined-field-container-shape-start-end,
53
- var(--_container-shape)
54
- );
55
- --_container-shape-end-end: var(
56
- --md-outlined-field-container-shape-end-end,
57
- var(--_container-shape)
58
- );
59
- --_container-shape-end-start: var(
60
- --md-outlined-field-container-shape-end-start,
61
- var(--_container-shape)
62
- );
63
- }
66
+ .outline {
67
+ border-color: var(--_outline-color);
68
+ border-radius: inherit;
69
+ display: flex;
70
+ // Allow events to target elements underneath the outline, such as icons.
71
+ pointer-events: none;
72
+ height: 100%;
73
+ position: absolute;
74
+ width: 100%;
75
+ z-index: 1;
76
+ }
64
77
 
65
- .outline {
66
- border-color: var(--_outline-color);
67
- border-radius: inherit;
68
- color: var(--_outline-color); // Needed for Firefox HCM
69
- display: flex;
70
- // Allow events to target elements underneath the outline, such as icons.
71
- pointer-events: none;
72
- height: 100%;
73
- position: absolute;
74
- width: 100%;
75
- }
78
+ .outline-start,
79
+ .outline-panel-inactive,
80
+ .outline-panel-active,
81
+ .outline-end {
82
+ // ::before is inactive border, ::after is active border. Borders are
83
+ // absolutely positioned within their elements.
84
+ &::before,
85
+ &::after {
86
+ border: inherit;
87
+ content: '';
88
+ inset: 0;
89
+ position: absolute;
90
+ }
91
+ }
76
92
 
77
- .outline-start,
78
- .outline-panel-inactive,
79
- .outline-panel-active,
80
- .outline-end {
81
- // ::before is inactive border, ::after is active border. Borders are
82
- // absolutely positioned within their elements.
83
- &::before,
84
- &::after {
93
+ .outline-start,
94
+ .outline-end {
85
95
  border: inherit;
86
- content: '';
87
- inset: 0;
88
- position: absolute;
96
+ border-radius: inherit;
97
+ box-sizing: border-box;
98
+ position: relative;
99
+
100
+ &::before,
101
+ &::after {
102
+ border-bottom-style: solid;
103
+ border-top-style: solid;
104
+ }
105
+
106
+ &::after {
107
+ opacity: 0;
108
+ transition: opacity map.get($_md-sys-motion, 'duration-short3')
109
+ map.get($_md-sys-motion, 'easing-emphasized');
110
+ }
89
111
  }
90
- }
91
-
92
- .outline-start,
93
- .outline-end {
94
- border: inherit;
95
- border-radius: inherit;
96
- box-sizing: border-box;
97
- position: relative;
98
112
 
99
- &::before,
100
- &::after {
101
- border-bottom-style: solid;
102
- border-top-style: solid;
113
+ .focused .outline-start::after,
114
+ .focused .outline-end::after {
115
+ opacity: 1;
103
116
  }
104
117
 
105
- &::after {
106
- opacity: 0;
107
- transition: opacity map.get($_md-sys-motion, 'duration-short3')
108
- map.get($_md-sys-motion, 'easing-emphasized');
118
+ .outline-start {
119
+ &::before,
120
+ &::after {
121
+ border-inline-start-style: solid;
122
+ border-inline-end-style: none;
123
+ border-start-start-radius: inherit;
124
+ border-start-end-radius: 0;
125
+ border-end-start-radius: inherit;
126
+ border-end-end-radius: 0;
127
+ margin-inline-end: var(--_outline-label-padding);
128
+ }
109
129
  }
110
- }
111
130
 
112
- .focused .outline-start::after,
113
- .focused .outline-end::after {
114
- opacity: 1;
115
- }
131
+ .outline-end {
132
+ flex-grow: 1;
133
+ margin-inline-start: calc(-1 * var(--_outline-label-padding));
134
+
135
+ &::before,
136
+ &::after {
137
+ border-inline-start-style: none;
138
+ border-inline-end-style: solid;
139
+ border-start-start-radius: 0;
140
+ border-start-end-radius: inherit;
141
+ border-end-start-radius: 0;
142
+ border-end-end-radius: inherit;
143
+ }
144
+ }
116
145
 
117
- .outline-start {
118
- &::before,
119
- &::after {
120
- border-inline-start-style: solid;
121
- border-inline-end-style: none;
122
- border-start-start-radius: inherit;
123
- border-start-end-radius: 0;
124
- border-end-start-radius: inherit;
125
- border-end-end-radius: 0;
146
+ .outline-notch {
147
+ align-items: flex-start;
148
+ border: inherit;
149
+ display: flex;
150
+ margin-inline-start: calc(-1 * var(--_outline-label-padding));
126
151
  margin-inline-end: var(--_outline-label-padding);
152
+ max-width: calc(100% - var(--_leading-space) - var(--_trailing-space));
153
+ padding: 0 var(--_outline-label-padding);
154
+ position: relative;
127
155
  }
128
- }
129
-
130
- .outline-end {
131
- flex-grow: 1;
132
- margin-inline-start: calc(-1 * var(--_outline-label-padding));
133
156
 
134
- &::before,
135
- &::after {
136
- border-inline-start-style: none;
137
- border-inline-end-style: solid;
138
- border-start-start-radius: 0;
139
- border-start-end-radius: inherit;
140
- border-end-start-radius: 0;
141
- border-end-end-radius: inherit;
157
+ .no-label .outline-notch {
158
+ display: none;
142
159
  }
143
- }
144
-
145
- .outline-notch {
146
- align-items: flex-start;
147
- border: inherit;
148
- display: flex;
149
- margin-inline-start: calc(-1 * var(--_outline-label-padding));
150
- margin-inline-end: var(--_outline-label-padding);
151
- max-width: calc(100% - var(--_leading-space) - var(--_trailing-space));
152
- padding: 0 var(--_outline-label-padding);
153
- position: relative;
154
- }
155
160
 
156
- .no-label .outline-notch {
157
- display: none;
158
- }
161
+ .outline-panel-inactive,
162
+ .outline-panel-active {
163
+ border: inherit;
164
+ border-bottom-style: solid;
165
+ inset: 0;
166
+ position: absolute;
159
167
 
160
- .outline-panel-inactive,
161
- .outline-panel-active {
162
- border: inherit;
163
- border-bottom-style: solid;
164
- inset: 0;
165
- position: absolute;
166
-
167
- &::before,
168
- &::after {
169
- border-top-style: solid;
170
- border-bottom: none;
171
- bottom: auto;
172
- transform: scaleX(1);
173
- transition: transform map.get($_md-sys-motion, 'duration-short3')
174
- map.get($_md-sys-motion, 'easing-emphasized');
168
+ &::before,
169
+ &::after {
170
+ border-top-style: solid;
171
+ border-bottom: none;
172
+ bottom: auto;
173
+ transform: scaleX(1);
174
+ transition: transform map.get($_md-sys-motion, 'duration-short3')
175
+ map.get($_md-sys-motion, 'easing-emphasized');
176
+ }
177
+
178
+ // Note: no need to do any RTL flipping here. If RTLCSS flips this, it's also
179
+ // ok, we just need one to be left and one to be right.
180
+ &::before {
181
+ right: 50%;
182
+ transform-origin: top left;
183
+ }
184
+
185
+ &::after {
186
+ left: 50%;
187
+ transform-origin: top right;
188
+ }
175
189
  }
176
190
 
177
- // Note: no need to do any RTL flipping here. If RTLCSS flips this, it's also
178
- // ok, we just need one to be left and one to be right.
179
- &::before {
180
- right: 50%;
181
- transform-origin: top left;
191
+ .populated .outline-panel-inactive,
192
+ .populated .outline-panel-active,
193
+ .focused .outline-panel-inactive,
194
+ .focused .outline-panel-active {
195
+ &::before,
196
+ &::after {
197
+ transform: scaleX(0);
198
+ }
182
199
  }
183
200
 
184
- &::after {
185
- left: 50%;
186
- transform-origin: top right;
201
+ .outline-panel-active {
202
+ opacity: 0;
203
+ transition: opacity map.get($_md-sys-motion, 'duration-short3')
204
+ map.get($_md-sys-motion, 'easing-emphasized');
187
205
  }
188
- }
189
206
 
190
- .populated .outline-panel-inactive,
191
- .populated .outline-panel-active,
192
- .focused .outline-panel-inactive,
193
- .focused .outline-panel-active {
194
- &::before,
195
- &::after {
196
- transform: scaleX(0);
207
+ .focused .outline-panel-active {
208
+ opacity: 1;
197
209
  }
198
- }
199
-
200
- .outline-panel-active {
201
- opacity: 0;
202
- transition: opacity map.get($_md-sys-motion, 'duration-short3')
203
- map.get($_md-sys-motion, 'easing-emphasized');
204
- }
205
210
 
206
- .focused .outline-panel-active {
207
- opacity: 1;
208
- }
211
+ .outline-label {
212
+ display: flex;
213
+ max-width: 100%;
214
+ // Center the floating label within the outline stroke
215
+ transform: translateY(calc(-100% + var(--_label-text-padding-bottom)));
216
+ }
209
217
 
210
- .outline-label {
211
- display: flex;
212
- max-width: 100%;
213
- // Center the floating label within the outline stroke
214
- transform: translateY(calc(-100% + var(--_label-text-padding-bottom)));
215
- }
218
+ // Add padding that will grow to compensate for the outline's shape.
219
+ // This is needed to prevent the outline border from clipping with the label
220
+ // and is mirrored in the container padding to align the content and resting
221
+ // label with the adjusted floating label.
222
+ $shape-start: max(
223
+ var(--_container-shape-start-start),
224
+ var(--_container-shape-end-start)
225
+ );
226
+ $shape-end: max(
227
+ var(--_container-shape-start-end),
228
+ var(--_container-shape-end-end)
229
+ );
230
+ $start-space: max(
231
+ var(--_leading-space),
232
+ $shape-start + var(--_outline-label-padding)
233
+ );
234
+ $end-space: max(var(--_trailing-space), $shape-end);
216
235
 
217
- // Add padding that will grow to compensate for the outline's shape.
218
- // This is needed to prevent the outline border from clipping with the label
219
- // and is mirrored in the container padding to align the content and resting
220
- // label with the adjusted floating label.
221
- $shape-start: max(
222
- var(--_container-shape-start-start),
223
- var(--_container-shape-end-start)
224
- );
225
- $shape-end: max(
226
- var(--_container-shape-start-end),
227
- var(--_container-shape-end-end)
228
- );
229
- $start-space: max(
230
- var(--_leading-space),
231
- $shape-start + var(--_outline-label-padding)
232
- );
233
- $end-space: max(var(--_trailing-space), $shape-end);
236
+ .outline-start,
237
+ .field:not(.with-start) .content ::slotted(*) {
238
+ padding-inline-start: $start-space;
239
+ }
234
240
 
235
- .outline-start,
236
- .field:not(.with-start) .content ::slotted(*) {
237
- padding-inline-start: $start-space;
238
- }
241
+ .field:not(.with-start) .label-wrapper {
242
+ margin-inline-start: $start-space;
243
+ }
239
244
 
240
- .field:not(.with-start) .label-wrapper {
241
- margin-inline-start: $start-space;
242
- }
245
+ .field:not(.with-end) .content ::slotted(*) {
246
+ padding-inline-end: $end-space;
247
+ }
243
248
 
244
- .field:not(.with-end) .content ::slotted(*) {
245
- padding-inline-end: $end-space;
246
- }
249
+ .field:not(.with-end) .label-wrapper {
250
+ margin-inline-end: $end-space;
251
+ }
247
252
 
248
- .field:not(.with-end) .label-wrapper {
249
- margin-inline-end: $end-space;
250
- }
253
+ .outline-start::before,
254
+ .outline-end::before,
255
+ .outline-panel-inactive,
256
+ .outline-panel-inactive::before,
257
+ .outline-panel-inactive::after {
258
+ border-width: var(--_outline-width);
259
+ }
251
260
 
252
- .outline-start::before,
253
- .outline-end::before,
254
- .outline-panel-inactive,
255
- .outline-panel-inactive::before,
256
- .outline-panel-inactive::after {
257
- border-width: var(--_outline-width);
258
- }
261
+ // States
259
262
 
260
- // States
263
+ :hover .outline {
264
+ border-color: var(--_hover-outline-color);
265
+ color: var(--_hover-outline-color); // Needed for Firefox HCM
266
+ }
261
267
 
262
- :hover .outline {
263
- border-color: var(--_hover-outline-color);
264
- color: var(--_hover-outline-color); // Needed for Firefox HCM
265
- }
268
+ :hover .outline-start::before,
269
+ :hover .outline-end::before,
270
+ :hover .outline-panel-inactive,
271
+ :hover .outline-panel-inactive::before,
272
+ :hover .outline-panel-inactive::after {
273
+ border-width: var(--_hover-outline-width);
274
+ }
266
275
 
267
- :hover .outline-start::before,
268
- :hover .outline-end::before,
269
- :hover .outline-panel-inactive,
270
- :hover .outline-panel-inactive::before,
271
- :hover .outline-panel-inactive::after {
272
- border-width: var(--_hover-outline-width);
273
- }
276
+ .focused .outline {
277
+ border-color: var(--_focus-outline-color);
278
+ color: var(--_focus-outline-color); // Needed for Firefox HCM
279
+ }
274
280
 
275
- .focused .outline {
276
- border-color: var(--_focus-outline-color);
277
- color: var(--_focus-outline-color); // Needed for Firefox HCM
278
- }
281
+ .outline-start::after,
282
+ .outline-end::after,
283
+ .outline-panel-active,
284
+ .outline-panel-active::before,
285
+ .outline-panel-active::after {
286
+ border-width: var(--_focus-outline-width);
287
+ }
279
288
 
280
- .outline-start::after,
281
- .outline-end::after,
282
- .outline-panel-active,
283
- .outline-panel-active::before,
284
- .outline-panel-active::after {
285
- border-width: var(--_focus-outline-width);
286
- }
289
+ .disabled .outline {
290
+ border-color: var(--_disabled-outline-color);
291
+ color: var(--_disabled-outline-color); // Needed for Firefox HCM
292
+ }
287
293
 
288
- .disabled .outline {
289
- border-color: var(--_disabled-outline-color);
290
- color: var(--_disabled-outline-color); // Needed for Firefox HCM
291
- }
294
+ .disabled .outline-start,
295
+ .disabled .outline-end,
296
+ .disabled .outline-panel-inactive {
297
+ opacity: var(--_disabled-outline-opacity);
298
+ }
292
299
 
293
- .disabled .outline-start,
294
- .disabled .outline-end,
295
- .disabled .outline-panel-inactive {
296
- opacity: var(--_disabled-outline-opacity);
297
- }
300
+ .disabled .outline-start::before,
301
+ .disabled .outline-end::before,
302
+ .disabled .outline-panel-inactive,
303
+ .disabled .outline-panel-inactive::before,
304
+ .disabled .outline-panel-inactive::after {
305
+ border-width: var(--_disabled-outline-width);
306
+ }
298
307
 
299
- .disabled .outline-start::before,
300
- .disabled .outline-end::before,
301
- .disabled .outline-panel-inactive,
302
- .disabled .outline-panel-inactive::before,
303
- .disabled .outline-panel-inactive::after {
304
- border-width: var(--_disabled-outline-width);
305
- }
308
+ .error .outline {
309
+ border-color: var(--_error-outline-color);
310
+ color: var(--_error-outline-color); // Needed for Firefox HCM
311
+ }
306
312
 
307
- .error .outline {
308
- border-color: var(--_error-outline-color);
309
- color: var(--_error-outline-color); // Needed for Firefox HCM
310
- }
313
+ .error:hover .outline {
314
+ border-color: var(--_error-hover-outline-color);
315
+ // Needed for Firefox HCM
316
+ color: var(--_error-hover-outline-color);
317
+ }
311
318
 
312
- .error:hover .outline {
313
- border-color: var(--_error-hover-outline-color);
314
- // Needed for Firefox HCM
315
- color: var(--_error-hover-outline-color);
316
- }
319
+ .error.focused .outline {
320
+ border-color: var(--_error-focus-outline-color);
321
+ // Needed for Firefox HCM
322
+ color: var(--_error-focus-outline-color);
323
+ }
317
324
 
318
- .error.focused .outline {
319
- border-color: var(--_error-focus-outline-color);
320
- // Needed for Firefox HCM
321
- color: var(--_error-focus-outline-color);
322
- }
325
+ // Move the container up and to the left so that the resize handle doesn't
326
+ // overlap the focus outline. Content is moved back the opposite direction.
327
+ .resizable .container {
328
+ bottom: var(--_focus-outline-width);
329
+ inset-inline-end: var(--_focus-outline-width);
330
+ // Ensures the container doesn't create an overhang that can be clicked on.
331
+ clip-path: inset(
332
+ var(--_focus-outline-width) 0 0 var(--_focus-outline-width)
333
+ );
334
+ }
323
335
 
324
- // Move the container up and to the left so that the resize handle doesn't
325
- // overlap the focus outline. Content is moved back the opposite direction.
326
- .resizable .container {
327
- bottom: var(--_focus-outline-width);
328
- inset-inline-end: var(--_focus-outline-width);
329
- // Ensures the container doesn't create an overhang that can be clicked on.
330
- clip-path: inset(
331
- var(--_focus-outline-width) 0 0 var(--_focus-outline-width)
332
- );
333
- }
336
+ .resizable .container > * {
337
+ top: var(--_focus-outline-width);
338
+ inset-inline-start: var(--_focus-outline-width);
339
+ }
334
340
 
335
- .resizable .container > * {
336
- top: var(--_focus-outline-width);
337
- inset-inline-start: var(--_focus-outline-width);
338
- }
341
+ // TODO(https://bugs.chromium.org/p/chromium/issues/detail?id=1420655):
342
+ // remove :host and :host-context once Chrome supports :dir
343
+ :host-context([dir='rtl']),
344
+ :host([dir='rtl']) {
345
+ .resizable .container {
346
+ clip-path: inset(
347
+ var(--_focus-outline-width) var(--_focus-outline-width) 0 0
348
+ );
349
+ }
350
+ }
339
351
 
340
- // TODO(https://bugs.chromium.org/p/chromium/issues/detail?id=1420655):
341
- // remove :host and :host-context once Chrome supports :dir
342
- :host-context([dir='rtl']),
343
- :host([dir='rtl']) {
344
- .resizable .container {
352
+ .resizable .container:dir(rtl) {
345
353
  clip-path: inset(
346
354
  var(--_focus-outline-width) var(--_focus-outline-width) 0 0
347
355
  );
348
356
  }
349
357
  }
350
358
 
351
- .resizable .container:dir(rtl) {
352
- clip-path: inset(
353
- var(--_focus-outline-width) var(--_focus-outline-width) 0 0
354
- );
359
+ @layer hcm {
360
+ @media (forced-colors: active) {
361
+ .disabled .outline {
362
+ border-color: GrayText;
363
+ color: GrayText; // Needed for Firefox HCM
364
+ }
365
+
366
+ .disabled :is(.outline-start, .outline-end, .outline-panel-inactive) {
367
+ opacity: 1;
368
+ }
369
+ }
355
370
  }
356
371
  }