@shortfuse/materialdesignweb 0.7.6 → 0.9.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 (412) hide show
  1. package/README.md +87 -90
  2. package/bin/mdw-css.js +1 -1
  3. package/components/Badge.js +14 -7
  4. package/components/Body.js +3 -0
  5. package/components/BottomAppBar.js +4 -13
  6. package/components/BottomSheet.js +424 -0
  7. package/components/Box.js +20 -28
  8. package/components/Button.js +85 -79
  9. package/components/Button.md +9 -9
  10. package/components/Card.js +60 -72
  11. package/components/Checkbox.js +33 -42
  12. package/components/CheckboxIcon.js +11 -29
  13. package/components/Chip.js +13 -11
  14. package/components/Dialog.js +214 -394
  15. package/components/DialogActions.js +2 -2
  16. package/components/Display.js +55 -0
  17. package/components/Divider.js +3 -3
  18. package/components/Fab.js +83 -18
  19. package/components/FabContainer.js +48 -0
  20. package/components/FilterChip.js +35 -33
  21. package/components/Grid.js +176 -0
  22. package/components/Headline.js +5 -28
  23. package/components/Icon.js +61 -76
  24. package/components/IconButton.js +72 -126
  25. package/components/Input.js +859 -1
  26. package/components/InputChip.js +161 -0
  27. package/components/Label.js +3 -0
  28. package/components/List.js +4 -6
  29. package/components/ListItem.js +46 -30
  30. package/components/ListOption.js +86 -53
  31. package/components/Listbox.js +248 -0
  32. package/components/Menu.js +69 -528
  33. package/components/MenuItem.js +33 -36
  34. package/components/NavBar.js +49 -86
  35. package/components/NavDrawer.js +16 -15
  36. package/components/NavDrawerItem.js +4 -5
  37. package/components/NavItem.js +58 -41
  38. package/components/NavRail.js +30 -20
  39. package/components/NavRailItem.js +8 -3
  40. package/components/Page.js +105 -0
  41. package/components/Pane.js +11 -274
  42. package/components/Popup.js +29 -0
  43. package/components/Progress.js +24 -23
  44. package/components/Radio.js +40 -36
  45. package/components/RadioIcon.js +12 -16
  46. package/components/Ripple.js +13 -10
  47. package/components/Root.js +209 -0
  48. package/components/Scrim.js +87 -0
  49. package/components/Search.js +77 -0
  50. package/components/SegmentedButton.js +33 -45
  51. package/components/SegmentedButtonGroup.js +25 -13
  52. package/components/Select.js +10 -11
  53. package/components/Shape.js +5 -65
  54. package/components/SideSheet.js +308 -0
  55. package/components/Slider.js +108 -78
  56. package/components/Snackbar.js +26 -21
  57. package/components/SnackbarContainer.js +42 -0
  58. package/components/Surface.js +17 -12
  59. package/components/Switch.js +45 -24
  60. package/components/SwitchIcon.js +49 -39
  61. package/components/Tab.js +64 -43
  62. package/components/TabContent.js +5 -3
  63. package/components/TabList.js +62 -34
  64. package/components/TabPanel.js +11 -8
  65. package/components/Table.js +116 -0
  66. package/components/TextArea.js +54 -50
  67. package/components/Title.js +4 -9
  68. package/components/Tooltip.js +44 -22
  69. package/components/TopAppBar.js +68 -172
  70. package/constants/shapes.js +36 -0
  71. package/constants/typography.js +127 -0
  72. package/core/Composition.js +1164 -645
  73. package/core/CompositionAdapter.js +314 -0
  74. package/core/CustomElement.js +701 -286
  75. package/core/css.js +121 -15
  76. package/core/customTypes.js +157 -40
  77. package/core/dom.js +17 -11
  78. package/{utils → core}/jsonMergePatch.js +42 -18
  79. package/core/observe.js +343 -244
  80. package/core/optimizations.js +23 -0
  81. package/core/template.js +19 -56
  82. package/core/uid.js +13 -0
  83. package/dist/index.min.js +85 -184
  84. package/dist/index.min.js.map +4 -4
  85. package/dist/meta.json +1 -1
  86. package/dom/HTMLOptionsCollectionProxy.js +106 -0
  87. package/loaders/palette.js +13 -0
  88. package/loaders/theme.js +12 -0
  89. package/mixins/AriaReflectorMixin.js +53 -14
  90. package/mixins/AriaToolbarMixin.js +5 -3
  91. package/mixins/ControlMixin.js +92 -41
  92. package/mixins/DelegatesFocusMixin.js +54 -0
  93. package/mixins/DensityMixin.js +2 -3
  94. package/mixins/ElevationMixin.js +62 -0
  95. package/mixins/FlexableMixin.js +67 -39
  96. package/mixins/FormAssociatedMixin.js +71 -16
  97. package/mixins/HyperlinkMixin.js +66 -0
  98. package/mixins/InputMixin.js +205 -39
  99. package/mixins/KeyboardNavMixin.js +22 -7
  100. package/mixins/NavigationListenerMixin.js +33 -0
  101. package/mixins/PopupMixin.js +725 -0
  102. package/mixins/RTLObserverMixin.js +0 -1
  103. package/mixins/ResizeObserverMixin.js +16 -5
  104. package/mixins/RippleMixin.js +11 -10
  105. package/mixins/ScrollListenerMixin.js +42 -33
  106. package/mixins/SemiStickyMixin.js +97 -0
  107. package/mixins/ShapeMaskedMixin.js +117 -0
  108. package/mixins/ShapeMixin.js +17 -194
  109. package/mixins/StateMixin.js +80 -39
  110. package/mixins/TextFieldMixin.js +139 -183
  111. package/mixins/ThemableMixin.js +71 -161
  112. package/mixins/TooltipTriggerMixin.js +292 -366
  113. package/mixins/TouchTargetMixin.js +5 -4
  114. package/mixins/TypographyMixin.js +121 -0
  115. package/package.json +111 -71
  116. package/services/rtl.js +10 -0
  117. package/services/svgAlias.js +17 -0
  118. package/{theming/index.js → services/theme.js} +25 -175
  119. package/types/bin/mdw-css.d.ts +3 -0
  120. package/types/bin/mdw-css.d.ts.map +1 -0
  121. package/types/components/Badge.d.ts +39 -0
  122. package/types/components/Badge.d.ts.map +1 -0
  123. package/types/components/Body.d.ts +29 -0
  124. package/types/components/Body.d.ts.map +1 -0
  125. package/types/components/BottomAppBar.d.ts +73 -0
  126. package/types/components/BottomAppBar.d.ts.map +1 -0
  127. package/types/components/BottomSheet.d.ts +109 -0
  128. package/types/components/BottomSheet.d.ts.map +1 -0
  129. package/types/components/Box.d.ts +16 -0
  130. package/types/components/Box.d.ts.map +1 -0
  131. package/types/components/Button.d.ts +714 -0
  132. package/types/components/Button.d.ts.map +1 -0
  133. package/types/components/Card.d.ts +412 -0
  134. package/types/components/Card.d.ts.map +1 -0
  135. package/types/components/Checkbox.d.ts +205 -0
  136. package/types/components/Checkbox.d.ts.map +1 -0
  137. package/types/components/CheckboxIcon.d.ts +44 -0
  138. package/types/components/CheckboxIcon.d.ts.map +1 -0
  139. package/types/components/Chip.d.ts +1425 -0
  140. package/types/components/Chip.d.ts.map +1 -0
  141. package/types/components/Dialog.d.ts +286 -0
  142. package/types/components/Dialog.d.ts.map +1 -0
  143. package/types/components/DialogActions.d.ts +4 -0
  144. package/types/components/DialogActions.d.ts.map +1 -0
  145. package/types/components/Display.d.ts +45 -0
  146. package/types/components/Display.d.ts.map +1 -0
  147. package/types/components/Divider.d.ts +10 -0
  148. package/types/components/Divider.d.ts.map +1 -0
  149. package/types/components/Fab.d.ts +741 -0
  150. package/types/components/Fab.d.ts.map +1 -0
  151. package/types/components/FabContainer.d.ts +10 -0
  152. package/types/components/FabContainer.d.ts.map +1 -0
  153. package/types/components/FilterChip.d.ts +4283 -0
  154. package/types/components/FilterChip.d.ts.map +1 -0
  155. package/types/components/Grid.d.ts +37 -0
  156. package/types/components/Grid.d.ts.map +1 -0
  157. package/types/components/Headline.d.ts +47 -0
  158. package/types/components/Headline.d.ts.map +1 -0
  159. package/types/components/Icon.d.ts +103 -0
  160. package/types/components/Icon.d.ts.map +1 -0
  161. package/types/components/IconButton.d.ts +1486 -0
  162. package/types/components/IconButton.d.ts.map +1 -0
  163. package/types/components/Input.d.ts +51288 -0
  164. package/types/components/Input.d.ts.map +1 -0
  165. package/types/components/InputChip.d.ts +243 -0
  166. package/types/components/InputChip.d.ts.map +1 -0
  167. package/types/components/Label.d.ts +29 -0
  168. package/types/components/Label.d.ts.map +1 -0
  169. package/types/components/List.d.ts +31 -0
  170. package/types/components/List.d.ts.map +1 -0
  171. package/types/components/ListItem.d.ts +349 -0
  172. package/types/components/ListItem.d.ts.map +1 -0
  173. package/types/components/ListOption.d.ts +1493 -0
  174. package/types/components/ListOption.d.ts.map +1 -0
  175. package/types/components/Listbox.d.ts +12012 -0
  176. package/types/components/Listbox.d.ts.map +1 -0
  177. package/types/components/Menu.d.ts +119 -0
  178. package/types/components/Menu.d.ts.map +1 -0
  179. package/types/components/MenuItem.d.ts +3109 -0
  180. package/types/components/MenuItem.d.ts.map +1 -0
  181. package/types/components/NavBar.d.ts +18 -0
  182. package/types/components/NavBar.d.ts.map +1 -0
  183. package/types/components/NavBarItem.d.ts +186 -0
  184. package/types/components/NavBarItem.d.ts.map +1 -0
  185. package/types/components/NavDrawer.d.ts +108 -0
  186. package/types/components/NavDrawer.d.ts.map +1 -0
  187. package/types/components/NavDrawerItem.d.ts +186 -0
  188. package/types/components/NavDrawerItem.d.ts.map +1 -0
  189. package/types/components/NavItem.d.ts +190 -0
  190. package/types/components/NavItem.d.ts.map +1 -0
  191. package/types/components/NavRail.d.ts +109 -0
  192. package/types/components/NavRail.d.ts.map +1 -0
  193. package/types/components/NavRailItem.d.ts +186 -0
  194. package/types/components/NavRailItem.d.ts.map +1 -0
  195. package/types/components/Page.d.ts +24 -0
  196. package/types/components/Page.d.ts.map +1 -0
  197. package/types/components/Pane.d.ts +44 -0
  198. package/types/components/Pane.d.ts.map +1 -0
  199. package/types/components/Popup.d.ts +76 -0
  200. package/types/components/Popup.d.ts.map +1 -0
  201. package/types/components/Progress.d.ts +19 -0
  202. package/types/components/Progress.d.ts.map +1 -0
  203. package/types/components/Radio.d.ts +199 -0
  204. package/types/components/Radio.d.ts.map +1 -0
  205. package/types/components/RadioIcon.d.ts +46 -0
  206. package/types/components/RadioIcon.d.ts.map +1 -0
  207. package/types/components/Ripple.d.ts +34 -0
  208. package/types/components/Ripple.d.ts.map +1 -0
  209. package/types/components/Root.d.ts +68 -0
  210. package/types/components/Root.d.ts.map +1 -0
  211. package/types/components/Scrim.d.ts +6 -0
  212. package/types/components/Scrim.d.ts.map +1 -0
  213. package/types/components/Search.d.ts +16 -0
  214. package/types/components/Search.d.ts.map +1 -0
  215. package/types/components/SegmentedButton.d.ts +718 -0
  216. package/types/components/SegmentedButton.d.ts.map +1 -0
  217. package/types/components/SegmentedButtonGroup.d.ts +44 -0
  218. package/types/components/SegmentedButtonGroup.d.ts.map +1 -0
  219. package/types/components/Select.d.ts +1361 -0
  220. package/types/components/Select.d.ts.map +1 -0
  221. package/types/components/Shape.d.ts +10 -0
  222. package/types/components/Shape.d.ts.map +1 -0
  223. package/types/components/SideSheet.d.ts +106 -0
  224. package/types/components/SideSheet.d.ts.map +1 -0
  225. package/types/components/Slider.d.ts +382 -0
  226. package/types/components/Slider.d.ts.map +1 -0
  227. package/types/components/Snackbar.d.ts +65 -0
  228. package/types/components/Snackbar.d.ts.map +1 -0
  229. package/types/components/SnackbarContainer.d.ts +6 -0
  230. package/types/components/SnackbarContainer.d.ts.map +1 -0
  231. package/types/components/Surface.d.ts +45 -0
  232. package/types/components/Surface.d.ts.map +1 -0
  233. package/types/components/Switch.d.ts +183 -0
  234. package/types/components/Switch.d.ts.map +1 -0
  235. package/types/components/SwitchIcon.d.ts +169 -0
  236. package/types/components/SwitchIcon.d.ts.map +1 -0
  237. package/types/components/Tab.d.ts +879 -0
  238. package/types/components/Tab.d.ts.map +1 -0
  239. package/types/components/TabContent.d.ts +122 -0
  240. package/types/components/TabContent.d.ts.map +1 -0
  241. package/types/components/TabList.d.ts +6266 -0
  242. package/types/components/TabList.d.ts.map +1 -0
  243. package/types/components/TabPanel.d.ts +28 -0
  244. package/types/components/TabPanel.d.ts.map +1 -0
  245. package/types/components/Table.d.ts +2 -0
  246. package/types/components/Table.d.ts.map +1 -0
  247. package/types/components/TextArea.d.ts +1394 -0
  248. package/types/components/TextArea.d.ts.map +1 -0
  249. package/types/components/Title.d.ts +47 -0
  250. package/types/components/Title.d.ts.map +1 -0
  251. package/types/components/Tooltip.d.ts +49 -0
  252. package/types/components/Tooltip.d.ts.map +1 -0
  253. package/types/components/TopAppBar.d.ts +130 -0
  254. package/types/components/TopAppBar.d.ts.map +1 -0
  255. package/types/constants/colorKeywords.d.ts +2 -0
  256. package/types/constants/colorKeywords.d.ts.map +1 -0
  257. package/types/constants/shapes.d.ts +38 -0
  258. package/types/constants/shapes.d.ts.map +1 -0
  259. package/types/constants/typography.d.ts +212 -0
  260. package/types/constants/typography.d.ts.map +1 -0
  261. package/types/core/Composition.d.ts +252 -0
  262. package/types/core/Composition.d.ts.map +1 -0
  263. package/types/core/CompositionAdapter.d.ts +92 -0
  264. package/types/core/CompositionAdapter.d.ts.map +1 -0
  265. package/types/core/CustomElement.d.ts +302 -0
  266. package/types/core/CustomElement.d.ts.map +1 -0
  267. package/types/core/css.d.ts +44 -0
  268. package/types/core/css.d.ts.map +1 -0
  269. package/types/core/customTypes.d.ts +26 -0
  270. package/types/core/customTypes.d.ts.map +1 -0
  271. package/types/core/dom.d.ts +32 -0
  272. package/types/core/dom.d.ts.map +1 -0
  273. package/types/core/jsonMergePatch.d.ts +31 -0
  274. package/types/core/jsonMergePatch.d.ts.map +1 -0
  275. package/types/core/observe.d.ts +113 -0
  276. package/types/core/observe.d.ts.map +1 -0
  277. package/types/core/optimizations.d.ts +7 -0
  278. package/types/core/optimizations.d.ts.map +1 -0
  279. package/types/core/template.d.ts +47 -0
  280. package/types/core/template.d.ts.map +1 -0
  281. package/types/core/uid.d.ts +6 -0
  282. package/types/core/uid.d.ts.map +1 -0
  283. package/types/dom/HTMLOptionsCollectionProxy.d.ts +18 -0
  284. package/types/dom/HTMLOptionsCollectionProxy.d.ts.map +1 -0
  285. package/types/index.d.ts +88 -0
  286. package/types/index.d.ts.map +1 -0
  287. package/types/loaders/palette.d.ts +2 -0
  288. package/types/loaders/palette.d.ts.map +1 -0
  289. package/types/loaders/theme.d.ts +2 -0
  290. package/types/loaders/theme.d.ts.map +1 -0
  291. package/types/mixins/AriaReflectorMixin.d.ts +23 -0
  292. package/types/mixins/AriaReflectorMixin.d.ts.map +1 -0
  293. package/types/mixins/AriaToolbarMixin.d.ts +32 -0
  294. package/types/mixins/AriaToolbarMixin.d.ts.map +1 -0
  295. package/types/mixins/ControlMixin.d.ts +124 -0
  296. package/types/mixins/ControlMixin.d.ts.map +1 -0
  297. package/types/mixins/DelegatesFocusMixin.d.ts +5 -0
  298. package/types/mixins/DelegatesFocusMixin.d.ts.map +1 -0
  299. package/types/mixins/DensityMixin.d.ts +5 -0
  300. package/types/mixins/DensityMixin.d.ts.map +1 -0
  301. package/types/mixins/ElevationMixin.d.ts +33 -0
  302. package/types/mixins/ElevationMixin.d.ts.map +1 -0
  303. package/types/mixins/FlexableMixin.d.ts +13 -0
  304. package/types/mixins/FlexableMixin.d.ts.map +1 -0
  305. package/types/mixins/FormAssociatedMixin.d.ts +122 -0
  306. package/types/mixins/FormAssociatedMixin.d.ts.map +1 -0
  307. package/types/mixins/HyperlinkMixin.d.ts +22 -0
  308. package/types/mixins/HyperlinkMixin.d.ts.map +1 -0
  309. package/types/mixins/InputMixin.d.ts +179 -0
  310. package/types/mixins/InputMixin.d.ts.map +1 -0
  311. package/types/mixins/KeyboardNavMixin.d.ts +47 -0
  312. package/types/mixins/KeyboardNavMixin.d.ts.map +1 -0
  313. package/types/mixins/NavigationListenerMixin.d.ts +8 -0
  314. package/types/mixins/NavigationListenerMixin.d.ts.map +1 -0
  315. package/types/mixins/PopupMixin.d.ts +82 -0
  316. package/types/mixins/PopupMixin.d.ts.map +1 -0
  317. package/types/mixins/RTLObserverMixin.d.ts +7 -0
  318. package/types/mixins/RTLObserverMixin.d.ts.map +1 -0
  319. package/types/mixins/ResizeObserverMixin.d.ts +12 -0
  320. package/types/mixins/ResizeObserverMixin.d.ts.map +1 -0
  321. package/types/mixins/RippleMixin.d.ts +92 -0
  322. package/types/mixins/RippleMixin.d.ts.map +1 -0
  323. package/types/mixins/ScrollListenerMixin.d.ts +41 -0
  324. package/types/mixins/ScrollListenerMixin.d.ts.map +1 -0
  325. package/types/mixins/SemiStickyMixin.d.ts +50 -0
  326. package/types/mixins/SemiStickyMixin.d.ts.map +1 -0
  327. package/types/mixins/ShapeMaskedMixin.d.ts +9 -0
  328. package/types/mixins/ShapeMaskedMixin.d.ts.map +1 -0
  329. package/types/mixins/ShapeMixin.d.ts +38 -0
  330. package/types/mixins/ShapeMixin.d.ts.map +1 -0
  331. package/types/mixins/StateMixin.d.ts +27 -0
  332. package/types/mixins/StateMixin.d.ts.map +1 -0
  333. package/types/mixins/TextFieldMixin.d.ts +1354 -0
  334. package/types/mixins/TextFieldMixin.d.ts.map +1 -0
  335. package/types/mixins/ThemableMixin.d.ts +9 -0
  336. package/types/mixins/ThemableMixin.d.ts.map +1 -0
  337. package/types/mixins/TooltipTriggerMixin.d.ts +106 -0
  338. package/types/mixins/TooltipTriggerMixin.d.ts.map +1 -0
  339. package/types/mixins/TouchTargetMixin.d.ts +3 -0
  340. package/types/mixins/TouchTargetMixin.d.ts.map +1 -0
  341. package/types/mixins/TypographyMixin.d.ts +17 -0
  342. package/types/mixins/TypographyMixin.d.ts.map +1 -0
  343. package/types/services/rtl.d.ts +3 -0
  344. package/types/services/rtl.d.ts.map +1 -0
  345. package/types/services/svgAlias.d.ts +13 -0
  346. package/types/services/svgAlias.d.ts.map +1 -0
  347. package/types/services/theme.d.ts +45 -0
  348. package/types/services/theme.d.ts.map +1 -0
  349. package/types/utils/cli.d.ts +3 -0
  350. package/types/utils/cli.d.ts.map +1 -0
  351. package/types/utils/function.d.ts +3 -0
  352. package/types/utils/function.d.ts.map +1 -0
  353. package/types/utils/jsx-runtime.d.ts +20 -0
  354. package/types/utils/jsx-runtime.d.ts.map +1 -0
  355. package/types/utils/material-color/blend.d.ts +34 -0
  356. package/types/utils/material-color/blend.d.ts.map +1 -0
  357. package/types/utils/material-color/hct/Cam16.d.ts +142 -0
  358. package/types/utils/material-color/hct/Cam16.d.ts.map +1 -0
  359. package/types/utils/material-color/hct/Hct.d.ts +93 -0
  360. package/types/utils/material-color/hct/Hct.d.ts.map +1 -0
  361. package/types/utils/material-color/hct/ViewingConditions.d.ts +69 -0
  362. package/types/utils/material-color/hct/ViewingConditions.d.ts.map +1 -0
  363. package/types/utils/material-color/hct/hctSolver.d.ts +30 -0
  364. package/types/utils/material-color/hct/hctSolver.d.ts.map +1 -0
  365. package/types/utils/material-color/helper.d.ts +8 -0
  366. package/types/utils/material-color/helper.d.ts.map +1 -0
  367. package/types/utils/material-color/palettes/CorePalette.d.ts +75 -0
  368. package/types/utils/material-color/palettes/CorePalette.d.ts.map +1 -0
  369. package/types/utils/material-color/palettes/TonalPalette.d.ts +38 -0
  370. package/types/utils/material-color/palettes/TonalPalette.d.ts.map +1 -0
  371. package/types/utils/material-color/scheme/Scheme.d.ts +264 -0
  372. package/types/utils/material-color/scheme/Scheme.d.ts.map +1 -0
  373. package/types/utils/material-color/utils/color.d.ts +172 -0
  374. package/types/utils/material-color/utils/color.d.ts.map +1 -0
  375. package/types/utils/material-color/utils/math.d.ts +94 -0
  376. package/types/utils/material-color/utils/math.d.ts.map +1 -0
  377. package/types/utils/pixelmatch.d.ts +22 -0
  378. package/types/utils/pixelmatch.d.ts.map +1 -0
  379. package/types/utils/popup.d.ts +106 -0
  380. package/types/utils/popup.d.ts.map +1 -0
  381. package/types/utils/searchParams.d.ts +3 -0
  382. package/types/utils/searchParams.d.ts.map +1 -0
  383. package/types/utils/svg.d.ts +7 -0
  384. package/types/utils/svg.d.ts.map +1 -0
  385. package/utils/{hct → material-color}/blend.js +8 -10
  386. package/utils/{hct → material-color/hct}/Cam16.js +196 -69
  387. package/utils/{hct → material-color/hct}/Hct.js +61 -19
  388. package/utils/{hct → material-color/hct}/ViewingConditions.js +3 -3
  389. package/utils/{hct → material-color/hct}/hctSolver.js +9 -16
  390. package/utils/{hct → material-color}/helper.js +11 -18
  391. package/utils/{hct → material-color/palettes}/CorePalette.js +79 -19
  392. package/utils/{hct → material-color/palettes}/TonalPalette.js +12 -4
  393. package/utils/material-color/scheme/Scheme.js +376 -0
  394. package/utils/{hct/colorUtils.js → material-color/utils/color.js} +61 -1
  395. package/utils/pixelmatch.js +360 -0
  396. package/utils/popup.js +127 -30
  397. package/utils/searchParams.js +19 -0
  398. package/components/ExtendedFab.js +0 -36
  399. package/components/Layout.js +0 -35
  400. package/components/ListSelect.js +0 -220
  401. package/components/Nav.js +0 -40
  402. package/components/Option.js +0 -91
  403. package/core/ICustomElement.d.ts +0 -291
  404. package/core/ICustomElement.js +0 -1
  405. package/core/identify.js +0 -40
  406. package/core/typings.d.ts +0 -136
  407. package/core/typings.js +0 -1
  408. package/mixins/SurfaceMixin.js +0 -181
  409. package/theming/loader.js +0 -22
  410. package/utils/hct/Scheme.js +0 -587
  411. /package/{utils/color_keywords.js → constants/colorKeywords.js} +0 -0
  412. /package/utils/{hct/mathUtils.js → material-color/utils/math.js} +0 -0
