material-web-evo 10002.10001.10000

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 (1250) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +9 -0
  3. package/all.d.ts +97 -0
  4. package/all.js +106 -0
  5. package/all.js.map +1 -0
  6. package/button/_elevated-button.scss +6 -0
  7. package/button/_filled-button.scss +6 -0
  8. package/button/_filled-tonal-button.scss +6 -0
  9. package/button/_outlined-button.scss +6 -0
  10. package/button/_text-button.scss +6 -0
  11. package/button/elevated-button.d.ts +37 -0
  12. package/button/elevated-button.js +44 -0
  13. package/button/elevated-button.js.map +1 -0
  14. package/button/filled-button.d.ts +35 -0
  15. package/button/filled-button.js +42 -0
  16. package/button/filled-button.js.map +1 -0
  17. package/button/filled-tonal-button.d.ts +36 -0
  18. package/button/filled-tonal-button.js +43 -0
  19. package/button/filled-tonal-button.js.map +1 -0
  20. package/button/harness.d.ts +13 -0
  21. package/button/harness.js +16 -0
  22. package/button/harness.js.map +1 -0
  23. package/button/internal/_elevated-button.scss +37 -0
  24. package/button/internal/_elevation.scss +69 -0
  25. package/button/internal/_filled-button.scss +37 -0
  26. package/button/internal/_filled-tonal-button.scss +37 -0
  27. package/button/internal/_icon.scss +38 -0
  28. package/button/internal/_outlined-button.scss +87 -0
  29. package/button/internal/_shared.scss +178 -0
  30. package/button/internal/_text-button.scss +41 -0
  31. package/button/internal/_touch-target.scss +23 -0
  32. package/button/internal/button.d.ts +81 -0
  33. package/button/internal/button.js +204 -0
  34. package/button/internal/button.js.map +1 -0
  35. package/button/internal/elevated-button.d.ts +13 -0
  36. package/button/internal/elevated-button.js +17 -0
  37. package/button/internal/elevated-button.js.map +1 -0
  38. package/button/internal/elevated-styles.css +1 -0
  39. package/button/internal/elevated-styles.css.map +1 -0
  40. package/button/internal/elevated-styles.d.ts +1 -0
  41. package/button/internal/elevated-styles.js +10 -0
  42. package/button/internal/elevated-styles.js.map +1 -0
  43. package/button/internal/elevated-styles.scss +10 -0
  44. package/button/internal/filled-button.d.ts +13 -0
  45. package/button/internal/filled-button.js +17 -0
  46. package/button/internal/filled-button.js.map +1 -0
  47. package/button/internal/filled-styles.css +1 -0
  48. package/button/internal/filled-styles.css.map +1 -0
  49. package/button/internal/filled-styles.d.ts +1 -0
  50. package/button/internal/filled-styles.js +10 -0
  51. package/button/internal/filled-styles.js.map +1 -0
  52. package/button/internal/filled-styles.scss +10 -0
  53. package/button/internal/filled-tonal-button.d.ts +13 -0
  54. package/button/internal/filled-tonal-button.js +17 -0
  55. package/button/internal/filled-tonal-button.js.map +1 -0
  56. package/button/internal/filled-tonal-styles.css +1 -0
  57. package/button/internal/filled-tonal-styles.css.map +1 -0
  58. package/button/internal/filled-tonal-styles.d.ts +1 -0
  59. package/button/internal/filled-tonal-styles.js +10 -0
  60. package/button/internal/filled-tonal-styles.js.map +1 -0
  61. package/button/internal/filled-tonal-styles.scss +10 -0
  62. package/button/internal/outlined-button.d.ts +12 -0
  63. package/button/internal/outlined-button.js +16 -0
  64. package/button/internal/outlined-button.js.map +1 -0
  65. package/button/internal/outlined-styles.css +1 -0
  66. package/button/internal/outlined-styles.css.map +1 -0
  67. package/button/internal/outlined-styles.d.ts +1 -0
  68. package/button/internal/outlined-styles.js +10 -0
  69. package/button/internal/outlined-styles.js.map +1 -0
  70. package/button/internal/outlined-styles.scss +10 -0
  71. package/button/internal/shared-elevation-styles.css +1 -0
  72. package/button/internal/shared-elevation-styles.css.map +1 -0
  73. package/button/internal/shared-elevation-styles.d.ts +1 -0
  74. package/button/internal/shared-elevation-styles.js +10 -0
  75. package/button/internal/shared-elevation-styles.js.map +1 -0
  76. package/button/internal/shared-elevation-styles.scss +10 -0
  77. package/button/internal/shared-styles.css +1 -0
  78. package/button/internal/shared-styles.css.map +1 -0
  79. package/button/internal/shared-styles.d.ts +1 -0
  80. package/button/internal/shared-styles.js +10 -0
  81. package/button/internal/shared-styles.js.map +1 -0
  82. package/button/internal/shared-styles.scss +14 -0
  83. package/button/internal/text-button.d.ts +11 -0
  84. package/button/internal/text-button.js +12 -0
  85. package/button/internal/text-button.js.map +1 -0
  86. package/button/internal/text-styles.css +1 -0
  87. package/button/internal/text-styles.css.map +1 -0
  88. package/button/internal/text-styles.d.ts +1 -0
  89. package/button/internal/text-styles.js +10 -0
  90. package/button/internal/text-styles.js.map +1 -0
  91. package/button/internal/text-styles.scss +10 -0
  92. package/button/outlined-button.d.ts +37 -0
  93. package/button/outlined-button.js +39 -0
  94. package/button/outlined-button.js.map +1 -0
  95. package/button/text-button.d.ts +35 -0
  96. package/button/text-button.js +37 -0
  97. package/button/text-button.js.map +1 -0
  98. package/checkbox/_checkbox.scss +6 -0
  99. package/checkbox/checkbox.d.ts +28 -0
  100. package/checkbox/checkbox.js +29 -0
  101. package/checkbox/checkbox.js.map +1 -0
  102. package/checkbox/harness.d.ts +13 -0
  103. package/checkbox/harness.js +16 -0
  104. package/checkbox/harness.js.map +1 -0
  105. package/checkbox/internal/_checkbox.scss +392 -0
  106. package/checkbox/internal/checkbox-styles.css +1 -0
  107. package/checkbox/internal/checkbox-styles.css.map +1 -0
  108. package/checkbox/internal/checkbox-styles.d.ts +1 -0
  109. package/checkbox/internal/checkbox-styles.js +10 -0
  110. package/checkbox/internal/checkbox-styles.js.map +1 -0
  111. package/checkbox/internal/checkbox-styles.scss +10 -0
  112. package/checkbox/internal/checkbox.d.ts +72 -0
  113. package/checkbox/internal/checkbox.js +192 -0
  114. package/checkbox/internal/checkbox.js.map +1 -0
  115. package/chips/_assist-chip.scss +6 -0
  116. package/chips/_filter-chip.scss +6 -0
  117. package/chips/_input-chip.scss +6 -0
  118. package/chips/_suggestion-chip.scss +6 -0
  119. package/chips/assist-chip.d.ts +21 -0
  120. package/chips/assist-chip.js +24 -0
  121. package/chips/assist-chip.js.map +1 -0
  122. package/chips/chip-set.d.ts +21 -0
  123. package/chips/chip-set.js +22 -0
  124. package/chips/chip-set.js.map +1 -0
  125. package/chips/filter-chip.d.ts +21 -0
  126. package/chips/filter-chip.js +32 -0
  127. package/chips/filter-chip.js.map +1 -0
  128. package/chips/harness.d.ts +14 -0
  129. package/chips/harness.js +37 -0
  130. package/chips/harness.js.map +1 -0
  131. package/chips/input-chip.d.ts +21 -0
  132. package/chips/input-chip.js +30 -0
  133. package/chips/input-chip.js.map +1 -0
  134. package/chips/internal/_assist-chip.scss +43 -0
  135. package/chips/internal/_chip-set.scss +12 -0
  136. package/chips/internal/_elevated.scss +70 -0
  137. package/chips/internal/_filter-chip.scss +56 -0
  138. package/chips/internal/_input-chip.scss +83 -0
  139. package/chips/internal/_selectable.scss +78 -0
  140. package/chips/internal/_shared.scss +248 -0
  141. package/chips/internal/_suggestion-chip.scss +43 -0
  142. package/chips/internal/_trailing-icon.scss +81 -0
  143. package/chips/internal/assist-chip.d.ts +24 -0
  144. package/chips/internal/assist-chip.js +79 -0
  145. package/chips/internal/assist-chip.js.map +1 -0
  146. package/chips/internal/assist-styles.css +1 -0
  147. package/chips/internal/assist-styles.css.map +1 -0
  148. package/chips/internal/assist-styles.d.ts +1 -0
  149. package/chips/internal/assist-styles.js +10 -0
  150. package/chips/internal/assist-styles.js.map +1 -0
  151. package/chips/internal/assist-styles.scss +10 -0
  152. package/chips/internal/chip-set-styles.css +1 -0
  153. package/chips/internal/chip-set-styles.css.map +1 -0
  154. package/chips/internal/chip-set-styles.d.ts +1 -0
  155. package/chips/internal/chip-set-styles.js +10 -0
  156. package/chips/internal/chip-set-styles.js.map +1 -0
  157. package/chips/internal/chip-set-styles.scss +10 -0
  158. package/chips/internal/chip-set.d.ts +19 -0
  159. package/chips/internal/chip-set.js +128 -0
  160. package/chips/internal/chip-set.js.map +1 -0
  161. package/chips/internal/chip.d.ts +84 -0
  162. package/chips/internal/chip.js +161 -0
  163. package/chips/internal/chip.js.map +1 -0
  164. package/chips/internal/elevated-styles.css +1 -0
  165. package/chips/internal/elevated-styles.css.map +1 -0
  166. package/chips/internal/elevated-styles.d.ts +1 -0
  167. package/chips/internal/elevated-styles.js +10 -0
  168. package/chips/internal/elevated-styles.js.map +1 -0
  169. package/chips/internal/elevated-styles.scss +10 -0
  170. package/chips/internal/filter-chip.d.ts +39 -0
  171. package/chips/internal/filter-chip.js +124 -0
  172. package/chips/internal/filter-chip.js.map +1 -0
  173. package/chips/internal/filter-styles.css +1 -0
  174. package/chips/internal/filter-styles.css.map +1 -0
  175. package/chips/internal/filter-styles.d.ts +1 -0
  176. package/chips/internal/filter-styles.js +10 -0
  177. package/chips/internal/filter-styles.js.map +1 -0
  178. package/chips/internal/filter-styles.scss +10 -0
  179. package/chips/internal/input-chip.d.ts +31 -0
  180. package/chips/internal/input-chip.js +117 -0
  181. package/chips/internal/input-chip.js.map +1 -0
  182. package/chips/internal/input-styles.css +1 -0
  183. package/chips/internal/input-styles.css.map +1 -0
  184. package/chips/internal/input-styles.d.ts +1 -0
  185. package/chips/internal/input-styles.js +10 -0
  186. package/chips/internal/input-styles.js.map +1 -0
  187. package/chips/internal/input-styles.scss +10 -0
  188. package/chips/internal/multi-action-chip.d.ts +23 -0
  189. package/chips/internal/multi-action-chip.js +99 -0
  190. package/chips/internal/multi-action-chip.js.map +1 -0
  191. package/chips/internal/selectable-styles.css +1 -0
  192. package/chips/internal/selectable-styles.css.map +1 -0
  193. package/chips/internal/selectable-styles.d.ts +1 -0
  194. package/chips/internal/selectable-styles.js +10 -0
  195. package/chips/internal/selectable-styles.js.map +1 -0
  196. package/chips/internal/selectable-styles.scss +10 -0
  197. package/chips/internal/shared-styles.css +1 -0
  198. package/chips/internal/shared-styles.css.map +1 -0
  199. package/chips/internal/shared-styles.d.ts +1 -0
  200. package/chips/internal/shared-styles.js +10 -0
  201. package/chips/internal/shared-styles.js.map +1 -0
  202. package/chips/internal/shared-styles.scss +10 -0
  203. package/chips/internal/suggestion-chip.d.ts +11 -0
  204. package/chips/internal/suggestion-chip.js +14 -0
  205. package/chips/internal/suggestion-chip.js.map +1 -0
  206. package/chips/internal/suggestion-styles.css +1 -0
  207. package/chips/internal/suggestion-styles.css.map +1 -0
  208. package/chips/internal/suggestion-styles.d.ts +1 -0
  209. package/chips/internal/suggestion-styles.js +10 -0
  210. package/chips/internal/suggestion-styles.js.map +1 -0
  211. package/chips/internal/suggestion-styles.scss +10 -0
  212. package/chips/internal/trailing-icon-styles.css +1 -0
  213. package/chips/internal/trailing-icon-styles.css.map +1 -0
  214. package/chips/internal/trailing-icon-styles.d.ts +1 -0
  215. package/chips/internal/trailing-icon-styles.js +10 -0
  216. package/chips/internal/trailing-icon-styles.js.map +1 -0
  217. package/chips/internal/trailing-icon-styles.scss +10 -0
  218. package/chips/internal/trailing-icons.d.ts +16 -0
  219. package/chips/internal/trailing-icons.js +48 -0
  220. package/chips/internal/trailing-icons.js.map +1 -0
  221. package/chips/suggestion-chip.d.ts +21 -0
  222. package/chips/suggestion-chip.js +24 -0
  223. package/chips/suggestion-chip.js.map +1 -0
  224. package/color/_color.scss +197 -0
  225. package/common.d.ts +59 -0
  226. package/common.js +68 -0
  227. package/common.js.map +1 -0
  228. package/dialog/_dialog.scss +6 -0
  229. package/dialog/dialog.d.ts +42 -0
  230. package/dialog/dialog.js +43 -0
  231. package/dialog/dialog.js.map +1 -0
  232. package/dialog/harness.d.ts +13 -0
  233. package/dialog/harness.js +16 -0
  234. package/dialog/harness.js.map +1 -0
  235. package/dialog/internal/_dialog.scss +248 -0
  236. package/dialog/internal/animations.d.ts +47 -0
  237. package/dialog/internal/animations.js +119 -0
  238. package/dialog/internal/animations.js.map +1 -0
  239. package/dialog/internal/dialog-styles.css +1 -0
  240. package/dialog/internal/dialog-styles.css.map +1 -0
  241. package/dialog/internal/dialog-styles.d.ts +1 -0
  242. package/dialog/internal/dialog-styles.js +10 -0
  243. package/dialog/internal/dialog-styles.js.map +1 -0
  244. package/dialog/internal/dialog-styles.scss +10 -0
  245. package/dialog/internal/dialog.d.ts +131 -0
  246. package/dialog/internal/dialog.js +556 -0
  247. package/dialog/internal/dialog.js.map +1 -0
  248. package/divider/_divider.scss +6 -0
  249. package/divider/divider.d.ts +25 -0
  250. package/divider/divider.js +26 -0
  251. package/divider/divider.js.map +1 -0
  252. package/divider/internal/_divider.scss +61 -0
  253. package/divider/internal/divider-styles.css +1 -0
  254. package/divider/internal/divider-styles.css.map +1 -0
  255. package/divider/internal/divider-styles.d.ts +1 -0
  256. package/divider/internal/divider-styles.js +10 -0
  257. package/divider/internal/divider-styles.js.map +1 -0
  258. package/divider/internal/divider-styles.scss +10 -0
  259. package/divider/internal/divider.d.ts +23 -0
  260. package/divider/internal/divider.js +38 -0
  261. package/divider/internal/divider.js.map +1 -0
  262. package/elevation/_elevation.scss +6 -0
  263. package/elevation/elevation.d.ts +23 -0
  264. package/elevation/elevation.js +24 -0
  265. package/elevation/elevation.js.map +1 -0
  266. package/elevation/internal/_elevation.scss +176 -0
  267. package/elevation/internal/elevation-styles.css +1 -0
  268. package/elevation/internal/elevation-styles.css.map +1 -0
  269. package/elevation/internal/elevation-styles.d.ts +1 -0
  270. package/elevation/internal/elevation-styles.js +10 -0
  271. package/elevation/internal/elevation-styles.js.map +1 -0
  272. package/elevation/internal/elevation-styles.scss +10 -0
  273. package/elevation/internal/elevation.d.ts +13 -0
  274. package/elevation/internal/elevation.js +21 -0
  275. package/elevation/internal/elevation.js.map +1 -0
  276. package/fab/_fab.scss +7 -0
  277. package/fab/branded-fab.d.ts +57 -0
  278. package/fab/branded-fab.js +55 -0
  279. package/fab/branded-fab.js.map +1 -0
  280. package/fab/fab.d.ts +44 -0
  281. package/fab/fab.js +45 -0
  282. package/fab/fab.js.map +1 -0
  283. package/fab/harness.d.ts +13 -0
  284. package/fab/harness.js +16 -0
  285. package/fab/harness.js.map +1 -0
  286. package/fab/internal/_fab-branded.scss +37 -0
  287. package/fab/internal/_fab.scss +206 -0
  288. package/fab/internal/_shared.scss +248 -0
  289. package/fab/internal/fab-branded-styles.css +1 -0
  290. package/fab/internal/fab-branded-styles.css.map +1 -0
  291. package/fab/internal/fab-branded-styles.d.ts +1 -0
  292. package/fab/internal/fab-branded-styles.js +10 -0
  293. package/fab/internal/fab-branded-styles.js.map +1 -0
  294. package/fab/internal/fab-branded-styles.scss +10 -0
  295. package/fab/internal/fab-styles.css +1 -0
  296. package/fab/internal/fab-styles.css.map +1 -0
  297. package/fab/internal/fab-styles.d.ts +1 -0
  298. package/fab/internal/fab-styles.js +10 -0
  299. package/fab/internal/fab-styles.js.map +1 -0
  300. package/fab/internal/fab-styles.scss +10 -0
  301. package/fab/internal/fab.d.ts +25 -0
  302. package/fab/internal/fab.js +30 -0
  303. package/fab/internal/fab.js.map +1 -0
  304. package/fab/internal/forced-colors-styles.css +1 -0
  305. package/fab/internal/forced-colors-styles.css.map +1 -0
  306. package/fab/internal/forced-colors-styles.d.ts +1 -0
  307. package/fab/internal/forced-colors-styles.js +10 -0
  308. package/fab/internal/forced-colors-styles.js.map +1 -0
  309. package/fab/internal/forced-colors-styles.scss +29 -0
  310. package/fab/internal/shared-styles.css +1 -0
  311. package/fab/internal/shared-styles.css.map +1 -0
  312. package/fab/internal/shared-styles.d.ts +1 -0
  313. package/fab/internal/shared-styles.js +10 -0
  314. package/fab/internal/shared-styles.js.map +1 -0
  315. package/fab/internal/shared-styles.scss +10 -0
  316. package/fab/internal/shared.d.ts +44 -0
  317. package/fab/internal/shared.js +92 -0
  318. package/fab/internal/shared.js.map +1 -0
  319. package/field/_filled-field.scss +6 -0
  320. package/field/_outlined-field.scss +6 -0
  321. package/field/filled-field.d.ts +20 -0
  322. package/field/filled-field.js +22 -0
  323. package/field/filled-field.js.map +1 -0
  324. package/field/harness.d.ts +16 -0
  325. package/field/harness.js +29 -0
  326. package/field/harness.js.map +1 -0
  327. package/field/internal/_content.scss +208 -0
  328. package/field/internal/_filled-field.scss +208 -0
  329. package/field/internal/_label.scss +102 -0
  330. package/field/internal/_outlined-field.scss +344 -0
  331. package/field/internal/_shared.scss +78 -0
  332. package/field/internal/_supporting-text.scss +61 -0
  333. package/field/internal/field.d.ts +67 -0
  334. package/field/internal/field.js +357 -0
  335. package/field/internal/field.js.map +1 -0
  336. package/field/internal/filled-field.d.ts +13 -0
  337. package/field/internal/filled-field.js +22 -0
  338. package/field/internal/filled-field.js.map +1 -0
  339. package/field/internal/filled-styles.css +1 -0
  340. package/field/internal/filled-styles.css.map +1 -0
  341. package/field/internal/filled-styles.d.ts +1 -0
  342. package/field/internal/filled-styles.js +10 -0
  343. package/field/internal/filled-styles.js.map +1 -0
  344. package/field/internal/filled-styles.scss +8 -0
  345. package/field/internal/outlined-field.d.ts +12 -0
  346. package/field/internal/outlined-field.js +26 -0
  347. package/field/internal/outlined-field.js.map +1 -0
  348. package/field/internal/outlined-styles.css +1 -0
  349. package/field/internal/outlined-styles.css.map +1 -0
  350. package/field/internal/outlined-styles.d.ts +1 -0
  351. package/field/internal/outlined-styles.js +10 -0
  352. package/field/internal/outlined-styles.js.map +1 -0
  353. package/field/internal/outlined-styles.scss +7 -0
  354. package/field/internal/shared-styles.css +1 -0
  355. package/field/internal/shared-styles.css.map +1 -0
  356. package/field/internal/shared-styles.d.ts +1 -0
  357. package/field/internal/shared-styles.js +10 -0
  358. package/field/internal/shared-styles.js.map +1 -0
  359. package/field/internal/shared-styles.scss +8 -0
  360. package/field/outlined-field.d.ts +20 -0
  361. package/field/outlined-field.js +22 -0
  362. package/field/outlined-field.js.map +1 -0
  363. package/focus/_focus-ring.scss +6 -0
  364. package/focus/internal/_focus-ring.scss +113 -0
  365. package/focus/internal/focus-ring-styles.css +1 -0
  366. package/focus/internal/focus-ring-styles.css.map +1 -0
  367. package/focus/internal/focus-ring-styles.d.ts +1 -0
  368. package/focus/internal/focus-ring-styles.js +10 -0
  369. package/focus/internal/focus-ring-styles.js.map +1 -0
  370. package/focus/internal/focus-ring-styles.scss +10 -0
  371. package/focus/internal/focus-ring.d.ts +39 -0
  372. package/focus/internal/focus-ring.js +100 -0
  373. package/focus/internal/focus-ring.js.map +1 -0
  374. package/focus/md-focus-ring.d.ts +21 -0
  375. package/focus/md-focus-ring.js +22 -0
  376. package/focus/md-focus-ring.js.map +1 -0
  377. package/icon/_icon.scss +6 -0
  378. package/icon/icon.d.ts +20 -0
  379. package/icon/icon.js +21 -0
  380. package/icon/icon.js.map +1 -0
  381. package/icon/internal/_icon.scss +76 -0
  382. package/icon/internal/icon-styles.css +1 -0
  383. package/icon/internal/icon-styles.css.map +1 -0
  384. package/icon/internal/icon-styles.d.ts +1 -0
  385. package/icon/internal/icon-styles.js +10 -0
  386. package/icon/internal/icon-styles.js.map +1 -0
  387. package/icon/internal/icon-styles.scss +10 -0
  388. package/icon/internal/icon.d.ts +13 -0
  389. package/icon/internal/icon.js +28 -0
  390. package/icon/internal/icon.js.map +1 -0
  391. package/iconbutton/_filled-icon-button.scss +6 -0
  392. package/iconbutton/_filled-tonal-icon-button.scss +6 -0
  393. package/iconbutton/_icon-button.scss +6 -0
  394. package/iconbutton/_outlined-icon-button.scss +6 -0
  395. package/iconbutton/filled-icon-button.d.ts +39 -0
  396. package/iconbutton/filled-icon-button.js +42 -0
  397. package/iconbutton/filled-icon-button.js.map +1 -0
  398. package/iconbutton/filled-tonal-icon-button.d.ts +39 -0
  399. package/iconbutton/filled-tonal-icon-button.js +42 -0
  400. package/iconbutton/filled-tonal-icon-button.js.map +1 -0
  401. package/iconbutton/harness.d.ts +13 -0
  402. package/iconbutton/harness.js +19 -0
  403. package/iconbutton/harness.js.map +1 -0
  404. package/iconbutton/icon-button.d.ts +38 -0
  405. package/iconbutton/icon-button.js +41 -0
  406. package/iconbutton/icon-button.js.map +1 -0
  407. package/iconbutton/internal/_filled-icon-button.scss +146 -0
  408. package/iconbutton/internal/_filled-tonal-icon-button.scss +146 -0
  409. package/iconbutton/internal/_icon-button.scss +131 -0
  410. package/iconbutton/internal/_outlined-icon-button.scss +157 -0
  411. package/iconbutton/internal/_shared.scss +117 -0
  412. package/iconbutton/internal/filled-styles.css +1 -0
  413. package/iconbutton/internal/filled-styles.css.map +1 -0
  414. package/iconbutton/internal/filled-styles.d.ts +1 -0
  415. package/iconbutton/internal/filled-styles.js +10 -0
  416. package/iconbutton/internal/filled-styles.js.map +1 -0
  417. package/iconbutton/internal/filled-styles.scss +10 -0
  418. package/iconbutton/internal/filled-tonal-styles.css +1 -0
  419. package/iconbutton/internal/filled-tonal-styles.css.map +1 -0
  420. package/iconbutton/internal/filled-tonal-styles.d.ts +1 -0
  421. package/iconbutton/internal/filled-tonal-styles.js +10 -0
  422. package/iconbutton/internal/filled-tonal-styles.js.map +1 -0
  423. package/iconbutton/internal/filled-tonal-styles.scss +10 -0
  424. package/iconbutton/internal/icon-button.d.ts +106 -0
  425. package/iconbutton/internal/icon-button.js +260 -0
  426. package/iconbutton/internal/icon-button.js.map +1 -0
  427. package/iconbutton/internal/outlined-styles.css +1 -0
  428. package/iconbutton/internal/outlined-styles.css.map +1 -0
  429. package/iconbutton/internal/outlined-styles.d.ts +1 -0
  430. package/iconbutton/internal/outlined-styles.js +10 -0
  431. package/iconbutton/internal/outlined-styles.js.map +1 -0
  432. package/iconbutton/internal/outlined-styles.scss +10 -0
  433. package/iconbutton/internal/shared-styles.css +1 -0
  434. package/iconbutton/internal/shared-styles.css.map +1 -0
  435. package/iconbutton/internal/shared-styles.d.ts +1 -0
  436. package/iconbutton/internal/shared-styles.js +10 -0
  437. package/iconbutton/internal/shared-styles.js.map +1 -0
  438. package/iconbutton/internal/shared-styles.scss +10 -0
  439. package/iconbutton/internal/standard-styles.css +1 -0
  440. package/iconbutton/internal/standard-styles.css.map +1 -0
  441. package/iconbutton/internal/standard-styles.d.ts +1 -0
  442. package/iconbutton/internal/standard-styles.js +10 -0
  443. package/iconbutton/internal/standard-styles.js.map +1 -0
  444. package/iconbutton/internal/standard-styles.scss +10 -0
  445. package/iconbutton/outlined-icon-button.d.ts +38 -0
  446. package/iconbutton/outlined-icon-button.js +41 -0
  447. package/iconbutton/outlined-icon-button.js.map +1 -0
  448. package/internal/aria/aria.d.ts +103 -0
  449. package/internal/aria/aria.js +81 -0
  450. package/internal/aria/aria.js.map +1 -0
  451. package/internal/aria/delegate.d.ts +54 -0
  452. package/internal/aria/delegate.js +176 -0
  453. package/internal/aria/delegate.js.map +1 -0
  454. package/internal/controller/attachable-controller.d.ts +114 -0
  455. package/internal/controller/attachable-controller.js +121 -0
  456. package/internal/controller/attachable-controller.js.map +1 -0
  457. package/internal/controller/form-submitter.d.ts +70 -0
  458. package/internal/controller/form-submitter.js +69 -0
  459. package/internal/controller/form-submitter.js.map +1 -0
  460. package/internal/controller/is-rtl.d.ts +14 -0
  461. package/internal/controller/is-rtl.js +18 -0
  462. package/internal/controller/is-rtl.js.map +1 -0
  463. package/internal/controller/string-converter.d.ts +9 -0
  464. package/internal/controller/string-converter.js +14 -0
  465. package/internal/controller/string-converter.js.map +1 -0
  466. package/internal/events/dispatch-hooks.d.ts +85 -0
  467. package/internal/events/dispatch-hooks.js +151 -0
  468. package/internal/events/dispatch-hooks.js.map +1 -0
  469. package/internal/events/form-label-activation.d.ts +55 -0
  470. package/internal/events/form-label-activation.js +96 -0
  471. package/internal/events/form-label-activation.js.map +1 -0
  472. package/internal/events/redispatch-event.d.ts +27 -0
  473. package/internal/events/redispatch-event.js +40 -0
  474. package/internal/events/redispatch-event.js.map +1 -0
  475. package/internal/motion/_animation.scss +33 -0
  476. package/internal/motion/animation.d.ts +80 -0
  477. package/internal/motion/animation.js +101 -0
  478. package/internal/motion/animation.js.map +1 -0
  479. package/internal/sass/_string-ext.scss +195 -0
  480. package/internal/sass/_var.scss +237 -0
  481. package/labs/badge/_badge.scss +6 -0
  482. package/labs/badge/badge.d.ts +19 -0
  483. package/labs/badge/badge.js +20 -0
  484. package/labs/badge/badge.js.map +1 -0
  485. package/labs/badge/internal/_badge.scss +76 -0
  486. package/labs/badge/internal/badge-styles.css +1 -0
  487. package/labs/badge/internal/badge-styles.css.map +1 -0
  488. package/labs/badge/internal/badge-styles.d.ts +1 -0
  489. package/labs/badge/internal/badge-styles.js +10 -0
  490. package/labs/badge/internal/badge-styles.js.map +1 -0
  491. package/labs/badge/internal/badge-styles.scss +10 -0
  492. package/labs/badge/internal/badge.d.ts +13 -0
  493. package/labs/badge/internal/badge.js +28 -0
  494. package/labs/badge/internal/badge.js.map +1 -0
  495. package/labs/behaviors/constraint-validation.d.ts +133 -0
  496. package/labs/behaviors/constraint-validation.js +131 -0
  497. package/labs/behaviors/constraint-validation.js.map +1 -0
  498. package/labs/behaviors/element-internals.d.ts +45 -0
  499. package/labs/behaviors/element-internals.js +46 -0
  500. package/labs/behaviors/element-internals.js.map +1 -0
  501. package/labs/behaviors/focusable.d.ts +39 -0
  502. package/labs/behaviors/focusable.js +87 -0
  503. package/labs/behaviors/focusable.js.map +1 -0
  504. package/labs/behaviors/form-associated.d.ts +199 -0
  505. package/labs/behaviors/form-associated.js +175 -0
  506. package/labs/behaviors/form-associated.js.map +1 -0
  507. package/labs/behaviors/mixin.d.ts +54 -0
  508. package/labs/behaviors/mixin.js +7 -0
  509. package/labs/behaviors/mixin.js.map +1 -0
  510. package/labs/behaviors/on-report-validity.d.ts +71 -0
  511. package/labs/behaviors/on-report-validity.js +289 -0
  512. package/labs/behaviors/on-report-validity.js.map +1 -0
  513. package/labs/behaviors/validators/checkbox-validator.d.ts +35 -0
  514. package/labs/behaviors/validators/checkbox-validator.js +32 -0
  515. package/labs/behaviors/validators/checkbox-validator.js.map +1 -0
  516. package/labs/behaviors/validators/radio-validator.d.ts +38 -0
  517. package/labs/behaviors/validators/radio-validator.js +65 -0
  518. package/labs/behaviors/validators/radio-validator.js.map +1 -0
  519. package/labs/behaviors/validators/select-validator.d.ts +35 -0
  520. package/labs/behaviors/validators/select-validator.js +33 -0
  521. package/labs/behaviors/validators/select-validator.js.map +1 -0
  522. package/labs/behaviors/validators/text-field-validator.d.ts +110 -0
  523. package/labs/behaviors/validators/text-field-validator.js +154 -0
  524. package/labs/behaviors/validators/text-field-validator.js.map +1 -0
  525. package/labs/behaviors/validators/validator.d.ts +96 -0
  526. package/labs/behaviors/validators/validator.js +73 -0
  527. package/labs/behaviors/validators/validator.js.map +1 -0
  528. package/labs/card/_elevated-card.scss +6 -0
  529. package/labs/card/_filled-card.scss +6 -0
  530. package/labs/card/_outlined-card.scss +6 -0
  531. package/labs/card/elevated-card.d.ts +19 -0
  532. package/labs/card/elevated-card.js +21 -0
  533. package/labs/card/elevated-card.js.map +1 -0
  534. package/labs/card/filled-card.d.ts +19 -0
  535. package/labs/card/filled-card.js +21 -0
  536. package/labs/card/filled-card.js.map +1 -0
  537. package/labs/card/internal/_elevated-card.scss +35 -0
  538. package/labs/card/internal/_filled-card.scss +35 -0
  539. package/labs/card/internal/_outlined-card.scss +40 -0
  540. package/labs/card/internal/_shared.scss +62 -0
  541. package/labs/card/internal/card.d.ts +13 -0
  542. package/labs/card/internal/card.js +21 -0
  543. package/labs/card/internal/card.js.map +1 -0
  544. package/labs/card/internal/elevated-styles.css +1 -0
  545. package/labs/card/internal/elevated-styles.css.map +1 -0
  546. package/labs/card/internal/elevated-styles.d.ts +1 -0
  547. package/labs/card/internal/elevated-styles.js +10 -0
  548. package/labs/card/internal/elevated-styles.js.map +1 -0
  549. package/labs/card/internal/elevated-styles.scss +10 -0
  550. package/labs/card/internal/filled-styles.css +1 -0
  551. package/labs/card/internal/filled-styles.css.map +1 -0
  552. package/labs/card/internal/filled-styles.d.ts +1 -0
  553. package/labs/card/internal/filled-styles.js +10 -0
  554. package/labs/card/internal/filled-styles.js.map +1 -0
  555. package/labs/card/internal/filled-styles.scss +10 -0
  556. package/labs/card/internal/outlined-styles.css +1 -0
  557. package/labs/card/internal/outlined-styles.css.map +1 -0
  558. package/labs/card/internal/outlined-styles.d.ts +1 -0
  559. package/labs/card/internal/outlined-styles.js +10 -0
  560. package/labs/card/internal/outlined-styles.js.map +1 -0
  561. package/labs/card/internal/outlined-styles.scss +10 -0
  562. package/labs/card/internal/shared-styles.css +1 -0
  563. package/labs/card/internal/shared-styles.css.map +1 -0
  564. package/labs/card/internal/shared-styles.d.ts +1 -0
  565. package/labs/card/internal/shared-styles.js +10 -0
  566. package/labs/card/internal/shared-styles.js.map +1 -0
  567. package/labs/card/internal/shared-styles.scss +10 -0
  568. package/labs/card/outlined-card.d.ts +19 -0
  569. package/labs/card/outlined-card.js +21 -0
  570. package/labs/card/outlined-card.js.map +1 -0
  571. package/labs/item/internal/_item.scss +99 -0
  572. package/labs/item/internal/item-styles.css +1 -0
  573. package/labs/item/internal/item-styles.css.map +1 -0
  574. package/labs/item/internal/item-styles.d.ts +1 -0
  575. package/labs/item/internal/item-styles.js +10 -0
  576. package/labs/item/internal/item-styles.js.map +1 -0
  577. package/labs/item/internal/item-styles.scss +10 -0
  578. package/labs/item/internal/item.d.ts +22 -0
  579. package/labs/item/internal/item.js +78 -0
  580. package/labs/item/internal/item.js.map +1 -0
  581. package/labs/item/item.d.ts +74 -0
  582. package/labs/item/item.js +75 -0
  583. package/labs/item/item.js.map +1 -0
  584. package/labs/navigationbar/_navigation-bar.scss +6 -0
  585. package/labs/navigationbar/harness.d.ts +19 -0
  586. package/labs/navigationbar/harness.js +29 -0
  587. package/labs/navigationbar/harness.js.map +1 -0
  588. package/labs/navigationbar/internal/_navigation-bar.scss +70 -0
  589. package/labs/navigationbar/internal/constants.d.ts +17 -0
  590. package/labs/navigationbar/internal/constants.js +7 -0
  591. package/labs/navigationbar/internal/constants.js.map +1 -0
  592. package/labs/navigationbar/internal/navigation-bar-styles.css +1 -0
  593. package/labs/navigationbar/internal/navigation-bar-styles.css.map +1 -0
  594. package/labs/navigationbar/internal/navigation-bar-styles.d.ts +1 -0
  595. package/labs/navigationbar/internal/navigation-bar-styles.js +10 -0
  596. package/labs/navigationbar/internal/navigation-bar-styles.js.map +1 -0
  597. package/labs/navigationbar/internal/navigation-bar-styles.scss +10 -0
  598. package/labs/navigationbar/internal/navigation-bar.d.ts +32 -0
  599. package/labs/navigationbar/internal/navigation-bar.js +144 -0
  600. package/labs/navigationbar/internal/navigation-bar.js.map +1 -0
  601. package/labs/navigationbar/internal/state.d.ts +23 -0
  602. package/labs/navigationbar/internal/state.js +7 -0
  603. package/labs/navigationbar/internal/state.js.map +1 -0
  604. package/labs/navigationbar/navigation-bar.d.ts +19 -0
  605. package/labs/navigationbar/navigation-bar.js +20 -0
  606. package/labs/navigationbar/navigation-bar.js.map +1 -0
  607. package/labs/navigationdrawer/_navigation-drawer-modal.scss +6 -0
  608. package/labs/navigationdrawer/_navigation-drawer.scss +6 -0
  609. package/labs/navigationdrawer/internal/_navigation-drawer-modal.scss +110 -0
  610. package/labs/navigationdrawer/internal/_navigation-drawer.scss +97 -0
  611. package/labs/navigationdrawer/internal/_shared.scss +31 -0
  612. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.css +1 -0
  613. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.css.map +1 -0
  614. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.d.ts +1 -0
  615. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.js +10 -0
  616. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.js.map +1 -0
  617. package/labs/navigationdrawer/internal/navigation-drawer-modal-styles.scss +10 -0
  618. package/labs/navigationdrawer/internal/navigation-drawer-modal.d.ts +24 -0
  619. package/labs/navigationdrawer/internal/navigation-drawer-modal.js +87 -0
  620. package/labs/navigationdrawer/internal/navigation-drawer-modal.js.map +1 -0
  621. package/labs/navigationdrawer/internal/navigation-drawer-styles.css +1 -0
  622. package/labs/navigationdrawer/internal/navigation-drawer-styles.css.map +1 -0
  623. package/labs/navigationdrawer/internal/navigation-drawer-styles.d.ts +1 -0
  624. package/labs/navigationdrawer/internal/navigation-drawer-styles.js +10 -0
  625. package/labs/navigationdrawer/internal/navigation-drawer-styles.js.map +1 -0
  626. package/labs/navigationdrawer/internal/navigation-drawer-styles.scss +10 -0
  627. package/labs/navigationdrawer/internal/navigation-drawer.d.ts +22 -0
  628. package/labs/navigationdrawer/internal/navigation-drawer.js +70 -0
  629. package/labs/navigationdrawer/internal/navigation-drawer.js.map +1 -0
  630. package/labs/navigationdrawer/internal/shared-styles.css +1 -0
  631. package/labs/navigationdrawer/internal/shared-styles.css.map +1 -0
  632. package/labs/navigationdrawer/internal/shared-styles.d.ts +1 -0
  633. package/labs/navigationdrawer/internal/shared-styles.js +10 -0
  634. package/labs/navigationdrawer/internal/shared-styles.js.map +1 -0
  635. package/labs/navigationdrawer/internal/shared-styles.scss +10 -0
  636. package/labs/navigationdrawer/navigation-drawer-modal.d.ts +18 -0
  637. package/labs/navigationdrawer/navigation-drawer-modal.js +21 -0
  638. package/labs/navigationdrawer/navigation-drawer-modal.js.map +1 -0
  639. package/labs/navigationdrawer/navigation-drawer.d.ts +18 -0
  640. package/labs/navigationdrawer/navigation-drawer.js +21 -0
  641. package/labs/navigationdrawer/navigation-drawer.js.map +1 -0
  642. package/labs/navigationtab/_navigation-tab.scss +6 -0
  643. package/labs/navigationtab/harness.d.ts +13 -0
  644. package/labs/navigationtab/harness.js +16 -0
  645. package/labs/navigationtab/harness.js.map +1 -0
  646. package/labs/navigationtab/internal/_navigation-tab.scss +264 -0
  647. package/labs/navigationtab/internal/navigation-tab-styles.css +1 -0
  648. package/labs/navigationtab/internal/navigation-tab-styles.css.map +1 -0
  649. package/labs/navigationtab/internal/navigation-tab-styles.d.ts +1 -0
  650. package/labs/navigationtab/internal/navigation-tab-styles.js +10 -0
  651. package/labs/navigationtab/internal/navigation-tab-styles.js.map +1 -0
  652. package/labs/navigationtab/internal/navigation-tab-styles.scss +10 -0
  653. package/labs/navigationtab/internal/navigation-tab.d.ts +38 -0
  654. package/labs/navigationtab/internal/navigation-tab.js +132 -0
  655. package/labs/navigationtab/internal/navigation-tab.js.map +1 -0
  656. package/labs/navigationtab/internal/state.d.ts +18 -0
  657. package/labs/navigationtab/internal/state.js +7 -0
  658. package/labs/navigationtab/internal/state.js.map +1 -0
  659. package/labs/navigationtab/navigation-tab.d.ts +19 -0
  660. package/labs/navigationtab/navigation-tab.js +20 -0
  661. package/labs/navigationtab/navigation-tab.js.map +1 -0
  662. package/labs/segmentedbutton/internal/_outlined-segmented-button.scss +42 -0
  663. package/labs/segmentedbutton/internal/_shared.scss +361 -0
  664. package/labs/segmentedbutton/internal/outlined-segmented-button.d.ts +24 -0
  665. package/labs/segmentedbutton/internal/outlined-segmented-button.js +22 -0
  666. package/labs/segmentedbutton/internal/outlined-segmented-button.js.map +1 -0
  667. package/labs/segmentedbutton/internal/outlined-styles.css +1 -0
  668. package/labs/segmentedbutton/internal/outlined-styles.css.map +1 -0
  669. package/labs/segmentedbutton/internal/outlined-styles.d.ts +1 -0
  670. package/labs/segmentedbutton/internal/outlined-styles.js +10 -0
  671. package/labs/segmentedbutton/internal/outlined-styles.js.map +1 -0
  672. package/labs/segmentedbutton/internal/outlined-styles.scss +10 -0
  673. package/labs/segmentedbutton/internal/segmented-button.d.ts +49 -0
  674. package/labs/segmentedbutton/internal/segmented-button.js +170 -0
  675. package/labs/segmentedbutton/internal/segmented-button.js.map +1 -0
  676. package/labs/segmentedbutton/internal/shared-styles.css +1 -0
  677. package/labs/segmentedbutton/internal/shared-styles.css.map +1 -0
  678. package/labs/segmentedbutton/internal/shared-styles.d.ts +1 -0
  679. package/labs/segmentedbutton/internal/shared-styles.js +10 -0
  680. package/labs/segmentedbutton/internal/shared-styles.js.map +1 -0
  681. package/labs/segmentedbutton/internal/shared-styles.scss +10 -0
  682. package/labs/segmentedbutton/outlined-segmented-button.d.ts +21 -0
  683. package/labs/segmentedbutton/outlined-segmented-button.js +23 -0
  684. package/labs/segmentedbutton/outlined-segmented-button.js.map +1 -0
  685. package/labs/segmentedbuttonset/internal/_outlined-segmented-button-set.scss +40 -0
  686. package/labs/segmentedbuttonset/internal/_shared.scss +33 -0
  687. package/labs/segmentedbuttonset/internal/outlined-segmented-button-set.d.ts +14 -0
  688. package/labs/segmentedbuttonset/internal/outlined-segmented-button-set.js +18 -0
  689. package/labs/segmentedbuttonset/internal/outlined-segmented-button-set.js.map +1 -0
  690. package/labs/segmentedbuttonset/internal/outlined-styles.css +1 -0
  691. package/labs/segmentedbuttonset/internal/outlined-styles.css.map +1 -0
  692. package/labs/segmentedbuttonset/internal/outlined-styles.d.ts +1 -0
  693. package/labs/segmentedbuttonset/internal/outlined-styles.js +10 -0
  694. package/labs/segmentedbuttonset/internal/outlined-styles.js.map +1 -0
  695. package/labs/segmentedbuttonset/internal/outlined-styles.scss +10 -0
  696. package/labs/segmentedbuttonset/internal/segmented-button-set.d.ts +33 -0
  697. package/labs/segmentedbuttonset/internal/segmented-button-set.js +112 -0
  698. package/labs/segmentedbuttonset/internal/segmented-button-set.js.map +1 -0
  699. package/labs/segmentedbuttonset/internal/shared-styles.css +1 -0
  700. package/labs/segmentedbuttonset/internal/shared-styles.css.map +1 -0
  701. package/labs/segmentedbuttonset/internal/shared-styles.d.ts +1 -0
  702. package/labs/segmentedbuttonset/internal/shared-styles.js +10 -0
  703. package/labs/segmentedbuttonset/internal/shared-styles.js.map +1 -0
  704. package/labs/segmentedbuttonset/internal/shared-styles.scss +10 -0
  705. package/labs/segmentedbuttonset/outlined-segmented-button-set.d.ts +21 -0
  706. package/labs/segmentedbuttonset/outlined-segmented-button-set.js +23 -0
  707. package/labs/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -0
  708. package/list/_list-item.scss +6 -0
  709. package/list/_list.scss +6 -0
  710. package/list/harness.d.ts +45 -0
  711. package/list/harness.js +49 -0
  712. package/list/harness.js.map +1 -0
  713. package/list/internal/_list.scss +43 -0
  714. package/list/internal/list-controller.d.ts +114 -0
  715. package/list/internal/list-controller.js +186 -0
  716. package/list/internal/list-controller.js.map +1 -0
  717. package/list/internal/list-navigation-helpers.d.ts +136 -0
  718. package/list/internal/list-navigation-helpers.js +230 -0
  719. package/list/internal/list-navigation-helpers.js.map +1 -0
  720. package/list/internal/list-styles.css +1 -0
  721. package/list/internal/list-styles.css.map +1 -0
  722. package/list/internal/list-styles.d.ts +1 -0
  723. package/list/internal/list-styles.js +10 -0
  724. package/list/internal/list-styles.js.map +1 -0
  725. package/list/internal/list-styles.scss +10 -0
  726. package/list/internal/list.d.ts +44 -0
  727. package/list/internal/list.js +71 -0
  728. package/list/internal/list.js.map +1 -0
  729. package/list/internal/listitem/_list-item.scss +163 -0
  730. package/list/internal/listitem/harness.d.ts +27 -0
  731. package/list/internal/listitem/harness.js +25 -0
  732. package/list/internal/listitem/harness.js.map +1 -0
  733. package/list/internal/listitem/list-item-styles.css +1 -0
  734. package/list/internal/listitem/list-item-styles.css.map +1 -0
  735. package/list/internal/listitem/list-item-styles.d.ts +1 -0
  736. package/list/internal/listitem/list-item-styles.js +10 -0
  737. package/list/internal/listitem/list-item-styles.js.map +1 -0
  738. package/list/internal/listitem/list-item-styles.scss +10 -0
  739. package/list/internal/listitem/list-item.d.ts +80 -0
  740. package/list/internal/listitem/list-item.js +192 -0
  741. package/list/internal/listitem/list-item.js.map +1 -0
  742. package/list/list-item.d.ts +54 -0
  743. package/list/list-item.js +54 -0
  744. package/list/list-item.js.map +1 -0
  745. package/list/list.d.ts +34 -0
  746. package/list/list.js +35 -0
  747. package/list/list.js.map +1 -0
  748. package/menu/_menu-item.scss +6 -0
  749. package/menu/_menu.scss +6 -0
  750. package/menu/harness.d.ts +21 -0
  751. package/menu/harness.js +38 -0
  752. package/menu/harness.js.map +1 -0
  753. package/menu/internal/_menu.scss +143 -0
  754. package/menu/internal/controllers/menuItemController.d.ts +126 -0
  755. package/menu/internal/controllers/menuItemController.js +138 -0
  756. package/menu/internal/controllers/menuItemController.js.map +1 -0
  757. package/menu/internal/controllers/shared.d.ts +229 -0
  758. package/menu/internal/controllers/shared.js +137 -0
  759. package/menu/internal/controllers/shared.js.map +1 -0
  760. package/menu/internal/controllers/surfacePositionController.d.ts +174 -0
  761. package/menu/internal/controllers/surfacePositionController.js +394 -0
  762. package/menu/internal/controllers/surfacePositionController.js.map +1 -0
  763. package/menu/internal/controllers/typeaheadController.d.ts +157 -0
  764. package/menu/internal/controllers/typeaheadController.js +259 -0
  765. package/menu/internal/controllers/typeaheadController.js.map +1 -0
  766. package/menu/internal/menu-styles.css +1 -0
  767. package/menu/internal/menu-styles.css.map +1 -0
  768. package/menu/internal/menu-styles.d.ts +1 -0
  769. package/menu/internal/menu-styles.js +10 -0
  770. package/menu/internal/menu-styles.js.map +1 -0
  771. package/menu/internal/menu-styles.scss +10 -0
  772. package/menu/internal/menu.d.ts +317 -0
  773. package/menu/internal/menu.js +914 -0
  774. package/menu/internal/menu.js.map +1 -0
  775. package/menu/internal/menuitem/_menu-item.scss +180 -0
  776. package/menu/internal/menuitem/harness.d.ts +13 -0
  777. package/menu/internal/menuitem/harness.js +12 -0
  778. package/menu/internal/menuitem/harness.js.map +1 -0
  779. package/menu/internal/menuitem/menu-item-styles.css +1 -0
  780. package/menu/internal/menuitem/menu-item-styles.css.map +1 -0
  781. package/menu/internal/menuitem/menu-item-styles.d.ts +1 -0
  782. package/menu/internal/menuitem/menu-item-styles.js +10 -0
  783. package/menu/internal/menuitem/menu-item-styles.js.map +1 -0
  784. package/menu/internal/menuitem/menu-item-styles.scss +10 -0
  785. package/menu/internal/menuitem/menu-item.d.ts +85 -0
  786. package/menu/internal/menuitem/menu-item.js +211 -0
  787. package/menu/internal/menuitem/menu-item.js.map +1 -0
  788. package/menu/internal/submenu/_sub-menu.scss +12 -0
  789. package/menu/internal/submenu/sub-menu-styles.css +1 -0
  790. package/menu/internal/submenu/sub-menu-styles.css.map +1 -0
  791. package/menu/internal/submenu/sub-menu-styles.d.ts +1 -0
  792. package/menu/internal/submenu/sub-menu-styles.js +10 -0
  793. package/menu/internal/submenu/sub-menu-styles.js.map +1 -0
  794. package/menu/internal/submenu/sub-menu-styles.scss +10 -0
  795. package/menu/internal/submenu/sub-menu.d.ts +102 -0
  796. package/menu/internal/submenu/sub-menu.js +364 -0
  797. package/menu/internal/submenu/sub-menu.js.map +1 -0
  798. package/menu/internal/types.d.ts +23 -0
  799. package/menu/internal/types.js +7 -0
  800. package/menu/internal/types.js.map +1 -0
  801. package/menu/menu-item.d.ts +32 -0
  802. package/menu/menu-item.js +31 -0
  803. package/menu/menu-item.js.map +1 -0
  804. package/menu/menu.d.ts +68 -0
  805. package/menu/menu.js +67 -0
  806. package/menu/menu.js.map +1 -0
  807. package/menu/sub-menu.d.ts +63 -0
  808. package/menu/sub-menu.js +64 -0
  809. package/menu/sub-menu.js.map +1 -0
  810. package/migrations/v2/query-selector-aria.d.ts +22 -0
  811. package/migrations/v2/query-selector-aria.js +30 -0
  812. package/migrations/v2/query-selector-aria.js.map +1 -0
  813. package/package.json +184 -0
  814. package/progress/_circular-progress.scss +6 -0
  815. package/progress/_linear-progress.scss +6 -0
  816. package/progress/circular-progress.d.ts +28 -0
  817. package/progress/circular-progress.js +29 -0
  818. package/progress/circular-progress.js.map +1 -0
  819. package/progress/harness.d.ts +20 -0
  820. package/progress/harness.js +25 -0
  821. package/progress/harness.js.map +1 -0
  822. package/progress/internal/_circular-progress.scss +287 -0
  823. package/progress/internal/_linear-progress.scss +335 -0
  824. package/progress/internal/circular-progress-styles.css +1 -0
  825. package/progress/internal/circular-progress-styles.css.map +1 -0
  826. package/progress/internal/circular-progress-styles.d.ts +1 -0
  827. package/progress/internal/circular-progress-styles.js +10 -0
  828. package/progress/internal/circular-progress-styles.js.map +1 -0
  829. package/progress/internal/circular-progress-styles.scss +8 -0
  830. package/progress/internal/circular-progress.d.ts +14 -0
  831. package/progress/internal/circular-progress.js +50 -0
  832. package/progress/internal/circular-progress.js.map +1 -0
  833. package/progress/internal/linear-progress-styles.css +1 -0
  834. package/progress/internal/linear-progress-styles.css.map +1 -0
  835. package/progress/internal/linear-progress-styles.d.ts +1 -0
  836. package/progress/internal/linear-progress-styles.js +10 -0
  837. package/progress/internal/linear-progress-styles.js.map +1 -0
  838. package/progress/internal/linear-progress-styles.scss +8 -0
  839. package/progress/internal/linear-progress.d.ts +17 -0
  840. package/progress/internal/linear-progress.js +54 -0
  841. package/progress/internal/linear-progress.js.map +1 -0
  842. package/progress/internal/progress.d.ts +36 -0
  843. package/progress/internal/progress.js +71 -0
  844. package/progress/internal/progress.js.map +1 -0
  845. package/progress/linear-progress.d.ts +27 -0
  846. package/progress/linear-progress.js +28 -0
  847. package/progress/linear-progress.js.map +1 -0
  848. package/radio/_radio.scss +6 -0
  849. package/radio/harness.d.ts +13 -0
  850. package/radio/harness.js +16 -0
  851. package/radio/harness.js.map +1 -0
  852. package/radio/internal/_radio.scss +203 -0
  853. package/radio/internal/radio-styles.css +1 -0
  854. package/radio/internal/radio-styles.css.map +1 -0
  855. package/radio/internal/radio-styles.d.ts +1 -0
  856. package/radio/internal/radio-styles.js +10 -0
  857. package/radio/internal/radio-styles.js.map +1 -0
  858. package/radio/internal/radio-styles.scss +10 -0
  859. package/radio/internal/radio.d.ts +55 -0
  860. package/radio/internal/radio.js +172 -0
  861. package/radio/internal/radio.js.map +1 -0
  862. package/radio/internal/single-selection-controller.d.ts +80 -0
  863. package/radio/internal/single-selection-controller.js +199 -0
  864. package/radio/internal/single-selection-controller.js.map +1 -0
  865. package/radio/radio.d.ts +31 -0
  866. package/radio/radio.js +32 -0
  867. package/radio/radio.js.map +1 -0
  868. package/ripple/_ripple.scss +6 -0
  869. package/ripple/internal/_ripple.scss +92 -0
  870. package/ripple/internal/ripple-styles.css +1 -0
  871. package/ripple/internal/ripple-styles.css.map +1 -0
  872. package/ripple/internal/ripple-styles.d.ts +1 -0
  873. package/ripple/internal/ripple-styles.js +10 -0
  874. package/ripple/internal/ripple-styles.js.map +1 -0
  875. package/ripple/internal/ripple-styles.scss +10 -0
  876. package/ripple/internal/ripple.d.ts +76 -0
  877. package/ripple/internal/ripple.js +423 -0
  878. package/ripple/internal/ripple.js.map +1 -0
  879. package/ripple/ripple.d.ts +28 -0
  880. package/ripple/ripple.js +29 -0
  881. package/ripple/ripple.js.map +1 -0
  882. package/select/_filled-select.scss +6 -0
  883. package/select/_outlined-select.scss +6 -0
  884. package/select/filled-select.d.ts +42 -0
  885. package/select/filled-select.js +44 -0
  886. package/select/filled-select.js.map +1 -0
  887. package/select/harness.d.ts +25 -0
  888. package/select/harness.js +58 -0
  889. package/select/harness.js.map +1 -0
  890. package/select/internal/_filled-select.scss +191 -0
  891. package/select/internal/_outlined-select.scss +164 -0
  892. package/select/internal/_shared.scss +102 -0
  893. package/select/internal/filled-select-styles.css +1 -0
  894. package/select/internal/filled-select-styles.css.map +1 -0
  895. package/select/internal/filled-select-styles.d.ts +1 -0
  896. package/select/internal/filled-select-styles.js +10 -0
  897. package/select/internal/filled-select-styles.js.map +1 -0
  898. package/select/internal/filled-select-styles.scss +10 -0
  899. package/select/internal/filled-select.d.ts +10 -0
  900. package/select/internal/filled-select.js +16 -0
  901. package/select/internal/filled-select.js.map +1 -0
  902. package/select/internal/outlined-select-styles.css +1 -0
  903. package/select/internal/outlined-select-styles.css.map +1 -0
  904. package/select/internal/outlined-select-styles.d.ts +1 -0
  905. package/select/internal/outlined-select-styles.js +10 -0
  906. package/select/internal/outlined-select-styles.js.map +1 -0
  907. package/select/internal/outlined-select-styles.scss +10 -0
  908. package/select/internal/outlined-select.d.ts +10 -0
  909. package/select/internal/outlined-select.js +16 -0
  910. package/select/internal/outlined-select.js.map +1 -0
  911. package/select/internal/select.d.ts +269 -0
  912. package/select/internal/select.js +758 -0
  913. package/select/internal/select.js.map +1 -0
  914. package/select/internal/selectoption/harness.d.ts +11 -0
  915. package/select/internal/selectoption/harness.js +12 -0
  916. package/select/internal/selectoption/harness.js.map +1 -0
  917. package/select/internal/selectoption/select-option.d.ts +112 -0
  918. package/select/internal/selectoption/select-option.js +196 -0
  919. package/select/internal/selectoption/select-option.js.map +1 -0
  920. package/select/internal/selectoption/selectOptionController.d.ts +71 -0
  921. package/select/internal/selectoption/selectOptionController.js +115 -0
  922. package/select/internal/selectoption/selectOptionController.js.map +1 -0
  923. package/select/internal/shared-styles.css +1 -0
  924. package/select/internal/shared-styles.css.map +1 -0
  925. package/select/internal/shared-styles.d.ts +1 -0
  926. package/select/internal/shared-styles.js +10 -0
  927. package/select/internal/shared-styles.js.map +1 -0
  928. package/select/internal/shared-styles.scss +10 -0
  929. package/select/internal/shared.d.ts +18 -0
  930. package/select/internal/shared.js +23 -0
  931. package/select/internal/shared.js.map +1 -0
  932. package/select/outlined-select.d.ts +42 -0
  933. package/select/outlined-select.js +44 -0
  934. package/select/outlined-select.js.map +1 -0
  935. package/select/select-option.d.ts +46 -0
  936. package/select/select-option.js +46 -0
  937. package/select/select-option.js.map +1 -0
  938. package/slider/_slider.scss +6 -0
  939. package/slider/harness.d.ts +21 -0
  940. package/slider/harness.js +70 -0
  941. package/slider/harness.js.map +1 -0
  942. package/slider/internal/_slider.scss +519 -0
  943. package/slider/internal/forced-colors-styles.css +1 -0
  944. package/slider/internal/forced-colors-styles.css.map +1 -0
  945. package/slider/internal/forced-colors-styles.d.ts +1 -0
  946. package/slider/internal/forced-colors-styles.js +10 -0
  947. package/slider/internal/forced-colors-styles.js.map +1 -0
  948. package/slider/internal/forced-colors-styles.scss +88 -0
  949. package/slider/internal/slider-styles.css +1 -0
  950. package/slider/internal/slider-styles.css.map +1 -0
  951. package/slider/internal/slider-styles.d.ts +1 -0
  952. package/slider/internal/slider-styles.js +10 -0
  953. package/slider/internal/slider-styles.js.map +1 -0
  954. package/slider/internal/slider-styles.scss +8 -0
  955. package/slider/internal/slider.d.ts +178 -0
  956. package/slider/internal/slider.js +714 -0
  957. package/slider/internal/slider.js.map +1 -0
  958. package/slider/slider.d.ts +32 -0
  959. package/slider/slider.js +34 -0
  960. package/slider/slider.js.map +1 -0
  961. package/switch/_switch.scss +6 -0
  962. package/switch/harness.d.ts +13 -0
  963. package/switch/harness.js +16 -0
  964. package/switch/harness.js.map +1 -0
  965. package/switch/internal/_handle.scss +183 -0
  966. package/switch/internal/_icon.scss +119 -0
  967. package/switch/internal/_switch.scss +101 -0
  968. package/switch/internal/_track.scss +124 -0
  969. package/switch/internal/switch-styles.css +1 -0
  970. package/switch/internal/switch-styles.css.map +1 -0
  971. package/switch/internal/switch-styles.d.ts +1 -0
  972. package/switch/internal/switch-styles.js +10 -0
  973. package/switch/internal/switch-styles.js.map +1 -0
  974. package/switch/internal/switch-styles.scss +10 -0
  975. package/switch/internal/switch.d.ts +75 -0
  976. package/switch/internal/switch.js +219 -0
  977. package/switch/internal/switch.js.map +1 -0
  978. package/switch/switch.d.ts +25 -0
  979. package/switch/switch.js +26 -0
  980. package/switch/switch.js.map +1 -0
  981. package/tabs/_primary-tab.scss +6 -0
  982. package/tabs/_secondary-tab.scss +6 -0
  983. package/tabs/harness.d.ts +23 -0
  984. package/tabs/harness.js +51 -0
  985. package/tabs/harness.js.map +1 -0
  986. package/tabs/internal/_primary-tab.scss +46 -0
  987. package/tabs/internal/_secondary-tab.scss +37 -0
  988. package/tabs/internal/_tab.scss +199 -0
  989. package/tabs/internal/_tabs.scss +47 -0
  990. package/tabs/internal/primary-tab-styles.css +1 -0
  991. package/tabs/internal/primary-tab-styles.css.map +1 -0
  992. package/tabs/internal/primary-tab-styles.d.ts +1 -0
  993. package/tabs/internal/primary-tab-styles.js +10 -0
  994. package/tabs/internal/primary-tab-styles.js.map +1 -0
  995. package/tabs/internal/primary-tab-styles.scss +10 -0
  996. package/tabs/internal/primary-tab.d.ts +18 -0
  997. package/tabs/internal/primary-tab.js +30 -0
  998. package/tabs/internal/primary-tab.js.map +1 -0
  999. package/tabs/internal/secondary-tab-styles.css +1 -0
  1000. package/tabs/internal/secondary-tab-styles.css.map +1 -0
  1001. package/tabs/internal/secondary-tab-styles.d.ts +1 -0
  1002. package/tabs/internal/secondary-tab-styles.js +10 -0
  1003. package/tabs/internal/secondary-tab-styles.js.map +1 -0
  1004. package/tabs/internal/secondary-tab-styles.scss +10 -0
  1005. package/tabs/internal/secondary-tab.d.ts +12 -0
  1006. package/tabs/internal/secondary-tab.js +16 -0
  1007. package/tabs/internal/secondary-tab.js.map +1 -0
  1008. package/tabs/internal/tab-styles.css +1 -0
  1009. package/tabs/internal/tab-styles.css.map +1 -0
  1010. package/tabs/internal/tab-styles.d.ts +1 -0
  1011. package/tabs/internal/tab-styles.js +10 -0
  1012. package/tabs/internal/tab-styles.js.map +1 -0
  1013. package/tabs/internal/tab-styles.scss +10 -0
  1014. package/tabs/internal/tab.d.ts +65 -0
  1015. package/tabs/internal/tab.js +204 -0
  1016. package/tabs/internal/tab.js.map +1 -0
  1017. package/tabs/internal/tabs-styles.css +1 -0
  1018. package/tabs/internal/tabs-styles.css.map +1 -0
  1019. package/tabs/internal/tabs-styles.d.ts +1 -0
  1020. package/tabs/internal/tabs-styles.js +10 -0
  1021. package/tabs/internal/tabs-styles.js.map +1 -0
  1022. package/tabs/internal/tabs-styles.scss +10 -0
  1023. package/tabs/internal/tabs.d.ts +78 -0
  1024. package/tabs/internal/tabs.js +291 -0
  1025. package/tabs/internal/tabs.js.map +1 -0
  1026. package/tabs/primary-tab.d.ts +21 -0
  1027. package/tabs/primary-tab.js +24 -0
  1028. package/tabs/primary-tab.js.map +1 -0
  1029. package/tabs/secondary-tab.d.ts +21 -0
  1030. package/tabs/secondary-tab.js +24 -0
  1031. package/tabs/secondary-tab.js.map +1 -0
  1032. package/tabs/tabs.d.ts +21 -0
  1033. package/tabs/tabs.js +23 -0
  1034. package/tabs/tabs.js.map +1 -0
  1035. package/testing/harness.d.ts +371 -0
  1036. package/testing/harness.js +737 -0
  1037. package/testing/harness.js.map +1 -0
  1038. package/testing/transform-pseudo-classes.d.ts +39 -0
  1039. package/testing/transform-pseudo-classes.js +172 -0
  1040. package/testing/transform-pseudo-classes.js.map +1 -0
  1041. package/textfield/_filled-text-field.scss +6 -0
  1042. package/textfield/_outlined-text-field.scss +6 -0
  1043. package/textfield/filled-text-field.d.ts +23 -0
  1044. package/textfield/filled-text-field.js +28 -0
  1045. package/textfield/filled-text-field.js.map +1 -0
  1046. package/textfield/harness.d.ts +51 -0
  1047. package/textfield/harness.js +112 -0
  1048. package/textfield/harness.js.map +1 -0
  1049. package/textfield/internal/_filled-text-field.scss +154 -0
  1050. package/textfield/internal/_icon.scss +36 -0
  1051. package/textfield/internal/_input.scss +91 -0
  1052. package/textfield/internal/_outlined-text-field.scss +134 -0
  1053. package/textfield/internal/_shared.scss +49 -0
  1054. package/textfield/internal/filled-styles.css +1 -0
  1055. package/textfield/internal/filled-styles.css.map +1 -0
  1056. package/textfield/internal/filled-styles.d.ts +1 -0
  1057. package/textfield/internal/filled-styles.js +10 -0
  1058. package/textfield/internal/filled-styles.js.map +1 -0
  1059. package/textfield/internal/filled-styles.scss +10 -0
  1060. package/textfield/internal/filled-text-field.d.ts +13 -0
  1061. package/textfield/internal/filled-text-field.js +18 -0
  1062. package/textfield/internal/filled-text-field.js.map +1 -0
  1063. package/textfield/internal/outlined-styles.css +1 -0
  1064. package/textfield/internal/outlined-styles.css.map +1 -0
  1065. package/textfield/internal/outlined-styles.d.ts +1 -0
  1066. package/textfield/internal/outlined-styles.js +10 -0
  1067. package/textfield/internal/outlined-styles.js.map +1 -0
  1068. package/textfield/internal/outlined-styles.scss +10 -0
  1069. package/textfield/internal/outlined-text-field.d.ts +13 -0
  1070. package/textfield/internal/outlined-text-field.js +18 -0
  1071. package/textfield/internal/outlined-text-field.js.map +1 -0
  1072. package/textfield/internal/shared-styles.css +1 -0
  1073. package/textfield/internal/shared-styles.css.map +1 -0
  1074. package/textfield/internal/shared-styles.d.ts +1 -0
  1075. package/textfield/internal/shared-styles.js +10 -0
  1076. package/textfield/internal/shared-styles.js.map +1 -0
  1077. package/textfield/internal/shared-styles.scss +10 -0
  1078. package/textfield/internal/text-field.d.ts +338 -0
  1079. package/textfield/internal/text-field.js +724 -0
  1080. package/textfield/internal/text-field.js.map +1 -0
  1081. package/textfield/outlined-text-field.d.ts +23 -0
  1082. package/textfield/outlined-text-field.js +28 -0
  1083. package/textfield/outlined-text-field.js.map +1 -0
  1084. package/tokens/_index.scss +66 -0
  1085. package/tokens/_md-comp-assist-chip.scss +153 -0
  1086. package/tokens/_md-comp-badge.scss +39 -0
  1087. package/tokens/_md-comp-checkbox.scss +156 -0
  1088. package/tokens/_md-comp-circular-progress.scss +79 -0
  1089. package/tokens/_md-comp-dialog.scss +112 -0
  1090. package/tokens/_md-comp-divider.scss +43 -0
  1091. package/tokens/_md-comp-elevated-button.scss +143 -0
  1092. package/tokens/_md-comp-elevated-card.scss +80 -0
  1093. package/tokens/_md-comp-elevation.scss +48 -0
  1094. package/tokens/_md-comp-fab-branded.scss +155 -0
  1095. package/tokens/_md-comp-fab.scss +296 -0
  1096. package/tokens/_md-comp-filled-button.scss +143 -0
  1097. package/tokens/_md-comp-filled-card.scss +80 -0
  1098. package/tokens/_md-comp-filled-field.scss +293 -0
  1099. package/tokens/_md-comp-filled-icon-button.scss +119 -0
  1100. package/tokens/_md-comp-filled-select.scss +198 -0
  1101. package/tokens/_md-comp-filled-text-field.scss +200 -0
  1102. package/tokens/_md-comp-filled-tonal-button.scss +143 -0
  1103. package/tokens/_md-comp-filled-tonal-icon-button.scss +123 -0
  1104. package/tokens/_md-comp-filter-chip.scss +265 -0
  1105. package/tokens/_md-comp-focus-ring.scss +78 -0
  1106. package/tokens/_md-comp-full-screen-dialog.scss +25 -0
  1107. package/tokens/_md-comp-icon-button.scss +94 -0
  1108. package/tokens/_md-comp-icon.scss +46 -0
  1109. package/tokens/_md-comp-input-chip.scss +247 -0
  1110. package/tokens/_md-comp-item.scss +88 -0
  1111. package/tokens/_md-comp-linear-progress.scss +64 -0
  1112. package/tokens/_md-comp-list-item.scss +173 -0
  1113. package/tokens/_md-comp-list.scss +44 -0
  1114. package/tokens/_md-comp-menu-item.scss +125 -0
  1115. package/tokens/_md-comp-menu.scss +59 -0
  1116. package/tokens/_md-comp-navigation-bar.scss +44 -0
  1117. package/tokens/_md-comp-navigation-drawer.scss +44 -0
  1118. package/tokens/_md-comp-outlined-button.scss +139 -0
  1119. package/tokens/_md-comp-outlined-card.scss +86 -0
  1120. package/tokens/_md-comp-outlined-field.scss +268 -0
  1121. package/tokens/_md-comp-outlined-icon-button.scss +117 -0
  1122. package/tokens/_md-comp-outlined-segmented-button.scss +123 -0
  1123. package/tokens/_md-comp-outlined-select.scss +186 -0
  1124. package/tokens/_md-comp-outlined-text-field.scss +187 -0
  1125. package/tokens/_md-comp-primary-tab.scss +160 -0
  1126. package/tokens/_md-comp-radio.scss +86 -0
  1127. package/tokens/_md-comp-ripple.scss +48 -0
  1128. package/tokens/_md-comp-secondary-tab.scss +158 -0
  1129. package/tokens/_md-comp-slider.scss +117 -0
  1130. package/tokens/_md-comp-suggestion-chip.scss +157 -0
  1131. package/tokens/_md-comp-switch.scss +187 -0
  1132. package/tokens/_md-comp-test-table.scss +43 -0
  1133. package/tokens/_md-comp-text-button.scss +132 -0
  1134. package/tokens/_md-ref-palette.scss +112 -0
  1135. package/tokens/_md-ref-typeface.scss +46 -0
  1136. package/tokens/_md-sys-color.scss +119 -0
  1137. package/tokens/_md-sys-elevation.scss +31 -0
  1138. package/tokens/_md-sys-motion.scss +12 -0
  1139. package/tokens/_md-sys-shape.scss +102 -0
  1140. package/tokens/_md-sys-state.scss +12 -0
  1141. package/tokens/_md-sys-typescale.scss +149 -0
  1142. package/tokens/internal/_shape.scss +93 -0
  1143. package/tokens/internal/_validate.scss +109 -0
  1144. package/tokens/v0_192/_index.scss +107 -0
  1145. package/tokens/v0_192/_md-comp-assist-chip.scss +111 -0
  1146. package/tokens/v0_192/_md-comp-badge.scss +61 -0
  1147. package/tokens/v0_192/_md-comp-banner.scss +76 -0
  1148. package/tokens/v0_192/_md-comp-bottom-app-bar.scss +36 -0
  1149. package/tokens/v0_192/_md-comp-carousel-item.scss +66 -0
  1150. package/tokens/v0_192/_md-comp-checkbox.scss +129 -0
  1151. package/tokens/v0_192/_md-comp-circular-progress-indicator.scss +41 -0
  1152. package/tokens/v0_192/_md-comp-data-table.scss +99 -0
  1153. package/tokens/v0_192/_md-comp-date-input-modal.scss +90 -0
  1154. package/tokens/v0_192/_md-comp-date-picker-docked.scss +247 -0
  1155. package/tokens/v0_192/_md-comp-date-picker-modal.scss +306 -0
  1156. package/tokens/v0_192/_md-comp-dialog.scss +124 -0
  1157. package/tokens/v0_192/_md-comp-divider.scss +28 -0
  1158. package/tokens/v0_192/_md-comp-elevated-button.scss +92 -0
  1159. package/tokens/v0_192/_md-comp-elevated-card.scss +60 -0
  1160. package/tokens/v0_192/_md-comp-extended-fab-branded.scss +89 -0
  1161. package/tokens/v0_192/_md-comp-extended-fab-primary.scss +97 -0
  1162. package/tokens/v0_192/_md-comp-extended-fab-secondary.scss +98 -0
  1163. package/tokens/v0_192/_md-comp-extended-fab-surface.scss +93 -0
  1164. package/tokens/v0_192/_md-comp-extended-fab-tertiary.scss +98 -0
  1165. package/tokens/v0_192/_md-comp-fab-branded-large.scss +63 -0
  1166. package/tokens/v0_192/_md-comp-fab-branded.scss +63 -0
  1167. package/tokens/v0_192/_md-comp-fab-primary-large.scss +68 -0
  1168. package/tokens/v0_192/_md-comp-fab-primary-small.scss +68 -0
  1169. package/tokens/v0_192/_md-comp-fab-primary.scss +68 -0
  1170. package/tokens/v0_192/_md-comp-fab-secondary-large.scss +69 -0
  1171. package/tokens/v0_192/_md-comp-fab-secondary-small.scss +69 -0
  1172. package/tokens/v0_192/_md-comp-fab-secondary.scss +69 -0
  1173. package/tokens/v0_192/_md-comp-fab-surface-large.scss +67 -0
  1174. package/tokens/v0_192/_md-comp-fab-surface-small.scss +67 -0
  1175. package/tokens/v0_192/_md-comp-fab-surface.scss +67 -0
  1176. package/tokens/v0_192/_md-comp-fab-tertiary-large.scss +69 -0
  1177. package/tokens/v0_192/_md-comp-fab-tertiary-small.scss +69 -0
  1178. package/tokens/v0_192/_md-comp-fab-tertiary.scss +69 -0
  1179. package/tokens/v0_192/_md-comp-filled-autocomplete.scss +239 -0
  1180. package/tokens/v0_192/_md-comp-filled-button.scss +92 -0
  1181. package/tokens/v0_192/_md-comp-filled-card.scss +62 -0
  1182. package/tokens/v0_192/_md-comp-filled-icon-button.scss +83 -0
  1183. package/tokens/v0_192/_md-comp-filled-menu-button.scss +101 -0
  1184. package/tokens/v0_192/_md-comp-filled-select.scss +273 -0
  1185. package/tokens/v0_192/_md-comp-filled-text-field.scss +193 -0
  1186. package/tokens/v0_192/_md-comp-filled-tonal-button.scss +102 -0
  1187. package/tokens/v0_192/_md-comp-filled-tonal-icon-button.scss +90 -0
  1188. package/tokens/v0_192/_md-comp-filter-chip.scss +210 -0
  1189. package/tokens/v0_192/_md-comp-full-screen-dialog.scss +114 -0
  1190. package/tokens/v0_192/_md-comp-icon-button.scss +74 -0
  1191. package/tokens/v0_192/_md-comp-input-chip.scss +187 -0
  1192. package/tokens/v0_192/_md-comp-linear-progress-indicator.scss +43 -0
  1193. package/tokens/v0_192/_md-comp-list.scss +255 -0
  1194. package/tokens/v0_192/_md-comp-menu.scss +44 -0
  1195. package/tokens/v0_192/_md-comp-navigation-bar.scss +115 -0
  1196. package/tokens/v0_192/_md-comp-navigation-drawer.scss +165 -0
  1197. package/tokens/v0_192/_md-comp-navigation-rail.scss +119 -0
  1198. package/tokens/v0_192/_md-comp-outlined-autocomplete.scss +229 -0
  1199. package/tokens/v0_192/_md-comp-outlined-button.scss +87 -0
  1200. package/tokens/v0_192/_md-comp-outlined-card.scss +66 -0
  1201. package/tokens/v0_192/_md-comp-outlined-icon-button.scss +83 -0
  1202. package/tokens/v0_192/_md-comp-outlined-menu-button.scss +97 -0
  1203. package/tokens/v0_192/_md-comp-outlined-segmented-button.scss +115 -0
  1204. package/tokens/v0_192/_md-comp-outlined-select.scss +263 -0
  1205. package/tokens/v0_192/_md-comp-outlined-text-field.scss +174 -0
  1206. package/tokens/v0_192/_md-comp-plain-tooltip.scss +58 -0
  1207. package/tokens/v0_192/_md-comp-primary-navigation-tab.scss +124 -0
  1208. package/tokens/v0_192/_md-comp-radio-button.scss +71 -0
  1209. package/tokens/v0_192/_md-comp-rich-tooltip.scss +122 -0
  1210. package/tokens/v0_192/_md-comp-scrim.scss +28 -0
  1211. package/tokens/v0_192/_md-comp-search-bar.scss +100 -0
  1212. package/tokens/v0_192/_md-comp-search-view.scss +94 -0
  1213. package/tokens/v0_192/_md-comp-secondary-navigation-tab.scss +87 -0
  1214. package/tokens/v0_192/_md-comp-sheet-bottom.scss +46 -0
  1215. package/tokens/v0_192/_md-comp-sheet-floating.scss +35 -0
  1216. package/tokens/v0_192/_md-comp-sheet-side.scss +94 -0
  1217. package/tokens/v0_192/_md-comp-slider.scss +118 -0
  1218. package/tokens/v0_192/_md-comp-snackbar.scss +130 -0
  1219. package/tokens/v0_192/_md-comp-standard-menu-button.scss +101 -0
  1220. package/tokens/v0_192/_md-comp-suggestion-chip.scss +127 -0
  1221. package/tokens/v0_192/_md-comp-switch.scss +141 -0
  1222. package/tokens/v0_192/_md-comp-text-button.scss +80 -0
  1223. package/tokens/v0_192/_md-comp-time-input.scss +220 -0
  1224. package/tokens/v0_192/_md-comp-time-picker.scss +267 -0
  1225. package/tokens/v0_192/_md-comp-top-app-bar-large.scss +64 -0
  1226. package/tokens/v0_192/_md-comp-top-app-bar-medium.scss +64 -0
  1227. package/tokens/v0_192/_md-comp-top-app-bar-small-centered.scss +71 -0
  1228. package/tokens/v0_192/_md-comp-top-app-bar-small.scss +67 -0
  1229. package/tokens/v0_192/_md-ref-palette.scss +109 -0
  1230. package/tokens/v0_192/_md-ref-typeface.scss +23 -0
  1231. package/tokens/v0_192/_md-sys-color.scss +135 -0
  1232. package/tokens/v0_192/_md-sys-elevation.scss +24 -0
  1233. package/tokens/v0_192/_md-sys-motion.scss +55 -0
  1234. package/tokens/v0_192/_md-sys-shape.scss +33 -0
  1235. package/tokens/v0_192/_md-sys-state.scss +22 -0
  1236. package/tokens/v0_192/_md-sys-typescale.scss +286 -0
  1237. package/tokens/v0_192/index.test.css +1 -0
  1238. package/tokens/v0_192/index.test.css.map +1 -0
  1239. package/tokens/v0_192/index.test.scss +584 -0
  1240. package/tokens/v0_192/lib.test.css +1 -0
  1241. package/tokens/v0_192/lib.test.css.map +1 -0
  1242. package/tokens/v0_192/lib.test.scss +663 -0
  1243. package/typography/_typeface.scss +49 -0
  1244. package/typography/_typescale.scss +157 -0
  1245. package/typography/md-typescale-styles.css +1 -0
  1246. package/typography/md-typescale-styles.css.map +1 -0
  1247. package/typography/md-typescale-styles.d.ts +1 -0
  1248. package/typography/md-typescale-styles.js +10 -0
  1249. package/typography/md-typescale-styles.js.map +1 -0
  1250. package/typography/md-typescale-styles.scss +11 -0
