mtrl 0.10.0-next.2 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (930) hide show
  1. package/README.md +130 -88
  2. package/dist/README.md +130 -88
  3. package/dist/components/badge/features.js +1 -1
  4. package/dist/components/bottom-sheet/api.d.ts +4 -3
  5. package/dist/components/bottom-sheet/config.js +11 -4
  6. package/dist/components/bottom-sheet/constants.d.ts +0 -2
  7. package/dist/components/bottom-sheet/constants.js +0 -1
  8. package/dist/components/bottom-sheet/features/drag.d.ts +3 -0
  9. package/dist/components/bottom-sheet/features/drag.js +23 -0
  10. package/dist/components/bottom-sheet/features/state.js +58 -2
  11. package/dist/components/bottom-sheet/features/structure.js +9 -4
  12. package/dist/components/bottom-sheet/types.d.ts +15 -2
  13. package/dist/components/button/features/progress.js +5 -3
  14. package/dist/components/button-group/button-group.js +3 -1
  15. package/dist/components/button-group/config.d.ts +8 -8
  16. package/dist/components/button-group/config.js +3 -2
  17. package/dist/components/button-group/constants.d.ts +7 -2
  18. package/dist/components/button-group/constants.js +5 -5
  19. package/dist/components/button-group/types.d.ts +5 -0
  20. package/dist/components/card/api.d.ts +4 -0
  21. package/dist/components/card/api.js +8 -0
  22. package/dist/components/card/card.js +1 -2
  23. package/dist/components/card/config.js +2 -14
  24. package/dist/components/card/content.js +1 -6
  25. package/dist/components/card/features.d.ts +5 -19
  26. package/dist/components/card/features.js +1 -11
  27. package/dist/components/card/index.d.ts +1 -1
  28. package/dist/components/card/types.d.ts +34 -3
  29. package/dist/components/carousel/features/scroll.js +7 -3
  30. package/dist/components/checkbox/config.js +18 -6
  31. package/dist/components/chips/api.js +1 -1
  32. package/dist/components/chips/config.js +1 -1
  33. package/dist/components/chips/features/controller.js +14 -7
  34. package/dist/components/chips/index.d.ts +1 -1
  35. package/dist/components/chips/types.d.ts +24 -5
  36. package/dist/components/datepicker/datepicker.d.ts +8 -2
  37. package/dist/components/datepicker/datepicker.js +71 -30
  38. package/dist/components/datepicker/index.d.ts +1 -1
  39. package/dist/components/datepicker/types.d.ts +63 -30
  40. package/dist/components/datepicker/utils.d.ts +5 -0
  41. package/dist/components/datepicker/utils.js +2 -0
  42. package/dist/components/dialog/api.js +5 -0
  43. package/dist/components/dialog/config.js +8 -2
  44. package/dist/components/dialog/features.js +94 -26
  45. package/dist/components/dialog/types.d.ts +15 -2
  46. package/dist/components/divider/features.js +3 -2
  47. package/dist/components/drawer/config.js +9 -2
  48. package/dist/components/drawer/features/items.js +3 -1
  49. package/dist/components/drawer/features/state.js +50 -9
  50. package/dist/components/drawer/types.d.ts +18 -0
  51. package/dist/components/extended-fab/api.d.ts +2 -0
  52. package/dist/components/extended-fab/api.js +2 -0
  53. package/dist/components/extended-fab/types.d.ts +6 -2
  54. package/dist/components/fab-menu/config.d.ts +11 -0
  55. package/dist/components/fab-menu/config.js +15 -0
  56. package/dist/components/fab-menu/constants.d.ts +59 -0
  57. package/dist/components/fab-menu/constants.js +30 -0
  58. package/dist/components/fab-menu/fab-menu.d.ts +40 -0
  59. package/dist/components/fab-menu/fab-menu.js +315 -0
  60. package/dist/components/fab-menu/index.d.ts +6 -0
  61. package/dist/components/fab-menu/index.js +4 -0
  62. package/dist/components/fab-menu/stagger.d.ts +10 -0
  63. package/dist/components/fab-menu/stagger.js +24 -0
  64. package/dist/components/fab-menu/types.d.ts +110 -0
  65. package/dist/components/fab-menu/types.js +1 -0
  66. package/dist/components/icon-button/features/toggle.d.ts +1 -0
  67. package/dist/components/icon-button/features/toggle.js +1 -0
  68. package/dist/components/icon-button/icon-button.d.ts +2 -2
  69. package/dist/components/icon-button/index.d.ts +2 -2
  70. package/dist/components/icon-button/types.d.ts +9 -2
  71. package/dist/components/index.d.ts +4 -0
  72. package/dist/components/index.js +2 -0
  73. package/dist/components/list/api.d.ts +2 -2
  74. package/dist/components/list/features/renderer.js +2 -1
  75. package/dist/components/list/features/selection.js +1 -1
  76. package/dist/components/list/types.d.ts +5 -0
  77. package/dist/components/menu/config.js +6 -1
  78. package/dist/components/menu/features/controller.d.ts +2 -0
  79. package/dist/components/menu/features/controller.js +58 -41
  80. package/dist/components/menu/features/index.d.ts +1 -2
  81. package/dist/components/menu/features/index.js +1 -2
  82. package/dist/components/menu/features/keyboard.js +3 -2
  83. package/dist/components/menu/features/layer.d.ts +15 -0
  84. package/dist/components/menu/features/layer.js +16 -0
  85. package/dist/components/menu/features/loader.d.ts +35 -0
  86. package/dist/components/menu/features/loader.js +64 -0
  87. package/dist/components/menu/features/opener.js +2 -1
  88. package/dist/components/menu/features/position.js +40 -38
  89. package/dist/components/menu/features/submenu.js +12 -4
  90. package/dist/components/menu/menu.js +2 -2
  91. package/dist/components/menu/types.d.ts +22 -2
  92. package/dist/components/navigation-rail/navigation-rail.js +5 -4
  93. package/dist/components/navigation-rail/types.d.ts +2 -0
  94. package/dist/components/progress/api.d.ts +4 -0
  95. package/dist/components/progress/api.js +17 -10
  96. package/dist/components/progress/config.js +3 -11
  97. package/dist/components/progress/features/canvas.d.ts +1 -0
  98. package/dist/components/progress/features/canvas.js +1 -1
  99. package/dist/components/progress/features/circular.js +7 -1
  100. package/dist/components/progress/features/state.js +5 -3
  101. package/dist/components/progress/index.d.ts +1 -1
  102. package/dist/components/progress/types.d.ts +21 -12
  103. package/dist/components/radios/radio.js +1 -3
  104. package/dist/components/search/api.d.ts +10 -2
  105. package/dist/components/search/api.js +18 -10
  106. package/dist/components/search/config.d.ts +19 -3
  107. package/dist/components/search/config.js +11 -2
  108. package/dist/components/search/constants.d.ts +11 -0
  109. package/dist/components/search/constants.js +9 -0
  110. package/dist/components/search/features/input.js +12 -3
  111. package/dist/components/search/features/states.d.ts +4 -2
  112. package/dist/components/search/features/states.js +98 -16
  113. package/dist/components/search/features/structure.d.ts +7 -20
  114. package/dist/components/search/features/structure.js +79 -29
  115. package/dist/components/search/features/suggestions.d.ts +2 -1
  116. package/dist/components/search/features/suggestions.js +22 -6
  117. package/dist/components/search/index.d.ts +1 -1
  118. package/dist/components/search/types.d.ts +25 -2
  119. package/dist/components/segmented-button/config.d.ts +1 -1
  120. package/dist/components/segmented-button/segmented-button.js +1 -43
  121. package/dist/components/segmented-button/types.d.ts +3 -3
  122. package/dist/components/select/features.js +8 -18
  123. package/dist/components/select/types.d.ts +7 -0
  124. package/dist/components/side-sheet/api.d.ts +4 -3
  125. package/dist/components/side-sheet/config.js +11 -3
  126. package/dist/components/side-sheet/features/state.js +57 -2
  127. package/dist/components/side-sheet/features/structure.js +1 -1
  128. package/dist/components/side-sheet/types.d.ts +12 -0
  129. package/dist/components/slider/api.js +2 -2
  130. package/dist/components/slider/features/controller.d.ts +14 -14
  131. package/dist/components/slider/features/controller.js +2 -2
  132. package/dist/components/slider/features/handlers.js +2 -1
  133. package/dist/components/slider/features/tracks.d.ts +0 -9
  134. package/dist/components/slider/features/tracks.js +3 -1
  135. package/dist/components/slider/types.d.ts +2 -2
  136. package/dist/components/snackbar/api.js +28 -4
  137. package/dist/components/snackbar/config.d.ts +1 -0
  138. package/dist/components/snackbar/config.js +8 -1
  139. package/dist/components/snackbar/layer.d.ts +23 -0
  140. package/dist/components/snackbar/layer.js +85 -0
  141. package/dist/components/snackbar/types.d.ts +12 -0
  142. package/dist/components/split-button/api.js +2 -1
  143. package/dist/components/split-button/features/menu.js +1 -0
  144. package/dist/components/split-button/types.d.ts +8 -0
  145. package/dist/components/switch/api.js +7 -0
  146. package/dist/components/switch/features.d.ts +4 -0
  147. package/dist/components/switch/features.js +9 -2
  148. package/dist/components/switch/types.d.ts +6 -0
  149. package/dist/components/tabs/api.js +0 -9
  150. package/dist/components/tabs/types.d.ts +1 -1
  151. package/dist/components/textfield/api.d.ts +1 -0
  152. package/dist/components/textfield/api.js +4 -1
  153. package/dist/components/textfield/constants.d.ts +5 -1
  154. package/dist/components/textfield/features/counter.d.ts +29 -0
  155. package/dist/components/textfield/features/counter.js +54 -0
  156. package/dist/components/textfield/features/field.d.ts +37 -0
  157. package/dist/components/textfield/features/field.js +39 -0
  158. package/dist/components/textfield/features/index.d.ts +4 -0
  159. package/dist/components/textfield/features/index.js +2 -0
  160. package/dist/components/textfield/features/leading-icon.js +2 -1
  161. package/dist/components/textfield/features/placement.js +65 -60
  162. package/dist/components/textfield/features/prefix-text.js +2 -1
  163. package/dist/components/textfield/features/suffix-text.js +2 -1
  164. package/dist/components/textfield/features/supporting-text.js +16 -33
  165. package/dist/components/textfield/features/trailing-icon.js +2 -1
  166. package/dist/components/textfield/textfield.js +2 -2
  167. package/dist/components/textfield/types.d.ts +7 -0
  168. package/dist/components/timepicker/api.js +67 -20
  169. package/dist/components/timepicker/config.d.ts +3 -1085
  170. package/dist/components/timepicker/config.js +3 -35
  171. package/dist/components/timepicker/constants.d.ts +21 -11
  172. package/dist/components/timepicker/constants.js +4 -3
  173. package/dist/components/timepicker/dial.d.ts +8 -3
  174. package/dist/components/timepicker/dial.js +8 -2
  175. package/dist/components/timepicker/index.d.ts +2 -1
  176. package/dist/components/timepicker/render.js +91 -103
  177. package/dist/components/timepicker/timepicker.js +2 -2
  178. package/dist/components/timepicker/types.d.ts +61 -18
  179. package/dist/components/timepicker/utils.d.ts +20 -53
  180. package/dist/components/timepicker/utils.js +36 -86
  181. package/dist/components/toolbar/config.d.ts +19 -0
  182. package/dist/components/toolbar/config.js +46 -0
  183. package/dist/components/toolbar/constants.d.ts +66 -0
  184. package/dist/components/toolbar/constants.js +32 -0
  185. package/dist/components/toolbar/index.d.ts +6 -0
  186. package/dist/components/toolbar/index.js +4 -0
  187. package/dist/components/toolbar/toolbar.d.ts +29 -0
  188. package/dist/components/toolbar/toolbar.js +204 -0
  189. package/dist/components/toolbar/types.d.ts +152 -0
  190. package/dist/components/toolbar/types.js +1 -0
  191. package/dist/components/tooltip/api.js +34 -3
  192. package/dist/components/tooltip/config.js +8 -1
  193. package/dist/components/tooltip/types.d.ts +15 -2
  194. package/dist/core/compose/features/checkable.d.ts +3 -6
  195. package/dist/core/compose/features/checkable.js +4 -20
  196. package/dist/core/compose/features/disabled.js +14 -14
  197. package/dist/core/compose/features/events.d.ts +16 -4
  198. package/dist/core/compose/features/input.js +1 -4
  199. package/dist/core/compose/features/textinput.js +18 -18
  200. package/dist/core/compose/features/textlabel.js +6 -7
  201. package/dist/core/dom/focus.d.ts +36 -0
  202. package/dist/core/dom/focus.js +47 -0
  203. package/dist/core/dom/index.d.ts +5 -0
  204. package/dist/core/dom/index.js +3 -0
  205. package/dist/core/dom/layer.d.ts +66 -0
  206. package/dist/core/dom/layer.js +78 -0
  207. package/dist/core/dom/roving.d.ts +30 -0
  208. package/dist/core/dom/roving.js +75 -0
  209. package/dist/core/index.d.ts +2 -0
  210. package/dist/core/index.js +1 -0
  211. package/dist/core/state/emitter.d.ts +8 -2
  212. package/dist/core/state/events.d.ts +4 -3
  213. package/dist/core/theme/index.d.ts +7 -0
  214. package/dist/core/theme/index.js +2 -0
  215. package/dist/core/theme/shape.d.ts +9 -0
  216. package/dist/core/theme/shape.js +1 -0
  217. package/dist/core/theme/tokens.d.ts +45 -0
  218. package/dist/core/theme/tokens.js +36 -0
  219. package/dist/core/utils/theme.d.ts +7 -2
  220. package/dist/core/utils/theme.js +21 -23
  221. package/dist/core/utils/warn.d.ts +8 -0
  222. package/dist/core/utils/warn.js +5 -0
  223. package/dist/elements/adapter.d.ts +3 -0
  224. package/dist/elements/adapter.js +3 -0
  225. package/dist/elements/badge.d.ts +8 -0
  226. package/dist/elements/bottom-app-bar.d.ts +55 -0
  227. package/dist/elements/bottom-app-bar.js +43 -0
  228. package/dist/elements/bottom-sheet.d.ts +130 -0
  229. package/dist/elements/bottom-sheet.js +96 -0
  230. package/dist/elements/button-group.d.ts +162 -0
  231. package/dist/elements/button-group.js +174 -0
  232. package/dist/elements/button.d.ts +8 -0
  233. package/dist/elements/card.d.ts +77 -0
  234. package/dist/elements/card.js +113 -0
  235. package/dist/elements/carousel.d.ts +132 -0
  236. package/dist/elements/carousel.js +117 -0
  237. package/dist/elements/checkbox.d.ts +8 -0
  238. package/dist/elements/chips.d.ts +146 -0
  239. package/dist/elements/chips.js +212 -0
  240. package/dist/elements/css/badge.js +3 -2
  241. package/dist/elements/css/bottom-app-bar.d.ts +1 -0
  242. package/dist/elements/css/bottom-app-bar.js +4 -0
  243. package/dist/elements/css/bottom-sheet.d.ts +1 -0
  244. package/dist/elements/css/bottom-sheet.js +4 -0
  245. package/dist/elements/css/button-group.d.ts +1 -0
  246. package/dist/elements/css/button-group.js +6 -0
  247. package/dist/elements/css/button.js +3 -2
  248. package/dist/elements/css/card.d.ts +1 -0
  249. package/dist/elements/css/card.js +5 -0
  250. package/dist/elements/css/carousel.d.ts +1 -0
  251. package/dist/elements/css/carousel.js +4 -0
  252. package/dist/elements/css/checkbox.js +3 -2
  253. package/dist/elements/css/chips.d.ts +1 -0
  254. package/dist/elements/css/chips.js +4 -0
  255. package/dist/elements/css/datepicker.d.ts +1 -0
  256. package/dist/elements/css/datepicker.js +4 -0
  257. package/dist/elements/css/dialog.d.ts +1 -0
  258. package/dist/elements/css/dialog.js +6 -0
  259. package/dist/elements/css/divider.js +2 -1
  260. package/dist/elements/css/drawer.d.ts +1 -0
  261. package/dist/elements/css/drawer.js +4 -0
  262. package/dist/elements/css/extended-fab.js +3 -2
  263. package/dist/elements/css/fab-menu.d.ts +1 -0
  264. package/dist/elements/css/fab-menu.js +6 -0
  265. package/dist/elements/css/fab.js +3 -2
  266. package/dist/elements/css/icon-button.js +3 -2
  267. package/dist/elements/css/index.js +22 -0
  268. package/dist/elements/css/list.d.ts +1 -0
  269. package/dist/elements/css/list.js +4 -0
  270. package/dist/elements/css/loading-indicator.js +3 -2
  271. package/dist/elements/css/menu.d.ts +1 -0
  272. package/dist/elements/css/menu.js +4 -0
  273. package/dist/elements/css/navigation-rail.d.ts +1 -0
  274. package/dist/elements/css/navigation-rail.js +4 -0
  275. package/dist/elements/css/progress.js +3 -2
  276. package/dist/elements/css/radios.js +3 -2
  277. package/dist/elements/css/search.d.ts +1 -0
  278. package/dist/elements/css/search.js +4 -0
  279. package/dist/elements/css/select.d.ts +1 -0
  280. package/dist/elements/css/select.js +6 -0
  281. package/dist/elements/css/side-sheet.d.ts +1 -0
  282. package/dist/elements/css/side-sheet.js +4 -0
  283. package/dist/elements/css/slider.js +3 -2
  284. package/dist/elements/css/snackbar.d.ts +1 -0
  285. package/dist/elements/css/snackbar.js +6 -0
  286. package/dist/elements/css/split-button.d.ts +1 -0
  287. package/dist/elements/css/split-button.js +6 -0
  288. package/dist/elements/css/switch.js +3 -2
  289. package/dist/elements/css/tabs.js +3 -2
  290. package/dist/elements/css/textfield.js +3 -2
  291. package/dist/elements/css/timepicker.d.ts +1 -0
  292. package/dist/elements/css/timepicker.js +4 -0
  293. package/dist/elements/css/toolbar.d.ts +1 -0
  294. package/dist/elements/css/toolbar.js +6 -0
  295. package/dist/elements/css/tooltip.d.ts +1 -0
  296. package/dist/elements/css/tooltip.js +4 -0
  297. package/dist/elements/css/top-app-bar.d.ts +1 -0
  298. package/dist/elements/css/top-app-bar.js +4 -0
  299. package/dist/elements/datepicker.d.ts +163 -0
  300. package/dist/elements/datepicker.js +120 -0
  301. package/dist/elements/define.d.ts +37 -2
  302. package/dist/elements/define.js +105 -18
  303. package/dist/elements/dialog.d.ts +127 -0
  304. package/dist/elements/dialog.js +156 -0
  305. package/dist/elements/divider.d.ts +8 -0
  306. package/dist/elements/drawer.d.ts +147 -0
  307. package/dist/elements/drawer.js +136 -0
  308. package/dist/elements/extended-fab.d.ts +16 -0
  309. package/dist/elements/extended-fab.js +4 -0
  310. package/dist/elements/fab-menu.d.ts +112 -0
  311. package/dist/elements/fab-menu.js +68 -0
  312. package/dist/elements/fab.d.ts +8 -0
  313. package/dist/elements/icon-button.d.ts +17 -1
  314. package/dist/elements/icon-button.js +6 -4
  315. package/dist/elements/index.d.ts +327 -1
  316. package/dist/elements/index.js +98 -0
  317. package/dist/elements/list.d.ts +144 -0
  318. package/dist/elements/list.js +191 -0
  319. package/dist/elements/loading-indicator.d.ts +8 -0
  320. package/dist/elements/menu.d.ts +174 -0
  321. package/dist/elements/menu.js +178 -0
  322. package/dist/elements/navigation-rail.d.ts +164 -0
  323. package/dist/elements/navigation-rail.js +130 -0
  324. package/dist/elements/preupgrade.css +2 -0
  325. package/dist/elements/preupgrade.css.d.ts +1 -0
  326. package/dist/elements/preupgrade.d.ts +2 -0
  327. package/dist/elements/preupgrade.js +4 -0
  328. package/dist/elements/progress.d.ts +8 -0
  329. package/dist/elements/radios.d.ts +9 -0
  330. package/dist/elements/search.d.ts +225 -0
  331. package/dist/elements/search.js +215 -0
  332. package/dist/elements/select.d.ts +143 -0
  333. package/dist/elements/select.js +149 -0
  334. package/dist/elements/sheet.d.ts +44 -0
  335. package/dist/elements/sheet.js +60 -0
  336. package/dist/elements/side-sheet.d.ts +100 -0
  337. package/dist/elements/side-sheet.js +64 -0
  338. package/dist/elements/slider.d.ts +9 -0
  339. package/dist/elements/snackbar.d.ts +107 -0
  340. package/dist/elements/snackbar.js +54 -0
  341. package/dist/elements/split-button.d.ts +90 -0
  342. package/dist/elements/split-button.js +77 -0
  343. package/dist/elements/styles.d.ts +18 -0
  344. package/dist/elements/styles.js +41 -0
  345. package/dist/elements/switch.d.ts +10 -0
  346. package/dist/elements/switch.js +2 -2
  347. package/dist/elements/tabs.d.ts +9 -0
  348. package/dist/elements/textfield.d.ts +11 -1
  349. package/dist/elements/textfield.js +1 -6
  350. package/dist/elements/timepicker.d.ts +167 -0
  351. package/dist/elements/timepicker.js +159 -0
  352. package/dist/elements/toolbar.d.ts +103 -0
  353. package/dist/elements/toolbar.js +77 -0
  354. package/dist/elements/tooltip.d.ts +97 -0
  355. package/dist/elements/tooltip.js +132 -0
  356. package/dist/elements/top-app-bar.d.ts +72 -0
  357. package/dist/elements/top-app-bar.js +95 -0
  358. package/dist/index.cjs +0 -0
  359. package/dist/package.json +16 -2
  360. package/dist/react/badge.d.ts +4 -0
  361. package/dist/react/badge.js +7 -0
  362. package/dist/react/bottom-app-bar.d.ts +4 -0
  363. package/dist/react/bottom-app-bar.js +7 -0
  364. package/dist/react/bottom-sheet.d.ts +4 -0
  365. package/dist/react/bottom-sheet.js +7 -0
  366. package/dist/react/button-group-item.d.ts +3 -0
  367. package/dist/react/button-group-item.js +6 -0
  368. package/dist/react/button-group.d.ts +7 -0
  369. package/dist/react/button-group.js +10 -0
  370. package/dist/react/button.d.ts +5 -0
  371. package/dist/react/button.js +8 -0
  372. package/dist/react/card.d.ts +4 -0
  373. package/dist/react/card.js +7 -0
  374. package/dist/react/carousel-item.d.ts +3 -0
  375. package/dist/react/carousel-item.js +6 -0
  376. package/dist/react/carousel.d.ts +4 -0
  377. package/dist/react/carousel.js +7 -0
  378. package/dist/react/checkbox.d.ts +4 -0
  379. package/dist/react/checkbox.js +7 -0
  380. package/dist/react/chip.d.ts +3 -0
  381. package/dist/react/chip.js +6 -0
  382. package/dist/react/chips.d.ts +4 -0
  383. package/dist/react/chips.js +7 -0
  384. package/dist/react/create.d.ts +11 -2
  385. package/dist/react/create.js +12 -2
  386. package/dist/react/datepicker.d.ts +4 -0
  387. package/dist/react/datepicker.js +7 -0
  388. package/dist/react/dialog.d.ts +4 -0
  389. package/dist/react/dialog.js +7 -0
  390. package/dist/react/divider.d.ts +4 -0
  391. package/dist/react/divider.js +7 -0
  392. package/dist/react/drawer-item.d.ts +3 -0
  393. package/dist/react/drawer-item.js +6 -0
  394. package/dist/react/drawer.d.ts +4 -0
  395. package/dist/react/drawer.js +7 -0
  396. package/dist/react/extended-fab.d.ts +4 -0
  397. package/dist/react/extended-fab.js +7 -0
  398. package/dist/react/fab-menu-item.d.ts +3 -0
  399. package/dist/react/fab-menu-item.js +6 -0
  400. package/dist/react/fab-menu.d.ts +6 -0
  401. package/dist/react/fab-menu.js +9 -0
  402. package/dist/react/fab.d.ts +4 -0
  403. package/dist/react/fab.js +7 -0
  404. package/dist/react/icon-button.d.ts +4 -0
  405. package/dist/react/icon-button.js +7 -0
  406. package/dist/react/index.d.ts +48 -32
  407. package/dist/react/index.js +48 -32
  408. package/dist/react/jsx.d.ts +74 -0
  409. package/dist/react/jsx.js +2 -0
  410. package/dist/react/list-item.d.ts +3 -0
  411. package/dist/react/list-item.js +6 -0
  412. package/dist/react/list.d.ts +4 -0
  413. package/dist/react/list.js +7 -0
  414. package/dist/react/loading-indicator.d.ts +4 -0
  415. package/dist/react/loading-indicator.js +7 -0
  416. package/dist/react/menu-item.d.ts +3 -0
  417. package/dist/react/menu-item.js +6 -0
  418. package/dist/react/menu.d.ts +4 -0
  419. package/dist/react/menu.js +7 -0
  420. package/dist/react/navigation-rail-item.d.ts +3 -0
  421. package/dist/react/navigation-rail-item.js +6 -0
  422. package/dist/react/navigation-rail.d.ts +4 -0
  423. package/dist/react/navigation-rail.js +7 -0
  424. package/dist/react/progress.d.ts +4 -0
  425. package/dist/react/progress.js +7 -0
  426. package/dist/react/radio.d.ts +3 -0
  427. package/dist/react/radio.js +6 -0
  428. package/dist/react/radios.d.ts +4 -0
  429. package/dist/react/radios.js +7 -0
  430. package/dist/react/search-suggestion.d.ts +3 -0
  431. package/dist/react/search-suggestion.js +6 -0
  432. package/dist/react/search.d.ts +4 -0
  433. package/dist/react/search.js +7 -0
  434. package/dist/react/select-option.d.ts +3 -0
  435. package/dist/react/select-option.js +6 -0
  436. package/dist/react/select.d.ts +6 -0
  437. package/dist/react/select.js +9 -0
  438. package/dist/react/side-sheet.d.ts +4 -0
  439. package/dist/react/side-sheet.js +7 -0
  440. package/dist/react/slider.d.ts +4 -0
  441. package/dist/react/slider.js +7 -0
  442. package/dist/react/snackbar.d.ts +7 -0
  443. package/dist/react/snackbar.js +10 -0
  444. package/dist/react/split-button.d.ts +7 -0
  445. package/dist/react/split-button.js +10 -0
  446. package/dist/react/switch.d.ts +4 -0
  447. package/dist/react/switch.js +7 -0
  448. package/dist/react/tab.d.ts +3 -0
  449. package/dist/react/tab.js +6 -0
  450. package/dist/react/tabs.d.ts +7 -0
  451. package/dist/react/tabs.js +10 -0
  452. package/dist/react/textfield.d.ts +4 -0
  453. package/dist/react/textfield.js +7 -0
  454. package/dist/react/timepicker.d.ts +4 -0
  455. package/dist/react/timepicker.js +7 -0
  456. package/dist/react/toolbar.d.ts +5 -0
  457. package/dist/react/toolbar.js +8 -0
  458. package/dist/react/tooltip.d.ts +4 -0
  459. package/dist/react/tooltip.js +7 -0
  460. package/dist/react/top-app-bar.d.ts +4 -0
  461. package/dist/react/top-app-bar.js +7 -0
  462. package/dist/solid/badge.d.ts +4 -0
  463. package/dist/solid/badge.js +6 -0
  464. package/dist/solid/bottom-app-bar.d.ts +4 -0
  465. package/dist/solid/bottom-app-bar.js +6 -0
  466. package/dist/solid/bottom-sheet.d.ts +4 -0
  467. package/dist/solid/bottom-sheet.js +6 -0
  468. package/dist/solid/button-group-item.d.ts +3 -0
  469. package/dist/solid/button-group-item.js +5 -0
  470. package/dist/solid/button-group.d.ts +7 -0
  471. package/dist/solid/button-group.js +9 -0
  472. package/dist/solid/button.d.ts +5 -0
  473. package/dist/solid/button.js +7 -0
  474. package/dist/solid/card.d.ts +4 -0
  475. package/dist/solid/card.js +6 -0
  476. package/dist/solid/carousel-item.d.ts +3 -0
  477. package/dist/solid/carousel-item.js +5 -0
  478. package/dist/solid/carousel.d.ts +4 -0
  479. package/dist/solid/carousel.js +6 -0
  480. package/dist/solid/checkbox.d.ts +4 -0
  481. package/dist/solid/checkbox.js +6 -0
  482. package/dist/solid/chip.d.ts +3 -0
  483. package/dist/solid/chip.js +5 -0
  484. package/dist/solid/chips.d.ts +4 -0
  485. package/dist/solid/chips.js +6 -0
  486. package/dist/solid/create.d.ts +11 -2
  487. package/dist/solid/create.js +22 -4
  488. package/dist/solid/datepicker.d.ts +4 -0
  489. package/dist/solid/datepicker.js +6 -0
  490. package/dist/solid/dialog.d.ts +4 -0
  491. package/dist/solid/dialog.js +6 -0
  492. package/dist/solid/divider.d.ts +4 -0
  493. package/dist/solid/divider.js +6 -0
  494. package/dist/solid/drawer-item.d.ts +3 -0
  495. package/dist/solid/drawer-item.js +5 -0
  496. package/dist/solid/drawer.d.ts +4 -0
  497. package/dist/solid/drawer.js +6 -0
  498. package/dist/solid/extended-fab.d.ts +4 -0
  499. package/dist/solid/extended-fab.js +6 -0
  500. package/dist/solid/fab-menu-item.d.ts +3 -0
  501. package/dist/solid/fab-menu-item.js +5 -0
  502. package/dist/solid/fab-menu.d.ts +6 -0
  503. package/dist/solid/fab-menu.js +8 -0
  504. package/dist/solid/fab.d.ts +4 -0
  505. package/dist/solid/fab.js +6 -0
  506. package/dist/solid/icon-button.d.ts +4 -0
  507. package/dist/solid/icon-button.js +6 -0
  508. package/dist/solid/index.d.ts +48 -32
  509. package/dist/solid/index.js +48 -32
  510. package/dist/solid/jsx.d.ts +96 -0
  511. package/dist/solid/jsx.js +1 -0
  512. package/dist/solid/list-item.d.ts +3 -0
  513. package/dist/solid/list-item.js +5 -0
  514. package/dist/solid/list.d.ts +4 -0
  515. package/dist/solid/list.js +6 -0
  516. package/dist/solid/loading-indicator.d.ts +4 -0
  517. package/dist/solid/loading-indicator.js +6 -0
  518. package/dist/solid/menu-item.d.ts +3 -0
  519. package/dist/solid/menu-item.js +5 -0
  520. package/dist/solid/menu.d.ts +4 -0
  521. package/dist/solid/menu.js +6 -0
  522. package/dist/solid/navigation-rail-item.d.ts +3 -0
  523. package/dist/solid/navigation-rail-item.js +5 -0
  524. package/dist/solid/navigation-rail.d.ts +4 -0
  525. package/dist/solid/navigation-rail.js +6 -0
  526. package/dist/solid/progress.d.ts +4 -0
  527. package/dist/solid/progress.js +6 -0
  528. package/dist/solid/radio.d.ts +3 -0
  529. package/dist/solid/radio.js +5 -0
  530. package/dist/solid/radios.d.ts +4 -0
  531. package/dist/solid/radios.js +6 -0
  532. package/dist/solid/search-suggestion.d.ts +3 -0
  533. package/dist/solid/search-suggestion.js +5 -0
  534. package/dist/solid/search.d.ts +4 -0
  535. package/dist/solid/search.js +6 -0
  536. package/dist/solid/select-option.d.ts +3 -0
  537. package/dist/solid/select-option.js +5 -0
  538. package/dist/solid/select.d.ts +6 -0
  539. package/dist/solid/select.js +8 -0
  540. package/dist/solid/side-sheet.d.ts +4 -0
  541. package/dist/solid/side-sheet.js +6 -0
  542. package/dist/solid/slider.d.ts +4 -0
  543. package/dist/solid/slider.js +6 -0
  544. package/dist/solid/snackbar.d.ts +7 -0
  545. package/dist/solid/snackbar.js +9 -0
  546. package/dist/solid/split-button.d.ts +7 -0
  547. package/dist/solid/split-button.js +9 -0
  548. package/dist/solid/switch.d.ts +4 -0
  549. package/dist/solid/switch.js +6 -0
  550. package/dist/solid/tab.d.ts +3 -0
  551. package/dist/solid/tab.js +5 -0
  552. package/dist/solid/tabs.d.ts +7 -0
  553. package/dist/solid/tabs.js +9 -0
  554. package/dist/solid/textfield.d.ts +4 -0
  555. package/dist/solid/textfield.js +6 -0
  556. package/dist/solid/timepicker.d.ts +4 -0
  557. package/dist/solid/timepicker.js +6 -0
  558. package/dist/solid/toolbar.d.ts +5 -0
  559. package/dist/solid/toolbar.js +7 -0
  560. package/dist/solid/tooltip.d.ts +4 -0
  561. package/dist/solid/tooltip.js +6 -0
  562. package/dist/solid/top-app-bar.d.ts +4 -0
  563. package/dist/solid/top-app-bar.js +6 -0
  564. package/dist/styles/badge.css +2 -2
  565. package/dist/styles/base.css +2 -2
  566. package/dist/styles/bottom-app-bar.css +2 -2
  567. package/dist/styles/bottom-sheet.css +2 -2
  568. package/dist/styles/button-group.css +2 -2
  569. package/dist/styles/button.css +2 -2
  570. package/dist/styles/card.css +2 -2
  571. package/dist/styles/carousel.css +2 -2
  572. package/dist/styles/checkbox.css +2 -2
  573. package/dist/styles/chips.css +2 -2
  574. package/dist/styles/datepicker.css +2 -2
  575. package/dist/styles/dialog.css +2 -2
  576. package/dist/styles/divider.css +2 -2
  577. package/dist/styles/drawer.css +2 -2
  578. package/dist/styles/extended-fab.css +2 -2
  579. package/dist/styles/fab-menu.css +2 -0
  580. package/dist/styles/fab-menu.d.ts +1 -0
  581. package/dist/styles/fab-menu.js +3 -0
  582. package/dist/styles/fab.css +2 -2
  583. package/dist/styles/icon-button.css +2 -2
  584. package/dist/styles/list.css +2 -2
  585. package/dist/styles/loading-indicator.css +2 -2
  586. package/dist/styles/menu.css +2 -2
  587. package/dist/styles/navigation-rail.css +2 -2
  588. package/dist/styles/progress.css +2 -2
  589. package/dist/styles/radios.css +2 -2
  590. package/dist/styles/search.css +2 -2
  591. package/dist/styles/segmented-button.css +2 -2
  592. package/dist/styles/select.css +2 -2
  593. package/dist/styles/side-sheet.css +2 -2
  594. package/dist/styles/slider.css +2 -2
  595. package/dist/styles/snackbar.css +2 -2
  596. package/dist/styles/split-button.css +2 -2
  597. package/dist/styles/switch.css +2 -2
  598. package/dist/styles/tabs.css +2 -2
  599. package/dist/styles/textfield.css +2 -2
  600. package/dist/styles/timepicker.css +2 -2
  601. package/dist/styles/toolbar.css +2 -0
  602. package/dist/styles/toolbar.d.ts +1 -0
  603. package/dist/styles/toolbar.js +3 -0
  604. package/dist/styles/tooltip.css +2 -2
  605. package/dist/styles/top-app-bar.css +2 -2
  606. package/dist/styles/utilities.css +2 -2
  607. package/dist/styles.css +2 -2
  608. package/dist/svelte/Badge.svelte +7 -2
  609. package/dist/svelte/Badge.svelte.d.ts +2 -2
  610. package/dist/svelte/BottomAppBar.svelte +24 -0
  611. package/dist/svelte/BottomAppBar.svelte.d.ts +5 -0
  612. package/dist/svelte/BottomSheet.svelte +24 -0
  613. package/dist/svelte/BottomSheet.svelte.d.ts +5 -0
  614. package/dist/svelte/Button.svelte +8 -2
  615. package/dist/svelte/Button.svelte.d.ts +2 -2
  616. package/dist/svelte/ButtonGroup.svelte +28 -0
  617. package/dist/svelte/ButtonGroup.svelte.d.ts +5 -0
  618. package/dist/svelte/ButtonGroupItem.svelte +11 -0
  619. package/dist/svelte/ButtonGroupItem.svelte.d.ts +5 -0
  620. package/dist/svelte/Card.svelte +24 -0
  621. package/dist/svelte/Card.svelte.d.ts +5 -0
  622. package/dist/svelte/Carousel.svelte +25 -0
  623. package/dist/svelte/Carousel.svelte.d.ts +5 -0
  624. package/dist/svelte/CarouselItem.svelte +11 -0
  625. package/dist/svelte/CarouselItem.svelte.d.ts +5 -0
  626. package/dist/svelte/Checkbox.svelte +7 -2
  627. package/dist/svelte/Checkbox.svelte.d.ts +2 -2
  628. package/dist/svelte/Chip.svelte +11 -0
  629. package/dist/svelte/Chip.svelte.d.ts +5 -0
  630. package/dist/svelte/Chips.svelte +25 -0
  631. package/dist/svelte/Chips.svelte.d.ts +5 -0
  632. package/dist/svelte/Datepicker.svelte +25 -0
  633. package/dist/svelte/Datepicker.svelte.d.ts +5 -0
  634. package/dist/svelte/Dialog.svelte +24 -0
  635. package/dist/svelte/Dialog.svelte.d.ts +5 -0
  636. package/dist/svelte/Divider.svelte +7 -2
  637. package/dist/svelte/Divider.svelte.d.ts +2 -2
  638. package/dist/svelte/Drawer.svelte +25 -0
  639. package/dist/svelte/Drawer.svelte.d.ts +5 -0
  640. package/dist/svelte/DrawerItem.svelte +11 -0
  641. package/dist/svelte/DrawerItem.svelte.d.ts +5 -0
  642. package/dist/svelte/ExtendedFab.svelte +7 -2
  643. package/dist/svelte/ExtendedFab.svelte.d.ts +2 -2
  644. package/dist/svelte/Fab.svelte +7 -2
  645. package/dist/svelte/Fab.svelte.d.ts +2 -2
  646. package/dist/svelte/FabMenu.svelte +26 -0
  647. package/dist/svelte/FabMenu.svelte.d.ts +5 -0
  648. package/dist/svelte/FabMenuItem.svelte +11 -0
  649. package/dist/svelte/FabMenuItem.svelte.d.ts +5 -0
  650. package/dist/svelte/IconButton.svelte +7 -2
  651. package/dist/svelte/IconButton.svelte.d.ts +2 -2
  652. package/dist/svelte/List.svelte +26 -0
  653. package/dist/svelte/List.svelte.d.ts +5 -0
  654. package/dist/svelte/ListItem.svelte +11 -0
  655. package/dist/svelte/ListItem.svelte.d.ts +5 -0
  656. package/dist/svelte/LoadingIndicator.svelte +7 -2
  657. package/dist/svelte/LoadingIndicator.svelte.d.ts +2 -2
  658. package/dist/svelte/Menu.svelte +25 -0
  659. package/dist/svelte/Menu.svelte.d.ts +5 -0
  660. package/dist/svelte/MenuItem.svelte +11 -0
  661. package/dist/svelte/MenuItem.svelte.d.ts +5 -0
  662. package/dist/svelte/NavigationRail.svelte +25 -0
  663. package/dist/svelte/NavigationRail.svelte.d.ts +5 -0
  664. package/dist/svelte/NavigationRailItem.svelte +11 -0
  665. package/dist/svelte/NavigationRailItem.svelte.d.ts +5 -0
  666. package/dist/svelte/Progress.svelte +7 -2
  667. package/dist/svelte/Progress.svelte.d.ts +2 -2
  668. package/dist/svelte/Radio.svelte +1 -1
  669. package/dist/svelte/Radios.svelte +7 -2
  670. package/dist/svelte/Radios.svelte.d.ts +2 -2
  671. package/dist/svelte/Search.svelte +25 -0
  672. package/dist/svelte/Search.svelte.d.ts +5 -0
  673. package/dist/svelte/SearchSuggestion.svelte +11 -0
  674. package/dist/svelte/SearchSuggestion.svelte.d.ts +5 -0
  675. package/dist/svelte/Select.svelte +27 -0
  676. package/dist/svelte/Select.svelte.d.ts +5 -0
  677. package/dist/svelte/SelectOption.svelte +11 -0
  678. package/dist/svelte/SelectOption.svelte.d.ts +5 -0
  679. package/dist/svelte/SideSheet.svelte +24 -0
  680. package/dist/svelte/SideSheet.svelte.d.ts +5 -0
  681. package/dist/svelte/Slider.svelte +7 -2
  682. package/dist/svelte/Slider.svelte.d.ts +2 -2
  683. package/dist/svelte/Snackbar.svelte +28 -0
  684. package/dist/svelte/Snackbar.svelte.d.ts +5 -0
  685. package/dist/svelte/SplitButton.svelte +27 -0
  686. package/dist/svelte/SplitButton.svelte.d.ts +5 -0
  687. package/dist/svelte/Switch.svelte +7 -2
  688. package/dist/svelte/Switch.svelte.d.ts +2 -2
  689. package/dist/svelte/Tab.svelte +1 -1
  690. package/dist/svelte/Tabs.svelte +10 -2
  691. package/dist/svelte/Tabs.svelte.d.ts +2 -2
  692. package/dist/svelte/Textfield.svelte +7 -2
  693. package/dist/svelte/Textfield.svelte.d.ts +2 -2
  694. package/dist/svelte/Timepicker.svelte +25 -0
  695. package/dist/svelte/Timepicker.svelte.d.ts +5 -0
  696. package/dist/svelte/Toolbar.svelte +25 -0
  697. package/dist/svelte/Toolbar.svelte.d.ts +5 -0
  698. package/dist/svelte/Tooltip.svelte +25 -0
  699. package/dist/svelte/Tooltip.svelte.d.ts +5 -0
  700. package/dist/svelte/TopAppBar.svelte +24 -0
  701. package/dist/svelte/TopAppBar.svelte.d.ts +5 -0
  702. package/dist/svelte/index.d.ts +32 -0
  703. package/dist/svelte/index.js +32 -14
  704. package/dist/svelte/runtime.d.ts +12 -2
  705. package/dist/svelte/runtime.js +11 -2
  706. package/dist/themes/autumn.css +2 -2
  707. package/dist/themes/baseline.css +2 -2
  708. package/dist/themes/brownbeige.css +2 -2
  709. package/dist/themes/browngreen.css +2 -2
  710. package/dist/themes/content.css +2 -0
  711. package/dist/themes/desert.css +2 -2
  712. package/dist/themes/expressive.css +2 -0
  713. package/dist/themes/fidelity.css +2 -0
  714. package/dist/themes/forest.css +2 -2
  715. package/dist/themes/fruit-salad.css +2 -0
  716. package/dist/themes/highcontrast.css +2 -2
  717. package/dist/themes/legacy.css +2 -2
  718. package/dist/themes/material.css +2 -2
  719. package/dist/themes/monochrome.css +2 -0
  720. package/dist/themes/neutral.css +2 -0
  721. package/dist/themes/ocean.css +2 -2
  722. package/dist/themes/rainbow.css +2 -0
  723. package/dist/themes/sageivory.css +2 -2
  724. package/dist/themes/spring.css +2 -2
  725. package/dist/themes/summer.css +2 -2
  726. package/dist/themes/sunset.css +2 -2
  727. package/dist/themes/tealcaramel.css +2 -2
  728. package/dist/themes/vibrant.css +2 -0
  729. package/dist/themes/winter.css +2 -2
  730. package/dist/vue/badge.d.ts +4 -0
  731. package/dist/vue/badge.js +6 -0
  732. package/dist/vue/bottom-app-bar.d.ts +4 -0
  733. package/dist/vue/bottom-app-bar.js +6 -0
  734. package/dist/vue/bottom-sheet.d.ts +4 -0
  735. package/dist/vue/bottom-sheet.js +6 -0
  736. package/dist/vue/button-group-item.d.ts +3 -0
  737. package/dist/vue/button-group-item.js +5 -0
  738. package/dist/vue/button-group.d.ts +7 -0
  739. package/dist/vue/button-group.js +9 -0
  740. package/dist/vue/button.d.ts +5 -0
  741. package/dist/vue/button.js +7 -0
  742. package/dist/vue/card.d.ts +4 -0
  743. package/dist/vue/card.js +6 -0
  744. package/dist/vue/carousel-item.d.ts +3 -0
  745. package/dist/vue/carousel-item.js +5 -0
  746. package/dist/vue/carousel.d.ts +4 -0
  747. package/dist/vue/carousel.js +6 -0
  748. package/dist/vue/checkbox.d.ts +4 -0
  749. package/dist/vue/checkbox.js +6 -0
  750. package/dist/vue/chip.d.ts +3 -0
  751. package/dist/vue/chip.js +5 -0
  752. package/dist/vue/chips.d.ts +4 -0
  753. package/dist/vue/chips.js +6 -0
  754. package/dist/vue/create.d.ts +9 -3
  755. package/dist/vue/create.js +15 -2
  756. package/dist/vue/datepicker.d.ts +4 -0
  757. package/dist/vue/datepicker.js +6 -0
  758. package/dist/vue/dialog.d.ts +4 -0
  759. package/dist/vue/dialog.js +6 -0
  760. package/dist/vue/divider.d.ts +4 -0
  761. package/dist/vue/divider.js +6 -0
  762. package/dist/vue/drawer-item.d.ts +3 -0
  763. package/dist/vue/drawer-item.js +5 -0
  764. package/dist/vue/drawer.d.ts +4 -0
  765. package/dist/vue/drawer.js +6 -0
  766. package/dist/vue/extended-fab.d.ts +4 -0
  767. package/dist/vue/extended-fab.js +6 -0
  768. package/dist/vue/fab-menu-item.d.ts +3 -0
  769. package/dist/vue/fab-menu-item.js +5 -0
  770. package/dist/vue/fab-menu.d.ts +6 -0
  771. package/dist/vue/fab-menu.js +8 -0
  772. package/dist/vue/fab.d.ts +4 -0
  773. package/dist/vue/fab.js +6 -0
  774. package/dist/vue/icon-button.d.ts +4 -0
  775. package/dist/vue/icon-button.js +6 -0
  776. package/dist/vue/index.d.ts +49 -33
  777. package/dist/vue/index.js +48 -32
  778. package/dist/vue/list-item.d.ts +3 -0
  779. package/dist/vue/list-item.js +5 -0
  780. package/dist/vue/list.d.ts +4 -0
  781. package/dist/vue/list.js +6 -0
  782. package/dist/vue/loading-indicator.d.ts +4 -0
  783. package/dist/vue/loading-indicator.js +6 -0
  784. package/dist/vue/menu-item.d.ts +3 -0
  785. package/dist/vue/menu-item.js +5 -0
  786. package/dist/vue/menu.d.ts +4 -0
  787. package/dist/vue/menu.js +6 -0
  788. package/dist/vue/navigation-rail-item.d.ts +3 -0
  789. package/dist/vue/navigation-rail-item.js +5 -0
  790. package/dist/vue/navigation-rail.d.ts +4 -0
  791. package/dist/vue/navigation-rail.js +6 -0
  792. package/dist/vue/progress.d.ts +4 -0
  793. package/dist/vue/progress.js +6 -0
  794. package/dist/vue/radio.d.ts +3 -0
  795. package/dist/vue/radio.js +5 -0
  796. package/dist/vue/radios.d.ts +4 -0
  797. package/dist/vue/radios.js +6 -0
  798. package/dist/vue/search-suggestion.d.ts +3 -0
  799. package/dist/vue/search-suggestion.js +5 -0
  800. package/dist/vue/search.d.ts +4 -0
  801. package/dist/vue/search.js +6 -0
  802. package/dist/vue/select-option.d.ts +3 -0
  803. package/dist/vue/select-option.js +5 -0
  804. package/dist/vue/select.d.ts +6 -0
  805. package/dist/vue/select.js +8 -0
  806. package/dist/vue/side-sheet.d.ts +4 -0
  807. package/dist/vue/side-sheet.js +6 -0
  808. package/dist/vue/slider.d.ts +4 -0
  809. package/dist/vue/slider.js +6 -0
  810. package/dist/vue/snackbar.d.ts +7 -0
  811. package/dist/vue/snackbar.js +9 -0
  812. package/dist/vue/split-button.d.ts +7 -0
  813. package/dist/vue/split-button.js +9 -0
  814. package/dist/vue/switch.d.ts +4 -0
  815. package/dist/vue/switch.js +6 -0
  816. package/dist/vue/tab.d.ts +3 -0
  817. package/dist/vue/tab.js +5 -0
  818. package/dist/vue/tabs.d.ts +7 -0
  819. package/dist/vue/tabs.js +9 -0
  820. package/dist/vue/textfield.d.ts +4 -0
  821. package/dist/vue/textfield.js +6 -0
  822. package/dist/vue/timepicker.d.ts +4 -0
  823. package/dist/vue/timepicker.js +6 -0
  824. package/dist/vue/toolbar.d.ts +5 -0
  825. package/dist/vue/toolbar.js +7 -0
  826. package/dist/vue/tooltip.d.ts +4 -0
  827. package/dist/vue/tooltip.js +6 -0
  828. package/dist/vue/top-app-bar.d.ts +4 -0
  829. package/dist/vue/top-app-bar.js +6 -0
  830. package/package.json +119 -20
  831. package/src/styles/abstract/_functions.scss +13 -1
  832. package/src/styles/abstract/_mixins.scss +16 -1
  833. package/src/styles/abstract/_theme.scss +4 -88
  834. package/src/styles/abstract/_variables.scss +20 -1
  835. package/src/styles/base/_tokens.scss +2 -13
  836. package/src/styles/base/_typography.scss +14 -70
  837. package/src/styles/components/_badge.scss +2 -2
  838. package/src/styles/components/_bottom-app-bar.scss +0 -4
  839. package/src/styles/components/_bottom-sheet.scss +68 -8
  840. package/src/styles/components/_button-group.scss +5 -2
  841. package/src/styles/components/_button.scss +29 -43
  842. package/src/styles/components/_card.scss +0 -2
  843. package/src/styles/components/_carousel.scss +2 -1
  844. package/src/styles/components/_datepicker.scss +4 -0
  845. package/src/styles/components/_dialog.scss +52 -0
  846. package/src/styles/components/_divider.scss +1 -1
  847. package/src/styles/components/_drawer.scss +53 -11
  848. package/src/styles/components/_fab-menu.scss +228 -0
  849. package/src/styles/components/_icon-button.scss +18 -14
  850. package/src/styles/components/_list.scss +3 -2
  851. package/src/styles/components/_menu.scss +22 -2
  852. package/src/styles/components/_navigation-rail.scss +5 -4
  853. package/src/styles/components/_search.scss +279 -273
  854. package/src/styles/components/_select.scss +9 -89
  855. package/src/styles/components/_side-sheet.scss +48 -4
  856. package/src/styles/components/_slider.scss +2 -2
  857. package/src/styles/components/_snackbar.scss +12 -0
  858. package/src/styles/components/_split-button.scss +5 -5
  859. package/src/styles/components/_switch.scss +1 -1
  860. package/src/styles/components/_textfield.scss +144 -93
  861. package/src/styles/components/_timepicker.scss +116 -139
  862. package/src/styles/components/_toolbar.scss +203 -0
  863. package/src/styles/components/_tooltip.scss +31 -12
  864. package/src/styles/elements/_badge.scss +12 -0
  865. package/src/styles/elements/_bottom-app-bar.scss +27 -0
  866. package/src/styles/elements/_bottom-sheet.scss +6 -0
  867. package/src/styles/elements/_button-group.scss +25 -0
  868. package/src/styles/elements/_button.scss +78 -0
  869. package/src/styles/elements/_card.scss +57 -0
  870. package/src/styles/elements/_carousel.scss +12 -0
  871. package/src/styles/elements/_checkbox.scss +38 -0
  872. package/src/styles/elements/_chips.scss +33 -0
  873. package/src/styles/elements/_config.scss +48 -0
  874. package/src/styles/elements/_datepicker.scss +31 -0
  875. package/src/styles/elements/_dialog.scss +6 -0
  876. package/src/styles/elements/_divider.scss +19 -0
  877. package/src/styles/elements/_drawer.scss +23 -0
  878. package/src/styles/elements/_extended-fab.scss +57 -0
  879. package/src/styles/elements/_fab-menu.scss +43 -0
  880. package/src/styles/elements/_fab.scss +33 -0
  881. package/src/styles/elements/_field.scss +111 -0
  882. package/src/styles/elements/_icon-button.scss +55 -0
  883. package/src/styles/elements/_index.scss +41 -0
  884. package/src/styles/elements/_list.scss +34 -0
  885. package/src/styles/elements/_loading-indicator.scss +13 -0
  886. package/src/styles/elements/_menu.scss +6 -0
  887. package/src/styles/elements/_navigation-rail.scss +24 -0
  888. package/src/styles/elements/_progress.scss +24 -0
  889. package/src/styles/elements/_radios.scss +23 -0
  890. package/src/styles/elements/_search.scss +36 -0
  891. package/src/styles/elements/_select.scss +15 -0
  892. package/src/styles/elements/_side-sheet.scss +6 -0
  893. package/src/styles/elements/_slider.scss +10 -0
  894. package/src/styles/elements/_snackbar.scss +6 -0
  895. package/src/styles/elements/_split-button.scss +53 -0
  896. package/src/styles/elements/_switch.scss +51 -0
  897. package/src/styles/elements/_tabs.scss +22 -0
  898. package/src/styles/elements/_textfield.scss +9 -0
  899. package/src/styles/elements/_timepicker.scss +6 -0
  900. package/src/styles/elements/_toolbar.scss +47 -0
  901. package/src/styles/elements/_tooltip.scss +6 -0
  902. package/src/styles/elements/_top-app-bar.scss +57 -0
  903. package/src/styles/main.scss +2 -0
  904. package/src/styles/themes/_autumn.scss +18 -17
  905. package/src/styles/themes/_base-theme.scss +29 -39
  906. package/src/styles/themes/_baseline.scss +58 -83
  907. package/src/styles/themes/_brownbeige.scss +95 -123
  908. package/src/styles/themes/_browngreen.scss +1 -49
  909. package/src/styles/themes/_content.scss +108 -0
  910. package/src/styles/themes/_desert.scss +94 -80
  911. package/src/styles/themes/_expressive.scss +108 -0
  912. package/src/styles/themes/_fidelity.scss +108 -0
  913. package/src/styles/themes/_forest.scss +19 -3
  914. package/src/styles/themes/_fruit-salad.scss +108 -0
  915. package/src/styles/themes/_highcontrast.scss +91 -149
  916. package/src/styles/themes/_legacy.scss +1 -2
  917. package/src/styles/themes/_material.scss +1 -50
  918. package/src/styles/themes/_monochrome.scss +108 -0
  919. package/src/styles/themes/_neutral.scss +108 -0
  920. package/src/styles/themes/_ocean.scss +19 -3
  921. package/src/styles/themes/_rainbow.scss +108 -0
  922. package/src/styles/themes/_sageivory.scss +95 -125
  923. package/src/styles/themes/_spring.scss +19 -3
  924. package/src/styles/themes/_summer.scss +95 -87
  925. package/src/styles/themes/_sunset.scss +19 -3
  926. package/src/styles/themes/_tealcaramel.scss +94 -124
  927. package/src/styles/themes/_vibrant.scss +108 -0
  928. package/src/styles/themes/_winter.scss +1 -3
  929. package/src/styles/themes/_bluekhaki.scss +0 -136
  930. package/src/styles/themes/_greenbeige.scss +0 -138