@@ -3,11 +3,14 @@ import './Shape.js';
3
3
  import CustomElement from '../core/CustomElement.js';
4
4
  import ShapeMixin from '../mixins/ShapeMixin.js';
5
5
  import ThemableMixin from '../mixins/ThemableMixin.js';
6
+ import { loadGlobalStyles } from '../services/rtl.js';
7
+
8
+ loadGlobalStyles();
6
9
 
7
10
  export default CustomElement
11
+ .extend()
8
12
  .mixin(ThemableMixin)
9
13
  .mixin(ShapeMixin)
10
- .extend()
11
14
  .observe({
12
15
  selected: 'boolean',
13
16
  icon: 'string',
@@ -41,7 +44,7 @@ export default CustomElement
41
44
  return _active ? `${color}-container` : '';
42
45
  },
43
46
  _iconInk({ disabled, selected, color }) {
44
- if (!selected) return 'surface-variant';
47
+ if (!selected) return 'surface-container-highest';
45
48
  if (disabled) return 'on-surface';
46
49
  return `on-${color}-container`;
47
50
  },
@@ -50,28 +53,29 @@ export default CustomElement
50
53
  hasIcon({ icon, src, unselectedIcon, unselectedSrc }) {
51
54
  return Boolean(icon || src || unselectedIcon || unselectedSrc);
52
55
  },
56
+ iconVariation({ selected }) {
57
+ return selected ? 'filled' : null;
58
+ },
53
59
  })
