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
@@ -3,21 +3,33 @@ import type { NormalizedEvent } from "../../core/utils/mobile.js";
3
3
  /** Value returned by the API, including complete ranges and empty selections. */
4
4
  export type DatePickerValue = Date | [Date, Date] | null;
5
5
  /**
6
- * Calendar selections supply a start date and separate range end. API changes
7
- * supply getValue() (a tuple for a complete range), with no rangeEndDate field.
6
+ * The value as the selection mode shapes it (FLO-295): a range is a pair, a
7
+ * single date a date; an unknown mode, either.
8
8
  */
9
- export type DatePickerChangePayload = {
10
- value: Date;
9
+ export type DatePickerValueOf<M> = M extends "range" ? [Date, Date] | null : M extends "single" ? Date | null : DatePickerValue;
10
+ /** What setValue and `value` take: a date, a range as a pair, or as { start, end } (FLO-289). */
11
+ export type DatePickerInput = Date | string | [Date | string, Date | string] | {
12
+ start: Date | string;
13
+ end: Date | string;
14
+ };
15
+ /**
16
+ * One shape whatever committed the value (FLO-295): a range's `value` is the
17
+ * pair, and `rangeEndDate` its end, kept for compatibility (null otherwise).
18
+ * The docked calendar sent the start as the value and the end apart.
19
+ */
20
+ export interface DatePickerChangePayload<V = DatePickerValue> {
21
+ value: V;
11
22
  rangeEndDate: Date | null;
12
23
  formattedValue: string;
13
- } | {
14
- value: DatePickerValue;
15
- rangeEndDate?: never;
16
- formattedValue: string;
17
- };
24
+ /**
25
+ * The value as ISO 8601 text, the `value` of the `<m-datepicker>` element's
26
+ * `change`: a date (`2026-09-10`), a `start/end` interval, or "" (FLO-320)
27
+ */
28
+ iso: string;
29
+ }
18
30
  /** Visibility events carry the committed value, including complete ranges. */