@@ -52,27 +52,13 @@ export declare const withLoading: (config?: LoadingConfig) => (component: BaseCo
52
52
  loading: LoadingFeature;
53
53
  };
54
54
  /**
55
- * Higher-order function to add elevation to a card based on its variant.
55
+ * Did nothing visible: it wrote a `--{prefix}-card-elevation` custom property
56
+ * that no stylesheet reads. A card's elevation comes from its variant and
57
+ * state classes in the stylesheet.
56
58
  *
57
- * Sets the initial elevation CSS variable according to Material Design 3 guidelines:
58
- * - Elevated variant: 1dp elevation
59
- * - Filled and outlined variants: 0dp elevation
60
- *
61
- * These elevation values affect shadows and surface appearance of the card
62
- * to create appropriate visual hierarchy.
63
- *
64
- * @param {BaseComponent} component - Card component
65
- * @returns {BaseComponent} Card component with elevation applied
59
+ * @deprecated Since 0.10 (FLO-323): a no-op, removed in 1.0. Drop it from
60
+ * the composition.
66
61
  * @category Components
67
- * @example
68
- * ```typescript
69
- * // Apply elevation in the composition chain
70
- * const card = pipe(
71
- * createBase,
72
- * withElement(config),
73
- * withElevation
74
- * )(baseConfig);
75
- * ```
76
62
  */