54
- .html/* html */`
55
- <div id=thumb selected={checked} pressed={pressed} disabled={disabled}>
56
- <mdw-shape id=thumb-shape shape-style=full selected={checked} pressed={pressed} hovered={hovered} focused={focused} icon={hasIcon}
57
- color={_thumbColor} active={_active} ink={_thumbInk} disabled={disabled}></mdw-shape>
58
- <mdw-icon ink={_iconInk} class=icon id=icon src={src} selected={checked}>{icon}</mdw-icon>
59
- <mdw-icon ink={_iconInk} class=icon id=selected-icon src={selectedIconSrc} selected={checked}>{selectedIcon}</mdw-icon>
60
- <mdw-icon ink={_iconInk} class=icon id=unselected-icon src={unselectedIconSrc} selected={checked}>{unselectedIcon}</mdw-icon>
61
- <slot id=slot selected={checked}></slot>
60
+ .html`
61
+ <div id=track selected={checked} disabled={disabled}>
62
+ <div id=thumb selected={checked} pressed={pressed} disabled={disabled}>
63
+ <mdw-box block id=thumb-shape selected={checked} pressed={pressed} hovered={hovered} focused={focused} icon={hasIcon}
64
+ color={_thumbColor} active={_active} ink={_thumbInk} disabled={disabled}></mdw-box>
65
+ <mdw-icon ink={_iconInk} class=icon id=icon src={src} selected={checked} icon={icon} variation={iconVariation}></mdw-icon>
66
+ <mdw-icon ink={_iconInk} class=icon id=selected-icon src={selectedIconSrc} selected={checked} icon={selectedIcon} variation=filled></mdw-icon>
67
+ <mdw-icon ink={_iconInk} class=icon id=unselected-icon src={unselectedIconSrc} selected={checked} icon={unselectedIcon}></mdw-icon>
68
+ <slot id=slot selected={checked}></slot>
69
+ </div>
62
70
  </div>