19
- export interface DatePickerVisibilityPayload {
20
- value: DatePickerValue;
31
+ export interface DatePickerVisibilityPayload<V = DatePickerValue> {
32
+ value: V;
21
33
  }
22
34
  /** Normalized touch-end event emitted by the interactive root. */
23
35
  export type DatePickerTapPayload = NormalizedEvent;
@@ -28,10 +40,10 @@ export interface DatePickerSwipePayload {
28
40
  deltaY: number;
29
41
  }
30
42
  /** Events emitted by the picker API, calendar selections and interactive root. */
31
- export interface DatePickerEvents {
32
- change: (payload: DatePickerChangePayload) => void;
33
- open: (payload: DatePickerVisibilityPayload) => void;
34
- close: (payload: DatePickerVisibilityPayload) => void;
43
+ export interface DatePickerEvents<V = DatePickerValue> {
44
+ change: (payload: DatePickerChangePayload<V>) => void;
45
+ open: (payload: DatePickerVisibilityPayload<V>) => void;
46
+ close: (payload: DatePickerVisibilityPayload<V>) => void;
35
47
  click: (payload: ForwardedEventPayload<MouseEvent, HTMLElement>) => void;
36
48
  keydown: (payload: ForwardedEventPayload<KeyboardEvent, HTMLElement>) => void;
37
49
  tap: (payload: DatePickerTapPayload) => void;
@@ -133,7 +145,13 @@ export interface DatePickerConfig {
133
145
  * Initial selected date(s)
134
146
  * Accepts a Date object, Date string, or two dates for range selection
135
147
  */
136
- value?: Date | string | [Date | string, Date | string];
148
+ value?: DatePickerInput;
149
+ /** The value shows and cannot change: no typing, no calendar (FLO-289). */
150
+ readOnly?: boolean;
151
+ /** A date is required: on the input for forms, and checkValidity() (FLO-289). */
152
+ required?: boolean;
153
+ /** The supporting text under the field. Default: the date format (FLO-289). */
154
+ supportingText?: string;
137
155
  /**
138
156
  * Minimum selectable date
139
157
  */
@@ -243,7 +261,7 @@ export interface CalendarAPI {
243
261
  * DatePicker component interface
244
262
  * @category Components
245
263
  */
246
- export interface DatePickerComponent {
264
+ export interface DatePickerComponent<V = DatePickerValue> {
247
265
  /** The datepicker's main DOM element */
248
266
  element: HTMLElement;
249
267
  /** The input field DOM element */
@@ -274,55 +292,70 @@ export interface DatePickerComponent {
274
292
  * Opens the datepicker dropdown/modal
275
293
  * @returns The datepicker component for chaining
276
294
  */
277
- open: () => DatePickerComponent;
295
+ open: () => DatePickerComponent<V>;
278
296
  /**
279
297
  * Closes the datepicker dropdown/modal
280
298
  * @returns The datepicker component for chaining
281
299
  */
282
- close: () => DatePickerComponent;
300
+ close: () => DatePickerComponent<V>;
283
301
  /**
284
302
  * Gets the selected date(s)
285
303
  * @returns Date object, array of two Date objects for range, or null if none selected
286
304
  */
287
- getValue: () => Date | [Date, Date] | null;
305
+ getValue: () => V;
288
306
  /**
289
- * Sets the selected date(s)
307
+ * Sets the selected date(s). Silent: only the user's choice emits `change`
290
308
  * @param value - Date, string, or array of dates for range selection
291
309
  * @returns The datepicker component for chaining
292
310
  */
293
- setValue: (value: Date | string | [Date | string, Date | string]) => DatePickerComponent;
311
+ setValue: (value: DatePickerInput) => DatePickerComponent<V>;
312
+ /** Read-only: the value shows and cannot change (FLO-289) */
313
+ setReadOnly: (readOnly: boolean) => DatePickerComponent<V>;
314
+ /** Whether the picker is read-only */
315
+ isReadOnly: () => boolean;
316
+ /** Whether a date is required (FLO-289) */
317
+ setRequired: (required: boolean) => DatePickerComponent<V>;
318
+ /**
319
+ * False when a date is required and missing. A dialog variant's input is
320
+ * read-only, which forms do not validate.
321
+ */
322
+ checkValidity: () => boolean;
323
+ /** As checkValidity(), and shows the error on the field when false */
324
+ reportValidity: () => boolean;
325
+ /** The supporting text; empty or null shows the date format (FLO-289) */
326
+ setSupportingText: (text: string | null) => DatePickerComponent<V>;
294
327
  /**
295
328
  * Gets the formatted date string based on the selected date(s)
296
329
  * @returns Formatted date string or empty string if none selected
297
330
  */
298
331
  getFormattedValue: () => string;
299
332
  /**
300
- * Clears the selected date(s)
333
+ * Clears the selected date(s). Silent
301
334
  * @returns The datepicker component for chaining
302
335
  */
303
- clear: () => DatePickerComponent;
336
+ clear: () => DatePickerComponent<V>;
304
337
  /**
305
338
  * Enables the datepicker
306
339
  * @returns The datepicker component for chaining
307
340
  */
308
- enable: () => DatePickerComponent;
341
+ enable: () => DatePickerComponent<V>;
309
342
  /**
310
343
  * Disables the datepicker
311
344
  * @returns The datepicker component for chaining
312
345
  */
313
- disable: () => DatePickerComponent;
346
+ disable: () => DatePickerComponent<V>;
314
347
  /**
315
348
  * Sets the minimum selectable date
316
349
  * @param date - Date object or string
317
350
  * @returns The datepicker component for chaining
318
351
  */
319
- setMinDate: (date: Date | string) => DatePickerComponent;
352
+ setMinDate: (date: Date | string) => DatePickerComponent<V>;
320
353
  /**
321
354
  * Sets the maximum selectable date
322
355
  * @param date - Date object or string
323
356
  * @returns The datepicker component for chaining
324
357
  */
325
- setMaxDate: (date: Date | string) => DatePickerComponent;
358
+ setMaxDate: (date: Date | string) => DatePickerComponent<V>;
326
359
  /**
327
360
  * Destroys the datepicker component and cleans up resources
328
361
  */
@@ -333,14 +366,14 @@ export interface DatePickerComponent {
333
366
  * @param handler - Event handler function
334
367
  * @returns The datepicker component for chaining
335
368
  */
336
- on: <K extends keyof DatePickerEvents>(event: K, handler: DatePickerEvents[K]) => DatePickerComponent;
369
+ on: <K extends keyof DatePickerEvents<V>>(event: K, handler: DatePickerEvents<V>[K]) => DatePickerComponent<V>;
337
370
  /**
338
371
  * Removes an event listener from the datepicker
339
372
  * @param event - Event name
340
373
  * @param handler - Event handler function
341
374
  * @returns The datepicker component for chaining
342
375
  */
343
- off: <K extends keyof DatePickerEvents>(event: K, handler: DatePickerEvents[K]) => DatePickerComponent;
376
+ off: <K extends keyof DatePickerEvents<V>>(event: K, handler: DatePickerEvents<V>[K]) => DatePickerComponent<V>;
344
377
  }
345
378
  /** Internal calendar view model. Dates are local civil dates, without a time. */
346
379
  export interface DatePickerState {
@@ -77,3 +77,8 @@ export declare const addMonths: (date: Date, months: number) => Date;
77
77
  * @returns New date with years added
78
78
  */
79
79
  export declare const addYears: (date: Date, years: number) => Date;
80
+ /**
81
+ * A value as ISO 8601 text, the `<m-datepicker>` element's value: a date
82
+ * (`2026-09-10`), a `start/end` interval, or "" (FLO-320).
83
+ */
84
+ export declare const toIsoValue: (value: Date | [Date, Date] | null, end?: Date | null) => string;
@@ -178,3 +178,5 @@ export const addMonths = (date, months) => {
178
178
  export const addYears = (date, years) => {
179
179
  return addMonths(date, years * 12);
180
180
  };
181
+ const isoDate = (date) => (date ? formatDate(date, "YYYY-MM-DD") : "");
182
+ export const toIsoValue = (value, end) => Array.isArray(value) ? `${isoDate(value[0])}/${isoDate(value[1])}` : value && end ? `${isoDate(value)}/${isoDate(end)}` : isoDate(value);
@@ -1,4 +1,5 @@
1
1
  import { removeClass } from "../../core/dom/classes.js";
2
+ import { hideFromTopLayer } from "../../core/dom/layer.js";
2
3
  export const withAPI = (options) => (component) => ({
3
4
  ...component,
4
5
  open() {
@@ -92,6 +93,7 @@ export const withAPI = (options) => (component) => ({
92
93
  const overlayVisibleClass = `${component.getClass("dialog__overlay")}--visible`;
93
94
  removeClass(component.element, dialogVisibleClass);
94
95
  removeClass(component.overlay, overlayVisibleClass);
96
+ hideFromTopLayer(component.element);
95
97
  if (options.focus && options.focus.releaseFocus) {
96
98
  options.focus.releaseFocus();
97
99
  }
@@ -100,6 +102,9 @@ export const withAPI = (options) => (component) => ({
100
102
  if (component.overlay && component.overlay.parentNode) {
101
103
  component.overlay.parentNode.removeChild(component.overlay);
102
104
  }
105
+ if (component.element.parentNode !== component.overlay) {
106
+ component.element.remove();
107
+ }
103
108
  },
104
109
  element: component.element,
105
110
  overlay: component.overlay,
@@ -1,4 +1,5 @@
1
1
  import { createComponentConfig, createElementConfig } from "../../core/config/component.js";
2
+ import { supportsTopLayer } from "../../core/dom/layer.js";
2
3
  export const defaultConfig = {
3
4
  size: 'medium',
4
5
  animation: 'scale',
@@ -12,7 +13,12 @@ export const defaultConfig = {
12
13
  divider: false,
13
14
  buttons: []
14
15
  };
15
- export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, 'dialog');
16
+ export const createBaseConfig = (config = {}) => {
17
+ const merged = createComponentConfig(defaultConfig, config, 'dialog');
18
+ if (merged.layer === 'top' && !supportsTopLayer('modal'))
19
+ merged.layer = undefined;
20
+ return merged;
21
+ };
16
22
  export const getElementConfig = (config) => {
17
23
  const role = config.role ||
18
24
  (config.size === 'fullscreen' ? 'dialog' : 'alertdialog');
@@ -24,7 +30,7 @@ export const getElementConfig = (config) => {
24
30
  attributes['aria-modal'] = 'true';
25
31
  }
26
32
  return createElementConfig(config, {
27
- tag: 'div',
33
+ tag: config.layer === 'top' ? 'dialog' : 'div',
28
34
  attributes,
29
35
  className: config.class
30
36
  });
@@ -3,6 +3,8 @@ import createButton from "../button/index.js";
3
3
  import { createDivider } from "../divider/index.js";
4
4
  import { addClass, removeClass } from "../../core/dom/classes.js";
5
5
  import { setHTML } from "../../core/dom/html.js";
6
+ import { activeElementOf, deepActiveElement, tabStops, wrapTab } from "../../core/dom/focus.js";
7
+ import { hideFromTopLayer, onTopLayerClose, showInTopLayer } from "../../core/dom/layer.js";
6
8
  const DIALOG_EVENTS = {
7
9
  OPEN: "open",
8
10
  CLOSE: "close",
@@ -141,9 +143,14 @@ export const withStructure = (config, getComponent) => (component) => {
141
143
  if (footer) {
142
144
  component.element.appendChild(footer);
143
145
  }
144
- overlay.appendChild(component.element);
145
146
  const container = config.container || document.body;
146
- container.appendChild(overlay);
147
+ if (config.layer === "top") {
148
+ container.appendChild(component.element);
149
+ }
150
+ else {
151
+ overlay.appendChild(component.element);
152
+ container.appendChild(overlay);
153
+ }
147
154
  return {
148
155
  ...component,
149
156
  overlay,
@@ -198,10 +205,11 @@ export const withDivider = () => (component) => {
198
205
  };
199
206
  };
200
207
  const addButton = (footer, buttonConfig, component, getComponent) => {
201
- const { text, variant = "text", onClick, closeDialog = true, autofocus = false, attributes = {}, } = buttonConfig;
208
+ const { text, variant = "text", onClick, closeDialog = true, autofocus = false, attributes = {}, size, } = buttonConfig;
202
209
  const button = createButton({
203
210
  text,
204
211
  variant,
212
+ ...(size ? { size } : {}),
205
213
  ...attributes,
206
214
  });
207
215
  button.on("click", ({ originalEvent: event }) => {
@@ -239,6 +247,8 @@ export const withVisibility = (getComponent) => (component) => {
239
247
  const isOpen = component.config.open === true;
240
248
  const openDuration = component.config.animationDuration ?? 500;
241
249
  const closeDuration = component.config.animationDuration ?? 150;
250
+ const top = component.config.layer === "top";
251
+ const scrim = top ? component.element : component.overlay;
242
252
  const focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';
243
253
  let previouslyFocusedElement = null;
244
254
  let mouseDownOnOverlay = false;
@@ -246,7 +256,7 @@ export const withVisibility = (getComponent) => (component) => {
246
256
  let scrollLock = null;
247
257
  const focusable = () => Array.from(component.element.querySelectorAll(focusableElements)).filter((el) => !el.hasAttribute("disabled") &&
248
258
  el.getAttribute("aria-hidden") !== "true" &&
249
- (el.offsetWidth > 0 || el.offsetHeight > 0 || el === document.activeElement));
259
+ (el.offsetWidth > 0 || el.offsetHeight > 0 || el === activeElementOf(el)));
250
260
  function handleTabKey(e) {
251
261
  if (e.key !== "Tab")
252
262
  return;
@@ -258,7 +268,7 @@ export const withVisibility = (getComponent) => (component) => {
258
268
  }
259
269
  const first = elements[0];
260
270
  const last = elements[elements.length - 1];
261
- const active = document.activeElement;
271
+ const active = activeElementOf(component.element);
262
272
  if (e.shiftKey && (active === first || !component.element.contains(active))) {
263
273
  last.focus();
264
274
  e.preventDefault();
@@ -271,7 +281,7 @@ export const withVisibility = (getComponent) => (component) => {
271
281
  const inertBackground = () => {
272
282
  if (component.config.modal === false)
273
283
  return;
274
- const parent = component.overlay.parentElement;
284
+ const parent = top ? null : component.overlay.parentElement;
275
285
  if (parent) {
276
286
  Array.from(parent.children).forEach((sibling) => {
277
287
  if (sibling === component.overlay)
@@ -297,19 +307,21 @@ export const withVisibility = (getComponent) => (component) => {
297
307
  scrollLock = null;
298
308
  }
299
309
  };
310
+ const handleWrap = (e) => wrapTab(component.element, e);
300
311
  const trapFocus = () => {
301
312
  inertBackground();
302
313
  if (component.config.autofocus !== false) {
303
314
  const requested = component.element.querySelector("[autofocus]");
304
- const target = requested || focusable()[0] || component.element;
315
+ const target = requested || (top ? tabStops(component.element) : focusable())[0] || component.element;
305
316
  target.focus();
306
317
  }
307
318
  if (component.config.trapFocus !== false) {
308
- component.element.addEventListener("keydown", handleTabKey);
319
+ component.element.addEventListener("keydown", top ? handleWrap : handleTabKey);
309
320
  }
310
321
  };
311
322
  const releaseFocus = () => {
312
323
  component.element.removeEventListener("keydown", handleTabKey);
324
+ component.element.removeEventListener("keydown", handleWrap);
313
325
  releaseBackground();
314
326
  if (previouslyFocusedElement) {
315
327
  if (previouslyFocusedElement.isConnected)
@@ -319,33 +331,61 @@ export const withVisibility = (getComponent) => (component) => {
319
331
  };
320
332
  const setupEvents = () => {
321
333
  if (component.config.closeOnOverlayClick !== false) {
322
- component.overlay.addEventListener("mousedown", handleOverlayMouseDown);
334
+ scrim.addEventListener("mousedown", handleOverlayMouseDown);
323
335
  document.addEventListener("mouseup", handleOverlayMouseUp);
324
336
  }
325
- if (component.config.closeOnEscape !== false) {
337
+ if (top) {
338
+ component.element.addEventListener("cancel", handleCancel);
339
+ }
340
+ else if (component.config.closeOnEscape !== false) {
326
341
  document.addEventListener("keydown", handleEscKey);
327
342
  }
328
343
  };
329
344
  const cleanupEvents = () => {
330
- component.overlay.removeEventListener("mousedown", handleOverlayMouseDown);
345
+ scrim.removeEventListener("mousedown", handleOverlayMouseDown);
331
346
  document.removeEventListener("mouseup", handleOverlayMouseUp);
332
347
  document.removeEventListener("keydown", handleEscKey);
348
+ component.element.removeEventListener("cancel", handleCancel);
349
+ };
350
+ const onScrim = (e) => {
351
+ if (!top)
352
+ return e.target === component.overlay;
353
+ if (e.composedPath()[0] !== scrim)
354
+ return false;
355
+ const box = scrim.getBoundingClientRect();
356
+ return e.clientX < box.left || e.clientX > box.right || e.clientY < box.top || e.clientY > box.bottom;
333
357
  };
334
358
  function handleOverlayMouseDown(e) {
335
- mouseDownOnOverlay = e.target === component.overlay;
359
+ mouseDownOnOverlay = onScrim(e);
336
360
  }
337
361
  function handleOverlayMouseUp(e) {
338
- if (mouseDownOnOverlay && e.target === component.overlay) {
362
+ if (mouseDownOnOverlay && onScrim(e)) {
339
363
  visibility.close();
340
364
  }
341
365
  mouseDownOnOverlay = false;
342
366
  }
367
+ function handleCancel(e) {
368
+ e.preventDefault();
369
+ if (component.config.closeOnEscape !== false && visibility.isOpen()) {
370
+ visibility.close();
371
+ }
372
+ }
373
+ const showModal = () => {
374
+ if (!component.element.isConnected) {
375
+ component.structure.container.appendChild(component.element);
376
+ }
377
+ if (!component.element.isConnected || !showInTopLayer(component.element, { kind: "modal" })) {
378
+ component.element.setAttribute("open", "");
379
+ }
380
+ };
343
381
  function handleEscKey(e) {
344
382
  if (e.key === "Escape" && visibility.isOpen()) {
345
383
  visibility.close();
346
384
  }
347
385
  }
348
386
  if (isOpen) {
387
+ if (top)
388
+ showModal();
349
389
  addClass(component.overlay, `${component.getClass("dialog__overlay")}--visible`);
350
390
  addClass(component.element, `${component.getClass("dialog")}--visible`);
351
391
  trapFocus();
@@ -355,7 +395,7 @@ export const withVisibility = (getComponent) => (component) => {
355
395
  open() {
356
396
  if (this.isOpen())
357
397
  return;
358
- previouslyFocusedElement = document.activeElement;
398
+ previouslyFocusedElement = deepActiveElement();
359
399
  const beforeOpenEvent = {
360
400
  dialog: getComponent(),
361
401
  defaultPrevented: false,
@@ -368,6 +408,18 @@ export const withVisibility = (getComponent) => (component) => {
368
408
  }
369
409
  if (beforeOpenEvent.defaultPrevented)
370
410
  return;
411
+ if (top) {
412
+ showModal();
413
+ void component.element.offsetWidth;
414
+ addClass(component.element, `${component.getClass("dialog")}--visible`);
415
+ trapFocus();
416
+ setupEvents();
417
+ component.emit(DIALOG_EVENTS.OPEN, { dialog: getComponent() });
418
+ setTimeout(() => {
419
+ component.emit(DIALOG_EVENTS.AFTER_OPEN, { dialog: getComponent() });
420
+ }, openDuration);
421
+ return;
422
+ }
371
423
  if (component.overlay && !component.overlay.parentNode) {
372
424
  const container = component.structure.container || document.body;
373
425
  container.appendChild(component.overlay);
@@ -403,13 +455,15 @@ export const withVisibility = (getComponent) => (component) => {
403
455
  const overlayVisibleClass = `${component.getClass("dialog__overlay")}--visible`;
404
456
  removeClass(component.element, dialogVisibleClass);
405
457
  removeClass(component.overlay, overlayVisibleClass);
458
+ if (top)
459
+ hideFromTopLayer(component.element);
406
460
  releaseFocus();
407
461
  cleanupEvents();
408
462
  if (typeof component.emit === "function") {
409
463
  component.emit(DIALOG_EVENTS.CLOSE, { dialog: getComponent() });
410
464
  }
411
465
  setTimeout(() => {
412
- if (component.overlay && component.overlay.parentNode) {
466
+ if (!top && component.overlay && component.overlay.parentNode) {
413
467
  component.overlay.parentNode.removeChild(component.overlay);
414
468
  }
415
469
  if (typeof component.emit === "function") {
@@ -437,6 +491,12 @@ export const withVisibility = (getComponent) => (component) => {
437
491
  visibility.close();
438
492
  });
439
493
  }
494
+ if (top) {
495
+ onTopLayerClose(component.element, () => {
496
+ if (visibility.isOpen())
497
+ visibility.close();
498
+ });
499
+ }
440
500
  return {
441
501
  ...component,
442
502
  visibility,
@@ -598,23 +658,31 @@ export const withConfirm = () => (component) => {
598
658
  return new Promise((resolve) => {
599
659
  const { title = "Confirm", message, confirmText = "Yes", cancelText = "No", confirmVariant = "filled", cancelVariant = "text", size = "small", } = options;
600
660
  component.content.setTitle(title);
601
- component.content.setContent(`<p>${message}</p>`);
661
+ const text = document.createElement("p");
662
+ text.textContent = message;
663
+ component.content.setContent(text.outerHTML);
602
664
  component.size.setSize(size);
603
665
  component._buttons.forEach((button) => button.instance.destroy());
604
666
  component._buttons = [];
605
- component.buttons.addButton({
606
- text: confirmText,
607
- variant: confirmVariant,
608
- onClick: () => {
609
- resolve(true);
610
- },
611
- });
667
+ let settled = false;
668
+ const settle = (answer) => {
669
+ if (settled)
670
+ return;
671
+ settled = true;
672
+ component.off("close", onClose);
673
+ resolve(answer);
674
+ };
675
+ const onClose = () => settle(false);
676
+ component.on("close", onClose);
612
677
  component.buttons.addButton({
613
678
  text: cancelText,
614
679
  variant: cancelVariant,
615
- onClick: () => {
616
- resolve(false);
617
- },
680
+ onClick: () => settle(false),
681
+ });
682
+ component.buttons.addButton({
683
+ text: confirmText,
684
+ variant: confirmVariant,
685
+ onClick: () => settle(true),
618
686
  });
619
687
  component.visibility.open();
620
688
  });
@@ -151,6 +151,17 @@ export interface DialogConfig {
151
151
  * @default document.body
152
152
  */
153
153
  container?: HTMLElement;
154
+ /**
155
+ * `"top"` makes the dialog itself a `<dialog>` element, rendered in place in
156
+ * `container` (or `document.body`) and kept there when it closes, and opens
157
+ * it with `showModal()`: in the browser's top layer, above every z-index and
158
+ * outside any clipping ancestor, with the rest of the page inert. The scrim
159
+ * is its `::backdrop`, and the overlay element is not used. Escape reaches
160
+ * the dialog as its `cancel` event.
161
+ *
162
+ * Where the browser has no `showModal()`, the dialog behaves as without it.
163
+ */
164
+ layer?: "top";
154
165
  /**
155
166
  * Footer buttons configuration
156
167
  * Array of button objects to display in the footer
@@ -204,8 +215,9 @@ export interface DialogButton {
204
215
  */
205
216
  variant?: string;
206
217
  /**
207
- * Button color
208
- * @example "primary" | "error"
218
+ * Has no effect: the button has no colour option, and M3's dialog actions
219
+ * are text buttons in the dialog's own colours.
220
+ * @deprecated Since 0.10 (FLO-324); removed in 1.0.
209
221
  */
210
222
  color?: string;
211
223
  /**
@@ -322,6 +334,7 @@ export interface DialogFeatureComponent {
322
334
  config: DialogConfig & Record<string, unknown>;
323
335
  getClass: (name: string) => string;
324
336
  on: (event: string, handler: EventCallback) => unknown;
337
+ off: (event: string, handler: EventCallback) => unknown;
325
338
  emit: (event: string, data?: unknown) => unknown;
326
339
  _buttons?: DialogButtonRecord[];
327
340
  }
@@ -16,6 +16,7 @@ const applyLayout = (component, config) => {
16
16
  element.setAttribute('aria-orientation', 'vertical');
17
17
  const style = element.style;
18
18
  style.marginLeft = style.marginRight = style.marginTop = style.marginBottom = '';
19
+ style.marginInlineStart = style.marginInlineEnd = style.marginBlockStart = style.marginBlockEnd = '';
19
20
  const cross = horizontal ? 'height' : 'width';
20
21
  const main = horizontal ? 'width' : 'height';
21
22
  style[cross] = `${thickness}px`;
@@ -25,8 +26,8 @@ const applyLayout = (component, config) => {
25
26
  const insetEnd = config.insetEnd !== undefined
26
27
  ? config.insetEnd
27
28
  : (variant === 'middle-inset' ? DEFAULT_INSET : 0);
28
- style[horizontal ? 'marginLeft' : 'marginTop'] = `${insetStart}px`;
29
- style[horizontal ? 'marginRight' : 'marginBottom'] = `${insetEnd}px`;
29
+ style[horizontal ? 'marginInlineStart' : 'marginBlockStart'] = `${insetStart}px`;
30
+ style[horizontal ? 'marginInlineEnd' : 'marginBlockEnd'] = `${insetEnd}px`;
30
31
  style[main] = 'auto';
31
32
  }
32
33
  };
@@ -1,5 +1,6 @@
1
1
  import { createComponentConfig, createElementConfig, } from "../../core/config/component.js";
2
2
  import { DRAWER_DEFAULTS } from "./constants.js";
3
+ import { supportsTopLayer } from "../../core/dom/layer.js";
3
4
  export const defaultConfig = {
4
5
  variant: DRAWER_DEFAULTS.VARIANT,
5
6
  position: DRAWER_DEFAULTS.POSITION,
@@ -9,7 +10,13 @@ export const defaultConfig = {
9
10
  ripple: DRAWER_DEFAULTS.RIPPLE,
10
11
  items: [],
11
12
  };
12
- export const createBaseConfig = (config = {}) => createComponentConfig(defaultConfig, config, "drawer");
13
+ export const createBaseConfig = (config = {}) => {
14
+ const merged = createComponentConfig(defaultConfig, config, "drawer");
15
+ if (merged.layer === "top" && (merged.variant !== "modal" || !supportsTopLayer("modal"))) {
16
+ merged.layer = undefined;
17
+ }
18
+ return merged;
19
+ };
13
20
  export const getElementConfig = (config) => {
14
21
  const isModal = config.variant === "modal";
15
22
  const attributes = {};
@@ -23,7 +30,7 @@ export const getElementConfig = (config) => {
23
30
  attributes["aria-label"] = config.ariaLabel || config.headline || "Navigation";
24
31
  attributes.tabindex = "-1";
25
32
  return createElementConfig(config, {
26
- tag: "aside",
33
+ tag: config.layer === "top" ? "dialog" : "aside",
27
34
  attributes,
28
35
  className: [
29
36
  config.dense ? `${config.prefix}-drawer--dense` : null,
@@ -1,6 +1,7 @@
1
1
  import { DRAWER_EVENTS } from "../constants.js";
2
2
  import { createRipple, } from "../../../core/compose/features/ripple.js";
3
3
  import { setHTML } from "../../../core/dom/html.js";
4
+ import { activeElementOf } from "../../../core/dom/focus.js";
4
5
  const createItemElement = (item, getClass) => {
5
6
  const el = document.createElement("button");
6
7
  el.className = getClass("drawer__item");
@@ -91,6 +92,7 @@ export const withItems = (config) => (component) => {
91
92
  setActive(item.id);
92
93
  const selectEvent = {
93
94
  id: item.id,
95
+ value: item.id,
94
96
  label: item.label || "",
95
97
  index: parseInt(itemEl.dataset.navIndex || "0", 10),
96
98
  originalEvent: e,
@@ -163,7 +165,7 @@ export const withItems = (config) => (component) => {
163
165
  const items = Array.from(itemsContainer.querySelectorAll(`.${component.getClass("drawer__item")}:not([disabled])`));
164
166
  if (!items.length)
165
167
  return;
166
- const currentIndex = items.indexOf(document.activeElement);
168
+ const currentIndex = items.indexOf(activeElementOf(itemsContainer));
167
169
  let nextIndex = -1;
168
170
  switch (e.key) {
169
171
  case "ArrowDown":