77
63
  export declare const withElevation: <C extends ElementComponent>(component: C) => C;
78
64
  /**
@@ -6,7 +6,6 @@ const HIDDEN_ACTION_STYLE = {
6
6
  visibility: "hidden",
7
7
  };
8
8
  import { createElement } from "../../core/dom/create.js";
9
- import { CARD_ELEVATION_LEVELS } from "./config.js";
10
9
  export const withLoading = (config = {}) => (component) => {
11
10
  const initialState = config.initialState || false;
12
11
  let loadingElement = null;
@@ -50,16 +49,7 @@ export const withLoading = (config = {}) => (component) => {
50
49
  },
51
50
  };
52
51
  };
53
- export const withElevation = (component) => {
54
- const config = component.config;
55
- if (config.variant === "elevated") {
56
- component.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL1));
57
- }
58
- else {
59
- component.element.style.setProperty(`--${config.prefix}-card-elevation`, String(CARD_ELEVATION_LEVELS.LEVEL0));
60
- }
61
- return component;
62
- };
52
+ export const withElevation = (component) => component;
63
53
  export const withExpandable = (config = {}) => (component) => {
64
54
  const initialExpanded = config.initialExpanded || false;
65
55
  let isExpanded = initialExpanded;
@@ -65,7 +65,7 @@ export { default } from "./card.js";
65
65
  *
66
66
  * These types define the structure and behavior of the Card component.
67
67
  */