63
71
  `
72
+ .recompose(({ refs: { outline } }) => {
73
+ outline.removeAttribute('mdw-if');
74
+ outline.setAttribute('selected', '{checked}');
75
+ outline.setAttribute('errored', '{errored}');
76
+ outline.setAttribute('disabled', '{disabled}');
77
+ })
64
78
  .on({
65
- composed() {
66
- const { outline, shape: track } = this.refs;
67
- track.id = 'track';
68
- track.setAttribute('selected', '{checked}');
69
- track.setAttribute('disabled', '{disabled}');
70
- outline.removeAttribute('_if');
71
- outline.setAttribute('selected', '{checked}');
72
- outline.setAttribute('errored', '{errored}');
73
- outline.setAttribute('disabled', '{disabled}');
74
- },
75
79
  dragValueChanged(oldValue, newValue) {
76
80
  if (newValue == null) {
77
81
  this.refs.thumb.style.removeProperty('--mdw-switch__value');
@@ -115,7 +119,8 @@ export default CustomElement
115
119
  position: absolute;
116
120
  inset: 0;
117
121
 
118
- background-color: rgb(var(--mdw-color__surface-variant));
122
+ background-color: rgb(var(--mdw-color__surface-container-highest));
123
+ border-radius: inherit;
119
124
  }
120
125
 
121
126
  #track[selected] {
@@ -123,19 +128,17 @@ export default CustomElement
123
128
  }
124
129
 
125
130
  #track[disabled] {
126
- opacity: calc(0.12/0.38);
131
+ background-color: rgba(var(--mdw-color__surface-container-highest), calc(0.12/0.38));
127
132
  }
128
133
 
129
134
  #track[disabled][selected] {
130
- background-color: rgb(var(--mdw-color__on-surface));
135
+ background-color: rgba(var(--mdw-color__on-surface), calc(0.12/0.38));
131
136
  }
132
137
 
133
138
  #outline {
134
- filter:
135
- drop-shadow(1px 0px 0px currentColor)
136
- drop-shadow(0px 1px 0px currentColor)
137
- drop-shadow(-1px 0px 0px currentColor)
138
- drop-shadow(0px -1px 0px currentColor);
139
+ border-width: 2px;
140
+
141
+ z-index: 1;
139
142
 
140
143
  color: rgb(var(--mdw-color__outline));
141
144
  }
@@ -145,7 +148,7 @@ export default CustomElement
145
148
  }
146
149
 
147
150
  #outline[disabled] {
148
- color: rgb(var(--mdw-color__on-surface));
151
+ color: rgba(var(--mdw-color__on-surface), calc(0.12/0.38));
149
152
  }
150
153
 
151
154
  #outline[selected] {
@@ -166,6 +169,7 @@ export default CustomElement
166
169
 
167
170
  transform: translateX(calc(var(--mdw-dir, 1) * var(--mdw-switch__value) * (52px - 100%)));
168
171
 
172
+ border-radius: inherit;
169
173
  aspect-ratio: 1/1;
170
174
  }
171
175
 
@@ -198,6 +202,8 @@ export default CustomElement
198
202
 
199
203
  transform: scale(calc(16/28));
200
204
  z-index: 0;
205
+
206
+ border-radius:inherit;
201
207
  }
202
208
 
203
209
  #thumb-shape[icon] {
@@ -206,7 +212,7 @@ export default CustomElement
206
212
 
207
213
  #thumb-shape:not([selected]) {
208
214
  --mdw-bg: var(--mdw-color__outline);
209
- --mdw-ink: var(--mdw-color__surface-variant);
215
+ --mdw-ink: var(--mdw-color__surface-container-highest);
210
216
  }
211
217
 
212
218
  #thumb-shape[selected] {
@@ -221,12 +227,22 @@ export default CustomElement
221
227
  transform: scale(1);
222
228
  }
223
229
 
230
+ #thumb-shape[disabled] {
231
+ background-color: rgb(var(--mdw-color__on-surface));
232
+ }
233
+
234
+ #thumb-shape[disabled][selected] {
235
+ background-color: rgb(var(--mdw-color__surface));
236
+ }
237
+
224
238
  /** Thumb Icons **/
225
239
 
226
240
  .icon {
227
241
  position: absolute;
228
- inset-block-start: 50%;
229
- inset-inline-start: 50%;
242
+ /* stylelint-disable-next-line liberty/use-logical-spec */
243
+ top: 50%;
244
+ /* stylelint-disable-next-line liberty/use-logical-spec */
245
+ left: 50%;
230
246
 
231
247
  opacity: 0;
232
248
  transform: translateX(-50%) translateY(-50%);
@@ -237,13 +253,11 @@ export default CustomElement
237
253
  }
238
254
 
239
255
  .icon:not([src]):empty {
240
- display: none;
256
+ /* display: none; */
241
257
  }
242
258
 
243
259
  #icon, #unselected-icon {
244
260
  opacity: 1;
245
-
246
- font-variation-settings: 'FILL' 0;
247
261
  }
248
262
 
249
263
  #unselected-icon[selected] {
@@ -254,10 +268,6 @@ export default CustomElement
254
268
  opacity: 1;
255
269
  }
256
270
 
257
- #icon[selected] {
258
- font-variation-settings: 'FILL' 1;
259
- }
260
-
261
271
  #thumb[disabled] {
262
272
  color: rgb(var(--mdw-color__on-surface));
263
273
  }
package/components/Tab.js CHANGED
@@ -3,42 +3,32 @@
3
3
  import './Icon.js';
4
4
 
5
5
  import CustomElement from '../core/CustomElement.js';
6
+ import { CHROME_VERSION } from '../core/dom.js';
7
+ import DelegatesFocusMixin from '../mixins/DelegatesFocusMixin.js';
8
+ import HyperlinkMixin from '../mixins/HyperlinkMixin.js';
6
9
  import RippleMixin from '../mixins/RippleMixin.js';
7
10
  import ScrollListenerMixin from '../mixins/ScrollListenerMixin.js';
8
11
  import ShapeMixin from '../mixins/ShapeMixin.js';
9
12
  import StateMixin from '../mixins/StateMixin.js';
10
13
 
11
14
  export default CustomElement
15
+ .extend()
12
16
  .mixin(ShapeMixin)
13
17
  .mixin(StateMixin)
14
18
  .mixin(RippleMixin)
15
19
  .mixin(ScrollListenerMixin)
16
- .extend()
20
+ .mixin(HyperlinkMixin)
21
+ .mixin(DelegatesFocusMixin)
17
22
  .define({
18
23
  stateTargetElement() { return this.refs.anchor; },
19
- /**
20
- * Used to compute primary indicator size.
21
- * Default to 24.
22
- */
23
- labelMetrics() {
24
- const slot = this.refs.slot;
25
- let target = this.refs.slot;
26
- if (!slot.clientWidth) target = this.refs.icon;
27
- return {
28
- width: target.clientWidth,
29
- left: target.offsetLeft,
30
- };
31
- },
32
24
  })
33
25
  .set({
34
- delegatesFocus: true,
35
26
  stateLayer: true,
36
27
  })
37
28
  .observe({
38
29
  active: 'boolean',
39
30
  icon: 'string',
40
31
  src: 'string',
41
- href: 'string',
42
32
  ariaLabel: 'string',
43
33
  })
44
34
  .methods({
@@ -46,26 +36,49 @@ export default CustomElement
46
36
  focus(options) {
47
37
  this.refs.anchor.focus(options);
48
38
  },
39
+ computeLabelMetrics() {
40
+ const { slot, icon } = this.refs;
41
+ const target = slot.clientWidth ? slot : icon;
42
+ return {
43
+ width: target.clientWidth,
44
+ left: target.offsetLeft,
45
+ };
46
+ },
49
47
  })
50
- .html/* html */`
51
- <a id=anchor role=tab
52
- aria-label={ariaLabel}
53
- aria-controls=${({ href }) => (href?.startsWith('#') ? href.slice(1) : null)}
54
- aria-selected=${({ active }) => (active ? 'true' : 'false')}
55
- aria-disabled=${({ disabledState }) => `${disabledState}`}
56
- disabled={disabledState}
57
- href=${({ href }) => href ?? '#'}>
58
- <mdw-icon _if=${(data) => data.icon || data.src} id=icon aria-hidden=true src={src} active={active}>{icon}</mdw-icon>
59
- <slot id=slot></slot>
60
- </a>
61
- `
62
- .on({
63
- composed() {
64
- const { shape, rippleContainer, state } = this.refs;
65
- shape.append(state, rippleContainer);
66
- state.setAttribute('state-disabled', 'focus');
48
+ .expressions({
49
+ anchorAriaControls({ href }) {
50
+ return href?.startsWith('#') ? href.slice(1) : null;
51
+ },
52
+ anchorAriaSelected({ active }) {
53
+ return `${active}`;
54
+ },
55
+ anchorAriaDisabled({ disabledState }) {
56
+ return `${disabledState}`;
57
+ },
58
+ anchorHref({ href }) {
59
+ return href ?? '#';
60
+ },
61
+ iconIf({ icon, src }) {
62
+ return icon || src;
63
+ },
64
+ iconVariation({ active }) {
65
+ return active ? 'filled' : null;
67
66
  },
68
67
  })
68
+ .html`
69
+ <mdw-icon mdw-if={iconIf} id=icon aria-hidden=true src={src} active={active} icon={icon} variation={iconVariation}></mdw-icon>
70
+ <slot id=slot></slot>
71
+ `
72
+ .recompose(({ refs: { anchor, icon, slot, state } }) => {
73
+ anchor.setAttribute('role', 'tab');
74
+ anchor.setAttribute('aria-label', '{ariaLabel}');
75
+ anchor.setAttribute('aria-controls', '{anchorAriaControls}');
76
+ anchor.setAttribute('aria-selected', '{anchorAriaSelected}');
77
+ anchor.setAttribute('aria-disabled', '{anchorAriaDisabled}');
78
+ anchor.setAttribute('disabled', '{disabledState}');
79
+ anchor.append(icon, slot);
80
+ state.setAttribute('state-disabled', 'focus');
81
+ })
69
82
  .events({
70
83
  keydown(event) {
71
84
  if (event.key === ' ') {
@@ -88,11 +101,24 @@ export default CustomElement
88
101
  return;
89
102
  }
90
103
  if (href.startsWith('#')) {
91
- /** @type {HTMLElement} */
92
- const el = document.querySelector(href);
93
- if (!el) { console.warn('Unknown element', href); }
104
+ const root = /** @type {HTMLElement} */ (this.getRootNode());
105
+ /** @type {HTMLElement} */
106
+ const el = root.querySelector(href);
107
+ if (!el) {
108
+ console.warn('Unknown element', href);
109
+ return;
110
+ }
94
111
  event.preventDefault();
95
- el.scrollIntoView({ block: 'nearest', inline: 'start' });
112
+ // Chrome does not support scrolling two elements at the same time
113
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1430426
114
+ const behavior = CHROME_VERSION ? 'instant' : 'smooth';
115
+
116
+ el.scrollTo({ top: 0, behavior });
117
+ el.offsetParent.scrollTo({
118
+ // Scroll-snap will adjust with subpixel precision
119
+ left: el.offsetLeft,
120
+ behavior: 'smooth',
121
+ });
96
122
  }
97
123
  },
98
124
  },
@@ -104,6 +130,7 @@ export default CustomElement
104
130
  display: inline-flex;
105
131
 
106
132
  min-inline-size: 64px;
133
+ flex: none;
107
134
 
108
135
  cursor: pointer;
109
136
  }
@@ -134,8 +161,6 @@ export default CustomElement
134
161
  padding-block: 4px;
135
162
 
136
163
  font-size: 24px;
137
- font-variation-settings: 'FILL' 0;
138
-
139
164
  }
140
165
 
141
166
  #shape[disabled],
@@ -150,10 +175,6 @@ export default CustomElement
150
175
  color: rgb(var(--mdw-ink));
151
176
  }
152
177
 
153
- #icon[active] {
154
- font-variation-settings: 'FILL' 1;
155
- }
156
-
157
178
  #slot {
158
179
  display: block;
159
180
  overflow-x: hidden;
@@ -5,8 +5,8 @@ import ResizeObserverMixin from '../mixins/ResizeObserverMixin.js';
5
5
  import TabPanel from './TabPanel.js';
6
6
 
7
7
  export default CustomElement
8
- .mixin(ResizeObserverMixin)
9
8
  .extend()
9
+ .mixin(ResizeObserverMixin)
10
10
  .set({
11
11
  /** @type {InstanceType<TabPanel>[]} */
12
12
  _panelNodes: [],
@@ -87,11 +87,12 @@ export default CustomElement
87
87
  },
88
88
  },
89
89
  })
90
- .html/* html */`<slot id=slot></slot>`
90
+ .html`<slot id=slot></slot>`
91
91
  .methods({
92
92
  onResizeObserved() {
93
93
  this._panelMetrics = null;
94
- // Resize should not change panel visibility
94
+ this.updatePanels();
95
+ // Resize should not change panel visibility (Chrome Bug?)
95
96
  },
96
97
  updatePanels() {
97
98
  const start = this.scrollLeft;
@@ -120,6 +121,7 @@ export default CustomElement
120
121
  // @ts-ignore Skip cast
121
122
  this._panelNodes = slot.assignedElements()
122
123
  .filter((el) => el.tagName === TabPanel.elementName.toUpperCase());
124
+ this._panelMetrics = null;
123
125
  this.updatePanels();
124
126
  },
125
127
  },
@@ -4,18 +4,23 @@ import CustomElement from '../core/CustomElement.js';
4
4
  import KeyboardNavMixin from '../mixins/KeyboardNavMixin.js';
5
5
  import RTLObserverMixin from '../mixins/RTLObserverMixin.js';
6
6
  import ResizeObserverMixin from '../mixins/ResizeObserverMixin.js';
7
+ import SemiStickyMixin from '../mixins/SemiStickyMixin.js';
7
8
  import ShapeMixin from '../mixins/ShapeMixin.js';
8
9
  import ThemableMixin from '../mixins/ThemableMixin.js';
9
10
 
10
11
  import Tab from './Tab.js';
11
12
 
12
13
  export default CustomElement
14
+ .extend()
13
15
  .mixin(ThemableMixin)
14
16
  .mixin(KeyboardNavMixin)
15
17
  .mixin(ResizeObserverMixin)
16
18
  .mixin(RTLObserverMixin)
17
19
  .mixin(ShapeMixin)
18
- .extend()
20
+ .mixin(SemiStickyMixin)
21
+ .observe({
22
+ scrollable: 'boolean',
23
+ })
19
24
  .set({
20
25
  /** @type {WeakRef<HTMLElement>} */
21
26
  _tabContentRef: null,
@@ -29,6 +34,7 @@ export default CustomElement
29
34
  * right:number,
30
35
  * center: number,
31
36
  * label: {left:number, width:number},
37
+ * tab: InstanceType<Tab>,
32
38
  * index: number,
33
39
  * }[]}
34
40
  */
@@ -58,16 +64,7 @@ export default CustomElement
58
64
  },
59
65
  })
60
66
  .observe({
61
- tabContentId: {
62
- /**
63
- * @param {string} oldValue
64
- * @param {string} newValue
65
- */
66
- changedCallback(oldValue, newValue) {
67
- // @ts-ignore Skip cast
68
- this.tabContent = newValue ? document.getElementById(newValue) : null;
69
- },
70
- },
67
+ tabContentId: 'string',
71
68
  active: 'boolean',
72
69
  secondary: 'boolean',
73
70
  _indicatorStyle: { value: 'opacity: 0' },
@@ -108,14 +105,20 @@ export default CustomElement
108
105
  },
109
106
  tabMetrics() {
110
107
  // eslint-disable-next-line no-return-assign
111
- return this._tabMetrics ??= [...this.tabs].map((tab, index) => ({
112
- left: tab.offsetLeft,
113
- width: tab.offsetWidth,
114
- right: tab.offsetLeft + tab.offsetWidth,
115
- center: tab.offsetLeft + (tab.offsetWidth / 2),
116
- label: tab.labelMetrics,
117
- index,
118
- }));
108
+ return this._tabMetrics ??= [...this.tabs].map((tab, index) => {
109
+ if (!(tab instanceof Tab)) {
110
+ customElements.upgrade(tab);
111
+ }
112
+ return {
113
+ left: tab.offsetLeft,
114
+ width: tab.offsetWidth,
115
+ right: tab.offsetLeft + tab.offsetWidth,
116
+ center: tab.offsetLeft + (tab.offsetWidth / 2),
117
+ label: tab.computeLabelMetrics(),
118
+ tab,
119
+ index,
120
+ };
121
+ });
119
122
  },
120
123
  selectedIndex: {
121
124
  get() {
@@ -172,12 +175,19 @@ export default CustomElement
172
175
  clearCache() {
173
176
  this._tabMetrics = null;
174
177
  },
178
+ searchForTabContent() {
179
+ const { tabContentId, isConnected } = this;
180
+ if (!tabContentId) return;
181
+ if (!isConnected) return;
182
+ this.tabContent = this.getRootNode().getElementById(tabContentId);
183
+ },
175
184
  /** @param {InstanceType<Tab>} [tab] */
176
185
  updateIndicatorByTab(tab) {
177
186
  tab ??= this.selectedItem ?? this.tabs.item(0);
178
-
179
- const width = this.secondary ? tab.clientWidth : tab.labelMetrics.width;
180
- const position = this.secondary ? tab.offsetLeft : tab.offsetLeft + tab.labelMetrics.left;
187
+ const metrics = this.tabMetrics.find((m) => m.tab === tab);
188
+ if (!metrics) return;
189
+ const width = this.secondary ? metrics.width : metrics.label.width;
190
+ const position = this.secondary ? metrics.left : metrics.left + metrics.label.left;
181
191
  this._indicatorStyle = `--width: ${width}; --offset: ${position}px`;
182
192
  },
183
193
  updateIndicator(animate = false) {
@@ -208,7 +218,7 @@ export default CustomElement
208
218
  let center;
209
219
  if (leftMetrics === rightMetrics) {
210
220
  width = this.secondary ? leftMetrics.width : leftMetrics.label.width;
211
- activeTab = this.tabs.item(leftIndex);
221
+ activeTab = leftMetrics.tab;
212
222
  center = leftMetrics.center;
213
223
  } else {
214
224
  const leftRatio = 1 - (decimalIndex - leftIndex);
@@ -218,7 +228,7 @@ export default CustomElement
218
228
  const activeIndex = leftRatio > rightRatio ? leftIndex : rightIndex;
219
229
  const distance = rightMetrics.center - leftMetrics.center;
220
230
  width = leftWidth + rightWidth;
221
- activeTab = this.tabs.item(activeIndex);
231
+ activeTab = this.tabMetrics[activeIndex].tab;
222
232
  center = leftMetrics.center + (distance * rightRatio);
223
233
  }
224
234
 
@@ -257,8 +267,8 @@ export default CustomElement
257
267
  .set({
258
268
  ariaRole: 'tablist',
259
269
  })
260
- .html/* html */`
261
- <slot id=slot ink={ink} type-style={typeStyle}></slot>
270
+ .html`
271
+ <slot id=slot ink={ink} type-style={typeStyle} scrollable={scrollable}></slot>
262
272
  <div id=indicator aria-hidden=true style={_indicatorStyle} active={active} secondary={secondary}>
263
273
  <div id=indicator-start class=indicator-piece></div>
264
274
  <div id=indicator-center class=indicator-piece></div>
@@ -266,9 +276,11 @@ export default CustomElement
266
276
  </div>
267
277
  `
