@material/web 1.0.0-pre.1 → 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 (683) hide show
  1. package/README.md +66 -19
  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 +23 -62
  9. package/autocomplete/lib/_outlined-autocomplete.scss +24 -63
  10. package/autocomplete/lib/_shared.scss +6 -10
  11. package/autocomplete/lib/autocomplete.d.ts +2 -6
  12. package/autocomplete/lib/autocomplete.js +9 -17
  13. package/autocomplete/lib/autocomplete.js.map +1 -1
  14. package/autocomplete/lib/autocompleteitem/autocomplete-item.d.ts +2 -2
  15. package/autocomplete/lib/autocompleteitem/autocomplete-item.js +2 -2
  16. package/autocomplete/lib/autocompleteitem/autocomplete-item.js.map +1 -1
  17. package/autocomplete/lib/autocompletelist/autocomplete-list-styles.scss +2 -0
  18. package/autocomplete/lib/autocompletelist/autocomplete-list.d.ts +1 -1
  19. package/autocomplete/lib/autocompletelist/autocomplete-list.js +2 -2
  20. package/autocomplete/lib/autocompletelist/autocomplete-list.js.map +1 -1
  21. package/autocomplete/lib/autocompletesurface/autocomplete-surface-styles.scss +2 -0
  22. package/autocomplete/lib/filled-styles.css.js +1 -1
  23. package/autocomplete/lib/filled-styles.css.js.map +1 -1
  24. package/autocomplete/lib/filled-styles.scss +2 -0
  25. package/autocomplete/lib/outlined-styles.css.js +1 -1
  26. package/autocomplete/lib/outlined-styles.css.js.map +1 -1
  27. package/autocomplete/lib/outlined-styles.scss +2 -0
  28. package/autocomplete/lib/shared-styles.scss +2 -0
  29. package/autocomplete/outlined-autocomplete.d.ts +0 -2
  30. package/autocomplete/outlined-autocomplete.js +0 -7
  31. package/autocomplete/outlined-autocomplete.js.map +1 -1
  32. package/badge/badge.js.map +1 -1
  33. package/badge/lib/_badge.scss +10 -13
  34. package/badge/lib/badge-styles.css.js +1 -1
  35. package/badge/lib/badge-styles.css.js.map +1 -1
  36. package/badge/lib/badge-styles.scss +2 -0
  37. package/badge/lib/badge.js.map +1 -1
  38. package/button/elevated-button.js.map +1 -1
  39. package/button/elevated-link-button.js.map +1 -1
  40. package/button/filled-button.js.map +1 -1
  41. package/button/filled-link-button.js.map +1 -1
  42. package/button/lib/_elevated-button.scss +10 -15
  43. package/button/lib/_elevation.scss +5 -2
  44. package/button/lib/_filled-button.scss +12 -14
  45. package/button/lib/_icon.scss +15 -24
  46. package/button/lib/_outlined-button.scss +10 -15
  47. package/button/lib/_shared.scss +15 -19
  48. package/button/lib/_text-button.scss +12 -14
  49. package/button/lib/_tonal-button.scss +10 -15
  50. package/button/lib/button.d.ts +0 -3
  51. package/button/lib/button.js +1 -12
  52. package/button/lib/button.js.map +1 -1
  53. package/button/lib/elevated-styles.css.js +1 -1
  54. package/button/lib/elevated-styles.css.js.map +1 -1
  55. package/button/lib/elevated-styles.scss +2 -0
  56. package/button/lib/filled-styles.css.js +1 -1
  57. package/button/lib/filled-styles.css.js.map +1 -1
  58. package/button/lib/filled-styles.scss +2 -0
  59. package/button/lib/link-button.d.ts +0 -1
  60. package/button/lib/link-button.js +0 -5
  61. package/button/lib/link-button.js.map +1 -1
  62. package/button/lib/outlined-styles.css.js +1 -1
  63. package/button/lib/outlined-styles.css.js.map +1 -1
  64. package/button/lib/outlined-styles.scss +2 -0
  65. package/button/lib/shared-elevation-styles.css.js +1 -1
  66. package/button/lib/shared-elevation-styles.css.js.map +1 -1
  67. package/button/lib/shared-elevation-styles.scss +2 -0
  68. package/button/lib/shared-styles.css.js +1 -1
  69. package/button/lib/shared-styles.css.js.map +1 -1
  70. package/button/lib/shared-styles.scss +2 -0
  71. package/button/lib/text-styles.css.js +1 -1
  72. package/button/lib/text-styles.css.js.map +1 -1
  73. package/button/lib/text-styles.scss +2 -0
  74. package/button/lib/tonal-styles.css.js +1 -1
  75. package/button/lib/tonal-styles.css.js.map +1 -1
  76. package/button/lib/tonal-styles.scss +2 -0
  77. package/button/outlined-button.js.map +1 -1
  78. package/button/outlined-link-button.js.map +1 -1
  79. package/button/text-button.js.map +1 -1
  80. package/button/text-link-button.js.map +1 -1
  81. package/button/tonal-button.js.map +1 -1
  82. package/button/tonal-link-button.js.map +1 -1
  83. package/checkbox/checkbox.d.ts +11 -2
  84. package/checkbox/checkbox.js +11 -2
  85. package/checkbox/checkbox.js.map +1 -1
  86. package/checkbox/lib/_checkbox.scss +26 -31
  87. package/checkbox/lib/checkbox-styles.css.js +1 -1
  88. package/checkbox/lib/checkbox-styles.css.js.map +1 -1
  89. package/checkbox/lib/checkbox-styles.scss +2 -0
  90. package/checkbox/lib/checkbox.d.ts +28 -0
  91. package/checkbox/lib/checkbox.js +33 -4
  92. package/checkbox/lib/checkbox.js.map +1 -1
  93. package/checkbox/lib/forced-colors-styles.scss +2 -0
  94. package/chips/action/delete-action.js.map +1 -1
  95. package/chips/action/lib/action.js +4 -4
  96. package/chips/action/lib/action.js.map +1 -1
  97. package/chips/action/lib/link-action.js +1 -1
  98. package/chips/action/lib/link-action.js.map +1 -1
  99. package/chips/action/lib/primary-action.js.map +1 -1
  100. package/chips/action/lib/selectable-action.js.map +1 -1
  101. package/chips/action/link-action.js.map +1 -1
  102. package/chips/action/presentational-action.js.map +1 -1
  103. package/chips/action/primary-action.js.map +1 -1
  104. package/chips/action/selectable-action.js.map +1 -1
  105. package/chips/chip/lib/_assist-chip-theme.scss +4 -0
  106. package/chips/chip/lib/_chip-theme.scss +30 -41
  107. package/chips/chip/lib/_chip.scss +2 -0
  108. package/chips/chip/lib/_filter-chip-theme.scss +4 -0
  109. package/chips/chip/lib/_input-chip-theme.scss +4 -0
  110. package/chips/chip/lib/_suggestion-chip-theme.scss +4 -0
  111. package/chips/chip/lib/chip.js.map +1 -1
  112. package/chips/chip/lib/foundation.js +4 -4
  113. package/chips/chip/lib/foundation.js.map +1 -1
  114. package/chips/chip/lib/link-chip.js.map +1 -1
  115. package/chips/chip/lib/selectable-chip.js.map +1 -1
  116. package/chips/chip/lib/types.d.ts +2 -2
  117. package/chips/chipset/lib/_chip-set-theme.scss +2 -0
  118. package/chips/chipset/lib/_chip-set.scss +2 -0
  119. package/chips/chipset/lib/foundation.js +3 -3
  120. package/chips/chipset/lib/foundation.js.map +1 -1
  121. package/chips/chipset/lib/types.d.ts +3 -3
  122. package/controller/events.js +4 -0
  123. package/controller/events.js.map +1 -1
  124. package/controller/form-controller.js.map +1 -1
  125. package/controller/foundation.d.ts +1 -1
  126. package/controller/observer.d.ts +2 -2
  127. package/dialog/_dialog.scss +6 -0
  128. package/dialog/dialog.d.ts +38 -0
  129. package/dialog/dialog.js +41 -0
  130. package/dialog/dialog.js.map +1 -0
  131. package/dialog/harness.d.ts +18 -0
  132. package/dialog/harness.js +58 -0
  133. package/dialog/harness.js.map +1 -0
  134. package/dialog/lib/_dialog.scss +382 -0
  135. package/dialog/lib/_tokens.scss +89 -0
  136. package/dialog/lib/dialog-styles.css.js +9 -0
  137. package/dialog/lib/dialog-styles.css.js.map +1 -0
  138. package/dialog/lib/dialog-styles.scss +10 -0
  139. package/dialog/lib/dialog.d.ts +190 -0
  140. package/dialog/lib/dialog.js +568 -0
  141. package/dialog/lib/dialog.js.map +1 -0
  142. package/divider/_divider.scss +6 -0
  143. package/divider/divider.d.ts +24 -0
  144. package/divider/divider.js +27 -0
  145. package/divider/divider.js.map +1 -0
  146. package/divider/lib/_divider.scss +56 -0
  147. package/divider/lib/divider-styles.css.js +9 -0
  148. package/divider/lib/divider-styles.css.js.map +1 -0
  149. package/divider/lib/divider-styles.scss +10 -0
  150. package/divider/lib/divider.d.ts +23 -0
  151. package/divider/lib/divider.js +41 -0
  152. package/divider/lib/divider.js.map +1 -0
  153. package/elevation/elevation.js.map +1 -1
  154. package/elevation/lib/_elevation.scss +5 -1
  155. package/elevation/lib/_md-comp-elevation.scss +5 -1
  156. package/elevation/lib/elevation-styles.css.js +1 -1
  157. package/elevation/lib/elevation-styles.css.js.map +1 -1
  158. package/elevation/lib/elevation-styles.scss +2 -0
  159. package/elevation/lib/elevation.js.map +1 -1
  160. package/fab/fab-extended.js.map +1 -1
  161. package/fab/fab.js.map +1 -1
  162. package/fab/lib/_fab-extended.scss +18 -11
  163. package/fab/lib/_fab.scss +7 -2
  164. package/fab/lib/_shared.scss +17 -9
  165. package/fab/lib/fab-extended-styles.css.js +1 -1
  166. package/fab/lib/fab-extended-styles.css.js.map +1 -1
  167. package/fab/lib/fab-extended-styles.scss +2 -0
  168. package/fab/lib/fab-shared-styles.css.js +1 -1
  169. package/fab/lib/fab-shared-styles.css.js.map +1 -1
  170. package/fab/lib/fab-shared-styles.scss +2 -0
  171. package/fab/lib/fab-shared.d.ts +9 -15
  172. package/fab/lib/fab-shared.js +21 -33
  173. package/fab/lib/fab-shared.js.map +1 -1
  174. package/fab/lib/fab-styles.css.js +1 -1
  175. package/fab/lib/fab-styles.css.js.map +1 -1
  176. package/fab/lib/fab-styles.scss +2 -0
  177. package/field/filled-field.d.ts +1 -1
  178. package/field/filled-field.js +1 -1
  179. package/field/filled-field.js.map +1 -1
  180. package/field/harness.js +1 -1
  181. package/field/harness.js.map +1 -1
  182. package/field/lib/_content.scss +35 -50
  183. package/field/lib/_filled-field.scss +60 -76
  184. package/field/lib/_label.scss +26 -63
  185. package/field/lib/_md-comp-filled-field.scss +17 -3
  186. package/field/lib/_md-comp-outlined-field.scss +16 -5
  187. package/field/lib/_outlined-field.scss +96 -110
  188. package/field/lib/_shared.scss +15 -35
  189. package/field/lib/_supporting-text.scss +25 -52
  190. package/field/lib/field.d.ts +14 -33
  191. package/field/lib/field.js +79 -101
  192. package/field/lib/field.js.map +1 -1
  193. package/field/lib/filled-field.d.ts +10 -16
  194. package/field/lib/filled-field.js +14 -37
  195. package/field/lib/filled-field.js.map +1 -1
  196. package/field/lib/filled-styles.css.js +1 -1
  197. package/field/lib/filled-styles.css.js.map +1 -1
  198. package/field/lib/outlined-field.d.ts +4 -10
  199. package/field/lib/outlined-field.js +13 -33
  200. package/field/lib/outlined-field.js.map +1 -1
  201. package/field/lib/outlined-styles.css.js +1 -1
  202. package/field/lib/outlined-styles.css.js.map +1 -1
  203. package/field/lib/shared-styles.css.js +1 -1
  204. package/field/lib/shared-styles.css.js.map +1 -1
  205. package/field/outlined-field.d.ts +1 -1
  206. package/field/outlined-field.js +1 -1
  207. package/field/outlined-field.js.map +1 -1
  208. package/focus/focus-ring.js.map +1 -1
  209. package/focus/lib/_focus-ring.scss +10 -23
  210. package/focus/lib/_md-comp-focus-ring.scss +4 -0
  211. package/focus/lib/focus-ring-styles.css.js +1 -1
  212. package/focus/lib/focus-ring-styles.css.js.map +1 -1
  213. package/focus/lib/focus-ring-styles.scss +2 -0
  214. package/focus/lib/focus-ring.d.ts +1 -4
  215. package/focus/lib/focus-ring.js +2 -11
  216. package/focus/lib/focus-ring.js.map +1 -1
  217. package/icon/icon.js.map +1 -1
  218. package/icon/lib/_icon.scss +2 -0
  219. package/icon/lib/icon-styles.scss +2 -0
  220. package/iconbutton/filled-icon-button-toggle.js.map +1 -1
  221. package/iconbutton/filled-icon-button.js.map +1 -1
  222. package/iconbutton/filled-link-icon-button.js.map +1 -1
  223. package/iconbutton/filled-tonal-icon-button-toggle.js.map +1 -1
  224. package/iconbutton/filled-tonal-icon-button.js.map +1 -1
  225. package/iconbutton/filled-tonal-link-icon-button.js.map +1 -1
  226. package/iconbutton/lib/_filled-icon-button.scss +20 -20
  227. package/iconbutton/lib/_filled-tonal-icon-button.scss +20 -20
  228. package/iconbutton/lib/_outlined-icon-button.scss +27 -21
  229. package/iconbutton/lib/_shared.scss +13 -33
  230. package/iconbutton/lib/_standard-icon-button.scss +25 -24
  231. package/iconbutton/lib/filled-styles.css.js +1 -1
  232. package/iconbutton/lib/filled-styles.css.js.map +1 -1
  233. package/iconbutton/lib/filled-styles.scss +2 -0
  234. package/iconbutton/lib/filled-tonal-styles.css.js +1 -1
  235. package/iconbutton/lib/filled-tonal-styles.css.js.map +1 -1
  236. package/iconbutton/lib/filled-tonal-styles.scss +2 -0
  237. package/iconbutton/lib/icon-button-toggle.d.ts +13 -42
  238. package/iconbutton/lib/icon-button-toggle.js +33 -103
  239. package/iconbutton/lib/icon-button-toggle.js.map +1 -1
  240. package/iconbutton/lib/icon-button.d.ts +2 -4
  241. package/iconbutton/lib/icon-button.js +3 -9
  242. package/iconbutton/lib/icon-button.js.map +1 -1
  243. package/iconbutton/lib/link-icon-button.js.map +1 -1
  244. package/iconbutton/lib/outlined-styles.css.js +1 -1
  245. package/iconbutton/lib/outlined-styles.css.js.map +1 -1
  246. package/iconbutton/lib/outlined-styles.scss +2 -0
  247. package/iconbutton/lib/shared-styles.css.js +1 -1
  248. package/iconbutton/lib/shared-styles.css.js.map +1 -1
  249. package/iconbutton/lib/shared-styles.scss +2 -0
  250. package/iconbutton/lib/standard-styles.css.js +1 -1
  251. package/iconbutton/lib/standard-styles.css.js.map +1 -1
  252. package/iconbutton/lib/standard-styles.scss +2 -0
  253. package/iconbutton/outlined-icon-button-toggle.js.map +1 -1
  254. package/iconbutton/outlined-icon-button.js.map +1 -1
  255. package/iconbutton/outlined-link-icon-button.js.map +1 -1
  256. package/iconbutton/standard-icon-button-toggle.js.map +1 -1
  257. package/iconbutton/standard-icon-button.js.map +1 -1
  258. package/iconbutton/standard-link-icon-button.js.map +1 -1
  259. package/list/lib/_list.scss +35 -39
  260. package/list/lib/avatar/_list-item-avatar.scss +3 -1
  261. package/list/lib/avatar/list-item-avatar-styles.css.js +1 -1
  262. package/list/lib/avatar/list-item-avatar-styles.css.js.map +1 -1
  263. package/list/lib/avatar/list-item-avatar-styles.scss +2 -0
  264. package/list/lib/avatar/list-item-avatar.d.ts +9 -4
  265. package/list/lib/avatar/list-item-avatar.js +24 -11
  266. package/list/lib/avatar/list-item-avatar.js.map +1 -1
  267. package/list/lib/icon/_list-item-icon.scss +7 -1
  268. package/list/lib/icon/list-item-icon-styles.css.js +1 -1
  269. package/list/lib/icon/list-item-icon-styles.css.js.map +1 -1
  270. package/list/lib/icon/list-item-icon-styles.scss +2 -0
  271. package/list/lib/icon/list-item-icon.d.ts +0 -3
  272. package/list/lib/icon/list-item-icon.js +1 -12
  273. package/list/lib/icon/list-item-icon.js.map +1 -1
  274. package/list/lib/image/_list-item-image.scss +6 -2
  275. package/list/lib/image/list-item-image-styles.css.js +1 -1
  276. package/list/lib/image/list-item-image-styles.css.js.map +1 -1
  277. package/list/lib/image/list-item-image-styles.scss +2 -0
  278. package/list/lib/image/list-item-image.d.ts +11 -4
  279. package/list/lib/image/list-item-image.js +24 -13
  280. package/list/lib/image/list-item-image.js.map +1 -1
  281. package/list/lib/list-styles.css.js +1 -1
  282. package/list/lib/list-styles.css.js.map +1 -1
  283. package/list/lib/list-styles.scss +2 -0
  284. package/list/lib/list.d.ts +99 -28
  285. package/list/lib/list.js +213 -112
  286. package/list/lib/list.js.map +1 -1
  287. package/list/lib/listitem/_list-item.scss +122 -56
  288. package/list/lib/listitem/harness.js +2 -1
  289. package/list/lib/listitem/harness.js.map +1 -1
  290. package/list/lib/listitem/list-item-private-styles.css.js +9 -0
  291. package/list/lib/listitem/list-item-private-styles.css.js.map +1 -0
  292. package/list/lib/listitem/list-item-private-styles.scss +10 -0
  293. package/list/lib/listitem/list-item-styles.css.js +1 -1
  294. package/list/lib/listitem/list-item-styles.css.js.map +1 -1
  295. package/list/lib/listitem/list-item-styles.scss +2 -0
  296. package/list/lib/listitem/list-item.d.ts +99 -43
  297. package/list/lib/listitem/list-item.js +204 -173
  298. package/list/lib/listitem/list-item.js.map +1 -1
  299. package/list/lib/listitemlink/list-item-link.d.ts +17 -0
  300. package/list/lib/listitemlink/list-item-link.js +42 -0
  301. package/list/lib/listitemlink/list-item-link.js.map +1 -0
  302. package/list/lib/video/_list-item-video.scss +15 -5
  303. package/list/lib/video/list-item-video-styles.css.js +1 -1
  304. package/list/lib/video/list-item-video-styles.css.js.map +1 -1
  305. package/list/lib/video/list-item-video-styles.scss +2 -0
  306. package/list/lib/video/list-item-video.d.ts +43 -4
  307. package/list/lib/video/list-item-video.js +90 -12
  308. package/list/lib/video/list-item-video.js.map +1 -1
  309. package/list/list-item-avatar.d.ts +2 -1
  310. package/list/list-item-avatar.js +2 -1
  311. package/list/list-item-avatar.js.map +1 -1
  312. package/list/list-item-icon.d.ts +2 -1
  313. package/list/list-item-icon.js +2 -1
  314. package/list/list-item-icon.js.map +1 -1
  315. package/list/list-item-image.d.ts +2 -1
  316. package/list/list-item-image.js +2 -1
  317. package/list/list-item-image.js.map +1 -1
  318. package/list/list-item-link.d.ts +35 -0
  319. package/list/list-item-link.js +39 -0
  320. package/list/list-item-link.js.map +1 -0
  321. package/list/list-item-video.d.ts +2 -1
  322. package/list/list-item-video.js +2 -1
  323. package/list/list-item-video.js.map +1 -1
  324. package/list/list-item.d.ts +18 -2
  325. package/list/list-item.js +20 -3
  326. package/list/list-item.js.map +1 -1
  327. package/list/list.d.ts +15 -1
  328. package/list/list.js +15 -1
  329. package/list/list.js.map +1 -1
  330. package/menu/_menu-item.scss +6 -0
  331. package/menu/_menu.scss +6 -0
  332. package/menu/harness.d.ts +5 -0
  333. package/menu/harness.js +22 -0
  334. package/menu/harness.js.map +1 -1
  335. package/menu/lib/_menu.scss +64 -62
  336. package/menu/lib/menu-styles.css.js +1 -1
  337. package/menu/lib/menu-styles.css.js.map +1 -1
  338. package/menu/lib/menu-styles.scss +2 -0
  339. package/menu/lib/menu.d.ts +177 -43
  340. package/menu/lib/menu.js +506 -246
  341. package/menu/lib/menu.js.map +1 -1
  342. package/menu/lib/menuitem/_menu-item.scss +123 -0
  343. package/menu/lib/menuitem/menu-item-private-styles.css.js +9 -0
  344. package/menu/lib/menuitem/menu-item-private-styles.css.js.map +1 -0
  345. package/menu/lib/menuitem/menu-item-private-styles.scss +10 -0
  346. package/menu/lib/menuitem/menu-item-styles.css.d.ts +1 -0
  347. package/menu/lib/menuitem/menu-item-styles.css.js +9 -0
  348. package/menu/lib/menuitem/menu-item-styles.css.js.map +1 -0
  349. package/menu/lib/menuitem/menu-item-styles.scss +10 -0
  350. package/menu/lib/menuitem/menu-item.d.ts +20 -3
  351. package/menu/lib/menuitem/menu-item.js +42 -3
  352. package/menu/lib/menuitem/menu-item.js.map +1 -1
  353. package/menu/lib/menuitemlink/menu-item-link.d.ts +25 -0
  354. package/menu/lib/menuitemlink/menu-item-link.js +51 -0
  355. package/menu/lib/menuitemlink/menu-item-link.js.map +1 -0
  356. package/menu/lib/shared.d.ts +134 -0
  357. package/menu/lib/shared.js +85 -0
  358. package/menu/lib/shared.js.map +1 -0
  359. package/menu/lib/submenuitem/harness.d.ts +11 -0
  360. package/menu/lib/submenuitem/harness.js +12 -0
  361. package/menu/lib/submenuitem/harness.js.map +1 -0
  362. package/menu/lib/submenuitem/sub-menu-item.d.ts +89 -0
  363. package/menu/lib/submenuitem/sub-menu-item.js +266 -0
  364. package/menu/lib/submenuitem/sub-menu-item.js.map +1 -0
  365. package/menu/lib/surfacePositionController.d.ts +117 -0
  366. package/menu/lib/surfacePositionController.js +196 -0
  367. package/menu/lib/surfacePositionController.js.map +1 -0
  368. package/menu/lib/typeaheadController.d.ts +144 -0
  369. package/menu/lib/typeaheadController.js +242 -0
  370. package/menu/lib/typeaheadController.js.map +1 -0
  371. package/menu/menu-item-link.d.ts +33 -0
  372. package/menu/menu-item-link.js +37 -0
  373. package/menu/menu-item-link.js.map +1 -0
  374. package/menu/menu-item.d.ts +19 -2
  375. package/menu/menu-item.js +22 -4
  376. package/menu/menu-item.js.map +1 -1
  377. package/menu/menu.d.ts +45 -0
  378. package/menu/menu.js +43 -0
  379. package/menu/menu.js.map +1 -1
  380. package/menu/sub-menu-item.d.ts +60 -0
  381. package/menu/sub-menu-item.js +64 -0
  382. package/menu/sub-menu-item.js.map +1 -0
  383. package/menusurface/lib/_md-comp-menu-surface.scss +4 -0
  384. package/menusurface/lib/_menu-surface.scss +5 -1
  385. package/menusurface/lib/foundation.js +31 -31
  386. package/menusurface/lib/foundation.js.map +1 -1
  387. package/menusurface/lib/menu-surface-styles.css.js +1 -1
  388. package/menusurface/lib/menu-surface-styles.css.js.map +1 -1
  389. package/menusurface/lib/menu-surface-styles.scss +2 -0
  390. package/menusurface/lib/menu-surface.d.ts +2 -2
  391. package/menusurface/lib/menu-surface.js.map +1 -1
  392. package/menusurface/menu-surface.js.map +1 -1
  393. package/motion/animation.d.ts +20 -3
  394. package/motion/animation.js +39 -4
  395. package/motion/animation.js.map +1 -1
  396. package/navigationbar/lib/_navigation-bar.scss +11 -9
  397. package/navigationbar/lib/constants.d.ts +1 -1
  398. package/navigationbar/lib/navigation-bar-styles.css.js +1 -1
  399. package/navigationbar/lib/navigation-bar-styles.css.js.map +1 -1
  400. package/navigationbar/lib/navigation-bar-styles.scss +2 -0
  401. package/navigationbar/lib/navigation-bar.js.map +1 -1
  402. package/navigationbar/navigation-bar.js.map +1 -1
  403. package/navigationdrawer/lib/_navigation-drawer-modal.scss +11 -2
  404. package/navigationdrawer/lib/_navigation-drawer.scss +11 -6
  405. package/navigationdrawer/lib/_shared.scss +4 -8
  406. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js +1 -1
  407. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js.map +1 -1
  408. package/navigationdrawer/lib/navigation-drawer-modal-styles.scss +2 -0
  409. package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
  410. package/navigationdrawer/lib/navigation-drawer-styles.css.js +1 -1
  411. package/navigationdrawer/lib/navigation-drawer-styles.css.js.map +1 -1
  412. package/navigationdrawer/lib/navigation-drawer-styles.scss +2 -0
  413. package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
  414. package/navigationdrawer/lib/shared-styles.scss +2 -0
  415. package/navigationdrawer/navigation-drawer-modal.js.map +1 -1
  416. package/navigationdrawer/navigation-drawer.js.map +1 -1
  417. package/navigationtab/lib/_navigation-tab.scss +34 -41
  418. package/navigationtab/lib/navigation-tab-styles.css.js +1 -1
  419. package/navigationtab/lib/navigation-tab-styles.css.js.map +1 -1
  420. package/navigationtab/lib/navigation-tab-styles.scss +2 -0
  421. package/navigationtab/lib/navigation-tab.js +4 -4
  422. package/navigationtab/lib/navigation-tab.js.map +1 -1
  423. package/navigationtab/navigation-tab.js.map +1 -1
  424. package/package.json +2 -9
  425. package/radio/lib/_radio.scss +16 -15
  426. package/radio/lib/forced-colors-styles.scss +2 -0
  427. package/radio/lib/radio-styles.css.js +1 -1
  428. package/radio/lib/radio-styles.css.js.map +1 -1
  429. package/radio/lib/radio-styles.scss +2 -0
  430. package/radio/lib/radio.d.ts +10 -1
  431. package/radio/lib/radio.js +28 -19
  432. package/radio/lib/radio.js.map +1 -1
  433. package/radio/radio.d.ts +16 -1
  434. package/radio/radio.js +16 -1
  435. package/radio/radio.js.map +1 -1
  436. package/ripple/directive.d.ts +1 -33
  437. package/ripple/directive.js +7 -194
  438. package/ripple/directive.js.map +1 -1
  439. package/ripple/lib/_md-comp-ripple.scss +20 -19
  440. package/ripple/lib/_ripple.scss +24 -40
  441. package/ripple/lib/ripple-styles.css.js +1 -1
  442. package/ripple/lib/ripple-styles.css.js.map +1 -1
  443. package/ripple/lib/ripple-styles.scss +2 -0
  444. package/ripple/lib/ripple.d.ts +50 -48
  445. package/ripple/lib/ripple.js +215 -77
  446. package/ripple/lib/ripple.js.map +1 -1
  447. package/ripple/ripple.d.ts +9 -1
  448. package/ripple/ripple.js +9 -1
  449. package/ripple/ripple.js.map +1 -1
  450. package/sass/_assert.scss +2 -0
  451. package/sass/_color-scheme.scss +4 -0
  452. package/sass/_color.scss +4 -0
  453. package/sass/_elevation.scss +4 -0
  454. package/sass/_feature-flags.scss +2 -0
  455. package/sass/_map-ext.scss +26 -0
  456. package/sass/_resolvers.scss +4 -4
  457. package/sass/_shape.scss +75 -27
  458. package/sass/_string-ext.scss +67 -0
  459. package/sass/_theme.scss +4 -0
  460. package/sass/_typography.scss +18 -93
  461. package/sass/_var.scss +4 -0
  462. package/segmentedbutton/lib/_outlined-segmented-button.scss +4 -0
  463. package/segmentedbutton/lib/_shared.scss +18 -22
  464. package/segmentedbutton/lib/outlined-styles.css.js +1 -1
  465. package/segmentedbutton/lib/outlined-styles.css.js.map +1 -1
  466. package/segmentedbutton/lib/outlined-styles.scss +2 -0
  467. package/segmentedbutton/lib/segmented-button.js +4 -4
  468. package/segmentedbutton/lib/segmented-button.js.map +1 -1
  469. package/segmentedbutton/lib/shared-styles.css.js +1 -1
  470. package/segmentedbutton/lib/shared-styles.css.js.map +1 -1
  471. package/segmentedbutton/lib/shared-styles.scss +2 -0
  472. package/segmentedbutton/outlined-segmented-button.js.map +1 -1
  473. package/segmentedbuttonset/lib/_outlined-segmented-button-set.scss +9 -5
  474. package/segmentedbuttonset/lib/_shared.scss +0 -13
  475. package/segmentedbuttonset/lib/outlined-styles.css.js +1 -1
  476. package/segmentedbuttonset/lib/outlined-styles.css.js.map +1 -1
  477. package/segmentedbuttonset/lib/outlined-styles.scss +2 -0
  478. package/segmentedbuttonset/lib/segmented-button-set.d.ts +0 -2
  479. package/segmentedbuttonset/lib/segmented-button-set.js +0 -2
  480. package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
  481. package/segmentedbuttonset/lib/shared-styles.scss +2 -0
  482. package/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
  483. package/slider/_slider.scss +6 -0
  484. package/slider/harness.d.ts +20 -0
  485. package/slider/harness.js +63 -0
  486. package/slider/harness.js.map +1 -0
  487. package/slider/lib/_slider.scss +503 -0
  488. package/slider/lib/_tokens.scss +66 -0
  489. package/slider/lib/forced-colors-styles.css.d.ts +1 -0
  490. package/slider/lib/forced-colors-styles.css.js +9 -0
  491. package/slider/lib/forced-colors-styles.css.js.map +1 -0
  492. package/slider/lib/forced-colors-styles.scss +53 -0
  493. package/slider/lib/slider-styles.css.d.ts +1 -0
  494. package/slider/lib/slider-styles.css.js +9 -0
  495. package/slider/lib/slider-styles.css.js.map +1 -0
  496. package/slider/lib/slider-styles.scss +8 -0
  497. package/slider/lib/slider.d.ts +158 -0
  498. package/slider/lib/slider.js +575 -0
  499. package/slider/lib/slider.js.map +1 -0
  500. package/slider/slider.d.ts +28 -0
  501. package/slider/slider.js +32 -0
  502. package/slider/slider.js.map +1 -0
  503. package/switch/lib/README.md +55 -0
  504. package/switch/lib/_handle.scss +72 -26
  505. package/switch/lib/_icon.scss +40 -0
  506. package/switch/lib/_switch.scss +12 -133
  507. package/switch/lib/_track.scss +41 -0
  508. package/switch/lib/switch-styles.css.js +1 -1
  509. package/switch/lib/switch-styles.css.js.map +1 -1
  510. package/switch/lib/switch-styles.scss +2 -0
  511. package/switch/lib/switch.d.ts +3 -0
  512. package/switch/lib/switch.js +12 -9
  513. package/switch/lib/switch.js.map +1 -1
  514. package/switch/switch.js.map +1 -1
  515. package/textfield/filled-text-field.d.ts +1 -1
  516. package/textfield/filled-text-field.js +1 -2
  517. package/textfield/filled-text-field.js.map +1 -1
  518. package/textfield/harness.js +1 -1
  519. package/textfield/harness.js.map +1 -1
  520. package/textfield/lib/_filled-text-field.scss +29 -23
  521. package/textfield/lib/_icon.scss +41 -56
  522. package/textfield/lib/_input.scss +17 -36
  523. package/textfield/lib/_outlined-text-field.scss +29 -23
  524. package/textfield/lib/_shared.scss +10 -29
  525. package/textfield/lib/filled-forced-colors-styles.scss +2 -0
  526. package/textfield/lib/filled-styles.css.js +1 -1
  527. package/textfield/lib/filled-styles.css.js.map +1 -1
  528. package/textfield/lib/filled-styles.scss +2 -0
  529. package/textfield/lib/filled-text-field.d.ts +6 -5
  530. package/textfield/lib/filled-text-field.js +8 -7
  531. package/textfield/lib/filled-text-field.js.map +1 -1
  532. package/textfield/lib/outlined-forced-colors-styles.scss +2 -0
  533. package/textfield/lib/outlined-styles.css.js +1 -1
  534. package/textfield/lib/outlined-styles.css.js.map +1 -1
  535. package/textfield/lib/outlined-styles.scss +2 -0
  536. package/textfield/lib/outlined-text-field.d.ts +6 -5
  537. package/textfield/lib/outlined-text-field.js +8 -7
  538. package/textfield/lib/outlined-text-field.js.map +1 -1
  539. package/textfield/lib/shared-styles.css.js +1 -1
  540. package/textfield/lib/shared-styles.css.js.map +1 -1
  541. package/textfield/lib/shared-styles.scss +2 -0
  542. package/textfield/lib/text-field.d.ts +40 -90
  543. package/textfield/lib/text-field.js +194 -272
  544. package/textfield/lib/text-field.js.map +1 -1
  545. package/textfield/outlined-text-field.d.ts +1 -1
  546. package/textfield/outlined-text-field.js +1 -2
  547. package/textfield/outlined-text-field.js.map +1 -1
  548. package/tokens/_index.scss +1 -1
  549. package/tokens/{v0_150 → v0_160}/_index.scss +1 -1
  550. package/tokens/{v0_150 → v0_160}/_md-comp-assist-chip.scss +2 -2
  551. package/tokens/{v0_150 → v0_160}/_md-comp-badge.scss +2 -2
  552. package/tokens/{v0_150 → v0_160}/_md-comp-banner.scss +2 -43
  553. package/tokens/{v0_150 → v0_160}/_md-comp-bottom-app-bar.scss +3 -4
  554. package/tokens/{v0_150 → v0_160}/_md-comp-carousel-item.scss +2 -2
  555. package/tokens/{v0_150 → v0_160}/_md-comp-checkbox.scss +5 -26
  556. package/tokens/{v0_150 → v0_160}/_md-comp-circular-progress-indicator.scss +2 -2
  557. package/tokens/{v0_150 → v0_160}/_md-comp-data-table.scss +2 -6
  558. package/tokens/{v0_150 → v0_160}/_md-comp-date-input-modal.scss +11 -11
  559. package/tokens/{v0_150 → v0_160}/_md-comp-date-picker-docked.scss +24 -24
  560. package/tokens/{v0_150 → v0_160}/_md-comp-date-picker-modal.scss +35 -35
  561. package/tokens/{v0_150 → v0_160}/_md-comp-dialog.scss +2 -25
  562. package/tokens/{v0_150 → v0_160}/_md-comp-divider.scss +2 -2
  563. package/tokens/{v0_150 → v0_160}/_md-comp-elevated-button.scss +2 -2
  564. package/tokens/{v0_150 → v0_160}/_md-comp-elevated-card.scss +2 -2
  565. package/tokens/{v0_150 → v0_160}/_md-comp-extended-fab-branded.scss +2 -2
  566. package/tokens/{v0_150 → v0_160}/_md-comp-extended-fab-primary.scss +2 -2
  567. package/tokens/{v0_150 → v0_160}/_md-comp-extended-fab-secondary.scss +2 -2
  568. package/tokens/{v0_150 → v0_160}/_md-comp-extended-fab-surface.scss +2 -2
  569. package/tokens/{v0_150 → v0_160}/_md-comp-extended-fab-tertiary.scss +2 -4
  570. package/tokens/{v0_150 → v0_160}/_md-comp-fab-branded-large.scss +2 -3
  571. package/tokens/{v0_150 → v0_160}/_md-comp-fab-branded.scss +2 -2
  572. package/tokens/{v0_150 → v0_160}/_md-comp-fab-primary-large.scss +2 -2
  573. package/tokens/{v0_150 → v0_160}/_md-comp-fab-primary-small.scss +2 -2
  574. package/tokens/{v0_150 → v0_160}/_md-comp-fab-primary.scss +2 -2
  575. package/tokens/{v0_150 → v0_160}/_md-comp-fab-secondary-large.scss +2 -2
  576. package/tokens/{v0_150 → v0_160}/_md-comp-fab-secondary-small.scss +2 -2
  577. package/tokens/{v0_150 → v0_160}/_md-comp-fab-secondary.scss +2 -2
  578. package/tokens/{v0_150 → v0_160}/_md-comp-fab-surface-large.scss +2 -2
  579. package/tokens/{v0_150 → v0_160}/_md-comp-fab-surface-small.scss +2 -2
  580. package/tokens/{v0_150 → v0_160}/_md-comp-fab-surface.scss +2 -2
  581. package/tokens/{v0_150 → v0_160}/_md-comp-fab-tertiary-large.scss +2 -2
  582. package/tokens/{v0_150 → v0_160}/_md-comp-fab-tertiary-small.scss +2 -2
  583. package/tokens/{v0_150 → v0_160}/_md-comp-fab-tertiary.scss +2 -2
  584. package/tokens/{v0_150 → v0_160}/_md-comp-filled-autocomplete.scss +2 -3
  585. package/tokens/{v0_150 → v0_160}/_md-comp-filled-button.scss +2 -8
  586. package/tokens/{v0_150 → v0_160}/_md-comp-filled-card.scss +2 -4
  587. package/tokens/{v0_150 → v0_160}/_md-comp-filled-icon-button.scss +2 -2
  588. package/tokens/{v0_150 → v0_160}/_md-comp-filled-menu-button.scss +2 -2
  589. package/tokens/{v0_150 → v0_160}/_md-comp-filled-select.scss +2 -6
  590. package/tokens/{v0_150 → v0_160}/_md-comp-filled-text-field.scss +2 -3
  591. package/tokens/{v0_150 → v0_160}/_md-comp-filled-tonal-button.scss +2 -2
  592. package/tokens/{v0_150 → v0_160}/_md-comp-filled-tonal-icon-button.scss +2 -2
  593. package/tokens/{v0_150 → v0_160}/_md-comp-filter-chip.scss +2 -30
  594. package/tokens/{v0_150 → v0_160}/_md-comp-full-screen-dialog.scss +3 -53
  595. package/tokens/{v0_150 → v0_160}/_md-comp-icon-button.scss +3 -3
  596. package/tokens/{v0_150 → v0_160}/_md-comp-input-chip.scss +2 -52
  597. package/tokens/{v0_150 → v0_160}/_md-comp-linear-progress-indicator.scss +2 -2
  598. package/tokens/{v0_150 → v0_160}/_md-comp-list.scss +3 -12
  599. package/tokens/{v0_150 → v0_160}/_md-comp-menu.scss +2 -4
  600. package/tokens/{v0_150 → v0_160}/_md-comp-navigation-bar.scss +2 -9
  601. package/tokens/{v0_150 → v0_160}/_md-comp-navigation-drawer.scss +2 -8
  602. package/tokens/{v0_150 → v0_160}/_md-comp-navigation-rail.scss +2 -39
  603. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-autocomplete.scss +2 -3
  604. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-button.scss +2 -6
  605. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-card.scss +2 -2
  606. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-icon-button.scss +2 -4
  607. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-menu-button.scss +2 -2
  608. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-segmented-button.scss +2 -2
  609. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-select.scss +2 -6
  610. package/tokens/{v0_150 → v0_160}/_md-comp-outlined-text-field.scss +2 -3
  611. package/tokens/{v0_150 → v0_160}/_md-comp-plain-tooltip.scss +2 -2
  612. package/tokens/{v0_150 → v0_160}/_md-comp-primary-navigation-tab.scss +2 -4
  613. package/tokens/{v0_150 → v0_160}/_md-comp-radio-button.scss +2 -2
  614. package/tokens/{v0_150 → v0_160}/_md-comp-rich-tooltip.scss +2 -2
  615. package/tokens/{v0_150 → v0_160}/_md-comp-scrim.scss +2 -2
  616. package/tokens/{v0_150 → v0_160}/_md-comp-search-bar.scss +2 -2
  617. package/tokens/{v0_150 → v0_160}/_md-comp-search-view.scss +2 -2
  618. package/tokens/{v0_150 → v0_160}/_md-comp-secondary-navigation-tab.scss +2 -4
  619. package/tokens/{v0_150 → v0_160}/_md-comp-sheet-bottom.scss +2 -2
  620. package/tokens/{v0_150 → v0_160}/_md-comp-sheet-floating.scss +2 -2
  621. package/tokens/{v0_150 → v0_160}/_md-comp-sheet-side.scss +13 -11
  622. package/tokens/{v0_150 → v0_160}/_md-comp-slider.scss +2 -4
  623. package/tokens/{v0_150 → v0_160}/_md-comp-snackbar.scss +2 -2
  624. package/tokens/{v0_150 → v0_160}/_md-comp-standard-menu-button.scss +2 -2
  625. package/tokens/{v0_150 → v0_160}/_md-comp-suggestion-chip.scss +2 -2
  626. package/tokens/{v0_150 → v0_160}/_md-comp-switch.scss +2 -11
  627. package/tokens/{v0_150 → v0_160}/_md-comp-text-button.scss +2 -6
  628. package/tokens/{v0_150 → v0_160}/_md-comp-time-input.scss +2 -2
  629. package/tokens/{v0_150 → v0_160}/_md-comp-time-picker.scss +2 -5
  630. package/tokens/{v0_150 → v0_160}/_md-comp-top-app-bar-large.scss +2 -2
  631. package/tokens/{v0_150 → v0_160}/_md-comp-top-app-bar-medium.scss +2 -2
  632. package/tokens/{v0_150 → v0_160}/_md-comp-top-app-bar-small-centered.scss +2 -3
  633. package/tokens/{v0_150 → v0_160}/_md-comp-top-app-bar-small.scss +2 -3
  634. package/tokens/{v0_150 → v0_160}/_md-ref-palette.scss +2 -2
  635. package/tokens/{v0_150 → v0_160}/_md-ref-typeface.scss +2 -2
  636. package/tokens/{v0_150 → v0_160}/_md-sys-color.scss +218 -20
  637. package/tokens/{v0_150 → v0_160}/_md-sys-elevation.scss +4 -13
  638. package/tokens/{v0_150 → v0_160}/_md-sys-motion.scss +2 -2
  639. package/tokens/{v0_150 → v0_160}/_md-sys-shape.scss +2 -2
  640. package/tokens/{v0_150 → v0_160}/_md-sys-state.scss +2 -2
  641. package/tokens/{v0_150 → v0_160}/_md-sys-typescale.scss +2 -3
  642. package/tokens/v0_160/index.test.css.d.ts +1 -0
  643. package/tokens/{v0_150 → v0_160}/index.test.scss +1 -1
  644. package/tokens/v0_160/lib.test.css.d.ts +1 -0
  645. package/tokens/{v0_150 → v0_160}/lib.test.scss +1 -1
  646. package/list/lib/_tokens.scss +0 -80
  647. package/list/lib/divider/_list-divider.scss +0 -46
  648. package/list/lib/divider/list-divider-styles.css.js +0 -9
  649. package/list/lib/divider/list-divider-styles.css.js.map +0 -1
  650. package/list/lib/divider/list-divider-styles.scss +0 -8
  651. package/list/lib/divider/list-divider.d.ts +0 -13
  652. package/list/lib/divider/list-divider.js +0 -32
  653. package/list/lib/divider/list-divider.js.map +0 -1
  654. package/list/list-divider.d.ts +0 -19
  655. package/list/list-divider.js +0 -22
  656. package/list/list-divider.js.map +0 -1
  657. package/menu/lib/_menu-button.scss +0 -14
  658. package/menu/lib/adapter.d.ts +0 -66
  659. package/menu/lib/adapter.js +0 -7
  660. package/menu/lib/adapter.js.map +0 -1
  661. package/menu/lib/constants.d.ts +0 -22
  662. package/menu/lib/constants.js +0 -23
  663. package/menu/lib/constants.js.map +0 -1
  664. package/menu/lib/foundation.d.ts +0 -49
  665. package/menu/lib/foundation.js +0 -123
  666. package/menu/lib/foundation.js.map +0 -1
  667. package/menu/lib/menu-button-styles.css.js +0 -9
  668. package/menu/lib/menu-button-styles.css.js.map +0 -1
  669. package/menu/lib/menu-button-styles.scss +0 -8
  670. package/menu/lib/menu-button.d.ts +0 -27
  671. package/menu/lib/menu-button.js +0 -93
  672. package/menu/lib/menu-button.js.map +0 -1
  673. package/menu/menu-button.d.ts +0 -14
  674. package/menu/menu-button.js +0 -17
  675. package/menu/menu-button.js.map +0 -1
  676. /package/{list/lib/divider/list-divider-styles.css.d.ts → dialog/lib/dialog-styles.css.d.ts} +0 -0
  677. /package/{menu/lib/menu-button-styles.css.d.ts → divider/lib/divider-styles.css.d.ts} +0 -0
  678. /package/{tokens/v0_150/index.test.css.d.ts → list/lib/listitem/list-item-private-styles.css.d.ts} +0 -0
  679. /package/{tokens/v0_150/lib.test.css.d.ts → menu/lib/menuitem/menu-item-private-styles.css.d.ts} +0 -0
  680. /package/tokens/{v0_150 → v0_160}/index.test.css.js +0 -0
  681. /package/tokens/{v0_150 → v0_160}/index.test.css.js.map +0 -0
  682. /package/tokens/{v0_150 → v0_160}/lib.test.css.js +0 -0
  683. /package/tokens/{v0_150 → v0_160}/lib.test.css.js.map +0 -0