@@ -0,0 +1,289 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { isServer } from 'lit';
7
+ import { internals } from './element-internals.js';
8
+ /**
9
+ * A symbol property used for a callback when validity has been reported.
10
+ */
11
+ export const onReportValidity = Symbol('onReportValidity');
12
+ // Private symbol members, used to avoid name clashing.
13
+ const privateCleanupFormListeners = Symbol('privateCleanupFormListeners');
14
+ const privateDoNotReportInvalid = Symbol('privateDoNotReportInvalid');
15
+ const privateIsSelfReportingValidity = Symbol('privateIsSelfReportingValidity');
16
+ const privateCallOnReportValidity = Symbol('privateCallOnReportValidity');
17
+ /**
18
+ * Mixes in a callback for constraint validation when validity should be
19
+ * styled and reported to the user.
20
+ *
21
+ * This is commonly used in text-field-like controls that display error styles
22
+ * and error messages.
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * const baseClass = mixinOnReportValidity(
27
+ * mixinConstraintValidation(
28
+ * mixinFormAssociated(mixinElementInternals(LitElement)),
29
+ * ),
30
+ * );
31
+ *
32
+ * class MyField extends baseClass {
33
+ * \@property({type: Boolean}) error = false;
34
+ * \@property() errorMessage = '';
35
+ *
36
+ * [onReportValidity](invalidEvent: Event | null) {
37
+ * this.error = !!invalidEvent;
38
+ * this.errorMessage = this.validationMessage;
39
+ *
40
+ * // Optionally prevent platform popup from displaying
41
+ * invalidEvent?.preventDefault();
42
+ * }
43
+ * }
44
+ * ```
45
+ *
46
+ * @param base The class to mix functionality into.
47
+ * @return The provided class with `OnReportValidity` mixed in.
48
+ */
49
+ export function mixinOnReportValidity(base) {
50
+ var _a, _b, _c;
51
+ class OnReportValidityElement extends base {
52
+ // Mixins must have a constructor with `...args: any[]`
53
+ // tslint:disable-next-line:no-any
54
+ constructor(...args) {
55
+ super(...args);
56
+ /**
57
+ * Used to clean up event listeners when a new form is associated.
58
+ */
59
+ this[_a] = new AbortController();
60
+ /**
61
+ * Used to determine if an invalid event should report validity. Invalid
62
+ * events from `checkValidity()` do not trigger reporting.
63
+ */
64
+ this[_b] = false;
65
+ /**
66
+ * Used to determine if the control is reporting validity from itself, or
67
+ * if a `<form>` is causing the validity report. Forms have different
68
+ * control focusing behavior.
69
+ */
70
+ this[_c] = false;
71
+ if (isServer) {
72
+ return;
73
+ }
74
+ this.addEventListener('invalid', (invalidEvent) => {
75
+ // Listen for invalid events dispatched by a `<form>` when it tries to
76
+ // submit and the element is invalid. We ignore events dispatched when
77
+ // calling `checkValidity()` as well as untrusted events, since the
78
+ // `reportValidity()` and `<form>`-dispatched events are always
79
+ // trusted.
80
+ if (this[privateDoNotReportInvalid] || !invalidEvent.isTrusted) {
81
+ return;
82
+ }
83
+ this.addEventListener('invalid', () => {
84
+ // A normal bubbling phase event listener. By adding it here, we
85
+ // ensure it's the last event listener that is called during the
86
+ // bubbling phase.
87
+ this[privateCallOnReportValidity](invalidEvent);
88
+ }, { once: true });
89
+ }, {
90
+ // Listen during the capture phase, which will happen before the
91
+ // bubbling phase. That way, we can add a final event listener that
92
+ // will run after other event listeners, and we can check if it was
93
+ // default prevented. This works because invalid does not bubble.
94
+ capture: true,
95
+ });
96
+ }
97
+ checkValidity() {
98
+ this[privateDoNotReportInvalid] = true;
99
+ const valid = super.checkValidity();
100
+ this[privateDoNotReportInvalid] = false;
101
+ return valid;
102
+ }
103
+ reportValidity() {
104
+ this[privateIsSelfReportingValidity] = true;
105
+ const valid = super.reportValidity();
106
+ // Constructor's invalid listener will handle reporting invalid events.
107
+ if (valid) {
108
+ this[privateCallOnReportValidity](null);
109
+ }
110
+ this[privateIsSelfReportingValidity] = false;
111
+ return valid;
112
+ }
113
+ [(_a = privateCleanupFormListeners, _b = privateDoNotReportInvalid, _c = privateIsSelfReportingValidity, privateCallOnReportValidity)](invalidEvent) {
114
+ // Since invalid events do not bubble to parent listeners, and because
115
+ // our invalid listeners are added lazily after other listeners, we can
116
+ // reliably read `defaultPrevented` synchronously without worrying
117
+ // about waiting for another listener that could cancel it.
118
+ const wasCanceled = invalidEvent?.defaultPrevented;
119
+ if (wasCanceled) {
120
+ return;
121
+ }
122
+ this[onReportValidity](invalidEvent);
123
+ // If an implementation calls invalidEvent.preventDefault() to stop the
124
+ // platform popup from displaying, focusing is also prevented, so we need
125
+ // to manually focus.
126
+ const implementationCanceledFocus = !wasCanceled && invalidEvent?.defaultPrevented;
127
+ if (!implementationCanceledFocus) {
128
+ return;
129
+ }
130
+ // The control should be focused when:
131
+ // - `control.reportValidity()` is called (self-reporting).
132
+ // - a form is reporting validity for its controls and this is the first
133
+ // invalid control.
134
+ if (this[privateIsSelfReportingValidity] ||
135
+ isFirstInvalidControlInForm(this[internals].form, this)) {
136
+ this.focus();
137
+ }
138
+ }
139
+ [onReportValidity](invalidEvent) {
140
+ throw new Error('Implement [onReportValidity]');
141
+ }
142
+ formAssociatedCallback(form) {
143
+ // can't use super.formAssociatedCallback?.() due to closure
144
+ if (super.formAssociatedCallback) {
145
+ super.formAssociatedCallback(form);
146
+ }
147
+ // Clean up previous form listeners.
148
+ this[privateCleanupFormListeners].abort();
149
+ if (!form) {
150
+ return;
151
+ }
152
+ this[privateCleanupFormListeners] = new AbortController();
153
+ // Add a listener that fires when the form runs constraint validation and
154
+ // the control is valid, so that it may remove its error styles.
155
+ //
156
+ // This happens on `form.reportValidity()` and `form.requestSubmit()`
157
+ // (both when the submit fails and passes).
158
+ addFormReportValidListener(this, form, () => {
159
+ this[privateCallOnReportValidity](null);
160
+ }, this[privateCleanupFormListeners].signal);
161
+ }
162
+ }
163
+ return OnReportValidityElement;
164
+ }
165
+ /**
166
+ * Add a listener that fires when a form runs constraint validation on a control
167
+ * and it is valid. This is needed to clear previously invalid styles.
168
+ *
169
+ * @param control The control of the form to listen for valid events.
170
+ * @param form The control's form that can run constraint validation.
171
+ * @param onControlValid A listener that is called when the form runs constraint
172
+ * validation and the control is valid.
173
+ * @param cleanup A cleanup signal to remove the listener.
174
+ */
175
+ function addFormReportValidListener(control, form, onControlValid, cleanup) {
176
+ const validateHooks = getFormValidateHooks(form);
177
+ // When a form validates its controls, check if an invalid event is dispatched
178
+ // on the control. If it is not, then inform the control to report its valid
179
+ // state.
180
+ let controlFiredInvalid = false;
181
+ let cleanupInvalidListener;
182
+ let isNextSubmitFromHook = false;
183
+ validateHooks.addEventListener('before', () => {
184
+ isNextSubmitFromHook = true;
185
+ cleanupInvalidListener = new AbortController();
186
+ controlFiredInvalid = false;
187
+ control.addEventListener('invalid', () => {
188
+ controlFiredInvalid = true;
189
+ }, {
190
+ signal: cleanupInvalidListener.signal,
191
+ });
192
+ }, { signal: cleanup });
193
+ validateHooks.addEventListener('after', () => {
194
+ isNextSubmitFromHook = false;
195
+ cleanupInvalidListener?.abort();
196
+ if (controlFiredInvalid) {
197
+ return;
198
+ }
199
+ onControlValid();
200
+ }, { signal: cleanup });
201
+ // The above hooks handle imperatively submitting the form, but not
202
+ // declaratively submitting the form. This happens when:
203
+ // 1. A non-custom element `<button type="submit">` is clicked.
204
+ // 2. Enter is pressed on a non-custom element text editable `<input>`.
205
+ form.addEventListener('submit', () => {
206
+ // This submit was from `form.requestSubmit()`, which already calls the
207
+ // listener.
208
+ if (isNextSubmitFromHook) {
209
+ return;
210
+ }
211
+ onControlValid();
212
+ }, {
213
+ signal: cleanup,
214
+ });
215
+ // Note: it is a known limitation that we cannot detect if a form tries to
216
+ // submit declaratively, but fails to do so because an unrelated sibling
217
+ // control failed its constraint validation.
218
+ //
219
+ // Since we cannot detect when that happens, a previously invalid control may
220
+ // not clear its error styling when it becomes valid again.
221
+ //
222
+ // To work around this, call `form.reportValidity()` when submitting a form
223
+ // declaratively. This can be down on the `<button type="submit">`'s click or
224
+ // the text editable `<input>`'s 'Enter' keydown.
225
+ }
226
+ const FORM_VALIDATE_HOOKS = new WeakMap();
227
+ /**
228
+ * Get a hooks `EventTarget` that dispatches 'before' and 'after' events that
229
+ * fire before a form runs constraint validation and immediately after it
230
+ * finishes running constraint validation on its controls.
231
+ *
232
+ * This happens during `form.reportValidity()` and `form.requestSubmit()`.
233
+ *
234
+ * @param form The form to get or set up hooks for.
235
+ * @return A hooks `EventTarget` to add listeners to.
236
+ */
237
+ function getFormValidateHooks(form) {
238
+ if (!FORM_VALIDATE_HOOKS.has(form)) {
239
+ // Patch form methods to add event listener hooks. These are needed to react
240
+ // to form behaviors that do not dispatch events, such as a form asking its
241
+ // controls to report their validity.
242
+ //
243
+ // We should only patch the methods once, since multiple controls and other
244
+ // forces may want to patch this method. We cannot reliably clean it up if
245
+ // there are multiple patched and re-patched methods referring holding
246
+ // references to each other.
247
+ //
248
+ // Instead, we never clean up the patch but add and clean up event listeners
249
+ // added to the hooks after the patch.
250
+ const hooks = new EventTarget();
251
+ FORM_VALIDATE_HOOKS.set(form, hooks);
252
+ // Add hooks to support notifying before and after a form has run constraint
253
+ // validation on its controls.
254
+ // Note: `form.submit()` does not run constraint validation per spec.
255
+ for (const methodName of ['reportValidity', 'requestSubmit']) {
256
+ const superMethod = form[methodName];
257
+ form[methodName] = function () {
258
+ hooks.dispatchEvent(new Event('before'));
259
+ const result = Reflect.apply(superMethod, this, arguments);
260
+ hooks.dispatchEvent(new Event('after'));
261
+ return result;
262
+ };
263
+ }
264
+ }
265
+ return FORM_VALIDATE_HOOKS.get(form);
266
+ }
267
+ /**
268
+ * Checks if a control is the first invalid control in a form.
269
+ *
270
+ * @param form The control's form. When `null`, the control doesn't have a form
271
+ * and the method returns true.
272
+ * @param control The control to check.
273
+ * @return True if there is no form or if the control is the form's first
274
+ * invalid control.
275
+ */
276
+ function isFirstInvalidControlInForm(form, control) {
277
+ if (!form) {
278
+ return true;
279
+ }
280
+ let firstInvalidControl;
281
+ for (const element of form.elements) {
282
+ if (element.matches(':invalid')) {
283
+ firstInvalidControl = element;
284
+ break;
285
+ }
286
+ }
287
+ return firstInvalidControl === control;
288
+ }
289
+ //# sourceMappingURL=on-report-validity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"on-report-validity.js","sourceRoot":"","sources":["on-report-validity.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {LitElement, isServer} from 'lit';\n\nimport {ConstraintValidation} from './constraint-validation.js';\nimport {WithElementInternals, internals} from './element-internals.js';\nimport {MixinBase, MixinReturn} from './mixin.js';\n\n/**\n * A constraint validation element that has a callback for when the element\n * should report validity styles and error messages to the user.\n *\n * This is commonly used in text-field-like controls that display error styles\n * and error messages.\n */\nexport interface OnReportValidity extends ConstraintValidation {\n /**\n * A callback that is invoked when validity should be reported. Components\n * that can display their own error state can use this and update their\n * styles.\n *\n * If an invalid event is provided, the element is invalid. If `null`, the\n * element is valid.\n *\n * The invalid event's `preventDefault()` may be called to stop the platform\n * popup from displaying.\n *\n * @param invalidEvent The `invalid` event dispatched when an element is\n * invalid, or `null` if the element is valid.\n */\n [onReportValidity](invalidEvent: Event | null): void;\n\n // `mixinOnReportValidity()` implements this optional method. If overriden,\n // call `super.formAssociatedCallback(form)`.\n // (inherit jsdoc from `FormAssociated`)\n formAssociatedCallback(form: HTMLFormElement | null): void;\n}\n\n/**\n * A symbol property used for a callback when validity has been reported.\n */\nexport const onReportValidity = Symbol('onReportValidity');\n\n// Private symbol members, used to avoid name clashing.\nconst privateCleanupFormListeners = Symbol('privateCleanupFormListeners');\nconst privateDoNotReportInvalid = Symbol('privateDoNotReportInvalid');\nconst privateIsSelfReportingValidity = Symbol('privateIsSelfReportingValidity');\nconst privateCallOnReportValidity = Symbol('privateCallOnReportValidity');\n\n/**\n * Mixes in a callback for constraint validation when validity should be\n * styled and reported to the user.\n *\n * This is commonly used in text-field-like controls that display error styles\n * and error messages.\n *\n * @example\n * ```ts\n * const baseClass = mixinOnReportValidity(\n * mixinConstraintValidation(\n * mixinFormAssociated(mixinElementInternals(LitElement)),\n * ),\n * );\n *\n * class MyField extends baseClass {\n * \\@property({type: Boolean}) error = false;\n * \\@property() errorMessage = '';\n *\n * [onReportValidity](invalidEvent: Event | null) {\n * this.error = !!invalidEvent;\n * this.errorMessage = this.validationMessage;\n *\n * // Optionally prevent platform popup from displaying\n * invalidEvent?.preventDefault();\n * }\n * }\n * ```\n *\n * @param base The class to mix functionality into.\n * @return The provided class with `OnReportValidity` mixed in.\n */\nexport function mixinOnReportValidity<\n T extends MixinBase<LitElement & ConstraintValidation & WithElementInternals>,\n>(base: T): MixinReturn<T, OnReportValidity> {\n abstract class OnReportValidityElement\n extends base\n implements OnReportValidity\n {\n /**\n * Used to clean up event listeners when a new form is associated.\n */\n [privateCleanupFormListeners] = new AbortController();\n\n /**\n * Used to determine if an invalid event should report validity. Invalid\n * events from `checkValidity()` do not trigger reporting.\n */\n [privateDoNotReportInvalid] = false;\n\n /**\n * Used to determine if the control is reporting validity from itself, or\n * if a `<form>` is causing the validity report. Forms have different\n * control focusing behavior.\n */\n [privateIsSelfReportingValidity] = false;\n\n // Mixins must have a constructor with `...args: any[]`\n // tslint:disable-next-line:no-any\n constructor(...args: any[]) {\n super(...args);\n if (isServer) {\n return;\n }\n\n this.addEventListener(\n 'invalid',\n (invalidEvent) => {\n // Listen for invalid events dispatched by a `<form>` when it tries to\n // submit and the element is invalid. We ignore events dispatched when\n // calling `checkValidity()` as well as untrusted events, since the\n // `reportValidity()` and `<form>`-dispatched events are always\n // trusted.\n if (this[privateDoNotReportInvalid] || !invalidEvent.isTrusted) {\n return;\n }\n\n this.addEventListener(\n 'invalid',\n () => {\n // A normal bubbling phase event listener. By adding it here, we\n // ensure it's the last event listener that is called during the\n // bubbling phase.\n this[privateCallOnReportValidity](invalidEvent);\n },\n {once: true},\n );\n },\n {\n // Listen during the capture phase, which will happen before the\n // bubbling phase. That way, we can add a final event listener that\n // will run after other event listeners, and we can check if it was\n // default prevented. This works because invalid does not bubble.\n capture: true,\n },\n );\n }\n\n override checkValidity() {\n this[privateDoNotReportInvalid] = true;\n const valid = super.checkValidity();\n this[privateDoNotReportInvalid] = false;\n return valid;\n }\n\n override reportValidity() {\n this[privateIsSelfReportingValidity] = true;\n const valid = super.reportValidity();\n // Constructor's invalid listener will handle reporting invalid events.\n if (valid) {\n this[privateCallOnReportValidity](null);\n }\n\n this[privateIsSelfReportingValidity] = false;\n return valid;\n }\n\n [privateCallOnReportValidity](invalidEvent: Event | null) {\n // Since invalid events do not bubble to parent listeners, and because\n // our invalid listeners are added lazily after other listeners, we can\n // reliably read `defaultPrevented` synchronously without worrying\n // about waiting for another listener that could cancel it.\n const wasCanceled = invalidEvent?.defaultPrevented;\n if (wasCanceled) {\n return;\n }\n\n this[onReportValidity](invalidEvent);\n\n // If an implementation calls invalidEvent.preventDefault() to stop the\n // platform popup from displaying, focusing is also prevented, so we need\n // to manually focus.\n const implementationCanceledFocus =\n !wasCanceled && invalidEvent?.defaultPrevented;\n if (!implementationCanceledFocus) {\n return;\n }\n\n // The control should be focused when:\n // - `control.reportValidity()` is called (self-reporting).\n // - a form is reporting validity for its controls and this is the first\n // invalid control.\n if (\n this[privateIsSelfReportingValidity] ||\n isFirstInvalidControlInForm(this[internals].form, this)\n ) {\n this.focus();\n }\n }\n\n [onReportValidity](invalidEvent: Event | null) {\n throw new Error('Implement [onReportValidity]');\n }\n\n override formAssociatedCallback(form: HTMLFormElement | null) {\n // can't use super.formAssociatedCallback?.() due to closure\n if (super.formAssociatedCallback) {\n super.formAssociatedCallback(form);\n }\n\n // Clean up previous form listeners.\n this[privateCleanupFormListeners].abort();\n if (!form) {\n return;\n }\n\n this[privateCleanupFormListeners] = new AbortController();\n\n // Add a listener that fires when the form runs constraint validation and\n // the control is valid, so that it may remove its error styles.\n //\n // This happens on `form.reportValidity()` and `form.requestSubmit()`\n // (both when the submit fails and passes).\n addFormReportValidListener(\n this,\n form,\n () => {\n this[privateCallOnReportValidity](null);\n },\n this[privateCleanupFormListeners].signal,\n );\n }\n }\n\n return OnReportValidityElement;\n}\n\n/**\n * Add a listener that fires when a form runs constraint validation on a control\n * and it is valid. This is needed to clear previously invalid styles.\n *\n * @param control The control of the form to listen for valid events.\n * @param form The control's form that can run constraint validation.\n * @param onControlValid A listener that is called when the form runs constraint\n * validation and the control is valid.\n * @param cleanup A cleanup signal to remove the listener.\n */\nfunction addFormReportValidListener(\n control: Element,\n form: HTMLFormElement,\n onControlValid: () => void,\n cleanup: AbortSignal,\n) {\n const validateHooks = getFormValidateHooks(form);\n\n // When a form validates its controls, check if an invalid event is dispatched\n // on the control. If it is not, then inform the control to report its valid\n // state.\n let controlFiredInvalid = false;\n let cleanupInvalidListener: AbortController | undefined;\n let isNextSubmitFromHook = false;\n validateHooks.addEventListener(\n 'before',\n () => {\n isNextSubmitFromHook = true;\n cleanupInvalidListener = new AbortController();\n controlFiredInvalid = false;\n control.addEventListener(\n 'invalid',\n () => {\n controlFiredInvalid = true;\n },\n {\n signal: cleanupInvalidListener.signal,\n },\n );\n },\n {signal: cleanup},\n );\n\n validateHooks.addEventListener(\n 'after',\n () => {\n isNextSubmitFromHook = false;\n cleanupInvalidListener?.abort();\n if (controlFiredInvalid) {\n return;\n }\n\n onControlValid();\n },\n {signal: cleanup},\n );\n\n // The above hooks handle imperatively submitting the form, but not\n // declaratively submitting the form. This happens when:\n // 1. A non-custom element `<button type=\"submit\">` is clicked.\n // 2. Enter is pressed on a non-custom element text editable `<input>`.\n form.addEventListener(\n 'submit',\n () => {\n // This submit was from `form.requestSubmit()`, which already calls the\n // listener.\n if (isNextSubmitFromHook) {\n return;\n }\n\n onControlValid();\n },\n {\n signal: cleanup,\n },\n );\n\n // Note: it is a known limitation that we cannot detect if a form tries to\n // submit declaratively, but fails to do so because an unrelated sibling\n // control failed its constraint validation.\n //\n // Since we cannot detect when that happens, a previously invalid control may\n // not clear its error styling when it becomes valid again.\n //\n // To work around this, call `form.reportValidity()` when submitting a form\n // declaratively. This can be down on the `<button type=\"submit\">`'s click or\n // the text editable `<input>`'s 'Enter' keydown.\n}\n\nconst FORM_VALIDATE_HOOKS = new WeakMap<HTMLFormElement, EventTarget>();\n\n/**\n * Get a hooks `EventTarget` that dispatches 'before' and 'after' events that\n * fire before a form runs constraint validation and immediately after it\n * finishes running constraint validation on its controls.\n *\n * This happens during `form.reportValidity()` and `form.requestSubmit()`.\n *\n * @param form The form to get or set up hooks for.\n * @return A hooks `EventTarget` to add listeners to.\n */\nfunction getFormValidateHooks(form: HTMLFormElement) {\n if (!FORM_VALIDATE_HOOKS.has(form)) {\n // Patch form methods to add event listener hooks. These are needed to react\n // to form behaviors that do not dispatch events, such as a form asking its\n // controls to report their validity.\n //\n // We should only patch the methods once, since multiple controls and other\n // forces may want to patch this method. We cannot reliably clean it up if\n // there are multiple patched and re-patched methods referring holding\n // references to each other.\n //\n // Instead, we never clean up the patch but add and clean up event listeners\n // added to the hooks after the patch.\n const hooks = new EventTarget();\n FORM_VALIDATE_HOOKS.set(form, hooks);\n\n // Add hooks to support notifying before and after a form has run constraint\n // validation on its controls.\n // Note: `form.submit()` does not run constraint validation per spec.\n for (const methodName of ['reportValidity', 'requestSubmit'] as const) {\n const superMethod = form[methodName];\n form[methodName] = function (this: HTMLFormElement) {\n hooks.dispatchEvent(new Event('before'));\n const result = Reflect.apply(superMethod, this, arguments);\n hooks.dispatchEvent(new Event('after'));\n return result;\n };\n }\n }\n\n return FORM_VALIDATE_HOOKS.get(form)!;\n}\n\n/**\n * Checks if a control is the first invalid control in a form.\n *\n * @param form The control's form. When `null`, the control doesn't have a form\n * and the method returns true.\n * @param control The control to check.\n * @return True if there is no form or if the control is the form's first\n * invalid control.\n */\nfunction isFirstInvalidControlInForm(\n form: HTMLFormElement | null,\n control: HTMLElement,\n) {\n if (!form) {\n return true;\n }\n\n let firstInvalidControl: Element | undefined;\n for (const element of form.elements) {\n if (element.matches(':invalid')) {\n firstInvalidControl = element;\n break;\n }\n }\n\n return firstInvalidControl === control;\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Validator } from './validator.js';
7
+ /**
8
+ * Constraint validation properties for a checkbox.
9
+ */
10
+ export interface CheckboxState {
11
+ /**
12
+ * Whether the checkbox is checked.
13
+ */
14
+ readonly checked: boolean;
15
+ /**
16
+ * Whether the checkbox is required.
17
+ */
18
+ readonly required: boolean;
19
+ }
20
+ /**
21
+ * A validator that provides constraint validation that emulates
22
+ * `<input type="checkbox">` validation.
23
+ */
24
+ export declare class CheckboxValidator extends Validator<CheckboxState> {
25
+ private checkboxControl?;
26
+ protected computeValidity(state: CheckboxState): {
27
+ validity: ValidityState;
28
+ validationMessage: string;
29
+ };
30
+ protected equals(prev: CheckboxState, next: CheckboxState): boolean;
31
+ protected copy({ checked, required }: CheckboxState): {
32
+ checked: boolean;
33
+ required: boolean;
34
+ };
35
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Validator } from './validator.js';
7
+ /**
8
+ * A validator that provides constraint validation that emulates
9
+ * `<input type="checkbox">` validation.
10
+ */
11
+ export class CheckboxValidator extends Validator {
12
+ computeValidity(state) {
13
+ if (!this.checkboxControl) {
14
+ // Lazily create the platform input
15
+ this.checkboxControl = document.createElement('input');
16
+ this.checkboxControl.type = 'checkbox';
17
+ }
18
+ this.checkboxControl.checked = state.checked;
19
+ this.checkboxControl.required = state.required;
20
+ return {
21
+ validity: this.checkboxControl.validity,
22
+ validationMessage: this.checkboxControl.validationMessage,
23
+ };
24
+ }
25
+ equals(prev, next) {
26
+ return prev.checked === next.checked && prev.required === next.required;
27
+ }
28
+ copy({ checked, required }) {
29
+ return { checked, required };
30
+ }
31
+ }
32
+ //# sourceMappingURL=checkbox-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-validator.js","sourceRoot":"","sources":["checkbox-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAiBzC;;;GAGG;AACH,MAAM,OAAO,iBAAkB,SAAQ,SAAwB;IAG1C,eAAe,CAAC,KAAoB;QACrD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,mCAAmC;YACnC,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,UAAU,CAAC;SACxC;QAED,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/C,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;YACvC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,iBAAiB;SAC1D,CAAC;IACJ,CAAC;IAEkB,MAAM,CAAC,IAAmB,EAAE,IAAmB;QAChE,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC1E,CAAC;IAEkB,IAAI,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAgB;QACxD,OAAO,EAAC,OAAO,EAAE,QAAQ,EAAC,CAAC;IAC7B,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Validator} from './validator.js';\n\n/**\n * Constraint validation properties for a checkbox.\n */\nexport interface CheckboxState {\n /**\n * Whether the checkbox is checked.\n */\n readonly checked: boolean;\n\n /**\n * Whether the checkbox is required.\n */\n readonly required: boolean;\n}\n\n/**\n * A validator that provides constraint validation that emulates\n * `<input type=\"checkbox\">` validation.\n */\nexport class CheckboxValidator extends Validator<CheckboxState> {\n private checkboxControl?: HTMLInputElement;\n\n protected override computeValidity(state: CheckboxState) {\n if (!this.checkboxControl) {\n // Lazily create the platform input\n this.checkboxControl = document.createElement('input');\n this.checkboxControl.type = 'checkbox';\n }\n\n this.checkboxControl.checked = state.checked;\n this.checkboxControl.required = state.required;\n return {\n validity: this.checkboxControl.validity,\n validationMessage: this.checkboxControl.validationMessage,\n };\n }\n\n protected override equals(prev: CheckboxState, next: CheckboxState) {\n return prev.checked === next.checked && prev.required === next.required;\n }\n\n protected override copy({checked, required}: CheckboxState) {\n return {checked, required};\n }\n}\n"]}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Validator } from './validator.js';
7
+ /**
8
+ * Constraint validation properties for a radio.
9
+ */
10
+ export interface RadioState {
11
+ /**
12
+ * Whether the radio is checked.
13
+ */
14
+ readonly checked: boolean;
15
+ /**
16
+ * Whether the radio is required.
17
+ */
18
+ readonly required: boolean;
19
+ }
20
+ /**
21
+ * Radio constraint validation properties for a single radio and its siblings.
22
+ */
23
+ export type RadioGroupState = readonly [RadioState, ...RadioState[]];
24
+ /**
25
+ * A validator that provides constraint validation that emulates
26
+ * `<input type="radio">` validation.
27
+ */
28
+ export declare class RadioValidator extends Validator<RadioGroupState> {
29
+ private radioElement?;
30
+ protected computeValidity(states: RadioGroupState): {
31
+ validity: {
32
+ valueMissing: boolean;
33
+ };
34
+ validationMessage: string;
35
+ };
36
+ protected equals(prevGroup: RadioGroupState, nextGroup: RadioGroupState): boolean;
37
+ protected copy(states: RadioGroupState): RadioGroupState;
38
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Validator } from './validator.js';
7
+ /**
8
+ * A validator that provides constraint validation that emulates
9
+ * `<input type="radio">` validation.
10
+ */
11
+ export class RadioValidator extends Validator {
12
+ computeValidity(states) {
13
+ if (!this.radioElement) {
14
+ // Lazily create the radio element
15
+ this.radioElement = document.createElement('input');
16
+ this.radioElement.type = 'radio';
17
+ // A name is required for validation to run
18
+ this.radioElement.name = 'group';
19
+ }
20
+ let isRequired = false;
21
+ let isChecked = false;
22
+ for (const { checked, required } of states) {
23
+ if (required) {
24
+ isRequired = true;
25
+ }
26
+ if (checked) {
27
+ isChecked = true;
28
+ }
29
+ }
30
+ // Firefox v119 doesn't compute grouped radio validation correctly while
31
+ // they are detached from the DOM, which is why we don't render multiple
32
+ // virtual <input>s. Instead, we can check the required/checked states and
33
+ // grab the i18n'd validation message if the value is missing.
34
+ this.radioElement.checked = isChecked;
35
+ this.radioElement.required = isRequired;
36
+ return {
37
+ validity: {
38
+ valueMissing: isRequired && !isChecked,
39
+ },
40
+ validationMessage: this.radioElement.validationMessage,
41
+ };
42
+ }
43
+ equals(prevGroup, nextGroup) {
44
+ if (prevGroup.length !== nextGroup.length) {
45
+ return false;
46
+ }
47
+ for (let i = 0; i < prevGroup.length; i++) {
48
+ const prev = prevGroup[i];
49
+ const next = nextGroup[i];
50
+ if (prev.checked !== next.checked || prev.required !== next.required) {
51
+ return false;
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+ copy(states) {
57
+ // Cast as unknown since typescript does not have enough information to
58
+ // infer that the array always has at least one element.
59
+ return states.map(({ checked, required }) => ({
60
+ checked,
61
+ required,
62
+ }));
63
+ }
64
+ }
65
+ //# sourceMappingURL=radio-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-validator.js","sourceRoot":"","sources":["radio-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAsBzC;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,SAA0B;IAGzC,eAAe,CAAC,MAAuB;QACxD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,kCAAkC;YAClC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC;YACjC,2CAA2C;YAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,OAAO,CAAC;SAClC;QAED,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,KAAK,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAC,IAAI,MAAM,EAAE;YACxC,IAAI,QAAQ,EAAE;gBACZ,UAAU,GAAG,IAAI,CAAC;aACnB;YAED,IAAI,OAAO,EAAE;gBACX,SAAS,GAAG,IAAI,CAAC;aAClB;SACF;QAED,wEAAwE;QACxE,wEAAwE;QACxE,0EAA0E;QAC1E,8DAA8D;QAC9D,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC;QACxC,OAAO;YACL,QAAQ,EAAE;gBACR,YAAY,EAAE,UAAU,IAAI,CAAC,SAAS;aACvC;YACD,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB;SACvD,CAAC;IACJ,CAAC;IAEkB,MAAM,CACvB,SAA0B,EAC1B,SAA0B;QAE1B,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE;YACzC,OAAO,KAAK,CAAC;SACd;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;gBACpE,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEkB,IAAI,CAAC,MAAuB;QAC7C,uEAAuE;QACvE,wDAAwD;QACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAC,EAAE,EAAE,CAAC,CAAC;YAC1C,OAAO;YACP,QAAQ;SACT,CAAC,CAA+B,CAAC;IACpC,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Validator} from './validator.js';\n\n/**\n * Constraint validation properties for a radio.\n */\nexport interface RadioState {\n /**\n * Whether the radio is checked.\n */\n readonly checked: boolean;\n\n /**\n * Whether the radio is required.\n */\n readonly required: boolean;\n}\n\n/**\n * Radio constraint validation properties for a single radio and its siblings.\n */\nexport type RadioGroupState = readonly [RadioState, ...RadioState[]];\n\n/**\n * A validator that provides constraint validation that emulates\n * `<input type=\"radio\">` validation.\n */\nexport class RadioValidator extends Validator<RadioGroupState> {\n private radioElement?: HTMLInputElement;\n\n protected override computeValidity(states: RadioGroupState) {\n if (!this.radioElement) {\n // Lazily create the radio element\n this.radioElement = document.createElement('input');\n this.radioElement.type = 'radio';\n // A name is required for validation to run\n this.radioElement.name = 'group';\n }\n\n let isRequired = false;\n let isChecked = false;\n for (const {checked, required} of states) {\n if (required) {\n isRequired = true;\n }\n\n if (checked) {\n isChecked = true;\n }\n }\n\n // Firefox v119 doesn't compute grouped radio validation correctly while\n // they are detached from the DOM, which is why we don't render multiple\n // virtual <input>s. Instead, we can check the required/checked states and\n // grab the i18n'd validation message if the value is missing.\n this.radioElement.checked = isChecked;\n this.radioElement.required = isRequired;\n return {\n validity: {\n valueMissing: isRequired && !isChecked,\n },\n validationMessage: this.radioElement.validationMessage,\n };\n }\n\n protected override equals(\n prevGroup: RadioGroupState,\n nextGroup: RadioGroupState,\n ) {\n if (prevGroup.length !== nextGroup.length) {\n return false;\n }\n\n for (let i = 0; i < prevGroup.length; i++) {\n const prev = prevGroup[i];\n const next = nextGroup[i];\n if (prev.checked !== next.checked || prev.required !== next.required) {\n return false;\n }\n }\n\n return true;\n }\n\n protected override copy(states: RadioGroupState): RadioGroupState {\n // Cast as unknown since typescript does not have enough information to\n // infer that the array always has at least one element.\n return states.map(({checked, required}) => ({\n checked,\n required,\n })) as unknown as RadioGroupState;\n }\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Validator } from './validator.js';
7
+ /**
8
+ * Constraint validation properties for a select dropdown.
9
+ */
10
+ export interface SelectState {
11
+ /**
12
+ * The current selected value.
13
+ */
14
+ readonly value: string;
15
+ /**
16
+ * Whether the select is required.
17
+ */
18
+ readonly required: boolean;
19
+ }
20
+ /**
21
+ * A validator that provides constraint validation that emulates `<select>`
22
+ * validation.
23
+ */
24
+ export declare class SelectValidator extends Validator<SelectState> {
25
+ private selectControl?;
26
+ protected computeValidity(state: SelectState): {
27
+ validity: ValidityState;
28
+ validationMessage: string;
29
+ };
30
+ protected equals(prev: SelectState, next: SelectState): boolean;
31
+ protected copy({ value, required }: SelectState): {
32
+ value: string;
33
+ required: boolean;
34
+ };
35
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { html, render } from 'lit';
7
+ import { Validator } from './validator.js';
8
+ /**
9
+ * A validator that provides constraint validation that emulates `<select>`
10
+ * validation.
11
+ */
12
+ export class SelectValidator extends Validator {
13
+ computeValidity(state) {
14
+ if (!this.selectControl) {
15
+ // Lazily create the platform select
16
+ this.selectControl = document.createElement('select');
17
+ }
18
+ render(html `<option value=${state.value}></option>`, this.selectControl);
19
+ this.selectControl.value = state.value;
20
+ this.selectControl.required = state.required;
21
+ return {
22
+ validity: this.selectControl.validity,
23
+ validationMessage: this.selectControl.validationMessage,
24
+ };
25
+ }
26
+ equals(prev, next) {
27
+ return prev.value === next.value && prev.required === next.required;
28
+ }
29
+ copy({ value, required }) {
30
+ return { value, required };
31
+ }
32
+ }
33
+ //# sourceMappingURL=select-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-validator.js","sourceRoot":"","sources":["select-validator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,IAAI,EAAE,MAAM,EAAC,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAiBzC;;;GAGG;AACH,MAAM,OAAO,eAAgB,SAAQ,SAAsB;IAGtC,eAAe,CAAC,KAAkB;QACnD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,oCAAoC;YACpC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACvD;QAED,MAAM,CAAC,IAAI,CAAA,iBAAiB,KAAK,CAAC,KAAK,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEzE,IAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC7C,OAAO;YACL,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ;YACrC,iBAAiB,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB;SACxD,CAAC;IACJ,CAAC;IAEkB,MAAM,CAAC,IAAiB,EAAE,IAAiB;QAC5D,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC;IACtE,CAAC;IAEkB,IAAI,CAAC,EAAC,KAAK,EAAE,QAAQ,EAAc;QACpD,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAC;IAC3B,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, render} from 'lit';\n\nimport {Validator} from './validator.js';\n\n/**\n * Constraint validation properties for a select dropdown.\n */\nexport interface SelectState {\n /**\n * The current selected value.\n */\n readonly value: string;\n\n /**\n * Whether the select is required.\n */\n readonly required: boolean;\n}\n\n/**\n * A validator that provides constraint validation that emulates `<select>`\n * validation.\n */\nexport class SelectValidator extends Validator<SelectState> {\n private selectControl?: HTMLSelectElement;\n\n protected override computeValidity(state: SelectState) {\n if (!this.selectControl) {\n // Lazily create the platform select\n this.selectControl = document.createElement('select');\n }\n\n render(html`<option value=${state.value}></option>`, this.selectControl);\n\n this.selectControl.value = state.value;\n this.selectControl.required = state.required;\n return {\n validity: this.selectControl.validity,\n validationMessage: this.selectControl.validationMessage,\n };\n }\n\n protected override equals(prev: SelectState, next: SelectState) {\n return prev.value === next.value && prev.required === next.required;\n }\n\n protected override copy({value, required}: SelectState) {\n return {value, required};\n }\n}\n"]}