268
278
  .on({
269
- composed() {
270
- const { shape, indicator } = this.refs;
271
- shape.append(indicator);
279
+ constructed() {
280
+ document.addEventListener('DOMContentLoaded', () => this.searchForTabContent(), { once: true });
281
+ },
282
+ connected() {
283
+ this.searchForTabContent();
272
284
  },
273
285
  pageIsRTLChanged() {
274
286
  this.clearCache();
@@ -286,6 +298,9 @@ export default CustomElement
286
298
  _selectedIndexChanged(oldValue, newValue) {
287
299
  this.updateIndicatorByIndex(newValue);
288
300
  },
301
+ tabContentIdChanged() {
302
+ this.searchForTabContent();
303
+ },
289
304
  })
290
305
  .events({
291
306
  '~click'({ target }) {
@@ -301,6 +316,7 @@ export default CustomElement
301
316
  slotchange() {
302
317
  this.clearCache();
303
318
  this.updateIndicator();
319
+ this.searchForTabContent();
304
320
  },
305
321
  },
306
322
  })
@@ -309,7 +325,7 @@ export default CustomElement
309
325
 
310
326
  :host {
311
327
  --mdw-ink: var(--mdw-color__primary);
312
- --mdw-shape__bg: rgb(var(--mdw-color__surface));
328
+ --mdw-bg: var(--mdw-color__surface);
313
329
  position: relative;
314
330
  position: sticky;
315
331
  inset-block-start: 0;
@@ -327,6 +343,8 @@ export default CustomElement
327
343
  inline-size: 100%;
328
344
  flex:none;
329
345
 
346
+ z-index: 4;
347
+
330
348
  color: inherit;
331
349
 
332
350
  text-align: center;
@@ -334,6 +352,10 @@ export default CustomElement
334
352
  will-change: transform;
335
353
  }
336
354
 
355
+ :host(:where([color])) {
356
+ background-color: rgb(var(--mdw-bg));
357
+ }
358
+
337
359
  #indicator {
338
360
  --corner: 3;
339
361
  --width: 24;
@@ -428,11 +450,17 @@ export default CustomElement
428
450
  }
429
451
 
430
452
  :host([scrollable]) {
431
- grid-auto-columns: max-content;
432
- justify-content: flex-start;
433
- overflow-x: auto;
453
+ display: flex;
454
+ justify-content: initial;
455
+ }
456
+
457
+ #slot[scrollable] {
458
+ display: inline-flex;
459
+
460
+ inline-size: 0;
461
+ flex: 1;
434
462
 
435
- padding-inline: 48px
463
+ padding-inline: 48px;
436
464
  }