68
- export type { CardVariant, CardElevationLevel, CardSchema, CardHeaderConfig, CardContentConfig, CardActionsConfig, CardMediaConfig, CardAriaAttributes, CardComponent, LoadingFeature, ExpandableFeature, SwipeableFeature, } from "./types.js";
68
+ export type { CardVariant, CardElevationLevel, CardSchema, CardHeaderConfig, CardContentConfig, CardActionsConfig, CardMediaConfig, CardAriaAttributes, CardComponent, CardEvents, LoadingFeature, ExpandableFeature, SwipeableFeature, } from "./types.js";
69
69
  export { createCardContent, createCardHeader, createCardActions, createCardMedia, } from "./content.js";
70
70
  export { withAPI } from "./api.js";
71
71
  export { withLoading, withExpandable, withSwipeable, withElevation, } from "./features.js";
@@ -1,4 +1,5 @@
1
1
  import type { ButtonConfig as BaseButtonConfig } from "../button/types.js";
2
+ import type { ForwardedEventPayload } from "../../core/dom/index.js";
2
3
  /**
3
4
  * Card variant types following Material Design 3 guidelines.
4
5
  * - elevated: Card with shadow elevation (default)
@@ -58,11 +59,18 @@ export interface ButtonConfig extends Omit<BaseButtonConfig, "variant"> {
58
59
  export interface CardSchema {
59
60
  /** Card variant type (elevated, filled, outlined) */
