@material/web 1.0.0-pre.2 → 1.0.0-pre.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 (534) hide show
  1. package/README.md +4 -4
  2. package/autocomplete/autocomplete-item.js.map +1 -1
  3. package/autocomplete/autocomplete-list.js.map +1 -1
  4. package/autocomplete/autocomplete-surface.js.map +1 -1
  5. package/autocomplete/filled-autocomplete.d.ts +0 -2
  6. package/autocomplete/filled-autocomplete.js +0 -7
  7. package/autocomplete/filled-autocomplete.js.map +1 -1
  8. package/autocomplete/lib/_filled-autocomplete.scss +22 -28
  9. package/autocomplete/lib/_outlined-autocomplete.scss +23 -29
  10. package/autocomplete/lib/_shared.scss +6 -10
  11. package/autocomplete/lib/autocomplete.d.ts +2 -2
  12. package/autocomplete/lib/autocomplete.js +4 -5
  13. package/autocomplete/lib/autocomplete.js.map +1 -1
  14. package/autocomplete/lib/autocompletelist/autocomplete-list-styles.scss +2 -0
  15. package/autocomplete/lib/autocompletesurface/autocomplete-surface-styles.scss +2 -0
  16. package/autocomplete/lib/filled-styles.css.js +1 -1
  17. package/autocomplete/lib/filled-styles.css.js.map +1 -1
  18. package/autocomplete/lib/filled-styles.scss +2 -0
  19. package/autocomplete/lib/outlined-styles.css.js +1 -1
  20. package/autocomplete/lib/outlined-styles.css.js.map +1 -1
  21. package/autocomplete/lib/outlined-styles.scss +2 -0
  22. package/autocomplete/lib/shared-styles.scss +2 -0
  23. package/autocomplete/outlined-autocomplete.d.ts +0 -2
  24. package/autocomplete/outlined-autocomplete.js +0 -7
  25. package/autocomplete/outlined-autocomplete.js.map +1 -1
  26. package/badge/badge.js.map +1 -1
  27. package/badge/lib/_badge.scss +10 -13
  28. package/badge/lib/badge-styles.css.js +1 -1
  29. package/badge/lib/badge-styles.css.js.map +1 -1
  30. package/badge/lib/badge-styles.scss +2 -0
  31. package/badge/lib/badge.js.map +1 -1
  32. package/button/elevated-button.js.map +1 -1
  33. package/button/elevated-link-button.js.map +1 -1
  34. package/button/filled-button.js.map +1 -1
  35. package/button/filled-link-button.js.map +1 -1
  36. package/button/lib/_elevated-button.scss +10 -15
  37. package/button/lib/_elevation.scss +4 -1
  38. package/button/lib/_filled-button.scss +12 -14
  39. package/button/lib/_icon.scss +1 -0
  40. package/button/lib/_outlined-button.scss +10 -15
  41. package/button/lib/_shared.scss +14 -19
  42. package/button/lib/_text-button.scss +12 -14
  43. package/button/lib/_tonal-button.scss +10 -15
  44. package/button/lib/button.js.map +1 -1
  45. package/button/lib/elevated-styles.css.js +1 -1
  46. package/button/lib/elevated-styles.css.js.map +1 -1
  47. package/button/lib/elevated-styles.scss +2 -0
  48. package/button/lib/filled-styles.css.js +1 -1
  49. package/button/lib/filled-styles.css.js.map +1 -1
  50. package/button/lib/filled-styles.scss +2 -0
  51. package/button/lib/link-button.js.map +1 -1
  52. package/button/lib/outlined-styles.css.js +1 -1
  53. package/button/lib/outlined-styles.css.js.map +1 -1
  54. package/button/lib/outlined-styles.scss +2 -0
  55. package/button/lib/shared-elevation-styles.scss +2 -0
  56. package/button/lib/shared-styles.css.js +1 -1
  57. package/button/lib/shared-styles.css.js.map +1 -1
  58. package/button/lib/shared-styles.scss +2 -0
  59. package/button/lib/text-styles.css.js +1 -1
  60. package/button/lib/text-styles.css.js.map +1 -1
  61. package/button/lib/text-styles.scss +2 -0
  62. package/button/lib/tonal-styles.css.js +1 -1
  63. package/button/lib/tonal-styles.css.js.map +1 -1
  64. package/button/lib/tonal-styles.scss +2 -0
  65. package/button/outlined-button.js.map +1 -1
  66. package/button/outlined-link-button.js.map +1 -1
  67. package/button/text-button.js.map +1 -1
  68. package/button/text-link-button.js.map +1 -1
  69. package/button/tonal-button.js.map +1 -1
  70. package/button/tonal-link-button.js.map +1 -1
  71. package/checkbox/checkbox.js.map +1 -1
  72. package/checkbox/lib/_checkbox.scss +26 -31
  73. package/checkbox/lib/checkbox-styles.css.js +1 -1
  74. package/checkbox/lib/checkbox-styles.css.js.map +1 -1
  75. package/checkbox/lib/checkbox-styles.scss +2 -0
  76. package/checkbox/lib/checkbox.js +6 -6
  77. package/checkbox/lib/checkbox.js.map +1 -1
  78. package/checkbox/lib/forced-colors-styles.scss +2 -0
  79. package/chips/action/delete-action.js.map +1 -1
  80. package/chips/action/lib/action.js +4 -4
  81. package/chips/action/lib/action.js.map +1 -1
  82. package/chips/action/lib/link-action.js +1 -1
  83. package/chips/action/lib/link-action.js.map +1 -1
  84. package/chips/action/lib/primary-action.js.map +1 -1
  85. package/chips/action/lib/selectable-action.js.map +1 -1
  86. package/chips/action/link-action.js.map +1 -1
  87. package/chips/action/presentational-action.js.map +1 -1
  88. package/chips/action/primary-action.js.map +1 -1
  89. package/chips/action/selectable-action.js.map +1 -1
  90. package/chips/chip/lib/_assist-chip-theme.scss +4 -0
  91. package/chips/chip/lib/_chip-theme.scss +29 -40
  92. package/chips/chip/lib/_chip.scss +2 -0
  93. package/chips/chip/lib/_filter-chip-theme.scss +4 -0
  94. package/chips/chip/lib/_input-chip-theme.scss +4 -0
  95. package/chips/chip/lib/_suggestion-chip-theme.scss +4 -0
  96. package/chips/chip/lib/chip.js.map +1 -1
  97. package/chips/chip/lib/foundation.js +4 -4
  98. package/chips/chip/lib/foundation.js.map +1 -1
  99. package/chips/chip/lib/link-chip.js.map +1 -1
  100. package/chips/chip/lib/selectable-chip.js.map +1 -1
  101. package/chips/chip/lib/types.d.ts +2 -2
  102. package/chips/chipset/lib/_chip-set-theme.scss +2 -0
  103. package/chips/chipset/lib/_chip-set.scss +2 -0
  104. package/chips/chipset/lib/foundation.js +3 -3
  105. package/chips/chipset/lib/foundation.js.map +1 -1
  106. package/chips/chipset/lib/types.d.ts +3 -3
  107. package/controller/events.js +4 -0
  108. package/controller/events.js.map +1 -1
  109. package/controller/form-controller.js.map +1 -1
  110. package/controller/foundation.d.ts +1 -1
  111. package/controller/observer.d.ts +2 -2
  112. package/dialog/dialog.js.map +1 -1
  113. package/dialog/harness.d.ts +2 -2
  114. package/dialog/harness.js +11 -8
  115. package/dialog/harness.js.map +1 -1
  116. package/dialog/lib/_dialog.scss +7 -11
  117. package/dialog/lib/_tokens.scss +9 -6
  118. package/dialog/lib/dialog-styles.css.js +1 -1
  119. package/dialog/lib/dialog-styles.css.js.map +1 -1
  120. package/dialog/lib/dialog-styles.scss +2 -0
  121. package/dialog/lib/dialog.js +9 -7
  122. package/dialog/lib/dialog.js.map +1 -1
  123. package/divider/divider.js.map +1 -1
  124. package/divider/lib/_divider.scss +2 -0
  125. package/divider/lib/divider-styles.scss +2 -0
  126. package/divider/lib/divider.js.map +1 -1
  127. package/elevation/elevation.js.map +1 -1
  128. package/elevation/lib/_elevation.scss +4 -0
  129. package/elevation/lib/_md-comp-elevation.scss +4 -0
  130. package/elevation/lib/elevation-styles.scss +2 -0
  131. package/elevation/lib/elevation.js.map +1 -1
  132. package/fab/fab-extended.js.map +1 -1
  133. package/fab/fab.js.map +1 -1
  134. package/fab/lib/_fab-extended.scss +18 -11
  135. package/fab/lib/_fab.scss +7 -2
  136. package/fab/lib/_shared.scss +16 -8
  137. package/fab/lib/fab-extended-styles.css.js +1 -1
  138. package/fab/lib/fab-extended-styles.css.js.map +1 -1
  139. package/fab/lib/fab-extended-styles.scss +2 -0
  140. package/fab/lib/fab-shared-styles.css.js +1 -1
  141. package/fab/lib/fab-shared-styles.css.js.map +1 -1
  142. package/fab/lib/fab-shared-styles.scss +2 -0
  143. package/fab/lib/fab-shared.d.ts +9 -15
  144. package/fab/lib/fab-shared.js +21 -33
  145. package/fab/lib/fab-shared.js.map +1 -1
  146. package/fab/lib/fab-styles.css.js +1 -1
  147. package/fab/lib/fab-styles.css.js.map +1 -1
  148. package/fab/lib/fab-styles.scss +2 -0
  149. package/field/filled-field.d.ts +1 -1
  150. package/field/filled-field.js +1 -1
  151. package/field/filled-field.js.map +1 -1
  152. package/field/harness.js +1 -1
  153. package/field/harness.js.map +1 -1
  154. package/field/lib/_content.scss +35 -50
  155. package/field/lib/_filled-field.scss +60 -79
  156. package/field/lib/_label.scss +26 -63
  157. package/field/lib/_md-comp-filled-field.scss +14 -2
  158. package/field/lib/_md-comp-outlined-field.scss +15 -4
  159. package/field/lib/_outlined-field.scss +96 -110
  160. package/field/lib/_shared.scss +13 -35
  161. package/field/lib/_supporting-text.scss +25 -52
  162. package/field/lib/field.d.ts +14 -31
  163. package/field/lib/field.js +77 -97
  164. package/field/lib/field.js.map +1 -1
  165. package/field/lib/filled-field.d.ts +10 -16
  166. package/field/lib/filled-field.js +14 -37
  167. package/field/lib/filled-field.js.map +1 -1
  168. package/field/lib/filled-styles.css.js +1 -1
  169. package/field/lib/filled-styles.css.js.map +1 -1
  170. package/field/lib/outlined-field.d.ts +4 -10
  171. package/field/lib/outlined-field.js +13 -33
  172. package/field/lib/outlined-field.js.map +1 -1
  173. package/field/lib/outlined-styles.css.js +1 -1
  174. package/field/lib/outlined-styles.css.js.map +1 -1
  175. package/field/lib/shared-styles.css.js +1 -1
  176. package/field/lib/shared-styles.css.js.map +1 -1
  177. package/field/outlined-field.d.ts +1 -1
  178. package/field/outlined-field.js +1 -1
  179. package/field/outlined-field.js.map +1 -1
  180. package/focus/focus-ring.js.map +1 -1
  181. package/focus/lib/_focus-ring.scss +7 -13
  182. package/focus/lib/_md-comp-focus-ring.scss +4 -0
  183. package/focus/lib/focus-ring-styles.css.js +1 -1
  184. package/focus/lib/focus-ring-styles.css.js.map +1 -1
  185. package/focus/lib/focus-ring-styles.scss +2 -0
  186. package/focus/lib/focus-ring.js.map +1 -1
  187. package/icon/icon.js.map +1 -1
  188. package/icon/lib/_icon.scss +2 -0
  189. package/icon/lib/icon-styles.scss +2 -0
  190. package/iconbutton/filled-icon-button-toggle.js.map +1 -1
  191. package/iconbutton/filled-icon-button.js.map +1 -1
  192. package/iconbutton/filled-link-icon-button.js.map +1 -1
  193. package/iconbutton/filled-tonal-icon-button-toggle.js.map +1 -1
  194. package/iconbutton/filled-tonal-icon-button.js.map +1 -1
  195. package/iconbutton/filled-tonal-link-icon-button.js.map +1 -1
  196. package/iconbutton/lib/_filled-icon-button.scss +19 -19
  197. package/iconbutton/lib/_filled-tonal-icon-button.scss +19 -19
  198. package/iconbutton/lib/_outlined-icon-button.scss +20 -16
  199. package/iconbutton/lib/_shared.scss +8 -8
  200. package/iconbutton/lib/_standard-icon-button.scss +21 -18
  201. package/iconbutton/lib/filled-styles.css.js +1 -1
  202. package/iconbutton/lib/filled-styles.css.js.map +1 -1
  203. package/iconbutton/lib/filled-styles.scss +2 -0
  204. package/iconbutton/lib/filled-tonal-styles.css.js +1 -1
  205. package/iconbutton/lib/filled-tonal-styles.css.js.map +1 -1
  206. package/iconbutton/lib/filled-tonal-styles.scss +2 -0
  207. package/iconbutton/lib/icon-button-toggle.js.map +1 -1
  208. package/iconbutton/lib/icon-button.js.map +1 -1
  209. package/iconbutton/lib/link-icon-button.js.map +1 -1
  210. package/iconbutton/lib/outlined-styles.css.js +1 -1
  211. package/iconbutton/lib/outlined-styles.css.js.map +1 -1
  212. package/iconbutton/lib/outlined-styles.scss +2 -0
  213. package/iconbutton/lib/shared-styles.scss +2 -0
  214. package/iconbutton/lib/standard-styles.css.js +1 -1
  215. package/iconbutton/lib/standard-styles.css.js.map +1 -1
  216. package/iconbutton/lib/standard-styles.scss +2 -0
  217. package/iconbutton/outlined-icon-button-toggle.js.map +1 -1
  218. package/iconbutton/outlined-icon-button.js.map +1 -1
  219. package/iconbutton/outlined-link-icon-button.js.map +1 -1
  220. package/iconbutton/standard-icon-button-toggle.js.map +1 -1
  221. package/iconbutton/standard-icon-button.js.map +1 -1
  222. package/iconbutton/standard-link-icon-button.js.map +1 -1
  223. package/list/lib/_list.scss +6 -2
  224. package/list/lib/avatar/_list-item-avatar.scss +2 -0
  225. package/list/lib/avatar/list-item-avatar-styles.scss +2 -0
  226. package/list/lib/avatar/list-item-avatar.js.map +1 -1
  227. package/list/lib/icon/_list-item-icon.scss +4 -0
  228. package/list/lib/icon/list-item-icon-styles.scss +2 -0
  229. package/list/lib/image/_list-item-image.scss +5 -1
  230. package/list/lib/image/list-item-image-styles.scss +2 -0
  231. package/list/lib/image/list-item-image.js.map +1 -1
  232. package/list/lib/list-styles.css.js +1 -1
  233. package/list/lib/list-styles.css.js.map +1 -1
  234. package/list/lib/list-styles.scss +2 -0
  235. package/list/lib/list.js +3 -1
  236. package/list/lib/list.js.map +1 -1
  237. package/list/lib/listitem/_list-item.scss +31 -30
  238. package/list/lib/listitem/list-item-private-styles.css.js +1 -1
  239. package/list/lib/listitem/list-item-private-styles.css.js.map +1 -1
  240. package/list/lib/listitem/list-item-private-styles.scss +2 -0
  241. package/list/lib/listitem/list-item-styles.css.js +1 -1
  242. package/list/lib/listitem/list-item-styles.css.js.map +1 -1
  243. package/list/lib/listitem/list-item-styles.scss +2 -0
  244. package/list/lib/listitem/list-item.d.ts +1 -1
  245. package/list/lib/listitem/list-item.js +3 -1
  246. package/list/lib/listitem/list-item.js.map +1 -1
  247. package/list/lib/listitemlink/list-item-link.js.map +1 -1
  248. package/list/lib/video/_list-item-video.scss +5 -1
  249. package/list/lib/video/list-item-video-styles.scss +2 -0
  250. package/list/lib/video/list-item-video.js.map +1 -1
  251. package/list/list-item-avatar.js.map +1 -1
  252. package/list/list-item-icon.js.map +1 -1
  253. package/list/list-item-image.js.map +1 -1
  254. package/list/list-item-link.js.map +1 -1
  255. package/list/list-item-video.js.map +1 -1
  256. package/list/list-item.js.map +1 -1
  257. package/list/list.js.map +1 -1
  258. package/menu/lib/_menu.scss +7 -4
  259. package/menu/lib/menu-styles.css.js +1 -1
  260. package/menu/lib/menu-styles.css.js.map +1 -1
  261. package/menu/lib/menu-styles.scss +2 -0
  262. package/menu/lib/menu.d.ts +1 -1
  263. package/menu/lib/menu.js.map +1 -1
  264. package/menu/lib/menuitem/_menu-item.scss +17 -9
  265. package/menu/lib/menuitem/menu-item-private-styles.css.js +1 -1
  266. package/menu/lib/menuitem/menu-item-private-styles.css.js.map +1 -1
  267. package/menu/lib/menuitem/menu-item-private-styles.scss +2 -0
  268. package/menu/lib/menuitem/menu-item-styles.css.js +1 -1
  269. package/menu/lib/menuitem/menu-item-styles.css.js.map +1 -1
  270. package/menu/lib/menuitem/menu-item-styles.scss +2 -0
  271. package/menu/lib/menuitem/menu-item.js.map +1 -1
  272. package/menu/lib/menuitemlink/menu-item-link.js.map +1 -1
  273. package/menu/lib/shared.d.ts +3 -3
  274. package/menu/lib/submenuitem/sub-menu-item.js.map +1 -1
  275. package/menu/lib/surfacePositionController.d.ts +1 -1
  276. package/menu/lib/typeaheadController.d.ts +1 -1
  277. package/menu/menu-item-link.js.map +1 -1
  278. package/menu/menu-item.js.map +1 -1
  279. package/menu/menu.js.map +1 -1
  280. package/menu/sub-menu-item.js.map +1 -1
  281. package/menusurface/lib/_md-comp-menu-surface.scss +4 -0
  282. package/menusurface/lib/_menu-surface.scss +4 -0
  283. package/menusurface/lib/foundation.js +31 -31
  284. package/menusurface/lib/foundation.js.map +1 -1
  285. package/menusurface/lib/menu-surface-styles.scss +2 -0
  286. package/menusurface/lib/menu-surface.d.ts +2 -2
  287. package/menusurface/lib/menu-surface.js.map +1 -1
  288. package/menusurface/menu-surface.js.map +1 -1
  289. package/navigationbar/lib/_navigation-bar.scss +2 -0
  290. package/navigationbar/lib/constants.d.ts +1 -1
  291. package/navigationbar/lib/navigation-bar-styles.scss +2 -0
  292. package/navigationbar/lib/navigation-bar.js.map +1 -1
  293. package/navigationbar/navigation-bar.js.map +1 -1
  294. package/navigationdrawer/lib/_navigation-drawer-modal.scss +11 -2
  295. package/navigationdrawer/lib/_navigation-drawer.scss +10 -5
  296. package/navigationdrawer/lib/_shared.scss +4 -8
  297. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js +1 -1
  298. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js.map +1 -1
  299. package/navigationdrawer/lib/navigation-drawer-modal-styles.scss +2 -0
  300. package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
  301. package/navigationdrawer/lib/navigation-drawer-styles.css.js +1 -1
  302. package/navigationdrawer/lib/navigation-drawer-styles.css.js.map +1 -1
  303. package/navigationdrawer/lib/navigation-drawer-styles.scss +2 -0
  304. package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
  305. package/navigationdrawer/lib/shared-styles.scss +2 -0
  306. package/navigationdrawer/navigation-drawer-modal.js.map +1 -1
  307. package/navigationdrawer/navigation-drawer.js.map +1 -1
  308. package/navigationtab/lib/_navigation-tab.scss +26 -22
  309. package/navigationtab/lib/navigation-tab-styles.css.js +1 -1
  310. package/navigationtab/lib/navigation-tab-styles.css.js.map +1 -1
  311. package/navigationtab/lib/navigation-tab-styles.scss +2 -0
  312. package/navigationtab/lib/navigation-tab.js +4 -4
  313. package/navigationtab/lib/navigation-tab.js.map +1 -1
  314. package/navigationtab/navigation-tab.js.map +1 -1
  315. package/package.json +2 -2
  316. package/radio/lib/_radio.scss +16 -14
  317. package/radio/lib/forced-colors-styles.scss +2 -0
  318. package/radio/lib/radio-styles.css.js +1 -1
  319. package/radio/lib/radio-styles.css.js.map +1 -1
  320. package/radio/lib/radio-styles.scss +2 -0
  321. package/radio/lib/radio.js +21 -21
  322. package/radio/lib/radio.js.map +1 -1
  323. package/radio/radio.js.map +1 -1
  324. package/ripple/directive.d.ts +1 -33
  325. package/ripple/directive.js +7 -194
  326. package/ripple/directive.js.map +1 -1
  327. package/ripple/lib/_md-comp-ripple.scss +20 -19
  328. package/ripple/lib/_ripple.scss +20 -20
  329. package/ripple/lib/ripple-styles.css.js +1 -1
  330. package/ripple/lib/ripple-styles.css.js.map +1 -1
  331. package/ripple/lib/ripple-styles.scss +2 -0
  332. package/ripple/lib/ripple.d.ts +50 -48
  333. package/ripple/lib/ripple.js +214 -76
  334. package/ripple/lib/ripple.js.map +1 -1
  335. package/ripple/ripple.d.ts +9 -1
  336. package/ripple/ripple.js +9 -1
  337. package/ripple/ripple.js.map +1 -1
  338. package/sass/_assert.scss +2 -0
  339. package/sass/_color-scheme.scss +4 -0
  340. package/sass/_color.scss +4 -0
  341. package/sass/_elevation.scss +4 -0
  342. package/sass/_feature-flags.scss +2 -0
  343. package/sass/_map-ext.scss +2 -0
  344. package/sass/_resolvers.scss +4 -4
  345. package/sass/_shape.scss +75 -27
  346. package/sass/_string-ext.scss +44 -0
  347. package/sass/_theme.scss +4 -0
  348. package/sass/_typography.scss +18 -93
  349. package/sass/_var.scss +4 -0
  350. package/segmentedbutton/lib/_outlined-segmented-button.scss +4 -0
  351. package/segmentedbutton/lib/_shared.scss +18 -22
  352. package/segmentedbutton/lib/outlined-styles.css.js +1 -1
  353. package/segmentedbutton/lib/outlined-styles.css.js.map +1 -1
  354. package/segmentedbutton/lib/outlined-styles.scss +2 -0
  355. package/segmentedbutton/lib/segmented-button.js +4 -4
  356. package/segmentedbutton/lib/segmented-button.js.map +1 -1
  357. package/segmentedbutton/lib/shared-styles.css.js +1 -1
  358. package/segmentedbutton/lib/shared-styles.css.js.map +1 -1
  359. package/segmentedbutton/lib/shared-styles.scss +2 -0
  360. package/segmentedbutton/outlined-segmented-button.js.map +1 -1
  361. package/segmentedbuttonset/lib/_outlined-segmented-button-set.scss +9 -5
  362. package/segmentedbuttonset/lib/_shared.scss +0 -13
  363. package/segmentedbuttonset/lib/outlined-styles.css.js +1 -1
  364. package/segmentedbuttonset/lib/outlined-styles.css.js.map +1 -1
  365. package/segmentedbuttonset/lib/outlined-styles.scss +2 -0
  366. package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
  367. package/segmentedbuttonset/lib/shared-styles.scss +2 -0
  368. package/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
  369. package/slider/_slider.scss +6 -0
  370. package/slider/harness.d.ts +20 -0
  371. package/slider/harness.js +63 -0
  372. package/slider/harness.js.map +1 -0
  373. package/slider/lib/_slider.scss +503 -0
  374. package/slider/lib/_tokens.scss +66 -0
  375. package/slider/lib/forced-colors-styles.css.js +9 -0
  376. package/slider/lib/forced-colors-styles.css.js.map +1 -0
  377. package/slider/lib/forced-colors-styles.scss +53 -0
  378. package/slider/lib/slider-styles.css.js +9 -0
  379. package/slider/lib/slider-styles.css.js.map +1 -0
  380. package/slider/lib/slider-styles.scss +8 -0
  381. package/slider/lib/slider.d.ts +158 -0
  382. package/slider/lib/slider.js +575 -0
  383. package/slider/lib/slider.js.map +1 -0
  384. package/slider/slider.d.ts +28 -0
  385. package/slider/slider.js +32 -0
  386. package/slider/slider.js.map +1 -0
  387. package/switch/lib/README.md +55 -0
  388. package/switch/lib/_handle.scss +17 -18
  389. package/switch/lib/_icon.scss +4 -0
  390. package/switch/lib/_switch.scss +11 -18
  391. package/switch/lib/_track.scss +2 -0
  392. package/switch/lib/switch-styles.css.js +1 -1
  393. package/switch/lib/switch-styles.css.js.map +1 -1
  394. package/switch/lib/switch-styles.scss +2 -0
  395. package/switch/lib/switch.js +9 -9
  396. package/switch/lib/switch.js.map +1 -1
  397. package/switch/switch.js.map +1 -1
  398. package/textfield/filled-text-field.d.ts +1 -1
  399. package/textfield/filled-text-field.js +1 -2
  400. package/textfield/filled-text-field.js.map +1 -1
  401. package/textfield/harness.js +1 -1
  402. package/textfield/harness.js.map +1 -1
  403. package/textfield/lib/_filled-text-field.scss +25 -21
  404. package/textfield/lib/_icon.scss +41 -56
  405. package/textfield/lib/_input.scss +17 -36
  406. package/textfield/lib/_outlined-text-field.scss +26 -21
  407. package/textfield/lib/_shared.scss +10 -29
  408. package/textfield/lib/filled-forced-colors-styles.scss +2 -0
  409. package/textfield/lib/filled-styles.css.js +1 -1
  410. package/textfield/lib/filled-styles.css.js.map +1 -1
  411. package/textfield/lib/filled-styles.scss +2 -0
  412. package/textfield/lib/filled-text-field.d.ts +6 -5
  413. package/textfield/lib/filled-text-field.js +8 -7
  414. package/textfield/lib/filled-text-field.js.map +1 -1
  415. package/textfield/lib/outlined-forced-colors-styles.scss +2 -0
  416. package/textfield/lib/outlined-styles.css.js +1 -1
  417. package/textfield/lib/outlined-styles.css.js.map +1 -1
  418. package/textfield/lib/outlined-styles.scss +2 -0
  419. package/textfield/lib/outlined-text-field.d.ts +6 -5
  420. package/textfield/lib/outlined-text-field.js +8 -7
  421. package/textfield/lib/outlined-text-field.js.map +1 -1
  422. package/textfield/lib/shared-styles.css.js +1 -1
  423. package/textfield/lib/shared-styles.css.js.map +1 -1
  424. package/textfield/lib/shared-styles.scss +2 -0
  425. package/textfield/lib/text-field.d.ts +40 -88
  426. package/textfield/lib/text-field.js +194 -270
  427. package/textfield/lib/text-field.js.map +1 -1
  428. package/textfield/outlined-text-field.d.ts +1 -1
  429. package/textfield/outlined-text-field.js +1 -2
  430. package/textfield/outlined-text-field.js.map +1 -1
  431. package/tokens/_index.scss +1 -1
  432. package/tokens/{v0_152 → v0_160}/_md-comp-assist-chip.scss +1 -1
  433. package/tokens/{v0_152 → v0_160}/_md-comp-badge.scss +1 -1
  434. package/tokens/{v0_152 → v0_160}/_md-comp-banner.scss +1 -1
  435. package/tokens/{v0_152 → v0_160}/_md-comp-bottom-app-bar.scss +1 -1
  436. package/tokens/{v0_152 → v0_160}/_md-comp-carousel-item.scss +1 -1
  437. package/tokens/{v0_152 → v0_160}/_md-comp-checkbox.scss +4 -15
  438. package/tokens/{v0_152 → v0_160}/_md-comp-circular-progress-indicator.scss +1 -1
  439. package/tokens/{v0_152 → v0_160}/_md-comp-data-table.scss +1 -3
  440. package/tokens/{v0_152 → v0_160}/_md-comp-date-input-modal.scss +10 -10
  441. package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-docked.scss +23 -23
  442. package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-modal.scss +34 -34
  443. package/tokens/{v0_152 → v0_160}/_md-comp-dialog.scss +1 -1
  444. package/tokens/{v0_152 → v0_160}/_md-comp-divider.scss +1 -1
  445. package/tokens/{v0_152 → v0_160}/_md-comp-elevated-button.scss +1 -1
  446. package/tokens/{v0_152 → v0_160}/_md-comp-elevated-card.scss +1 -1
  447. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-branded.scss +1 -1
  448. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-primary.scss +1 -1
  449. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-secondary.scss +1 -1
  450. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-surface.scss +1 -1
  451. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-tertiary.scss +1 -1
  452. package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded-large.scss +1 -1
  453. package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded.scss +1 -1
  454. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-large.scss +1 -1
  455. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-small.scss +1 -1
  456. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary.scss +1 -1
  457. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-large.scss +1 -1
  458. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-small.scss +1 -1
  459. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary.scss +1 -1
  460. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-large.scss +1 -1
  461. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-small.scss +1 -1
  462. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface.scss +1 -1
  463. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-large.scss +1 -1
  464. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-small.scss +1 -1
  465. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary.scss +1 -1
  466. package/tokens/{v0_152 → v0_160}/_md-comp-filled-autocomplete.scss +1 -1
  467. package/tokens/{v0_152 → v0_160}/_md-comp-filled-button.scss +1 -1
  468. package/tokens/{v0_152 → v0_160}/_md-comp-filled-card.scss +1 -1
  469. package/tokens/{v0_152 → v0_160}/_md-comp-filled-icon-button.scss +1 -1
  470. package/tokens/{v0_152 → v0_160}/_md-comp-filled-menu-button.scss +1 -1
  471. package/tokens/{v0_152 → v0_160}/_md-comp-filled-select.scss +1 -1
  472. package/tokens/{v0_152 → v0_160}/_md-comp-filled-text-field.scss +1 -1
  473. package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-button.scss +1 -1
  474. package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-icon-button.scss +1 -1
  475. package/tokens/{v0_152 → v0_160}/_md-comp-filter-chip.scss +1 -1
  476. package/tokens/{v0_152 → v0_160}/_md-comp-full-screen-dialog.scss +1 -1
  477. package/tokens/{v0_152 → v0_160}/_md-comp-icon-button.scss +1 -1
  478. package/tokens/{v0_152 → v0_160}/_md-comp-input-chip.scss +1 -1
  479. package/tokens/{v0_152 → v0_160}/_md-comp-linear-progress-indicator.scss +1 -1
  480. package/tokens/{v0_152 → v0_160}/_md-comp-list.scss +1 -1
  481. package/tokens/{v0_152 → v0_160}/_md-comp-menu.scss +1 -1
  482. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-bar.scss +1 -1
  483. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-drawer.scss +1 -1
  484. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-rail.scss +1 -1
  485. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-autocomplete.scss +1 -1
  486. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-button.scss +1 -1
  487. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-card.scss +1 -1
  488. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-icon-button.scss +1 -1
  489. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-menu-button.scss +1 -1
  490. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-segmented-button.scss +1 -1
  491. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-select.scss +1 -1
  492. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-text-field.scss +1 -1
  493. package/tokens/{v0_152 → v0_160}/_md-comp-plain-tooltip.scss +1 -1
  494. package/tokens/{v0_152 → v0_160}/_md-comp-primary-navigation-tab.scss +1 -3
  495. package/tokens/{v0_152 → v0_160}/_md-comp-radio-button.scss +1 -1
  496. package/tokens/{v0_152 → v0_160}/_md-comp-rich-tooltip.scss +1 -1
  497. package/tokens/{v0_152 → v0_160}/_md-comp-scrim.scss +1 -1
  498. package/tokens/{v0_152 → v0_160}/_md-comp-search-bar.scss +1 -1
  499. package/tokens/{v0_152 → v0_160}/_md-comp-search-view.scss +1 -1
  500. package/tokens/{v0_152 → v0_160}/_md-comp-secondary-navigation-tab.scss +1 -3
  501. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-bottom.scss +1 -1
  502. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-floating.scss +1 -1
  503. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-side.scss +10 -10
  504. package/tokens/{v0_152 → v0_160}/_md-comp-slider.scss +1 -1
  505. package/tokens/{v0_152 → v0_160}/_md-comp-snackbar.scss +1 -1
  506. package/tokens/{v0_152 → v0_160}/_md-comp-standard-menu-button.scss +1 -1
  507. package/tokens/{v0_152 → v0_160}/_md-comp-suggestion-chip.scss +1 -1
  508. package/tokens/{v0_152 → v0_160}/_md-comp-switch.scss +1 -1
  509. package/tokens/{v0_152 → v0_160}/_md-comp-text-button.scss +1 -1
  510. package/tokens/{v0_152 → v0_160}/_md-comp-time-input.scss +1 -1
  511. package/tokens/{v0_152 → v0_160}/_md-comp-time-picker.scss +1 -1
  512. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-large.scss +1 -1
  513. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-medium.scss +1 -1
  514. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small-centered.scss +1 -1
  515. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small.scss +1 -1
  516. package/tokens/{v0_152 → v0_160}/_md-ref-palette.scss +1 -1
  517. package/tokens/{v0_152 → v0_160}/_md-ref-typeface.scss +1 -1
  518. package/tokens/{v0_152 → v0_160}/_md-sys-color.scss +217 -1
  519. package/tokens/{v0_152 → v0_160}/_md-sys-elevation.scss +1 -1
  520. package/tokens/{v0_152 → v0_160}/_md-sys-motion.scss +1 -1
  521. package/tokens/{v0_152 → v0_160}/_md-sys-shape.scss +1 -1
  522. package/tokens/{v0_152 → v0_160}/_md-sys-state.scss +1 -1
  523. package/tokens/{v0_152 → v0_160}/_md-sys-typescale.scss +1 -1
  524. package/tokens/v0_160/index.test.css.d.ts +1 -0
  525. package/tokens/v0_160/lib.test.css.d.ts +1 -0
  526. /package/{tokens/v0_152/index.test.css.d.ts → slider/lib/forced-colors-styles.css.d.ts} +0 -0
  527. /package/{tokens/v0_152/lib.test.css.d.ts → slider/lib/slider-styles.css.d.ts} +0 -0
  528. /package/tokens/{v0_152 → v0_160}/_index.scss +0 -0
  529. /package/tokens/{v0_152 → v0_160}/index.test.css.js +0 -0
  530. /package/tokens/{v0_152 → v0_160}/index.test.css.js.map +0 -0
  531. /package/tokens/{v0_152 → v0_160}/index.test.scss +0 -0
  532. /package/tokens/{v0_152 → v0_160}/lib.test.css.js +0 -0
  533. /package/tokens/{v0_152 → v0_160}/lib.test.css.js.map +0 -0
  534. /package/tokens/{v0_152 → v0_160}/lib.test.scss +0 -0