437
465
  `
438
466
  .autoRegister('mdw-tab-list');
@@ -3,8 +3,8 @@ import AriaReflectorMixin from '../mixins/AriaReflectorMixin.js';
3
3
  import Box from './Box.js';
4
4
 
5
5
  export default Box
6
- .mixin(AriaReflectorMixin)
7
6
  .extend()
7
+ .mixin(AriaReflectorMixin)
8
8
  .set({
9
9
  _ariaRole: 'tabpanel',
10
10
  })
@@ -17,21 +17,24 @@ export default Box
17
17
  },
18
18
  peeking: 'boolean',
19
19
  })
20
- .css/* css */`
20
+ .css`
21
21
  :host {
22
+ overflow-y: auto;
22
23
  scroll-snap-align: center;
23
- min-inline-size: 100%;
24
- max-inline-size: 100%;
24
+
25
25
  min-block-size: 100%;
26
26
  max-block-size: 100%;
27
- overflow-y: auto;
28
- will-change: visibility;
27
+ min-inline-size: 100%;
28
+ max-inline-size: 100%;
29
29
 
30
- visibility: hidden;
30
+ visibility: hidden;
31
+
32
+ will-change: visibility;
31
33
  }
34
+
32
35
  :host(:is([active],[peeking])) {
33
36
  /* Safari bug: Visiblity not changing without !important or layout reflow */
34
- visibility: visible !important;;
37
+ visibility: inherit !important;
35
38
  }
36
39
  `
37
40
  .autoRegister('mdw-tab-panel');