@@ -1,15 +1,12 @@
1
1
  /**
2
- * @requirecss {textfield.lib.shared_styles}
3
- *
4
2
  * @license
5
3
  * Copyright 2021 Google LLC
6
4
  * SPDX-License-Identifier: Apache-2.0
7
5
  */
8
6
  import { __decorate, __metadata } from "tslib";
9
- import { html, LitElement } from 'lit';
7
+ import { html, LitElement, nothing } from 'lit';
10
8
  import { property, query, queryAssignedElements, state } from 'lit/decorators.js';
11
9
  import { classMap } from 'lit/directives/class-map.js';
12
- import { ifDefined } from 'lit/directives/if-defined.js';
13
10
  import { live } from 'lit/directives/live.js';
14
11
  import { styleMap } from 'lit/directives/style-map.js';
15
12
  import { html as staticHtml } from 'lit/static-html.js';
@@ -17,8 +14,94 @@ import { redispatchEvent } from '../../controller/events.js';
17
14
  import { FormController, getFormValue } from '../../controller/form-controller.js';
18
15
  import { stringConverter } from '../../controller/string-converter.js';
19
16
  import { ariaProperty } from '../../decorators/aria-property.js';
20
- /** @soyCompatible */
17
+ /**
18
+ * A text field component.
19
+ */
21
20
  export class TextField extends LitElement {
21
+ // FormElement
22
+ get form() {
23
+ return this.closest('form');
24
+ }
25
+ [getFormValue]() {
26
+ return this.value;
27
+ }
28
+ /**
29
+ * Gets or sets the direction in which selection occurred.
30
+ */
31
+ get selectionDirection() {
32
+ return this.getInput().selectionDirection;
33
+ }
34
+ set selectionDirection(value) {
35
+ this.getInput().selectionDirection = value;
36
+ }
37
+ /**
38
+ * Gets or sets the end position or offset of a text selection.
39
+ */
40
+ get selectionEnd() {
41
+ return this.getInput().selectionEnd;
42
+ }
43
+ set selectionEnd(value) {
44
+ this.getInput().selectionEnd = value;
45
+ }
46
+ /**
47
+ * Gets or sets the starting position or offset of a text selection.
48
+ */
49
+ get selectionStart() {
50
+ return this.getInput().selectionStart;
51
+ }
52
+ set selectionStart(value) {
53
+ this.getInput().selectionStart = value;
54
+ }
55
+ /**
56
+ * Returns the native validation error message that would be displayed upon
57
+ * calling `reportValidity()`.
58
+ *
59
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validationMessage
60
+ */
61
+ get validationMessage() {
62
+ return this.getInput().validationMessage;
63
+ }
64
+ /**
65
+ * Returns a ValidityState object that represents the validity states of the
66
+ * text field.
67
+ *
68
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validity
69
+ */
70
+ get validity() {
71
+ return this.getInput().validity;
72
+ }
73
+ /**
74
+ * The text field's value as a number.
75
+ */
76
+ get valueAsNumber() {
77
+ return this.getInput().valueAsNumber;
78
+ }
79
+ set valueAsNumber(value) {
80
+ this.getInput().valueAsNumber = value;
81
+ this.value = this.getInput().value;
82
+ }
83
+ /**
84
+ * The text field's value as a Date.
85
+ */
86
+ get valueAsDate() {
87
+ return this.getInput().valueAsDate;
88
+ }
89
+ set valueAsDate(value) {
90
+ this.getInput().valueAsDate = value;
91
+ this.value = this.getInput().value;
92
+ }
93
+ /**
94
+ * Returns whether an element will successfully validate based on forms
95
+ * validation rules and constraints.
96
+ *
97
+ * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/willValidate
98
+ */
99
+ get willValidate() {
100
+ return this.getInput().willValidate;
101
+ }
102
+ get hasError() {
103
+ return this.error || this.nativeError;
104
+ }
22
105
  constructor() {
23
106
  super();
24
107
  this.disabled = false;
@@ -79,13 +162,10 @@ export class TextField extends LitElement {
79
162
  */
80
163
  this.textDirection = '';
81
164
  // ARIA
82
- // TODO(b/210730484): replace with @soyParam annotation
83
165
  this.ariaAutoComplete = null;
84
166
  this.ariaControls = null;
85
167
  this.ariaActiveDescendant = null;
86
168
  this.ariaExpanded = null;
87
- // tslint:disable:decorator-placement
88
- // @ts-ignore(b/264292293): Use `override` with TS 4.9+
89
169
  this.role = null;
90
170
  this.name = '';
91
171
  // <input> properties
@@ -137,7 +217,6 @@ export class TextField extends LitElement {
137
217
  * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step
138
218
  */
139
219
  this.step = '';
140
- // TODO(b/237284412): replace with exported types
141
220
  this.type = 'text';
142
221
  /**
143
222
  * Returns true when the text field has been interacted with. Native
@@ -173,98 +252,11 @@ export class TextField extends LitElement {
173
252
  * `reportValidity()`.
174
253
  */
175
254
  this.nativeErrorText = '';
176
- /** @soyUniqueAttribute */
177
- this.counterId = 'counter';
178
- /** @soyUniqueAttribute */
179
- this.supportingTextId = 'support';
180
255
  this.addController(new FormController(this));
181
- // TODO(b/244574653): replace this.handleClick with this.focus
182
- this.addEventListener('click', this.handleClick);
256
+ this.addEventListener('click', this.focus);
183
257
  this.addEventListener('focusin', this.handleFocusin);
184
258
  this.addEventListener('focusout', this.handleFocusout);
185
259
  }
186
- // tslint:enable:decorator-placement
187
- // FormElement
188
- get form() {
189
- return this.closest('form');
190
- }
191
- [getFormValue]() {
192
- return this.value;
193
- }
194
- /**
195
- * Gets or sets the direction in which selection occurred.
196
- */
197
- get selectionDirection() {
198
- return this.getInput().selectionDirection;
199
- }
200
- set selectionDirection(value) {
201
- this.getInput().selectionDirection = value;
202
- }
203
- /**
204
- * Gets or sets the end position or offset of a text selection.
205
- */
206
- get selectionEnd() {
207
- return this.getInput().selectionEnd;
208
- }
209
- set selectionEnd(value) {
210
- this.getInput().selectionEnd = value;
211
- }
212
- /**
213
- * Gets or sets the starting position or offset of a text selection.
214
- */
215
- get selectionStart() {
216
- return this.getInput().selectionStart;
217
- }
218
- set selectionStart(value) {
219
- this.getInput().selectionStart = value;
220
- }
221
- /**
222
- * Returns the native validation error message that would be displayed upon
223
- * calling `reportValidity()`.
224
- *
225
- * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validationMessage
226
- */
227
- get validationMessage() {
228
- return this.getInput().validationMessage;
229
- }
230
- /**
231
- * Returns a ValidityState object that represents the validity states of the
232
- * text field.
233
- *
234
- * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validity
235
- */
236
- get validity() {
237
- return this.getInput().validity;
238
- }
239
- /**
240
- * The text field's value as a number.
241
- */
242
- get valueAsNumber() {
243
- return this.getInput().valueAsNumber;
244
- }
245
- set valueAsNumber(value) {
246
- this.getInput().valueAsNumber = value;
247
- this.value = this.getInput().value;
248
- }
249
- /**
250
- * The text field's value as a Date.
251
- */
252
- get valueAsDate() {
253
- return this.getInput().valueAsDate;
254
- }
255
- set valueAsDate(value) {
256
- this.getInput().valueAsDate = value;
257
- this.value = this.getInput().value;
258
- }
259
- /**
260
- * Returns whether an element will successfully validate based on forms
261
- * validation rules and constraints.
262
- *
263
- * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/willValidate
264
- */
265
- get willValidate() {
266
- return this.getInput().willValidate;
267
- }
268
260
  /**
269
261
  * Checks the text field's native validation and returns whether or not the
270
262
  * element is valid.
@@ -288,15 +280,7 @@ export class TextField extends LitElement {
288
280
  // button, to the input when focus is requested.
289
281
  return;
290
282
  }
291
- // TODO(b/210731759): replace with super.focus() once SSR supports
292
- // delegating focus
293
- this.getInput().focus();
294
- }
295
- /**
296
- * Unfocuses the text field.
297
- */
298
- blur() {
299
- this.getInput().blur();
283
+ super.focus();
300
284
  }
301
285
  /**
302
286
  * Checks the text field's native validation and returns whether or not the
@@ -406,40 +390,65 @@ export class TextField extends LitElement {
406
390
  this.nativeError = false;
407
391
  this.nativeErrorText = '';
408
392
  }
409
- /** @soyTemplate */
393
+ update(changedProperties) {
394
+ // Consider a value change anything that is not the initial empty string
395
+ // value.
396
+ const valueHasChanged = changedProperties.has('value') &&
397
+ changedProperties.get('value') !== undefined;
398
+ if (valueHasChanged && !this.ignoreNextValueChange) {
399
+ this.valueHasChanged = true;
400
+ }
401
+ if (this.ignoreNextValueChange) {
402
+ this.ignoreNextValueChange = false;
403
+ }
404
+ super.update(changedProperties);
405
+ }
410
406
  render() {
407
+ const classes = {
408
+ 'disabled': this.disabled,
409
+ 'error': !this.disabled && this.hasError,
410
+ };
411
411
  return html `
412
- <span class="md3-text-field ${classMap(this.getRenderClasses())}">
412
+ <span class="text-field ${classMap(classes)}">
413
413
  ${this.renderField()}
414
414
  </span>
415
415
  `;
416
416
  }
417
- /** @soyTemplate */
418
- getRenderClasses() {
419
- return {
420
- 'md3-text-field--disabled': this.disabled,
421
- 'md3-text-field--error': this.getError(),
422
- };
423
- }
424
- /** @soyTemplate */
425
- getError() {
426
- return this.error || this.nativeError;
417
+ updated(changedProperties) {
418
+ // Keep changedProperties arg so that subclasses may call it
419
+ // If a property such as `type` changes and causes the internal <input>
420
+ // value to change without dispatching an event, re-sync it.
421
+ const value = this.getInput().value;
422
+ if (this.value !== value) {
423
+ // Don't consider these updates (such as setting `defaultValue`) as
424
+ // the developer directly changing the `value`.
425
+ this.ignoreNextValueChange = true;
426
+ // Note this is typically inefficient in updated() since it schedules
427
+ // another update. However, it is needed for the <input> to fully render
428
+ // before checking its value.
429
+ this.value = value;
430
+ }
431
+ if (this.refreshErrorAlert) {
432
+ // The past render cycle removed the role="alert" from the error message.
433
+ // Re-add it after an animation frame to re-announce the error.
434
+ requestAnimationFrame(() => {
435
+ this.refreshErrorAlert = false;
436
+ });
437
+ }
427
438
  }
428
- /** @soyTemplate */
429
439
  renderField() {
430
440
  const prefix = this.renderPrefix();
431
441
  const suffix = this.renderSuffix();
432
442
  const input = this.renderInput();
433
- const inputValue = this.getInputValue();
434
443
  return staticHtml `<${this.fieldTag}
435
- class="md3-text-field__field"
444
+ class="field"
436
445
  ?disabled=${this.disabled}
437
- ?error=${this.getError()}
446
+ ?error=${this.hasError}
438
447
  ?focused=${this.focused}
439
448
  ?hasEnd=${this.hasTrailingIcon}
440
449
  ?hasStart=${this.hasLeadingIcon}
441
450
  .label=${this.label}
442
- ?populated=${!!inputValue}
451
+ ?populated=${!!this.getInputValue()}
443
452
  ?required=${this.required}
444
453
  >
445
454
  ${this.renderLeadingIcon()}
@@ -449,74 +458,44 @@ export class TextField extends LitElement {
449
458
  ${this.renderCounter()}
450
459
  </${this.fieldTag}>`;
451
460
  }
452
- /**
453
- * @soyTemplate
454
- * @slotName start
455
- */
456
461
  renderLeadingIcon() {
457
462
  return html `
458
- <span class="md3-text-field__icon md3-text-field__icon--leading"
459
- slot="start">
463
+ <span class="icon leading" slot="start">
460
464
  <slot name="leadingicon" @slotchange=${this.handleIconChange}></slot>
461
465
  </span>
462
466
  `;
463
467
  }
464
- /**
465
- * @soyTemplate
466
- * @slotName end
467
- */
468
468
  renderTrailingIcon() {
469
469
  return html `
470
- <span class="md3-text-field__icon md3-text-field__icon--trailing"
471
- slot="end">
470
+ <span class="icon trailing" slot="end">
472
471
  <slot name="trailingicon" @slotchange=${this.handleIconChange}></slot>
473
472
  </span>
474
473
  `;
475
474
  }
476
- /** @soyTemplate */
477
475
  renderInput() {
478
- // TODO(b/237283903): remove when custom isTruthy directive is supported
479
- const placeholderValue = this.placeholder || undefined;
480
- const ariaActiveDescendantValue = this.ariaActiveDescendant || undefined;
481
- const ariaAutoCompleteValue = this.ariaAutoComplete || undefined;
482
- const ariaControlsValue = this.ariaControls || undefined;
483
- const ariaDescribedByValue = this.getAriaDescribedBy() || undefined;
484
- const ariaExpandedValue = this.ariaExpanded || undefined;
485
- const ariaLabelValue = this.ariaLabel || this.label || undefined;
486
- const ariaLabelledByValue = this.ariaLabelledBy || undefined;
487
- const maxValue = this.max || undefined;
488
- const maxLengthValue = this.maxLength > -1 ? this.maxLength : undefined;
489
- const minValue = this.min || undefined;
490
- const minLengthValue = this.minLength > -1 ? this.minLength : undefined;
491
- const patternValue = this.pattern || undefined;
492
- const roleValue = this.role || undefined;
493
- const stepValue = this.step || undefined;
494
- /** @styleMap */
495
476
  const style = { direction: this.textDirection };
496
477
  // TODO(b/243805848): remove `as unknown as number` once lit analyzer is
497
478
  // fixed
498
479
  return html `<input
499
- class="md3-text-field__input"
500
480
  style=${styleMap(style)}
501
- aria-activedescendant=${ifDefined(ariaActiveDescendantValue)}
502
- aria-autocomplete=${ifDefined(ariaAutoCompleteValue)}
503
- aria-controls=${ifDefined(ariaControlsValue)}
504
- aria-describedby=${ifDefined(ariaDescribedByValue)}
505
- aria-expanded=${ifDefined(ariaExpandedValue)}
506
- aria-invalid=${this.getError()}
507
- aria-label=${ifDefined(ariaLabelValue)}
508
- aria-labelledby=${ifDefined(ariaLabelledByValue)}
481
+ aria-activedescendant=${this.ariaActiveDescendant || nothing}
482
+ aria-autocomplete=${this.ariaAutoComplete || nothing}
483
+ aria-controls=${this.ariaControls || nothing}
484
+ aria-describedby=${this.getAriaDescribedBy() || nothing}
485
+ aria-expanded=${this.ariaExpanded || nothing}
486
+ aria-invalid=${this.hasError}
487
+ aria-label=${this.ariaLabel || this.label || nothing}
509
488
  ?disabled=${this.disabled}
510
- max=${ifDefined(maxValue)}
511
- maxlength=${ifDefined(maxLengthValue)}
512
- min=${ifDefined(minValue)}
513
- minlength=${ifDefined(minLengthValue)}
514
- pattern=${ifDefined(patternValue)}
515
- placeholder=${ifDefined(placeholderValue)}
516
- role=${ifDefined(roleValue)}
489
+ max=${(this.max || nothing)}
490
+ maxlength=${this.maxLength > -1 ? this.maxLength : nothing}
491
+ min=${(this.min || nothing)}
492
+ minlength=${this.minLength > -1 ? this.minLength : nothing}
493
+ pattern=${this.pattern || nothing}
494
+ placeholder=${this.placeholder || nothing}
495
+ role=${this.role || nothing}
517
496
  ?readonly=${this.readOnly}
518
497
  ?required=${this.required}
519
- step=${ifDefined(stepValue)}
498
+ step=${(this.step || nothing)}
520
499
  type=${this.type}
521
500
  .value=${live(this.getInputValue())}
522
501
  @change=${this.redispatchEvent}
@@ -524,131 +503,80 @@ export class TextField extends LitElement {
524
503
  @select=${this.redispatchEvent}
525
504
  >`;
526
505
  }
527
- /** @soyTemplate */
528
506
  getInputValue() {
529
507
  const alwaysShowValue = this.dirty || this.valueHasChanged;
530
- return alwaysShowValue ? this.value : this.defaultValue || this.value;
508
+ if (alwaysShowValue) {
509
+ return this.value;
510
+ }
511
+ return this.defaultValue || this.value;
531
512
  }
532
- /** @soyTemplate */
533
513
  getAriaDescribedBy() {
534
- const hasSupport = !!this.getSupportingText();
535
- const hasCounter = this.hasCounter();
536
- // TODO(b/244609052): remove parens
537
- return (hasSupport || hasCounter) ?
538
- `${hasSupport ? this.supportingTextId : ''} ${hasCounter ? this.counterId : ''}` :
539
- '';
514
+ const ids = [];
515
+ if (this.getSupportingText()) {
516
+ ids.push('support');
517
+ }
518
+ if (this.getCounterText()) {
519
+ ids.push('counter');
520
+ }
521
+ return ids.join(' ');
540
522
  }
541
- /** @soyTemplate */
542
523
  renderPrefix() {
543
- return this.prefixText ?
544
- html `<span class="md3-text-field__prefix">${this.prefixText}</span>` :
545
- html ``;
546
- // TODO(b/217441842): Create shared function once argument bug is fixed
547
- // return this.renderAffix(/* isSuffix */ false);
524
+ return this.renderAffix(this.prefixText, /* isSuffix */ false);
548
525
  }
549
- /** @soyTemplate */
550
526
  renderSuffix() {
551
- return this.suffixText ?
552
- html `<span class="md3-text-field__suffix">${this.suffixText}</span>` :
553
- html ``;
554
- // TODO(b/217441842): Create shared function once argument bug is fixed
555
- // return this.renderAffix(/* isSuffix */ true);
527
+ return this.renderAffix(this.suffixText, /* isSuffix */ true);
528
+ }
529
+ renderAffix(text, isSuffix) {
530
+ if (!text) {
531
+ return nothing;
532
+ }
533
+ const classes = {
534
+ 'suffix': isSuffix,
535
+ 'prefix': !isSuffix,
536
+ };
537
+ return html `<span class="${classMap(classes)}">${text}</span>`;
556
538
  }
557
- /**
558
- * @soyTemplate
559
- * @slotName supporting-text
560
- */
561
539
  renderSupportingText() {
562
- const shouldAlert = this.shouldErrorAnnounce();
563
540
  const text = this.getSupportingText();
564
- const template = html `<span id=${this.supportingTextId}
565
- slot="supporting-text"
566
- role=${ifDefined(shouldAlert ? 'alert' : undefined)}>${text}</span>`;
567
- return text ? template : html ``;
541
+ if (!text) {
542
+ return nothing;
543
+ }
544
+ return html `<span id="support"
545
+ slot="supporting-text"
546
+ role=${this.shouldErrorAnnounce() ? 'alert' : nothing}>${text}</span>`;
568
547
  }
569
- /** @soyTemplate */
570
548
  getSupportingText() {
571
549
  const errorText = this.getErrorText();
572
- return this.getError() && errorText ? errorText : this.supportingText;
550
+ return this.hasError && errorText ? errorText : this.supportingText;
573
551
  }
574
- /** @soyTemplate */
575
552
  getErrorText() {
576
553
  return this.error ? this.errorText : this.nativeErrorText;
577
554
  }
578
- /** @soyTemplate */
579
555
  shouldErrorAnnounce() {
580
556
  // Announce if there is an error and error text visible.
581
557
  // If refreshErrorAlert is true, do not announce. This will remove the
582
558
  // role="alert" attribute. Another render cycle will happen after an
583
559
  // animation frame to re-add the role.
584
- return this.getError() && !!this.getErrorText() && !this.refreshErrorAlert;
560
+ return this.hasError && !!this.getErrorText() && !this.refreshErrorAlert;
585
561
  }
586
- /**
587
- * @soyTemplate
588
- * @slotName supporting-text-end
589
- */
590
562
  renderCounter() {
591
- const counter = html `<span id=${this.counterId}
592
- class="md3-text-field__counter"
593
- slot="supporting-text-end">${this.getCounterText()}</span>`;
563
+ const text = this.getCounterText();
564
+ if (!text) {
565
+ return nothing;
566
+ }
594
567
  // TODO(b/244473435): add aria-label and announcements
595
- return this.hasCounter() ? counter : html ``;
568
+ return html `<span id="counter"
569
+ class="counter"
570
+ slot="supporting-text-end">${text}</span>`;
596
571
  }
597
- // TODO(b/244197198): replace with !!this.getCounterText()
598
- /** @soyTemplate */
599
- hasCounter() {
600
- return this.maxLength > -1;
601
- }
602
- /** @soyTemplate */
603
572
  getCounterText() {
604
- // TODO(b/244197198): replace with string return
605
- const length = this.value.length;
606
- return this.hasCounter() ? html `${length} / ${this.maxLength}` : html ``;
607
- }
608
- update(changedProperties) {
609
- // Consider a value change anything that is not the initial empty string
610
- // value.
611
- const valueHasChanged = changedProperties.has('value') &&
612
- changedProperties.get('value') !== undefined;
613
- if (valueHasChanged && !this.ignoreNextValueChange) {
614
- this.valueHasChanged = true;
615
- }
616
- if (this.ignoreNextValueChange) {
617
- this.ignoreNextValueChange = false;
618
- }
619
- super.update(changedProperties);
620
- }
621
- updated(changedProperties) {
622
- // If a property such as `type` changes and causes the internal <input>
623
- // value to change without dispatching an event, re-sync it.
624
- const value = this.getInput().value;
625
- if (this.value !== value) {
626
- // Don't consider these updates (such as setting `defaultValue`) as
627
- // the developer directly changing the `value`.
628
- this.ignoreNextValueChange = true;
629
- // Note this is typically inefficient in updated() since it schedules
630
- // another update. However, it is needed for the <input> to fully render
631
- // before checking its value.
632
- this.value = value;
633
- }
634
- if (this.refreshErrorAlert) {
635
- // The past render cycle removed the role="alert" from the error message.
636
- // Re-add it after an animation frame to re-announce the error.
637
- requestAnimationFrame(() => {
638
- this.refreshErrorAlert = false;
639
- });
640
- }
641
- }
642
- /** @bubbleWizEvent */
643
- handleClick() {
644
- this.focus();
573
+ return this.maxLength > -1 ? `${this.value.length} / ${this.maxLength}` :
574
+ '';
645
575
  }
646
- /** @bubbleWizEvent */
647
- handleFocusin(event) {
576
+ handleFocusin() {
648
577
  this.focused = true;
649
578
  }
650
- /** @bubbleWizEvent */
651
- handleFocusout(event) {
579
+ handleFocusout() {
652
580
  if (this.matches(':focus-within')) {
653
581
  // Changing focus to another child within the text field, like a button
654
582
  return;
@@ -694,7 +622,7 @@ export class TextField extends LitElement {
694
622
  this.hasTrailingIcon = this.trailingIcons.length > 0;
695
623
  }
696
624
  }
697
- TextField.shadowRootOptions = { mode: 'open', delegatesFocus: true };
625
+ TextField.shadowRootOptions = { ...LitElement.shadowRootOptions, delegatesFocus: true };
698
626
  __decorate([
699
627
  property({ type: Boolean, reflect: true }),
700
628
  __metadata("design:type", Object)
@@ -777,12 +705,6 @@ __decorate([
777
705
  ,
778
706
  __metadata("design:type", String)
779
707
  ], TextField.prototype, "ariaLabel", void 0);
780
- __decorate([
781
- property({ type: String, attribute: 'data-aria-labelledby', noAccessor: true }),
782
- ariaProperty // tslint:disable-line:no-new-decorators
783
- ,
784
- __metadata("design:type", String)
785
- ], TextField.prototype, "ariaLabelledBy", void 0);
786
708
  __decorate([
787
709
  property({ type: String, attribute: 'data-role', noAccessor: true }),
788
710
  ariaProperty // tslint:disable-line:no-new-decorators
@@ -854,7 +776,7 @@ __decorate([
854
776
  __metadata("design:type", Object)
855
777
  ], TextField.prototype, "nativeErrorText", void 0);
856
778
  __decorate([
857
- query('.md3-text-field__input'),
779
+ query('input'),
858
780
  __metadata("design:type", HTMLInputElement)
859
781
  ], TextField.prototype, "input", void 0);
860
782
  __decorate([