@@ -3,81 +3,54 @@
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  //
5
5
 
6
- // stylelint-disable selector-class-pattern --
7
- // Selector '.md3-*' should only be used in this project.
8
-
9
- @use '../../sass/typography';
10
-
11
6
  @mixin styles() {
12
- .md3-field__supporting-text {
7
+ .supporting-text {
13
8
  color: var(--_supporting-text-color);
14
9
  display: flex;
15
10
  justify-content: space-between;
16
11
  padding: 0 var(--_supporting-text-padding);
17
-
18
- @include typography.theme-styles(
19
- (
20
- font: var(--_supporting-text-font),
21
- tracking: var(--_supporting-text-tracking),
22
- weight: var(--_supporting-text-weight),
23
- size: var(--_supporting-text-size),
24
- line-height: var(--_supporting-text-line-height),
25
- )
26
- );
12
+ font: var(--_supporting-text-type);
27
13
  }
28
14
 
29
- .md3-field__supporting-text-start,
30
- .md3-field__supporting-text-end {
15
+ .supporting-text-start,
16
+ .supporting-text-end {
31
17
  // Can't be an inline display element (<span>) for padding-top to work.
32
18
  display: flex;
19
+ }
33
20
 
21
+ .supporting-text-start ::slotted(:not(:empty)),
22
+ .supporting-text-end ::slotted(:not(:empty)) {
34
23
  // Add padding to slotted elements instead of the wrappers so that it does not
35
24
  // show when the supporting text is empty.
36
- ::slotted(:not(:empty)) {
37
- padding-top: var(--_supporting-text-padding-top);
38
- }
25
+ padding-top: var(--_supporting-text-padding-top);
39
26
  }
40
27
 
41
- .md3-field__supporting-text-end {
42
- ::slotted(:not(:empty)) {
43
- padding-inline-start: var(--_supporting-text-padding);
44
- }
28
+ .supporting-text-end ::slotted(:not(:empty)) {
29
+ padding-inline-start: var(--_supporting-text-padding);
45
30
  }
46
31
 
47
- :hover {
48
- .md3-field__supporting-text {
49
- color: var(--_hover-supporting-text-color);
50
- }
32
+ :hover .supporting-text {
33
+ color: var(--_hover-supporting-text-color);
51
34
  }
52
35
 
53
- .md3-field--focus {
54
- .md3-field__supporting-text {
55
- color: var(--_focus-supporting-text-color);
56
- }
36
+ .focus .supporting-text {
37
+ color: var(--_focus-supporting-text-color);
57
38
  }
58
39
 
59
- .md3-field--disabled {
60
- .md3-field__supporting-text {
61
- color: var(--_disabled-supporting-text-color);
62
- opacity: var(--_disabled-supporting-text-opacity);
63
- }
40
+ .disabled .supporting-text {
41
+ color: var(--_disabled-supporting-text-color);
42
+ opacity: var(--_disabled-supporting-text-opacity);
64
43
  }
65
44
 
66
- .md3-field--error:not(.md3-field--disabled) {
67
- .md3-field__supporting-text {
68
- color: var(--_error-supporting-text-color);
69
- }
45
+ .error .supporting-text {
46
+ color: var(--_error-supporting-text-color);
47
+ }
70
48
 
71
- &:hover {
72
- .md3-field__supporting-text {
73
- color: var(--_error-hover-supporting-text-color);
74
- }
75
- }
49
+ .error:hover .supporting-text {
50
+ color: var(--_error-hover-supporting-text-color);
51
+ }
76
52
 
77
- &.md3-field--focus {
78
- .md3-field__supporting-text {
79
- color: var(--_error-focus-supporting-text-color);
80
- }
81
- }
53
+ .error.focus .supporting-text {
54
+ color: var(--_error-focus-supporting-text-color);
82
55
  }
83
56
  }
@@ -4,8 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { LitElement, PropertyValues, TemplateResult } from 'lit';
7
- import { ClassInfo } from 'lit/directives/class-map.js';
8
- /** @soyCompatible */
7
+ /**
8
+ * A field component.
9
+ */
9
10
  export declare class Field extends LitElement {
10
11
  disabled: boolean;
11
12
  error: boolean;
@@ -21,34 +22,16 @@ export declare class Field extends LitElement {
21
22
  * Whether or not the field has trailing content.
22
23
  */
23
24
  hasEnd: boolean;
24
- protected isAnimating: boolean;
25
- protected readonly labelAnimationSignal: import("../../motion/animation.js").AnimationSignal;
26
- protected readonly floatingLabelEl: Promise<HTMLElement>;
27
- protected readonly restingLabelEl: Promise<HTMLElement>;
28
- /** @soyTemplate */
29
- render(): TemplateResult;
30
- /** @soyTemplate */
31
- protected renderContainer(): TemplateResult;
32
- /** @soyTemplate */
33
- protected getRenderClasses(): ClassInfo;
34
- /** @soyTemplate */
35
- protected renderContainerContents(): TemplateResult;
36
- /** @soyTemplate */
37
- protected renderMiddleContents(): TemplateResult;
38
- /** @soyTemplate */
39
- protected renderFloatingLabel(): TemplateResult;
40
- /** @soyTemplate */
41
- protected renderRestingLabel(): TemplateResult;
42
- /** @soyTemplate */
43
- protected renderLabelText(): string;
44
- /** @soyTemplate */
45
- protected renderSupportingText(): TemplateResult;
25
+ private isAnimating;
26
+ private readonly labelAnimationSignal;
27
+ private readonly floatingLabelEl;
28
+ private readonly restingLabelEl;
46
29
  protected update(props: PropertyValues<Field>): void;
47
- protected animateLabelIfNeeded({ wasFocused, wasPopulated }: {
48
- wasFocused?: boolean;
49
- wasPopulated?: boolean;
50
- }): Promise<void>;
51
- protected getLabelKeyframes(): Promise<{
52
- transform: string;
53
- }[]>;
30
+ protected render(): TemplateResult<1>;
31
+ protected renderBackground?(): TemplateResult;
32
+ protected renderIndicator?(): TemplateResult;
33
+ protected renderOutline?(floatingLabel: TemplateResult): TemplateResult;
34
+ private renderLabel;
35
+ private animateLabelIfNeeded;
36
+ private getLabelKeyframes;
54
37
  }
@@ -4,11 +4,13 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { __decorate, __metadata } from "tslib";
7
- import { html, LitElement } from 'lit';
7
+ import { html, LitElement, nothing } from 'lit';
8
8
  import { property, queryAsync, state } from 'lit/decorators.js';
9
9
  import { classMap } from 'lit/directives/class-map.js';
10
10
  import { createAnimationSignal, EASING } from '../../motion/animation.js';
11
- /** @soyCompatible */
11
+ /**
12
+ * A field component.
13
+ */
12
14
  export class Field extends LitElement {
13
15
  constructor() {
14
16
  super(...arguments);
@@ -28,99 +30,6 @@ export class Field extends LitElement {
28
30
  this.isAnimating = false;
29
31
  this.labelAnimationSignal = createAnimationSignal();
30
32
  }
31
- /** @soyTemplate */
32
- render() {
33
- return html `
34
- <span class="md3-field ${classMap(this.getRenderClasses())}">
35
- ${this.renderContainer()}
36
- ${this.renderSupportingText()}
37
- </span>
38
- `;
39
- }
40
- /** @soyTemplate */
41
- renderContainer() {
42
- return html `
43
- <span class="md3-field__container">
44
- ${this.renderContainerContents()}
45
- </span>
46
- `;
47
- }
48
- /** @soyTemplate */
49
- getRenderClasses() {
50
- return {
51
- 'md3-field--disabled': this.disabled,
52
- 'md3-field--error': this.error,
53
- 'md3-field--focused': this.focused,
54
- 'md3-field--with-start': this.hasStart,
55
- 'md3-field--with-end': this.hasEnd,
56
- 'md3-field--populated': this.populated,
57
- 'md3-field--required': this.required,
58
- 'md3-field--no-label': !this.label,
59
- };
60
- }
61
- /** @soyTemplate */
62
- renderContainerContents() {
63
- return html `
64
- <span class="md3-field__start">
65
- <slot name="start"></slot>
66
- </span>
67
- <span class="md3-field__middle">${this.renderMiddleContents()}</span>
68
- <span class="md3-field__end">
69
- <slot name="end"></slot>
70
- </span>
71
- `;
72
- }
73
- /** @soyTemplate */
74
- renderMiddleContents() {
75
- return html `
76
- <span class="md3-field__content"><slot></slot></span>
77
- `;
78
- }
79
- /** @soyTemplate */
80
- renderFloatingLabel() {
81
- const visible = (this.focused || this.populated) && !this.isAnimating;
82
- /** @classMap */
83
- const classes = { 'md3-field__label--hidden': !visible };
84
- return html `
85
- <span class="md3-field__label md3-field__label--floating ${classMap(classes)}"
86
- aria-hidden=${!visible}
87
- >${this.renderLabelText()}</span>
88
- `;
89
- // TODO(b/217441842): Create shared function once argument bug is fixed
90
- // return this.renderLabel(LabelType.FLOATING);
91
- }
92
- /** @soyTemplate */
93
- renderRestingLabel() {
94
- const visible = !(this.focused || this.populated) || this.isAnimating;
95
- /** @classMap */
96
- const classes = { 'md3-field__label--hidden': !visible };
97
- return html `
98
- <span class="md3-field__label md3-field__label--resting ${classMap(classes)}"
99
- aria-hidden=${!visible}
100
- >${this.renderLabelText()}</span>
101
- `;
102
- // TODO(b/217441842): Create shared function once argument bug is fixed
103
- // return this.renderLabel(LabelType.RESTING);
104
- }
105
- /** @soyTemplate */
106
- renderLabelText() {
107
- const labelText = this.label ?? '';
108
- const optionalAsterisk = this.required && labelText ? '*' : '';
109
- return labelText + optionalAsterisk;
110
- }
111
- /** @soyTemplate */
112
- renderSupportingText() {
113
- return html `
114
- <span class="md3-field__supporting-text">
115
- <span class="md3-field__supporting-text-start">
116
- <slot name="supporting-text"></slot>
117
- </span>
118
- <span class="md3-field__supporting-text-end">
119
- <slot name="supporting-text-end"></slot>
120
- </span>
121
- </span>
122
- `;
123
- }
124
33
  update(props) {
125
34
  // Client-side property updates
126
35
  // When disabling, remove focus styles if focused.
@@ -135,6 +44,77 @@ export class Field extends LitElement {
135
44
  });
136
45
  super.update(props);
137
46
  }
47
+ render() {
48
+ const floatingLabel = this.renderLabel(/*isFloating*/ true);
49
+ const restingLabel = this.renderLabel(/*isFloating*/ false);
50
+ const outline = this.renderOutline?.(floatingLabel);
51
+ const classes = {
52
+ 'disabled': this.disabled,
53
+ 'error': this.error && !this.disabled,
54
+ 'focused': this.focused,
55
+ 'with-start': this.hasStart,
56
+ 'with-end': this.hasEnd,
57
+ 'populated': this.populated,
58
+ 'required': this.required,
59
+ 'no-label': !this.label,
60
+ };
61
+ return html `
62
+ <div class="field ${classMap(classes)}">
63
+ <div class="container">
64
+ ${this.renderBackground?.()}
65
+ ${this.renderIndicator?.()}
66
+ ${outline}
67
+ <div class="start">
68
+ <slot name="start"></slot>
69
+ </div>
70
+ <div class="middle">
71
+ ${restingLabel}
72
+ ${outline ? nothing : floatingLabel}
73
+ <div class="content">
74
+ <slot></slot>
75
+ </div>
76
+ </div>
77
+ <div class="end">
78
+ <slot name="end"></slot>
79
+ </div>
80
+ </div>
81
+
82
+ <div class="supporting-text">
83
+ <div class="supporting-text-start">
84
+ <slot name="supporting-text"></slot>
85
+ </div>
86
+ <div class="supporting-text-end">
87
+ <slot name="supporting-text-end"></slot>
88
+ </div>
89
+ </div>
90
+ </div>
91
+ `;
92
+ }
93
+ renderLabel(isFloating) {
94
+ let visible;
95
+ if (isFloating) {
96
+ // Floating label is visible when focused/populated. It is never visible
97
+ // while animating.
98
+ visible = (this.focused || this.populated) && !this.isAnimating;
99
+ }
100
+ else {
101
+ // Resting label is visible when unfocused or while animating.
102
+ visible = !(this.focused || this.populated) || this.isAnimating;
103
+ }
104
+ const classes = {
105
+ 'hidden': !visible,
106
+ 'floating': isFloating,
107
+ 'resting': !isFloating,
108
+ };
109
+ let labelText = this.label ?? '';
110
+ // Add '*' if a label is present and the field is required
111
+ labelText += this.required && labelText ? '*' : '';
112
+ return html `
113
+ <span class="label ${classMap(classes)}"
114
+ aria-hidden=${!visible}
115
+ >${labelText}</span>
116
+ `;
117
+ }
138
118
  async animateLabelIfNeeded({ wasFocused, wasPopulated }) {
139
119
  if (!this.label) {
140
120
  return;
@@ -241,11 +221,11 @@ __decorate([
241
221
  __metadata("design:type", Object)
242
222
  ], Field.prototype, "isAnimating", void 0);
243
223
  __decorate([
244
- queryAsync('.md3-field__label--floating'),
224
+ queryAsync('.label.floating'),
245
225
  __metadata("design:type", Promise)
246
226
  ], Field.prototype, "floatingLabelEl", void 0);
247
227
  __decorate([
248
- queryAsync('.md3-field__label--resting'),
228
+ queryAsync('.label.resting'),
249
229
  __metadata("design:type", Promise)
250
230
  ], Field.prototype, "restingLabelEl", void 0);
251
231
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["field.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, LitElement, PropertyValues, TemplateResult} from 'lit';\nimport {property, queryAsync, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\n\nimport {createAnimationSignal, EASING} from '../../motion/animation.js';\n\n/** @soyCompatible */\nexport class Field extends LitElement {\n @property({type: Boolean}) disabled = false;\n @property({type: Boolean}) error = false;\n @property({type: Boolean}) focused = false;\n @property({type: String}) label?: string;\n @property({type: Boolean}) populated = false;\n @property({type: Boolean}) required = false;\n\n /**\n * Whether or not the field has leading content.\n */\n @property({type: Boolean}) hasStart = false;\n /**\n * Whether or not the field has trailing content.\n */\n @property({type: Boolean}) hasEnd = false;\n\n @state() protected isAnimating = false;\n\n protected readonly labelAnimationSignal = createAnimationSignal();\n\n @queryAsync('.md3-field__label--floating')\n protected readonly floatingLabelEl!: Promise<HTMLElement>;\n @queryAsync('.md3-field__label--resting')\n protected readonly restingLabelEl!: Promise<HTMLElement>;\n\n /** @soyTemplate */\n override render(): TemplateResult {\n return html`\n <span class=\"md3-field ${classMap(this.getRenderClasses())}\">\n ${this.renderContainer()}\n ${this.renderSupportingText()}\n </span>\n `;\n }\n\n /** @soyTemplate */\n protected renderContainer(): TemplateResult {\n return html`\n <span class=\"md3-field__container\">\n ${this.renderContainerContents()}\n </span>\n `;\n }\n\n /** @soyTemplate */\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-field--disabled': this.disabled,\n 'md3-field--error': this.error,\n 'md3-field--focused': this.focused,\n 'md3-field--with-start': this.hasStart,\n 'md3-field--with-end': this.hasEnd,\n 'md3-field--populated': this.populated,\n 'md3-field--required': this.required,\n 'md3-field--no-label': !this.label,\n };\n }\n\n /** @soyTemplate */\n protected renderContainerContents(): TemplateResult {\n return html`\n <span class=\"md3-field__start\">\n <slot name=\"start\"></slot>\n </span>\n <span class=\"md3-field__middle\">${this.renderMiddleContents()}</span>\n <span class=\"md3-field__end\">\n <slot name=\"end\"></slot>\n </span>\n `;\n }\n\n /** @soyTemplate */\n protected renderMiddleContents(): TemplateResult {\n return html`\n <span class=\"md3-field__content\"><slot></slot></span>\n `;\n }\n\n /** @soyTemplate */\n protected renderFloatingLabel(): TemplateResult {\n const visible = (this.focused || this.populated) && !this.isAnimating;\n /** @classMap */\n const classes = {'md3-field__label--hidden': !visible};\n return html`\n <span class=\"md3-field__label md3-field__label--floating ${\n classMap(classes)}\"\n aria-hidden=${!visible}\n >${this.renderLabelText()}</span>\n `;\n\n // TODO(b/217441842): Create shared function once argument bug is fixed\n // return this.renderLabel(LabelType.FLOATING);\n }\n\n /** @soyTemplate */\n protected renderRestingLabel(): TemplateResult {\n const visible = !(this.focused || this.populated) || this.isAnimating;\n /** @classMap */\n const classes = {'md3-field__label--hidden': !visible};\n return html`\n <span class=\"md3-field__label md3-field__label--resting ${\n classMap(classes)}\"\n aria-hidden=${!visible}\n >${this.renderLabelText()}</span>\n `;\n\n // TODO(b/217441842): Create shared function once argument bug is fixed\n // return this.renderLabel(LabelType.RESTING);\n }\n\n /** @soyTemplate */\n protected renderLabelText(): string {\n const labelText = this.label ?? '';\n const optionalAsterisk = this.required && labelText ? '*' : '';\n return labelText + optionalAsterisk;\n }\n\n /** @soyTemplate */\n protected renderSupportingText(): TemplateResult {\n return html`\n <span class=\"md3-field__supporting-text\">\n <span class=\"md3-field__supporting-text-start\">\n <slot name=\"supporting-text\"></slot>\n </span>\n <span class=\"md3-field__supporting-text-end\">\n <slot name=\"supporting-text-end\"></slot>\n </span>\n </span>\n `;\n }\n\n protected override update(props: PropertyValues<Field>) {\n // Client-side property updates\n\n // When disabling, remove focus styles if focused.\n if (this.disabled && this.focused) {\n props.set('focused', true);\n this.focused = false;\n }\n\n // Animate if focused or populated change.\n this.animateLabelIfNeeded({\n wasFocused: props.get('focused'),\n wasPopulated: props.get('populated')\n });\n\n super.update(props);\n }\n\n protected async animateLabelIfNeeded({wasFocused, wasPopulated}: {\n wasFocused?: boolean,\n wasPopulated?: boolean\n }) {\n if (!this.label) {\n return;\n }\n\n wasFocused ??= this.focused;\n wasPopulated ??= this.populated;\n const wasFloating = wasFocused || wasPopulated;\n const shouldBeFloating = this.focused || this.populated;\n if (wasFloating === shouldBeFloating) {\n return;\n }\n\n this.isAnimating = true;\n const signal = this.labelAnimationSignal.start();\n\n // Only one label is visible at a time for clearer text rendering.\n // The resting label is visible and used during animation. At the end of the\n // animation, it will either remain visible (if resting) or hide and the\n // floating label will be shown.\n const labelEl = await this.restingLabelEl;\n const keyframes = await this.getLabelKeyframes();\n if (signal.aborted) {\n // Don't animate if this animation was requested to stop while getting\n // the label element or calculating keyframes\n return;\n }\n\n // We don't use forward filling because if the dimensions of the text field\n // change (leading icon removed, density changes, etc), then the animation\n // will be inaccurate.\n //\n // Re-calculating the animation each time will prevent any visual glitches\n // from appearing.\n // TODO(b/241113345): use animation tokens\n const animation =\n labelEl.animate(keyframes, {duration: 150, easing: EASING.STANDARD});\n\n signal.addEventListener('abort', () => {\n // Cancel if requested (another animation starts playing).\n animation.cancel();\n });\n\n animation.addEventListener('finish', () => {\n // At the end of the animation, update the visible label.\n this.isAnimating = false;\n this.labelAnimationSignal.finish();\n });\n }\n\n protected async getLabelKeyframes() {\n const floatingLabelEl = await this.floatingLabelEl;\n const restingLabelEl = await this.restingLabelEl;\n const {\n x: floatingX,\n y: floatingY,\n width: floatingWidth,\n height: floatingHeight\n } = floatingLabelEl.getBoundingClientRect();\n const {\n x: restingX,\n y: restingY,\n width: restingWidth,\n height: restingHeight\n } = restingLabelEl.getBoundingClientRect();\n // Scale by width ratio instead of font size since letter-spacing will scale\n // incorrectly. Using the width we can better approximate the adjusted\n // scale and compensate for tracking.\n const scale = floatingWidth / restingWidth;\n const xDelta = floatingX - restingX;\n // The line-height of the resting and floating label are different. When\n // we move the resting label up to the floating label's position, it won't\n // exactly match because of this. We need to adjust by half of what the\n // final scaled resting label's height will be.\n const yDelta = floatingY - restingY +\n Math.round((floatingHeight - restingHeight * scale) / 2);\n\n // Create the two transforms: resting to floating (using the calculations\n // above), and floating to resting (re-setting the transform to initial\n // values).\n const floatTransform = `translateX(${xDelta}px) translateY(calc(-50% + ${\n yDelta}px)) scale(${scale})`;\n const restTransform = `translateX(0) translateY(-50%) scale(1)`;\n\n if (this.focused || this.populated) {\n return [{transform: restTransform}, {transform: floatTransform}];\n }\n\n return [{transform: floatTransform}, {transform: restTransform}];\n }\n}\n"]}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["field.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, LitElement, nothing, PropertyValues, TemplateResult} from 'lit';\nimport {property, queryAsync, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\nimport {createAnimationSignal, EASING} from '../../motion/animation.js';\n\n/**\n * A field component.\n */\nexport class Field extends LitElement {\n @property({type: Boolean}) disabled = false;\n @property({type: Boolean}) error = false;\n @property({type: Boolean}) focused = false;\n @property({type: String}) label?: string;\n @property({type: Boolean}) populated = false;\n @property({type: Boolean}) required = false;\n\n /**\n * Whether or not the field has leading content.\n */\n @property({type: Boolean}) hasStart = false;\n\n /**\n * Whether or not the field has trailing content.\n */\n @property({type: Boolean}) hasEnd = false;\n\n @state() private isAnimating = false;\n private readonly labelAnimationSignal = createAnimationSignal();\n @queryAsync('.label.floating')\n private readonly floatingLabelEl!: Promise<HTMLElement>;\n @queryAsync('.label.resting')\n private readonly restingLabelEl!: Promise<HTMLElement>;\n\n protected override update(props: PropertyValues<Field>) {\n // Client-side property updates\n\n // When disabling, remove focus styles if focused.\n if (this.disabled && this.focused) {\n props.set('focused', true);\n this.focused = false;\n }\n\n // Animate if focused or populated change.\n this.animateLabelIfNeeded({\n wasFocused: props.get('focused'),\n wasPopulated: props.get('populated')\n });\n\n super.update(props);\n }\n\n protected override render() {\n const floatingLabel = this.renderLabel(/*isFloating*/ true);\n const restingLabel = this.renderLabel(/*isFloating*/ false);\n const outline = this.renderOutline?.(floatingLabel);\n const classes = {\n 'disabled': this.disabled,\n 'error': this.error && !this.disabled,\n 'focused': this.focused,\n 'with-start': this.hasStart,\n 'with-end': this.hasEnd,\n 'populated': this.populated,\n 'required': this.required,\n 'no-label': !this.label,\n };\n\n return html`\n <div class=\"field ${classMap(classes)}\">\n <div class=\"container\">\n ${this.renderBackground?.()}\n ${this.renderIndicator?.()}\n ${outline}\n <div class=\"start\">\n <slot name=\"start\"></slot>\n </div>\n <div class=\"middle\">\n ${restingLabel}\n ${outline ? nothing : floatingLabel}\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n <div class=\"end\">\n <slot name=\"end\"></slot>\n </div>\n </div>\n\n <div class=\"supporting-text\">\n <div class=\"supporting-text-start\">\n <slot name=\"supporting-text\"></slot>\n </div>\n <div class=\"supporting-text-end\">\n <slot name=\"supporting-text-end\"></slot>\n </div>\n </div>\n </div>\n `;\n }\n\n protected renderBackground?(): TemplateResult;\n protected renderIndicator?(): TemplateResult;\n protected renderOutline?(floatingLabel: TemplateResult): TemplateResult;\n\n private renderLabel(isFloating: boolean) {\n let visible: boolean;\n if (isFloating) {\n // Floating label is visible when focused/populated. It is never visible\n // while animating.\n visible = (this.focused || this.populated) && !this.isAnimating;\n } else {\n // Resting label is visible when unfocused or while animating.\n visible = !(this.focused || this.populated) || this.isAnimating;\n }\n\n const classes = {\n 'hidden': !visible,\n 'floating': isFloating,\n 'resting': !isFloating,\n };\n\n let labelText = this.label ?? '';\n // Add '*' if a label is present and the field is required\n labelText += this.required && labelText ? '*' : '';\n\n return html`\n <span class=\"label ${classMap(classes)}\"\n aria-hidden=${!visible}\n >${labelText}</span>\n `;\n }\n\n private async animateLabelIfNeeded({wasFocused, wasPopulated}: {\n wasFocused?: boolean,\n wasPopulated?: boolean\n }) {\n if (!this.label) {\n return;\n }\n\n wasFocused ??= this.focused;\n wasPopulated ??= this.populated;\n const wasFloating = wasFocused || wasPopulated;\n const shouldBeFloating = this.focused || this.populated;\n if (wasFloating === shouldBeFloating) {\n return;\n }\n\n this.isAnimating = true;\n const signal = this.labelAnimationSignal.start();\n\n // Only one label is visible at a time for clearer text rendering.\n // The resting label is visible and used during animation. At the end of the\n // animation, it will either remain visible (if resting) or hide and the\n // floating label will be shown.\n const labelEl = await this.restingLabelEl;\n const keyframes = await this.getLabelKeyframes();\n if (signal.aborted) {\n // Don't animate if this animation was requested to stop while getting\n // the label element or calculating keyframes\n return;\n }\n\n // We don't use forward filling because if the dimensions of the text field\n // change (leading icon removed, density changes, etc), then the animation\n // will be inaccurate.\n //\n // Re-calculating the animation each time will prevent any visual glitches\n // from appearing.\n // TODO(b/241113345): use animation tokens\n const animation =\n labelEl.animate(keyframes, {duration: 150, easing: EASING.STANDARD});\n\n signal.addEventListener('abort', () => {\n // Cancel if requested (another animation starts playing).\n animation.cancel();\n });\n\n animation.addEventListener('finish', () => {\n // At the end of the animation, update the visible label.\n this.isAnimating = false;\n this.labelAnimationSignal.finish();\n });\n }\n\n private async getLabelKeyframes() {\n const floatingLabelEl = await this.floatingLabelEl;\n const restingLabelEl = await this.restingLabelEl;\n const {\n x: floatingX,\n y: floatingY,\n width: floatingWidth,\n height: floatingHeight\n } = floatingLabelEl.getBoundingClientRect();\n const {\n x: restingX,\n y: restingY,\n width: restingWidth,\n height: restingHeight\n } = restingLabelEl.getBoundingClientRect();\n // Scale by width ratio instead of font size since letter-spacing will scale\n // incorrectly. Using the width we can better approximate the adjusted\n // scale and compensate for tracking.\n const scale = floatingWidth / restingWidth;\n const xDelta = floatingX - restingX;\n // The line-height of the resting and floating label are different. When\n // we move the resting label up to the floating label's position, it won't\n // exactly match because of this. We need to adjust by half of what the\n // final scaled resting label's height will be.\n const yDelta = floatingY - restingY +\n Math.round((floatingHeight - restingHeight * scale) / 2);\n\n // Create the two transforms: resting to floating (using the calculations\n // above), and floating to resting (re-setting the transform to initial\n // values).\n const floatTransform = `translateX(${xDelta}px) translateY(calc(-50% + ${\n yDelta}px)) scale(${scale})`;\n const restTransform = `translateX(0) translateY(-50%) scale(1)`;\n\n if (this.focused || this.populated) {\n return [{transform: restTransform}, {transform: floatTransform}];\n }\n\n return [{transform: floatTransform}, {transform: restTransform}];\n }\n}\n"]}
@@ -3,22 +3,16 @@
3
3
  * Copyright 2021 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { PropertyValues, TemplateResult } from 'lit';
7
- import { ClassInfo } from 'lit/directives/class-map.js';
6
+ import { PropertyValues } from 'lit';
8
7
  import { Field } from './field.js';
9
- /** @soyCompatible */
8
+ /**
9
+ * A filled field component.
10
+ */
10
11
  export declare class FilledField extends Field {
11
- protected strokeTransformOrigin: string;
12
- /** @soyTemplate */
13
- protected getRenderClasses(): ClassInfo;
14
- /** @soyTemplate */
15
- protected renderContainer(): TemplateResult;
16
- /** @soyTemplate */
17
- protected renderContainerContents(): TemplateResult;
18
- /** @soyTemplate */
19
- protected renderMiddleContents(): TemplateResult;
20
- /** @bubbleWizEvent */
21
- protected handleClick(event: MouseEvent | TouchEvent): void;
22
- protected update(props: PropertyValues<this>): void;
23
- protected updateStrokeTransformOrigin(event?: MouseEvent | TouchEvent): Promise<void>;
12
+ private strokeTransformOrigin;
13
+ constructor();
14
+ protected renderBackground(): import("lit-html").TemplateResult<1>;
15
+ protected renderIndicator(): import("lit-html").TemplateResult<1>;
16
+ protected update(props: PropertyValues<FilledField>): void;
17
+ private updateStrokeTransformOrigin;
24
18
  }
@@ -8,53 +8,30 @@ import { html } from 'lit';
8
8
  import { state } from 'lit/decorators.js';
9
9
  import { styleMap } from 'lit/directives/style-map.js';
10
10
  import { Field } from './field.js';
11
- /** @soyCompatible */
11
+ /**
12
+ * A filled field component.
13
+ */
12
14
  export class FilledField extends Field {
13
15
  constructor() {
14
- super(...arguments);
16
+ super();
15
17
  this.strokeTransformOrigin = '';
18
+ this.addEventListener('click', event => {
19
+ if (!this.disabled) {
20
+ this.updateStrokeTransformOrigin(event);
21
+ }
22
+ });
16
23
  }
17
- /** @soyTemplate */
18
- getRenderClasses() {
19
- return {
20
- ...super.getRenderClasses(),
21
- 'md3-field--filled': true,
22
- };
23
- }
24
- /** @soyTemplate */
25
- renderContainer() {
24
+ renderBackground() {
26
25
  return html `
27
- <span class="md3-field__container" @click=${this.handleClick}>
28
- ${this.renderContainerContents()}
29
- </span>
26
+ <div class="state-layer"></div>
30
27
  `;
31
28
  }
32
- /** @soyTemplate */
33
- renderContainerContents() {
34
- /** @styleMap */
29
+ renderIndicator() {
35
30
  const strokeStyle = { transformOrigin: this.strokeTransformOrigin };
36
31
  return html `
37
- <span class="md3-field__state-layer"></span>
38
- ${super.renderContainerContents()}
39
- <span class="md3-field__active-indicator"
40
- style="${styleMap(strokeStyle)}"></span>
41
- `;
42
- }
43
- /** @soyTemplate */
44
- renderMiddleContents() {
45
- return html `
46
- ${this.renderFloatingLabel()}
47
- ${this.renderRestingLabel()}
48
- ${super.renderMiddleContents()}
32
+ <div class="active-indicator" style="${styleMap(strokeStyle)}"></div>
49
33
  `;
50
34
  }
51
- /** @bubbleWizEvent */
52
- handleClick(event) {
53
- if (this.disabled) {
54
- return;
55
- }
56
- this.updateStrokeTransformOrigin(event);
57
- }
58
35
  update(props) {
59
36
  // Upon losing focus, the stroke resets to expanding from the center, such
60
37
  // as when re-focusing with a keyboard.
@@ -64,7 +41,7 @@ export class FilledField extends Field {
64
41
  }
65
42
  super.update(props);
66
43
  }
67
- async updateStrokeTransformOrigin(event) {
44
+ updateStrokeTransformOrigin(event) {
68
45
  let transformOrigin = '';
69
46
  if (event) {
70
47
  // Can't use instanceof TouchEvent since Firefox does not provide the
@@ -1 +1 @@
1
- {"version":3,"file":"filled-field.js","sourceRoot":"","sources":["filled-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,IAAI,EAAiC,MAAM,KAAK,CAAC;AACzD,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjC,qBAAqB;AACrB,MAAM,OAAO,WAAY,SAAQ,KAAK;IAAtC;;QACqB,0BAAqB,GAAG,EAAE,CAAC;IAyEhD,CAAC;IAvEC,mBAAmB;IACA,gBAAgB;QACjC,OAAO;YACL,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAC3B,mBAAmB,EAAE,IAAI;SAC1B,CAAC;IACJ,CAAC;IAED,mBAAmB;IACA,eAAe;QAChC,OAAO,IAAI,CAAA;kDACmC,IAAI,CAAC,WAAW;UACxD,IAAI,CAAC,uBAAuB,EAAE;;KAEnC,CAAC;IACJ,CAAC;IAED,mBAAmB;IACA,uBAAuB;QACxC,gBAAgB;QAChB,MAAM,WAAW,GAAG,EAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAC,CAAC;QAClE,OAAO,IAAI,CAAA;;QAEP,KAAK,CAAC,uBAAuB,EAAE;;iBAEtB,QAAQ,CAAC,WAAW,CAAC;KACjC,CAAC;IACJ,CAAC;IAED,mBAAmB;IACA,oBAAoB;QACrC,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,kBAAkB,EAAE;QACzB,KAAK,CAAC,oBAAoB,EAAE;KAC/B,CAAC;IACJ,CAAC;IAED,sBAAsB;IACZ,WAAW,CAAC,KAA4B;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;SACR;QAED,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEkB,MAAM,CAAC,KAA2B;QACnD,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACzD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAES,KAAK,CAAC,2BAA2B,CAAC,KAA6B;QACvE,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,EAAE;YACT,qEAAqE;YACrE,wBAAwB;YACxB,MAAM,YAAY,GAAG,SAAS,IAAI,KAAK,CAAC;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC9C,eAAe,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;SAC9C;QAED,IAAI,CAAC,qBAAqB,GAAG,eAAe,CAAC;IAC/C,CAAC;CACF;AAzEU;IAAR,KAAK,EAAE;;0DAAsC","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, PropertyValues, TemplateResult} from 'lit';\nimport {state} from 'lit/decorators.js';\nimport {ClassInfo} from 'lit/directives/class-map.js';\nimport {styleMap} from 'lit/directives/style-map.js';\n\nimport {Field} from './field.js';\n\n/** @soyCompatible */\nexport class FilledField extends Field {\n @state() protected strokeTransformOrigin = '';\n\n /** @soyTemplate */\n protected override getRenderClasses(): ClassInfo {\n return {\n ...super.getRenderClasses(),\n 'md3-field--filled': true,\n };\n }\n\n /** @soyTemplate */\n protected override renderContainer(): TemplateResult {\n return html`\n <span class=\"md3-field__container\" @click=${this.handleClick}>\n ${this.renderContainerContents()}\n </span>\n `;\n }\n\n /** @soyTemplate */\n protected override renderContainerContents(): TemplateResult {\n /** @styleMap */\n const strokeStyle = {transformOrigin: this.strokeTransformOrigin};\n return html`\n <span class=\"md3-field__state-layer\"></span>\n ${super.renderContainerContents()}\n <span class=\"md3-field__active-indicator\"\n style=\"${styleMap(strokeStyle)}\"></span>\n `;\n }\n\n /** @soyTemplate */\n protected override renderMiddleContents(): TemplateResult {\n return html`\n ${this.renderFloatingLabel()}\n ${this.renderRestingLabel()}\n ${super.renderMiddleContents()}\n `;\n }\n\n /** @bubbleWizEvent */\n protected handleClick(event: MouseEvent|TouchEvent) {\n if (this.disabled) {\n return;\n }\n\n this.updateStrokeTransformOrigin(event);\n }\n\n protected override update(props: PropertyValues<this>) {\n // Upon losing focus, the stroke resets to expanding from the center, such\n // as when re-focusing with a keyboard.\n const unfocusing = props.has('focused') && !this.focused;\n if (unfocusing) {\n this.updateStrokeTransformOrigin();\n }\n\n super.update(props);\n }\n\n protected async updateStrokeTransformOrigin(event?: MouseEvent|TouchEvent) {\n let transformOrigin = '';\n if (event) {\n // Can't use instanceof TouchEvent since Firefox does not provide the\n // constructor globally.\n const isTouchEvent = 'touches' in event;\n const eventX = isTouchEvent ? event.touches[0].clientX : event.clientX;\n const rootRect = this.getBoundingClientRect();\n transformOrigin = `${eventX - rootRect.x}px`;\n }\n\n this.strokeTransformOrigin = transformOrigin;\n }\n}\n"]}
1
+ {"version":3,"file":"filled-field.js","sourceRoot":"","sources":["filled-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAErD,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGpC;QACE,KAAK,EAAE,CAAC;QAHO,0BAAqB,GAAG,EAAE,CAAC;QAI1C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEkB,gBAAgB;QACjC,OAAO,IAAI,CAAA;;KAEV,CAAC;IACJ,CAAC;IAEkB,eAAe;QAChC,MAAM,WAAW,GAAG,EAAC,eAAe,EAAE,IAAI,CAAC,qBAAqB,EAAC,CAAC;QAClE,OAAO,IAAI,CAAA;6CAC8B,QAAQ,CAAC,WAAW,CAAC;KAC7D,CAAC;IACJ,CAAC;IAEkB,MAAM,CAAC,KAAkC;QAC1D,0EAA0E;QAC1E,uCAAuC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACzD,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAEO,2BAA2B,CAAC,KAA6B;QAC/D,IAAI,eAAe,GAAG,EAAE,CAAC;QACzB,IAAI,KAAK,EAAE;YACT,qEAAqE;YACrE,wBAAwB;YACxB,MAAM,YAAY,GAAG,SAAS,IAAI,KAAK,CAAC;YACxC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC9C,eAAe,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC;SAC9C;QAED,IAAI,CAAC,qBAAqB,GAAG,eAAe,CAAC;IAC/C,CAAC;CACF;AAhDC;IAAC,KAAK,EAAE;;0DAAoC","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, PropertyValues} from 'lit';\nimport {state} from 'lit/decorators.js';\nimport {styleMap} from 'lit/directives/style-map.js';\n\nimport {Field} from './field.js';\n\n/**\n * A filled field component.\n */\nexport class FilledField extends Field {\n @state() private strokeTransformOrigin = '';\n\n constructor() {\n super();\n this.addEventListener('click', event => {\n if (!this.disabled) {\n this.updateStrokeTransformOrigin(event);\n }\n });\n }\n\n protected override renderBackground() {\n return html`\n <div class=\"state-layer\"></div>\n `;\n }\n\n protected override renderIndicator() {\n const strokeStyle = {transformOrigin: this.strokeTransformOrigin};\n return html`\n <div class=\"active-indicator\" style=\"${styleMap(strokeStyle)}\"></div>\n `;\n }\n\n protected override update(props: PropertyValues<FilledField>) {\n // Upon losing focus, the stroke resets to expanding from the center, such\n // as when re-focusing with a keyboard.\n const unfocusing = props.has('focused') && !this.focused;\n if (unfocusing) {\n this.updateStrokeTransformOrigin();\n }\n\n super.update(props);\n }\n\n private updateStrokeTransformOrigin(event?: MouseEvent|TouchEvent) {\n let transformOrigin = '';\n if (event) {\n // Can't use instanceof TouchEvent since Firefox does not provide the\n // constructor globally.\n const isTouchEvent = 'touches' in event;\n const eventX = isTouchEvent ? event.touches[0].clientX : event.clientX;\n const rootRect = this.getBoundingClientRect();\n transformOrigin = `${eventX - rootRect.x}px`;\n }\n\n this.strokeTransformOrigin = transformOrigin;\n }\n}\n"]}
@@ -4,6 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { css } from 'lit';
7
- export const styles = css `:host{--_container-shape-start-start: var(--md-filled-field-container-shape-start-start, 4px);--_container-shape-start-end: var(--md-filled-field-container-shape-start-end, 4px);--_container-shape-end-end: var(--md-filled-field-container-shape-end-end, 0px);--_container-shape-end-start: var(--md-filled-field-container-shape-end-start, 0px);--_active-indicator-color: var(--md-filled-field-active-indicator-color, var(--md-sys-color-on-surface-variant, #49454f));--_active-indicator-height: var(--md-filled-field-active-indicator-height, 1px);--_container-color: var(--md-filled-field-container-color, var(--md-sys-color-surface-variant, #e7e0ec));--_disabled-active-indicator-color: var(--md-filled-field-disabled-active-indicator-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-active-indicator-height: var(--md-filled-field-disabled-active-indicator-height, 1px);--_disabled-active-indicator-opacity: var(--md-filled-field-disabled-active-indicator-opacity, 0.38);--_disabled-container-color: var(--md-filled-field-disabled-container-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-container-opacity: var(--md-filled-field-disabled-container-opacity, 0.04);--_disabled-label-text-color: var(--md-filled-field-disabled-label-text-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-label-text-opacity: var(--md-filled-field-disabled-label-text-opacity, 0.38);--_disabled-leading-icon-color: var(--md-filled-field-disabled-leading-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-leading-icon-opacity: var(--md-filled-field-disabled-leading-icon-opacity, 0.38);--_disabled-supporting-text-color: var(--md-filled-field-disabled-supporting-text-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-supporting-text-opacity: var(--md-filled-field-disabled-supporting-text-opacity, 0.38);--_disabled-trailing-icon-color: var(--md-filled-field-disabled-trailing-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-trailing-icon-opacity: var(--md-filled-field-disabled-trailing-icon-opacity, 0.38);--_error-active-indicator-color: var(--md-filled-field-error-active-indicator-color, var(--md-sys-color-error, #b3261e));--_error-focus-active-indicator-color: var(--md-filled-field-error-focus-active-indicator-color, var(--md-sys-color-error, #b3261e));--_error-focus-label-text-color: var(--md-filled-field-error-focus-label-text-color, var(--md-sys-color-error, #b3261e));--_error-focus-leading-icon-color: var(--md-filled-field-error-focus-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-focus-supporting-text-color: var(--md-filled-field-error-focus-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-focus-trailing-icon-color: var(--md-filled-field-error-focus-trailing-icon-color, var(--md-sys-color-error, #b3261e));--_error-hover-active-indicator-color: var(--md-filled-field-error-hover-active-indicator-color, var(--md-sys-color-on-error-container, #410e0b));--_error-hover-label-text-color: var(--md-filled-field-error-hover-label-text-color, var(--md-sys-color-on-error-container, #410e0b));--_error-hover-leading-icon-color: var(--md-filled-field-error-hover-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-hover-state-layer-color: var(--md-filled-field-error-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-hover-state-layer-opacity: var(--md-filled-field-error-hover-state-layer-opacity, 0.08);--_error-hover-supporting-text-color: var(--md-filled-field-error-hover-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-hover-trailing-icon-color: var(--md-filled-field-error-hover-trailing-icon-color, var(--md-sys-color-on-error-container, #410e0b));--_error-label-text-color: var(--md-filled-field-error-label-text-color, var(--md-sys-color-error, #b3261e));--_error-leading-icon-color: var(--md-filled-field-error-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-supporting-text-color: var(--md-filled-field-error-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-trailing-icon-color: var(--md-filled-field-error-trailing-icon-color, var(--md-sys-color-error, #b3261e));--_focus-active-indicator-color: var(--md-filled-field-focus-active-indicator-color, var(--md-sys-color-primary, #6750a4));--_focus-active-indicator-height: var(--md-filled-field-focus-active-indicator-height, 2px);--_focus-label-text-color: var(--md-filled-field-focus-label-text-color, var(--md-sys-color-primary, #6750a4));--_focus-leading-icon-color: var(--md-filled-field-focus-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_focus-supporting-text-color: var(--md-filled-field-focus-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_focus-trailing-icon-color: var(--md-filled-field-focus-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-active-indicator-color: var(--md-filled-field-hover-active-indicator-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-active-indicator-height: var(--md-filled-field-hover-active-indicator-height, 1px);--_hover-label-text-color: var(--md-filled-field-hover-label-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-leading-icon-color: var(--md-filled-field-hover-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-state-layer-color: var(--md-filled-field-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-state-layer-opacity: var(--md-filled-field-hover-state-layer-opacity, 0.08);--_hover-supporting-text-color: var(--md-filled-field-hover-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-trailing-icon-color: var(--md-filled-field-hover-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_label-text-color: var(--md-filled-field-label-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_label-text-font: var(--md-filled-field-label-text-font, Roboto);--_label-text-line-height: var(--md-filled-field-label-text-line-height, 1.5rem);--_label-text-populated-line-height: var(--md-filled-field-label-text-populated-line-height, 1rem);--_label-text-populated-size: var(--md-filled-field-label-text-populated-size, 0.75rem);--_label-text-size: var(--md-filled-field-label-text-size, 1rem);--_label-text-tracking: var(--md-filled-field-label-text-tracking, 0.031rem);--_label-text-weight: var(--md-filled-field-label-text-weight, 400);--_leading-icon-color: var(--md-filled-field-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_leading-icon-size: var(--md-filled-field-leading-icon-size, 24px);--_supporting-text-color: var(--md-filled-field-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_supporting-text-font: var(--md-filled-field-supporting-text-font, Roboto);--_supporting-text-line-height: var(--md-filled-field-supporting-text-line-height, 1rem);--_supporting-text-size: var(--md-filled-field-supporting-text-size, 0.75rem);--_supporting-text-tracking: var(--md-filled-field-supporting-text-tracking, 0.025rem);--_supporting-text-weight: var(--md-filled-field-supporting-text-weight, 400);--_trailing-icon-color: var(--md-filled-field-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_trailing-icon-size: var(--md-filled-field-trailing-icon-size, 24px);--_container-padding-horizontal: var(--md-filled-field-container-padding-horizontal, 16px);--_container-padding-vertical: var(--md-filled-field-container-padding-vertical, 16px);--_content-color: var(--md-filled-field-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-content-color: var(--md-filled-field-disabled-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-content-opacity: var(--md-filled-field-disabled-content-opacity, 0.38);--_error-content-color: var(--md-filled-field-error-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-focus-content-color: var(--md-filled-field-error-focus-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-hover-content-color: var(--md-filled-field-error-hover-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_focus-content-color: var(--md-filled-field-focus-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-content-color: var(--md-filled-field-hover-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_supporting-text-padding: var(--md-filled-field-supporting-text-padding, 16px);--_supporting-text-padding-top: var(--md-filled-field-supporting-text-padding-top, 4px);--_with-label-container-padding-vertical: var(--md-filled-field-with-label-container-padding-vertical, 8px);--_label-text-populated-font: ;--_label-text-populated-tracking: ;--_label-text-populated-weight: }.md3-field__container{border-start-start-radius:var(--_container-shape-start-start);border-start-end-radius:var(--_container-shape-start-end);border-end-end-radius:var(--_container-shape-end-end);border-end-start-radius:var(--_container-shape-end-start);overflow:hidden;z-index:0}.md3-field__container::before{background:var(--_container-color)}.md3-field__container::after{visibility:hidden}.md3-field__container::before,.md3-field__container::after{border-radius:inherit;content:"";display:flex;height:100%;position:absolute;width:100%;z-index:-1}.md3-field__label--floating{position:absolute;top:0}.md3-field__state-layer{border-radius:inherit;height:100%;position:absolute;width:100%;visibility:hidden;z-index:-1}.md3-field:not(.md3-field--disabled):hover .md3-field__state-layer{visibility:visible}.md3-field__active-indicator{inset:auto 0 0 0;pointer-events:none;position:absolute;width:100%}.md3-field__active-indicator::before,.md3-field__active-indicator::after{border-bottom:var(--_active-indicator-height) solid var(--_active-indicator-color);inset:auto 0 0 0;content:"";position:absolute;width:100%}.md3-field__active-indicator::after{opacity:0;transform:scaleX(0);transform-origin:inherit;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),transform 0s ease 150ms}.md3-field--focused .md3-field__active-indicator::after{opacity:1;transform:scaleX(1);transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1)}.md3-field:not(.md3-field--with-start) .md3-field__start{padding-inline-start:var(--_container-padding-horizontal)}.md3-field:not(.md3-field--with-end) .md3-field__end{padding-inline-end:var(--_container-padding-horizontal)}.md3-field:not(.md3-field--no-label) .md3-field__container{padding-bottom:var(--_with-label-container-padding-vertical);padding-top:var(--_with-label-container-padding-vertical)}.md3-field:not(.md3-field--no-label) .md3-field__middle{padding-top:var(--_label-text-populated-line-height)}:hover .md3-field__active-indicator::before{border-bottom-color:var(--_hover-active-indicator-color);border-bottom-width:var(--_hover-active-indicator-height)}:hover .md3-field__state-layer{background:var(--_hover-state-layer-color);opacity:var(--_hover-state-layer-opacity)}.md3-field__active-indicator::after{border-bottom-color:var(--_focus-active-indicator-color);border-bottom-width:var(--_focus-active-indicator-height)}.md3-field--disabled .md3-field__active-indicator::before{border-bottom-color:var(--_disabled-active-indicator-color);border-bottom-width:var(--_disabled-active-indicator-height);opacity:var(--_disabled-active-indicator-opacity)}.md3-field--disabled .md3-field__container::before{background:var(--_disabled-container-color);opacity:var(--_disabled-container-opacity)}.md3-field--error:not(.md3-field--disabled) .md3-field__active-indicator::before{border-bottom-color:var(--_error-active-indicator-color)}.md3-field--error:not(.md3-field--disabled):hover .md3-field__active-indicator::before{border-bottom-color:var(--_error-hover-active-indicator-color)}.md3-field--error:not(.md3-field--disabled):hover .md3-field__state-layer{background:var(--_error-hover-state-layer-color);opacity:var(--_error-hover-state-layer-opacity)}.md3-field--error:not(.md3-field--disabled) .md3-field__active-indicator::after{border-bottom-color:var(--_error-focus-active-indicator-color)}/*# sourceMappingURL=filled-styles.css.map */
7
+ export const styles = css `:host{--_container-shape-start-start: var(--md-filled-field-container-shape-start-start, var(--md-filled-field-container-shape, 4px));--_container-shape-start-end: var(--md-filled-field-container-shape-start-end, var(--md-filled-field-container-shape, 4px));--_container-shape-end-end: var(--md-filled-field-container-shape-end-end, var(--md-filled-field-container-shape, 0px));--_container-shape-end-start: var(--md-filled-field-container-shape-end-start, var(--md-filled-field-container-shape, 0px));--_active-indicator-color: var(--md-filled-field-active-indicator-color, var(--md-sys-color-on-surface-variant, #49454f));--_active-indicator-height: var(--md-filled-field-active-indicator-height, 1px);--_container-color: var(--md-filled-field-container-color, var(--md-sys-color-surface-variant, #e7e0ec));--_disabled-active-indicator-color: var(--md-filled-field-disabled-active-indicator-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-active-indicator-height: var(--md-filled-field-disabled-active-indicator-height, 1px);--_disabled-active-indicator-opacity: var(--md-filled-field-disabled-active-indicator-opacity, 0.38);--_disabled-container-color: var(--md-filled-field-disabled-container-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-container-opacity: var(--md-filled-field-disabled-container-opacity, 0.04);--_disabled-label-text-color: var(--md-filled-field-disabled-label-text-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-label-text-opacity: var(--md-filled-field-disabled-label-text-opacity, 0.38);--_disabled-leading-icon-color: var(--md-filled-field-disabled-leading-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-leading-icon-opacity: var(--md-filled-field-disabled-leading-icon-opacity, 0.38);--_disabled-supporting-text-color: var(--md-filled-field-disabled-supporting-text-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-supporting-text-opacity: var(--md-filled-field-disabled-supporting-text-opacity, 0.38);--_disabled-trailing-icon-color: var(--md-filled-field-disabled-trailing-icon-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-trailing-icon-opacity: var(--md-filled-field-disabled-trailing-icon-opacity, 0.38);--_error-active-indicator-color: var(--md-filled-field-error-active-indicator-color, var(--md-sys-color-error, #b3261e));--_error-focus-active-indicator-color: var(--md-filled-field-error-focus-active-indicator-color, var(--md-sys-color-error, #b3261e));--_error-focus-label-text-color: var(--md-filled-field-error-focus-label-text-color, var(--md-sys-color-error, #b3261e));--_error-focus-leading-icon-color: var(--md-filled-field-error-focus-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-focus-supporting-text-color: var(--md-filled-field-error-focus-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-focus-trailing-icon-color: var(--md-filled-field-error-focus-trailing-icon-color, var(--md-sys-color-error, #b3261e));--_error-hover-active-indicator-color: var(--md-filled-field-error-hover-active-indicator-color, var(--md-sys-color-on-error-container, #410e0b));--_error-hover-label-text-color: var(--md-filled-field-error-hover-label-text-color, var(--md-sys-color-on-error-container, #410e0b));--_error-hover-leading-icon-color: var(--md-filled-field-error-hover-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-hover-state-layer-color: var(--md-filled-field-error-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-hover-state-layer-opacity: var(--md-filled-field-error-hover-state-layer-opacity, 0.08);--_error-hover-supporting-text-color: var(--md-filled-field-error-hover-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-hover-trailing-icon-color: var(--md-filled-field-error-hover-trailing-icon-color, var(--md-sys-color-on-error-container, #410e0b));--_error-label-text-color: var(--md-filled-field-error-label-text-color, var(--md-sys-color-error, #b3261e));--_error-leading-icon-color: var(--md-filled-field-error-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_error-supporting-text-color: var(--md-filled-field-error-supporting-text-color, var(--md-sys-color-error, #b3261e));--_error-trailing-icon-color: var(--md-filled-field-error-trailing-icon-color, var(--md-sys-color-error, #b3261e));--_focus-active-indicator-color: var(--md-filled-field-focus-active-indicator-color, var(--md-sys-color-primary, #6750a4));--_focus-active-indicator-height: var(--md-filled-field-focus-active-indicator-height, 2px);--_focus-label-text-color: var(--md-filled-field-focus-label-text-color, var(--md-sys-color-primary, #6750a4));--_focus-leading-icon-color: var(--md-filled-field-focus-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_focus-supporting-text-color: var(--md-filled-field-focus-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_focus-trailing-icon-color: var(--md-filled-field-focus-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-active-indicator-color: var(--md-filled-field-hover-active-indicator-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-active-indicator-height: var(--md-filled-field-hover-active-indicator-height, 1px);--_hover-label-text-color: var(--md-filled-field-hover-label-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-leading-icon-color: var(--md-filled-field-hover-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-state-layer-color: var(--md-filled-field-hover-state-layer-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-state-layer-opacity: var(--md-filled-field-hover-state-layer-opacity, 0.08);--_hover-supporting-text-color: var(--md-filled-field-hover-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_hover-trailing-icon-color: var(--md-filled-field-hover-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_label-text-color: var(--md-filled-field-label-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_label-text-populated-line-height: var(--md-filled-field-label-text-populated-line-height, 1rem);--_label-text-populated-size: var(--md-filled-field-label-text-populated-size, 0.75rem);--_label-text-type: var(--md-filled-field-label-text-type, 400 1rem / 1.5rem Roboto);--_leading-icon-color: var(--md-filled-field-leading-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_leading-icon-size: var(--md-filled-field-leading-icon-size, 24px);--_supporting-text-color: var(--md-filled-field-supporting-text-color, var(--md-sys-color-on-surface-variant, #49454f));--_supporting-text-type: var(--md-filled-field-supporting-text-type, 400 0.75rem / 1rem Roboto);--_trailing-icon-color: var(--md-filled-field-trailing-icon-color, var(--md-sys-color-on-surface-variant, #49454f));--_trailing-icon-size: var(--md-filled-field-trailing-icon-size, 24px);--_container-padding-horizontal: var(--md-filled-field-container-padding-horizontal, 16px);--_container-padding-vertical: var(--md-filled-field-container-padding-vertical, 16px);--_content-color: var(--md-filled-field-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-content-color: var(--md-filled-field-disabled-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_disabled-content-opacity: var(--md-filled-field-disabled-content-opacity, 0.38);--_error-content-color: var(--md-filled-field-error-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-focus-content-color: var(--md-filled-field-error-focus-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_error-hover-content-color: var(--md-filled-field-error-hover-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_focus-content-color: var(--md-filled-field-focus-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_hover-content-color: var(--md-filled-field-hover-content-color, var(--md-sys-color-on-surface, #1c1b1f));--_supporting-text-padding: var(--md-filled-field-supporting-text-padding, 16px);--_supporting-text-padding-top: var(--md-filled-field-supporting-text-padding-top, 4px);--_with-label-container-padding-vertical: var(--md-filled-field-with-label-container-padding-vertical, 8px)}.container{border-start-start-radius:var(--_container-shape-start-start);border-start-end-radius:var(--_container-shape-start-end);border-end-end-radius:var(--_container-shape-end-end);border-end-start-radius:var(--_container-shape-end-start);overflow:hidden;z-index:0}.container::before{background:var(--_container-color)}.container::after{visibility:hidden}.container::before,.container::after{border-radius:inherit;content:"";display:flex;height:100%;position:absolute;width:100%;z-index:-1}.label.floating{position:absolute;top:0}.state-layer{border-radius:inherit;height:100%;position:absolute;width:100%;visibility:hidden;z-index:-1}.field:not(.disabled):hover .state-layer{visibility:visible}.active-indicator{inset:auto 0 0 0;pointer-events:none;position:absolute;width:100%}.active-indicator::before,.active-indicator::after{border-bottom:var(--_active-indicator-height) solid var(--_active-indicator-color);inset:auto 0 0 0;content:"";position:absolute;width:100%}.active-indicator::after{opacity:0;transform:scaleX(0);transform-origin:inherit;transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1),transform 0s ease 150ms}.focused .active-indicator::after{opacity:1;transform:scaleX(1);transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1)}.field:not(.with-start) .start{padding-inline-start:var(--_container-padding-horizontal)}.field:not(.with-end) .end{padding-inline-end:var(--_container-padding-horizontal)}.field:not(.no-label) .container{padding-bottom:var(--_with-label-container-padding-vertical);padding-top:var(--_with-label-container-padding-vertical)}.field:not(.no-label) .middle{padding-top:var(--_label-text-populated-line-height)}:hover .active-indicator::before{border-bottom-color:var(--_hover-active-indicator-color);border-bottom-width:var(--_hover-active-indicator-height)}.active-indicator::after{border-bottom-color:var(--_focus-active-indicator-color);border-bottom-width:var(--_focus-active-indicator-height)}:hover .state-layer{background:var(--_hover-state-layer-color);opacity:var(--_hover-state-layer-opacity)}.disabled .active-indicator::before{border-bottom-color:var(--_disabled-active-indicator-color);border-bottom-width:var(--_disabled-active-indicator-height);opacity:var(--_disabled-active-indicator-opacity)}.disabled .container::before{background:var(--_disabled-container-color);opacity:var(--_disabled-container-opacity)}.error .active-indicator::before{border-bottom-color:var(--_error-active-indicator-color)}.error:hover .active-indicator::before{border-bottom-color:var(--_error-hover-active-indicator-color)}.error:hover .state-layer{background:var(--_error-hover-state-layer-color);opacity:var(--_error-hover-state-layer-opacity)}.error .active-indicator::after{border-bottom-color:var(--_error-focus-active-indicator-color)}/*# sourceMappingURL=filled-styles.css.map */
8
8
  `;
9
9
  //# sourceMappingURL=filled-styles.css.js.map