60
61
  variant?: CardVariant | string;
61
- /** Whether the card is interactive */
62
+ /**
63
+ * The hover and press states and their elevation, for a card the app
64
+ * makes interactive itself. Not a control: no role of button and no tab
65
+ * stop; `clickable` is (FLO-109).
66
+ */
62
67
  interactive?: boolean;
63
68
  /** Whether the card should take full width */
64
69
  fullWidth?: boolean;
65
- /** Whether the card is clickable (with ripple effect) */
70
+ /**
71
+ * A card that acts on activation: a button (role, tab stop, Enter and
72
+ * Space click it) with the ripple (FLO-109)
73
+ */
66
74
  clickable?: boolean;
67
75
  /** Whether the card is draggable */
68
76
  draggable?: boolean;
@@ -109,7 +117,7 @@ export interface CardAriaAttributes {
109
117
  labelledby?: string;
110
118
  /** ARIA describedby */
111
119
  describedby?: string;
112
- /** ARIA role (default is 'region' for non-interactive, 'button' for interactive) */
120
+ /** ARIA role (default: 'button' for a clickable card, 'article' for any other) */
113
121
  role?: string;
114
122
  /** Additional ARIA attributes as key-value pairs */
115
123
  [key: string]: string | undefined;
@@ -277,6 +285,25 @@ export interface CardComponentConfig extends CardSchema {
277
285
  /** CSS class prefix */
278
286
  prefix: string;
279
287
  }
288
+ /**
289
+ * The card's events (FLO-323). A clickable card forwards `click`; an
290
+ * interactive one `mouseenter`, `mouseleave`, `keydown`, `focus` and `blur`;
291
+ * a draggable one emits `dragstart` and `dragend`.
292
+ */
293
+ export interface CardEvents {
294
+ click: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
295
+ mouseenter: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
296
+ mouseleave: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
297
+ keydown: (payload: ForwardedEventPayload<KeyboardEvent, HTMLElement>) => void;
298
+ focus: (payload: ForwardedEventPayload<FocusEvent, HTMLElement>) => void;
299
+ blur: (payload: ForwardedEventPayload<FocusEvent, HTMLElement>) => void;
300
+ dragstart: (payload: {
301
+ event: DragEvent;
302
+ }) => void;
303
+ dragend: (payload: {
304
+ event: DragEvent;
305
+ }) => void;
306
+ }
280
307
  /**
281
308
  * Card component interface with methods.
282
309
  * This is the public API of the card component that users interact with.
@@ -286,6 +313,10 @@ export interface CardComponentConfig extends CardSchema {
286
313
  * @category Components
287
314
  */
288
315
  export interface CardComponent extends BaseComponent {
316
+ /** Subscribes to one of the card's events (FLO-323) */
317
+ on: <K extends keyof CardEvents>(event: K, handler: CardEvents[K]) => CardComponent;
318
+ /** Removes a handler added with `on` */
319
+ off: <K extends keyof CardEvents>(event: K, handler: CardEvents[K]) => CardComponent;
289
320
  /**
290
321
  * Adds content to the card.
291
322
  * This method appends content to the card component.
@@ -1,5 +1,6 @@
1
1
  import { CAROUSEL_DEFAULTS, CAROUSEL_EVENTS, CAROUSEL_VARIANTS } from "../constants.js";
2
2
  import { resolveLayoutDefaults } from "../config.js";
3
+ import { cornerToken } from "../../../core/theme/shape.js";
3
4
  import { multiBrowseKeylines, heroKeylines, uncontainedKeylines, fullScreenKeylines, } from "../keylines.js";
4
5
  import { createStrategy, keylinesForScrollOffset, snapPositionOffset, maxScrollOffset, placeItem, } from "../strategy.js";
5
6
  const FLING_VELOCITY = 0.4;
@@ -14,6 +15,9 @@ export const withScroll = (config) => (component) => {
14
15
  mediumLargeThreshold: CAROUSEL_DEFAULTS.MEDIUM_LARGE_THRESHOLD,
15
16
  };
16
17
  const cornerRadius = config.cornerRadius ?? CAROUSEL_DEFAULTS.CORNER_RADIUS;
18
+ const corner = cornerRadius === CAROUSEL_DEFAULTS.CORNER_RADIUS
19
+ ? cornerToken("extra-large", cornerRadius, config.prefix)
20
+ : `${cornerRadius}px`;
17
21
  const reduceMotion = typeof window !== "undefined" && typeof window.matchMedia === "function"
18
22
  ? window.matchMedia("(prefers-reduced-motion: reduce)")
19
23
  : null;
@@ -121,7 +125,7 @@ export const withScroll = (config) => (component) => {
121
125
  el.style[vertical ? "height" : "width"] = `${strategy.itemSize}px`;
122
126
  el.style[vertical ? "width" : "height"] = "";
123
127
  });
124
- element.style.setProperty(`--${config.prefix}-carousel-corner`, `${cornerRadius}px`);
128
+ element.style.setProperty(`--${config.prefix}-carousel-corner`, corner);
125
129
  };
126
130
  const layout = () => {
127
131
  if (!strategy)
@@ -152,8 +156,8 @@ export const withScroll = (config) => (component) => {
152
156
  el.style.visibility = "";
153
157
  el.style.transform = vertical ? `translate3d(0, ${start}px, 0)` : `translate3d(${start}px, 0, 0)`;
154
158
  el.style.clipPath = vertical
155
- ? `inset(${inset}px 0 round ${cornerRadius}px)`
156
- : `inset(0 ${inset}px round ${cornerRadius}px)`;
159
+ ? `inset(${inset}px 0 round ${corner})`
160
+ : `inset(0 ${inset}px round ${corner})`;
157
161
  el.style.setProperty(`--${config.prefix}-carousel-fade`, fade.toFixed(3));
158
162
  }
159
163
  if (pending !== null) {
@@ -1,5 +1,4 @@
1
1
  import { createComponentConfig, createElementConfig, } from "../../core/config/component.js";
2
- import { setHTML } from "../../core/dom/html.js";
3
2
  export const defaultConfig = {
4
3
  labelPosition: "end",
5
4
  enterToggles: false,
@@ -10,14 +9,27 @@ export const getElementConfig = (config) => createElementConfig(config, {
10
9
  className: config.class,
11
10
  interactive: true,
12
11
  });
12
+ const SVG = "http://www.w3.org/2000/svg";
13
+ let checkIcon = null;
14
+ const createCheckIcon = () => {
15
+ if (!checkIcon) {
16
+ checkIcon = document.createDocumentFragment();
17
+ const svg = document.createElementNS(SVG, "svg");
18
+ svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", SVG);
19
+ for (const [name, value] of [["viewBox", "0 0 24 24"], ["width", "20"], ["height", "20"], ["fill", "currentColor"]]) {
20
+ svg.setAttribute(name, value);
21
+ }
22
+ const path = document.createElementNS(SVG, "path");
23
+ path.setAttribute("d", "M9.55 14.6L6.35 11.4l-1.9 1.9L9.55 18.4l10.9-10.9-1.9-1.9z");
24
+ svg.append("\n ", path, "\n ");
25
+ checkIcon.append("\n ", svg, "\n ");
26
+ }
27
+ return checkIcon.cloneNode(true);
28
+ };
13
29
  export const withCheckIcon = (config) => (component) => {
14
30
  const icon = document.createElement("span");
15
31
  icon.className = `${config.prefix}-checkbox__icon`;
16
- setHTML(icon, `
17
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" fill="currentColor">
18
- <path d="M9.55 14.6L6.35 11.4l-1.9 1.9L9.55 18.4l10.9-10.9-1.9-1.9z"/>
19
- </svg>
20
- `);
32
+ icon.appendChild(createCheckIcon());
21
33
  component.element.appendChild(icon);
22
34
  return component;
23
35
  };
@@ -68,7 +68,7 @@ export const withAPI = (options) => (component) => {
68
68
  }
69
69
  return this;
70
70
  },
71
- selectByValue(values, triggerEvent = true) {
71
+ selectByValue(values, triggerEvent = false) {
72
72
  if (options.chips &&
73
73
  typeof options.chips.selectByValue === "function") {
74
74
  options.chips.selectByValue(values, triggerEvent);
@@ -53,7 +53,7 @@ export const getApiConfig = (comp, config) => ({
53
53
  getChips: () => comp.chips?.getChips?.() ?? [],
54
54
  getSelectedChips: () => comp.chips?.getSelectedChips?.() ?? [],
55
55
  getSelectedValues: () => comp.chips?.getSelectedValues?.() ?? [],
56
- selectByValue: (values) => comp.chips?.selectByValue?.(values),
56
+ selectByValue: (values, triggerEvent) => comp.chips?.selectByValue?.(values, triggerEvent),
57
57
  clearSelection: () => comp.chips?.clearSelection?.(),
58
58
  scrollToChip: (chipOrIndex) => comp.chips?.scrollToChip?.(chipOrIndex),
59
59
  },
@@ -1,6 +1,7 @@
1
1
  import { getCleanup } from "../../../core/compose/cleanup.js";
2
2
  import createChip from "../chip/chip.js";
3
3
  import { CHIPS_EVENTS } from "../constants.js";
4
+ import { activeElementOf } from "../../../core/dom/focus.js";
4
5
  export const withController = (config) => (component) => {
5
6
  const eventListeners = {
6
7
  change: [],
@@ -13,6 +14,11 @@ export const withController = (config) => (component) => {
13
14
  eventListeners[eventName].forEach((handler) => handler(...args));
14
15
  }
15
16
  };
17
+ const changeEvent = (values, changed) => {
18
+ const set = values.filter((value) => value !== null);
19
+ const value = config.multiSelect ? set : (set[0] ?? null);
20
+ return Object.assign([...values], { value, selected: values, changed });
21
+ };
16
22
  const handleSelection = (selectedChip) => {
17
23
  if (!config.multiSelect) {
18
24
  component.chipInstances.forEach((chip) => {
@@ -27,10 +33,11 @@ export const withController = (config) => (component) => {
27
33
  const selectedChips = component.chipInstances.filter((chip) => chip.isSelected());
28
34
  const selectedValues = selectedChips.map((chip) => chip.getValue());
29
35
  const changedValue = selectedChip ? selectedChip.getValue() : null;
36
+ const event = changeEvent(selectedValues, changedValue);
30
37
  if (typeof config.onChange === "function") {
31
- config.onChange(selectedValues, changedValue);
38
+ config.onChange(event, changedValue);
32
39
  }
33
- dispatchEvent(CHIPS_EVENTS.CHANGE, selectedValues, changedValue);
40
+ dispatchEvent(CHIPS_EVENTS.CHANGE, event, changedValue);
34
41
  };
35
42
  const targets = () => component.chipInstances
36
43
  .filter((chip) => !chip.isDisabled())
@@ -157,7 +164,7 @@ export const withController = (config) => (component) => {
157
164
  : component.chipInstances.indexOf(chipOrIndex);
158
165
  if (index >= 0 && index < component.chipInstances.length) {
159
166
  const chip = component.chipInstances[index];
160
- const hadFocus = chip.element.contains(document.activeElement);
167
+ const hadFocus = chip.element.contains(activeElementOf(chip.element));
161
168
  dispatchEvent(CHIPS_EVENTS.REMOVE, chip);
162
169
  chip.element.removeEventListener("keydown", handleKeyboardNavigation);
163
170
  chip.destroy();
@@ -192,7 +199,7 @@ export const withController = (config) => (component) => {
192
199
  const getSelectedValues = () => {
193
200
  return getSelectedChips().map((chip) => chip.getValue());
194
201
  };
195
- const selectByValue = (values, triggerEvent = true, exclusive = !config.multiSelect) => {
202
+ const selectByValue = (values, triggerEvent = false, exclusive = !config.multiSelect) => {
196
203
  const valueArray = Array.isArray(values) ? values : [values];
197
204
  let selectionChanged = false;
198
205
  if (exclusive) {
@@ -215,17 +222,17 @@ export const withController = (config) => (component) => {
215
222
  });
216
223
  if (selectionChanged && triggerEvent) {
217
224
  const selectedValues = getSelectedValues();
218
- dispatchEvent(CHIPS_EVENTS.CHANGE, selectedValues, null);
225
+ dispatchEvent(CHIPS_EVENTS.CHANGE, changeEvent(selectedValues, null), null);
219
226
  }
220
227
  };
221
- const clearSelection = (triggerEvent = true) => {
228
+ const clearSelection = (triggerEvent = false) => {
222
229
  const selectedValues = getSelectedValues();
223
230
  const hadSelectedChips = selectedValues.length > 0;
224
231
  component.chipInstances.forEach((chip) => {
225
232
  chip.setSelected(false);
226
233
  });
227
234
  if (hadSelectedChips && triggerEvent) {
228
- dispatchEvent(CHIPS_EVENTS.CHANGE, [], null);
235
+ dispatchEvent(CHIPS_EVENTS.CHANGE, changeEvent([], null), null);
229
236
  }
230
237
  };
231
238
  const enableKeyboardNavigation = () => {
@@ -1,3 +1,3 @@
1
1
  export { createAssistChip, createFilterChip, createInputChip, createSuggestionChip } from "./factories.js";
2
2
  export { default as createChips } from "./chips.js";
3
- export type { ChipConfig, ChipComponent, ChipType, ChipEvents, ChipChangePayload, AssistChipConfig, FilterChipConfig, InputChipConfig, SuggestionChipConfig, ChipsConfig, ChipsComponent, ChipsEvents, } from "./types.js";
3
+ export type { ChipConfig, ChipComponent, ChipType, ChipEvents, ChipChangePayload, AssistChipConfig, FilterChipConfig, InputChipConfig, SuggestionChipConfig, ChipsConfig, ChipsComponent, ChipsEvents, ChipsChangeEvent, } from "./types.js";
@@ -150,7 +150,7 @@ export interface ChipsConfig {
150
150
  /**
151
151
  * Callback function when chip selection changes
152
152
  */
153
- onChange?: (selectedValues: (string | null)[], changedValue: string | null) => void;
153
+ onChange?: (event: ChipsChangeEvent, changedValue: string | null) => void;
154
154
  /**
155
155
  * Component prefix for class names
156
156
  * @default 'mtrl'
@@ -219,10 +219,29 @@ export interface ChipsFeatureComponent {
219
219
  * @internal
220
220
  */
221
221
  export type ChipsEventListeners = Record<string, EventCallback[]>;
222
+ /**
223
+ * The payload of the chips set's `change`.
224
+ *
225
+ * It is still the array of selected values, with the fields added, and the
226
+ * changed value still comes as a second argument, so a
227
+ * `(selectedValues, changedValue)` handler keeps working. Both are
228
+ * deprecated: read `selected` and `changed`. They go in the next prerelease.
229
+ */
230
+ export interface ChipsChangeEvent extends Array<string | null> {
231
+ /** The selection in the `value` property's shape: a string or null for a single-select set, an array for a multi-select one. */
232
+ value: string | string[] | null;
233
+ /** The values of the selected chips, in chip order (a chip without a value gives null) */
234
+ selected: (string | null)[];
235
+ /** The value of the chip the user toggled; null for a change made by a method */
236
+ changed: string | null;
237
+ }
222
238
  /** Events emitted by the chips container's controller. */
223
239
  export interface ChipsEvents {
224
- /** Selection values and the changed chip value (null for programmatic changes). */
225
- change: (selectedValues: (string | null)[], changedValue: string | null) => void;
240
+ /**
241
+ * The selection after the change. Read `event.value`, the same field the
242
+ * `<m-chips>` element's `change` carries.
243
+ */
244
+ change: (event: ChipsChangeEvent, changedValue: string | null) => void;
226
245
  /** The newly created chip, after it is inserted into the container. */
227
246
  add: (chip: ChipComponent) => void;
228
247
  /** The chip being removed, before it is destroyed. */
@@ -272,12 +291,12 @@ export interface ChipsComponent {
272
291
  /**
273
292
  * Selects chips by their values
274
293
  * @param values - Value or array of values to select
275
- * @param triggerEvent - Whether to trigger change event (default: true)
294
+ * @param triggerEvent - Emits `change` when true; silent by default (FLO-328)
276
295
  * @returns The chips instance for chaining
277
296
  */
278
297
  selectByValue: (values: string | string[], triggerEvent?: boolean) => ChipsComponent;
279
298
  /**
280
- * Clears all selections
299
+ * Clears all selections. Silent: only the user's change emits `change`
281
300
  * @returns The chips instance for chaining
282
301
  */
283
302
  clearSelection: () => ChipsComponent;
@@ -1,4 +1,10 @@
1
- import type { DatePickerComponent, DatePickerConfig } from "./types.js";
1
+ import type { DatePickerComponent, DatePickerConfig, DatePickerValueOf } from "./types.js";
2
2
  /** M3 calendar/input modes share a draft; modal acceptance is the commit boundary. */
3
- declare const createDatePicker: (config?: DatePickerConfig) => DatePickerComponent;
3
+ /**
4
+ * The value's type follows a literal selectionMode (FLO-295): `'range'` makes
5
+ * it a pair, the default a date.
6
+ */
7
+ declare const createDatePicker: <M extends string = "single">(config?: DatePickerConfig & {
8
+ selectionMode?: M;
9
+ }) => DatePickerComponent<DatePickerValueOf<M>>;
4
10
  export default createDatePicker;
@@ -3,12 +3,14 @@ import { createBase, withElement } from "../../core/compose/component.js";
3
3
  import { withEvents, withDisabled, withLifecycle } from "../../core/compose/features/index.js";
4
4
  import { createElement } from "../../core/dom/create.js";
5
5
  import { setHTML } from "../../core/dom/html.js";
6
+ import { activeElementOf, deepActiveElement } from "../../core/dom/focus.js";
6
7
  import { DATEPICKER_ICONS } from "./constants.js";
7
8
  import { PREFIX } from "../../core/config.js";
8
9
  import { createBaseConfig, getContainerConfig } from "./config.js";
9
10
  import { withAPI } from "./api.js";
10
11
  import { renderCalendar } from "./render.js";
11
- import { addDays, addMonths, formatDate, isSameDay, parseDate, parseInputDate } from "./utils.js";
12
+ import { addDays, addMonths, formatDate, isSameDay, parseDate, parseInputDate, toIsoValue } from "./utils.js";
13
+ const isRangeObject = (value) => typeof value === "object" && value !== null && !(value instanceof Date) && !Array.isArray(value);
12
14
  let nextId = 0;
13
15
  const scrollLocks = new WeakMap();
14
16
  function lockScroll(doc) {
@@ -42,7 +44,7 @@ const createDatePicker = (config = {}) => {
42
44
  isAllowed: date => (!state.minDate || date >= state.minDate) && (!state.maxDate || date <= state.maxDate) && !state.specialDates.some(item => { const special = parseDate(item.date); return item.disabled && special && isSameDay(date, special); }),
43
45
  };
44
46
  const modal = state.variant !== "docked";
45
- let opened = false, destroyed = false, navigationRequested = false;
47
+ let opened = false, destroyed = false, navigationRequested = false, readOnly = false;
46
48
  let committed = null, committedEnd = null;
47
49
  let returnFocus = null;
48
50
  let unlock;
@@ -67,7 +69,7 @@ const createDatePicker = (config = {}) => {
67
69
  trigger.setAttribute("aria-haspopup", "dialog");
68
70
  trigger.setAttribute("aria-controls", `${id}-dialog`);
69
71
  trigger.setAttribute("aria-expanded", "false");
70
- const help = createElement({ tag: "div", className: cls("help"), text: state.dateFormat, attributes: { id: `${id}-help` } });
72
+ const help = createElement({ tag: "div", className: cls("help"), text: settings.supportingText || state.dateFormat, attributes: { id: `${id}-help` } });
71
73
  const error = createElement({ tag: "div", className: cls("error"), attributes: { id: `${id}-error`, "aria-live": "polite" } });
72
74
  const dialog = doc.createElement("dialog");
73
75
  dialog.id = `${id}-dialog`;
@@ -144,7 +146,8 @@ const createDatePicker = (config = {}) => {
144
146
  }
145
147
  else
146
148
  return;
147
- const active = doc.activeElement instanceof HTMLElement ? doc.activeElement.dataset.date : undefined;
149
+ const focused = activeElementOf(dialog);
150
+ const active = focused instanceof HTMLElement ? focused.dataset.date : undefined;
148
151
  render();
149
152
  if (active)
150
153
  dialog.querySelector(`[data-date="${active}"]`)?.focus({ preventScroll: true });
@@ -173,15 +176,15 @@ const createDatePicker = (config = {}) => {
173
176
  else if (focus)
174
177
  focusCurrent();
175
178
  };
176
- const emitChange = () => base.emit("change", { value: getValue(), formattedValue: formatted(committed, committedEnd) });
177
- const commitDraft = (calendar = false) => {
179
+ const emitChange = () => {
180
+ const rangeEndDate = committedEnd && new Date(committedEnd);
181
+ base.emit("change", { value: getValue(), rangeEndDate, formattedValue: formatted(committed, committedEnd), iso: toIsoValue(getValue(), rangeEndDate) });
182
+ };
183
+ const commitDraft = () => {
178
184
  committed = state.selectedDate && new Date(state.selectedDate);
179
185
  committedEnd = state.rangeEndDate && new Date(state.rangeEndDate);
180
186
  syncInput();
181
- if (calendar && committed)
182
- base.emit("change", { value: new Date(committed), rangeEndDate: committedEnd && new Date(committedEnd), formattedValue: formatted(committed, committedEnd) });
183
- else
184
- emitChange();
187
+ emitChange();
185
188
  };
186
189
  const close = (restoreFocus = true) => {
187
190
  if (!opened)
@@ -201,7 +204,7 @@ const createDatePicker = (config = {}) => {
201
204
  base.emit("close", { value: getValue() });
202
205
  };
203
206
  const open = () => {
204
- if (destroyed || opened || base.disabled.isDisabled())
207
+ if (destroyed || opened || base.disabled.isDisabled() || readOnly)
205
208
  return;
206
209
  opened = true;
207
210
  resetDraft();
@@ -215,7 +218,8 @@ const createDatePicker = (config = {}) => {
215
218
  if (!navigationRequested)
216
219
  setDisplayDate(initial);
217
220
  navigationRequested = false;
218
- returnFocus = doc.activeElement instanceof HTMLElement && doc.activeElement !== doc.body ? doc.activeElement : trigger;
221
+ const opener = deepActiveElement();
222
+ returnFocus = opener instanceof HTMLElement && opener !== doc.body ? opener : trigger;
219
223
  render();
220
224
  if (modal && typeof dialog.showModal === "function" && dialog.isConnected)
221
225
  dialog.showModal();
@@ -231,7 +235,9 @@ const createDatePicker = (config = {}) => {
231
235
  focusCurrent();
232
236
  base.emit("open", { value: getValue() });
233
237
  };
234
- const assignValue = (value, emit) => {
238
+ const assignValue = (input, emit) => {
239
+ const given = isRangeObject(input) ? [input.start, input.end] : input;
240
+ const value = state.selectionMode === "range" && !Array.isArray(given) ? [given, given] : given;
235
241
  if (destroyed || Array.isArray(value) && state.selectionMode !== "range")
236
242
  return;
237
243
  const start = parseDate(Array.isArray(value) ? value[0] : value);
@@ -247,6 +253,17 @@ const createDatePicker = (config = {}) => {
247
253
  if (emit)
248
254
  emitChange();
249
255
  };
256
+ const clearValue = (emit) => {
257
+ if (destroyed)
258
+ return;
259
+ committed = null;
260
+ committedEnd = null;
261
+ resetDraft();
262
+ syncInput();
263
+ render();
264
+ if (emit)
265
+ emitChange();
266
+ };
250
267
  const validateEntries = () => {
251
268
  const fields = Array.from(dialog.querySelectorAll('[data-entry]'));
252
269
  if (!fields.length)
@@ -282,7 +299,7 @@ const createDatePicker = (config = {}) => {
282
299
  if (modal || destroyed || base.disabled.isDisabled())
283
300
  return;
284
301
  if (!input.value.trim()) {
285
- api.clear();
302
+ clearValue(true);
286
303
  return;
287
304
  }
288
305
  const pieces = state.selectionMode === "range" ? input.value.split(' - ') : [input.value];
@@ -306,8 +323,9 @@ const createDatePicker = (config = {}) => {
306
323
  state.rangeEndDate = null;
307
324
  }
308
325
  setDisplayDate(date);
309
- if (!modal || settings.closeOnSelect && (state.selectionMode !== "range" || state.rangeEndDate))
310
- commitDraft(true);
326
+ const whole = state.selectionMode !== "range" || !!state.rangeEndDate;
327
+ if ((!modal || settings.closeOnSelect) && whole)
328
+ commitDraft();
311
329
  if (settings.closeOnSelect && (state.selectionMode !== "range" || state.rangeEndDate))
312
330
  close();
313
331
  else
@@ -407,11 +425,12 @@ const createDatePicker = (config = {}) => {
407
425
  if (event.key === "Tab" && modal) {
408
426
  const elements = Array.from(dialog.querySelectorAll('button:not(:disabled):not([tabindex="-1"]), input:not(:disabled)'));
409
427
  const first = elements[0], last = elements.at(-1);
410
- if (event.shiftKey && doc.activeElement === first) {
428
+ const focused = activeElementOf(dialog);
429
+ if (event.shiftKey && focused === first) {
411
430
  event.preventDefault();
412
431
  last?.focus();
413
432
  }
414
- else if (!event.shiftKey && doc.activeElement === last) {
433
+ else if (!event.shiftKey && focused === last) {
415
434
  event.preventDefault();
416
435
  first?.focus();
417
436
  }
@@ -485,7 +504,8 @@ const createDatePicker = (config = {}) => {
485
504
  const page = Math.round(Math.abs(element.scrollLeft) / element.clientWidth) - 1;
486
505
  if (!page)
487
506
  return;
488
- const active = doc.activeElement instanceof HTMLElement && dialog.contains(doc.activeElement) ? doc.activeElement : null;
507
+ const focused = activeElementOf(dialog);
508
+ const active = focused instanceof HTMLElement && dialog.contains(focused) ? focused : null;
489
509
  navigate(page);
490
510
  render(!!active?.dataset.date, active?.dataset.action);
491
511
  };
@@ -548,7 +568,26 @@ const createDatePicker = (config = {}) => {
548
568
  else
549
569
  base.disabled.enable();
550
570
  input.disabled = disabled;
551
- trigger.disabled = disabled;
571
+ trigger.disabled = disabled || readOnly;
572
+ };
573
+ const setReadOnly = (value) => {
574
+ if (destroyed)
575
+ return;
576
+ readOnly = value;
577
+ if (value)
578
+ close();
579
+ input.readOnly = value || modal;
580
+ trigger.disabled = value || base.disabled.isDisabled();
581
+ base.element.classList.toggle(base.getClass("datepicker--readonly"), value);
582
+ };
583
+ const checkValidity = () => !(input.required && !committed);
584
+ const reportValidity = () => {
585
+ const valid = checkValidity();
586
+ if (!valid) {
587
+ input.setAttribute("aria-invalid", "true");
588
+ error.textContent = `Select a ${state.selectionMode === "range" ? "date range" : "date"}.`;
589
+ }
590
+ return valid;
552
591
  };
553
592
  const destroy = () => {
554
593
  if (destroyed)
@@ -575,18 +614,16 @@ const createDatePicker = (config = {}) => {
575
614
  disabled: { enable: () => setDisabled(false), disable: () => setDisabled(true), isDisabled: () => base.disabled.isDisabled() }, lifecycle: { destroy }, destroy,
576
615
  open() { open(); return api; }, close() { close(); return api; }, getValue,
577
616
  getFormattedValue: () => formatted(committed, committedEnd),
578
- setValue(value) { assignValue(value, true); return api; },
579
- clear() {
580
- if (!destroyed) {
581
- committed = null;
582
- committedEnd = null;
583
- resetDraft();
617
+ setValue(value) { assignValue(value, false); return api; },
618
+ setReadOnly(value) { setReadOnly(value); return api; }, isReadOnly: () => readOnly,
619
+ setRequired(value) {
620
+ input.required = value;
621
+ if (!value)
584
622
  syncInput();
585
- render();
586
- emitChange();
587
- }
588
623
  return api;
589
- },
624
+ }, checkValidity, reportValidity,
625
+ setSupportingText(text) { help.textContent = text || state.dateFormat; return api; },
626
+ clear() { clearValue(false); return api; },
590
627
  enable() { setDisabled(false); return api; }, disable() { setDisabled(true); return api; },
591
628
  setMinDate(value) {
592
629
  const date = parseDate(value);
@@ -632,6 +669,10 @@ const createDatePicker = (config = {}) => {
632
669
  syncInput();
633
670
  dialog.append(renderCalendar(state), announcement);
634
671
  setDisabled(!!settings.disabled);
672
+ if (settings.required)
673
+ input.required = true;
674
+ if (settings.readOnly)
675
+ setReadOnly(true);
635
676
  return api;
636
677
  };
637
678
  export default createDatePicker;
@@ -1,3 +1,3 @@
1
1
  export { default } from "./datepicker.js";
2
- export type { DatePickerConfig, DatePickerComponent, DatePickerEvents, DatePickerValue, DatePickerChangePayload, DatePickerVisibilityPayload, DatePickerTapPayload, DatePickerSwipePayload, DatePickerVariant, DatePickerView, DatePickerSelectionMode, } from "./types.js";
2
+ export type { DatePickerConfig, DatePickerComponent, DatePickerEvents, DatePickerValue, DatePickerValueOf, DatePickerInput, DatePickerChangePayload, DatePickerVisibilityPayload, DatePickerTapPayload, DatePickerSwipePayload, DatePickerVariant, DatePickerView, DatePickerSelectionMode, } from "./types.js";
3
3
  export { DEFAULT_DATE_FORMAT } from "./types.js";