@shortfuse/materialdesignweb 0.8.0 → 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 (394) hide show
  1. package/README.md +32 -24
  2. package/bin/mdw-css.js +1 -1
  3. package/components/Badge.js +12 -5
  4. package/components/Body.js +3 -0
  5. package/components/BottomAppBar.js +1 -8
  6. package/components/BottomSheet.js +424 -0
  7. package/components/Box.js +11 -49
  8. package/components/Button.js +61 -82
  9. package/components/Card.js +56 -61
  10. package/components/Checkbox.js +7 -25
  11. package/components/CheckboxIcon.js +10 -28
  12. package/components/Chip.js +13 -11
  13. package/components/Dialog.js +49 -98
  14. package/components/Display.js +55 -0
  15. package/components/Fab.js +83 -17
  16. package/components/FabContainer.js +48 -0
  17. package/components/FilterChip.js +34 -32
  18. package/components/Grid.js +176 -0
  19. package/components/Headline.js +5 -28
  20. package/components/Icon.js +54 -69
  21. package/components/IconButton.js +71 -120
  22. package/components/Input.js +669 -83
  23. package/components/InputChip.js +161 -0
  24. package/components/Label.js +3 -0
  25. package/components/List.js +1 -5
  26. package/components/ListItem.js +39 -23
  27. package/components/ListOption.js +79 -62
  28. package/components/Listbox.js +19 -10
  29. package/components/Menu.js +8 -18
  30. package/components/MenuItem.js +25 -26
  31. package/components/NavBar.js +53 -19
  32. package/components/NavDrawer.js +15 -15
  33. package/components/NavDrawerItem.js +2 -4
  34. package/components/NavItem.js +40 -33
  35. package/components/NavRail.js +23 -21
  36. package/components/NavRailItem.js +5 -2
  37. package/components/Page.js +105 -0
  38. package/components/Pane.js +18 -0
  39. package/components/Popup.js +17 -8
  40. package/components/Radio.js +2 -5
  41. package/components/RadioIcon.js +10 -14
  42. package/components/Ripple.js +11 -7
  43. package/components/Root.js +209 -0
  44. package/components/Scrim.js +87 -0
  45. package/components/Search.js +12 -20
  46. package/components/SegmentedButton.js +33 -36
  47. package/components/SegmentedButtonGroup.js +9 -3
  48. package/components/Select.js +6 -7
  49. package/components/Shape.js +5 -65
  50. package/components/SideSheet.js +308 -0
  51. package/components/Slider.js +71 -34
  52. package/components/Snackbar.js +22 -16
  53. package/components/SnackbarContainer.js +42 -0
  54. package/components/Surface.js +15 -10
  55. package/components/Switch.js +3 -16
  56. package/components/SwitchIcon.js +40 -32
  57. package/components/Tab.js +57 -38
  58. package/components/TabContent.js +1 -0
  59. package/components/TabList.js +60 -32
  60. package/components/TabPanel.js +1 -1
  61. package/components/Table.js +116 -0
  62. package/components/TextArea.js +16 -15
  63. package/components/Title.js +4 -9
  64. package/components/Tooltip.js +43 -21
  65. package/components/TopAppBar.js +56 -78
  66. package/constants/shapes.js +36 -0
  67. package/constants/typography.js +127 -0
  68. package/core/Composition.js +354 -192
  69. package/core/CompositionAdapter.js +11 -12
  70. package/core/CustomElement.js +588 -236
  71. package/core/css.js +117 -12
  72. package/core/customTypes.js +120 -25
  73. package/core/dom.js +17 -11
  74. package/core/jsonMergePatch.js +12 -10
  75. package/core/observe.js +298 -253
  76. package/core/optimizations.js +9 -9
  77. package/core/template.js +14 -57
  78. package/dist/index.min.js +85 -115
  79. package/dist/index.min.js.map +4 -4
  80. package/dist/meta.json +1 -1
  81. package/dom/HTMLOptionsCollectionProxy.js +106 -0
  82. package/{theming/themableMixinLoader.js → loaders/palette.js} +4 -3
  83. package/loaders/theme.js +12 -0
  84. package/mixins/AriaReflectorMixin.js +53 -13
  85. package/mixins/AriaToolbarMixin.js +3 -0
  86. package/mixins/ControlMixin.js +76 -33
  87. package/mixins/DelegatesFocusMixin.js +54 -0
  88. package/mixins/DensityMixin.js +2 -2
  89. package/mixins/ElevationMixin.js +62 -0
  90. package/mixins/FlexableMixin.js +66 -37
  91. package/mixins/FormAssociatedMixin.js +60 -8
  92. package/mixins/HyperlinkMixin.js +66 -0
  93. package/mixins/InputMixin.js +205 -32
  94. package/mixins/KeyboardNavMixin.js +8 -6
  95. package/mixins/NavigationListenerMixin.js +33 -0
  96. package/mixins/PopupMixin.js +176 -208
  97. package/mixins/ResizeObserverMixin.js +16 -4
  98. package/mixins/RippleMixin.js +8 -6
  99. package/mixins/ScrollListenerMixin.js +1 -1
  100. package/mixins/SemiStickyMixin.js +44 -98
  101. package/mixins/ShapeMaskedMixin.js +117 -0
  102. package/mixins/ShapeMixin.js +22 -204
  103. package/mixins/StateMixin.js +70 -34
  104. package/mixins/TextFieldMixin.js +107 -143
  105. package/mixins/ThemableMixin.js +44 -56
  106. package/mixins/TooltipTriggerMixin.js +291 -359
  107. package/mixins/TouchTargetMixin.js +1 -1
  108. package/mixins/TypographyMixin.js +121 -0
  109. package/package.json +110 -74
  110. package/services/rtl.js +10 -0
  111. package/services/svgAlias.js +17 -0
  112. package/{theming/index.js → services/theme.js} +24 -174
  113. package/types/bin/mdw-css.d.ts +3 -0
  114. package/types/bin/mdw-css.d.ts.map +1 -0
  115. package/types/components/Badge.d.ts +39 -0
  116. package/types/components/Badge.d.ts.map +1 -0
  117. package/types/components/Body.d.ts +29 -0
  118. package/types/components/Body.d.ts.map +1 -0
  119. package/types/components/BottomAppBar.d.ts +73 -0
  120. package/types/components/BottomAppBar.d.ts.map +1 -0
  121. package/types/components/BottomSheet.d.ts +109 -0
  122. package/types/components/BottomSheet.d.ts.map +1 -0
  123. package/types/components/Box.d.ts +16 -0
  124. package/types/components/Box.d.ts.map +1 -0
  125. package/types/components/Button.d.ts +714 -0
  126. package/types/components/Button.d.ts.map +1 -0
  127. package/types/components/Card.d.ts +412 -0
  128. package/types/components/Card.d.ts.map +1 -0
  129. package/types/components/Checkbox.d.ts +205 -0
  130. package/types/components/Checkbox.d.ts.map +1 -0
  131. package/types/components/CheckboxIcon.d.ts +44 -0
  132. package/types/components/CheckboxIcon.d.ts.map +1 -0
  133. package/types/components/Chip.d.ts +1425 -0
  134. package/types/components/Chip.d.ts.map +1 -0
  135. package/types/components/Dialog.d.ts +286 -0
  136. package/types/components/Dialog.d.ts.map +1 -0
  137. package/types/components/DialogActions.d.ts +4 -0
  138. package/types/components/DialogActions.d.ts.map +1 -0
  139. package/types/components/Display.d.ts +45 -0
  140. package/types/components/Display.d.ts.map +1 -0
  141. package/types/components/Divider.d.ts +10 -0
  142. package/types/components/Divider.d.ts.map +1 -0
  143. package/types/components/Fab.d.ts +741 -0
  144. package/types/components/Fab.d.ts.map +1 -0
  145. package/types/components/FabContainer.d.ts +10 -0
  146. package/types/components/FabContainer.d.ts.map +1 -0
  147. package/types/components/FilterChip.d.ts +4283 -0
  148. package/types/components/FilterChip.d.ts.map +1 -0
  149. package/types/components/Grid.d.ts +37 -0
  150. package/types/components/Grid.d.ts.map +1 -0
  151. package/types/components/Headline.d.ts +47 -0
  152. package/types/components/Headline.d.ts.map +1 -0
  153. package/types/components/Icon.d.ts +103 -0
  154. package/types/components/Icon.d.ts.map +1 -0
  155. package/types/components/IconButton.d.ts +1486 -0
  156. package/types/components/IconButton.d.ts.map +1 -0
  157. package/types/components/Input.d.ts +51288 -0
  158. package/types/components/Input.d.ts.map +1 -0
  159. package/types/components/InputChip.d.ts +243 -0
  160. package/types/components/InputChip.d.ts.map +1 -0
  161. package/types/components/Label.d.ts +29 -0
  162. package/types/components/Label.d.ts.map +1 -0
  163. package/types/components/List.d.ts +31 -0
  164. package/types/components/List.d.ts.map +1 -0
  165. package/types/components/ListItem.d.ts +349 -0
  166. package/types/components/ListItem.d.ts.map +1 -0
  167. package/types/components/ListOption.d.ts +1493 -0
  168. package/types/components/ListOption.d.ts.map +1 -0
  169. package/types/components/Listbox.d.ts +12012 -0
  170. package/types/components/Listbox.d.ts.map +1 -0
  171. package/types/components/Menu.d.ts +119 -0
  172. package/types/components/Menu.d.ts.map +1 -0
  173. package/types/components/MenuItem.d.ts +3109 -0
  174. package/types/components/MenuItem.d.ts.map +1 -0
  175. package/types/components/NavBar.d.ts +18 -0
  176. package/types/components/NavBar.d.ts.map +1 -0
  177. package/types/components/NavBarItem.d.ts +186 -0
  178. package/types/components/NavBarItem.d.ts.map +1 -0
  179. package/types/components/NavDrawer.d.ts +108 -0
  180. package/types/components/NavDrawer.d.ts.map +1 -0
  181. package/types/components/NavDrawerItem.d.ts +186 -0
  182. package/types/components/NavDrawerItem.d.ts.map +1 -0
  183. package/types/components/NavItem.d.ts +190 -0
  184. package/types/components/NavItem.d.ts.map +1 -0
  185. package/types/components/NavRail.d.ts +109 -0
  186. package/types/components/NavRail.d.ts.map +1 -0
  187. package/types/components/NavRailItem.d.ts +186 -0
  188. package/types/components/NavRailItem.d.ts.map +1 -0
  189. package/types/components/Page.d.ts +24 -0
  190. package/types/components/Page.d.ts.map +1 -0
  191. package/types/components/Pane.d.ts +44 -0
  192. package/types/components/Pane.d.ts.map +1 -0
  193. package/types/components/Popup.d.ts +76 -0
  194. package/types/components/Popup.d.ts.map +1 -0
  195. package/types/components/Progress.d.ts +19 -0
  196. package/types/components/Progress.d.ts.map +1 -0
  197. package/types/components/Radio.d.ts +199 -0
  198. package/types/components/Radio.d.ts.map +1 -0
  199. package/types/components/RadioIcon.d.ts +46 -0
  200. package/types/components/RadioIcon.d.ts.map +1 -0
  201. package/types/components/Ripple.d.ts +34 -0
  202. package/types/components/Ripple.d.ts.map +1 -0
  203. package/types/components/Root.d.ts +68 -0
  204. package/types/components/Root.d.ts.map +1 -0
  205. package/types/components/Scrim.d.ts +6 -0
  206. package/types/components/Scrim.d.ts.map +1 -0
  207. package/types/components/Search.d.ts +16 -0
  208. package/types/components/Search.d.ts.map +1 -0
  209. package/types/components/SegmentedButton.d.ts +718 -0
  210. package/types/components/SegmentedButton.d.ts.map +1 -0
  211. package/types/components/SegmentedButtonGroup.d.ts +44 -0
  212. package/types/components/SegmentedButtonGroup.d.ts.map +1 -0
  213. package/types/components/Select.d.ts +1361 -0
  214. package/types/components/Select.d.ts.map +1 -0
  215. package/types/components/Shape.d.ts +10 -0
  216. package/types/components/Shape.d.ts.map +1 -0
  217. package/types/components/SideSheet.d.ts +106 -0
  218. package/types/components/SideSheet.d.ts.map +1 -0
  219. package/types/components/Slider.d.ts +382 -0
  220. package/types/components/Slider.d.ts.map +1 -0
  221. package/types/components/Snackbar.d.ts +65 -0
  222. package/types/components/Snackbar.d.ts.map +1 -0
  223. package/types/components/SnackbarContainer.d.ts +6 -0
  224. package/types/components/SnackbarContainer.d.ts.map +1 -0
  225. package/types/components/Surface.d.ts +45 -0
  226. package/types/components/Surface.d.ts.map +1 -0
  227. package/types/components/Switch.d.ts +183 -0
  228. package/types/components/Switch.d.ts.map +1 -0
  229. package/types/components/SwitchIcon.d.ts +169 -0
  230. package/types/components/SwitchIcon.d.ts.map +1 -0
  231. package/types/components/Tab.d.ts +879 -0
  232. package/types/components/Tab.d.ts.map +1 -0
  233. package/types/components/TabContent.d.ts +122 -0
  234. package/types/components/TabContent.d.ts.map +1 -0
  235. package/types/components/TabList.d.ts +6266 -0
  236. package/types/components/TabList.d.ts.map +1 -0
  237. package/types/components/TabPanel.d.ts +28 -0
  238. package/types/components/TabPanel.d.ts.map +1 -0
  239. package/types/components/Table.d.ts +2 -0
  240. package/types/components/Table.d.ts.map +1 -0
  241. package/types/components/TextArea.d.ts +1394 -0
  242. package/types/components/TextArea.d.ts.map +1 -0
  243. package/types/components/Title.d.ts +47 -0
  244. package/types/components/Title.d.ts.map +1 -0
  245. package/types/components/Tooltip.d.ts +49 -0
  246. package/types/components/Tooltip.d.ts.map +1 -0
  247. package/types/components/TopAppBar.d.ts +130 -0
  248. package/types/components/TopAppBar.d.ts.map +1 -0
  249. package/types/constants/colorKeywords.d.ts +2 -0
  250. package/types/constants/colorKeywords.d.ts.map +1 -0
  251. package/types/constants/shapes.d.ts +38 -0
  252. package/types/constants/shapes.d.ts.map +1 -0
  253. package/types/constants/typography.d.ts +212 -0
  254. package/types/constants/typography.d.ts.map +1 -0
  255. package/types/core/Composition.d.ts +252 -0
  256. package/types/core/Composition.d.ts.map +1 -0
  257. package/types/core/CompositionAdapter.d.ts +92 -0
  258. package/types/core/CompositionAdapter.d.ts.map +1 -0
  259. package/types/core/CustomElement.d.ts +302 -0
  260. package/types/core/CustomElement.d.ts.map +1 -0
  261. package/types/core/css.d.ts +44 -0
  262. package/types/core/css.d.ts.map +1 -0
  263. package/types/core/customTypes.d.ts +26 -0
  264. package/types/core/customTypes.d.ts.map +1 -0
  265. package/types/core/dom.d.ts +32 -0
  266. package/types/core/dom.d.ts.map +1 -0
  267. package/types/core/jsonMergePatch.d.ts +31 -0
  268. package/types/core/jsonMergePatch.d.ts.map +1 -0
  269. package/types/core/observe.d.ts +113 -0
  270. package/types/core/observe.d.ts.map +1 -0
  271. package/types/core/optimizations.d.ts +7 -0
  272. package/types/core/optimizations.d.ts.map +1 -0
  273. package/types/core/template.d.ts +47 -0
  274. package/types/core/template.d.ts.map +1 -0
  275. package/types/core/uid.d.ts +6 -0
  276. package/types/core/uid.d.ts.map +1 -0
  277. package/types/dom/HTMLOptionsCollectionProxy.d.ts +18 -0
  278. package/types/dom/HTMLOptionsCollectionProxy.d.ts.map +1 -0
  279. package/types/index.d.ts +88 -0
  280. package/types/index.d.ts.map +1 -0
  281. package/types/loaders/palette.d.ts +2 -0
  282. package/types/loaders/palette.d.ts.map +1 -0
  283. package/types/loaders/theme.d.ts +2 -0
  284. package/types/loaders/theme.d.ts.map +1 -0
  285. package/types/mixins/AriaReflectorMixin.d.ts +23 -0
  286. package/types/mixins/AriaReflectorMixin.d.ts.map +1 -0
  287. package/types/mixins/AriaToolbarMixin.d.ts +32 -0
  288. package/types/mixins/AriaToolbarMixin.d.ts.map +1 -0
  289. package/types/mixins/ControlMixin.d.ts +124 -0
  290. package/types/mixins/ControlMixin.d.ts.map +1 -0
  291. package/types/mixins/DelegatesFocusMixin.d.ts +5 -0
  292. package/types/mixins/DelegatesFocusMixin.d.ts.map +1 -0
  293. package/types/mixins/DensityMixin.d.ts +5 -0
  294. package/types/mixins/DensityMixin.d.ts.map +1 -0
  295. package/types/mixins/ElevationMixin.d.ts +33 -0
  296. package/types/mixins/ElevationMixin.d.ts.map +1 -0
  297. package/types/mixins/FlexableMixin.d.ts +13 -0
  298. package/types/mixins/FlexableMixin.d.ts.map +1 -0
  299. package/types/mixins/FormAssociatedMixin.d.ts +122 -0
  300. package/types/mixins/FormAssociatedMixin.d.ts.map +1 -0
  301. package/types/mixins/HyperlinkMixin.d.ts +22 -0
  302. package/types/mixins/HyperlinkMixin.d.ts.map +1 -0
  303. package/types/mixins/InputMixin.d.ts +179 -0
  304. package/types/mixins/InputMixin.d.ts.map +1 -0
  305. package/types/mixins/KeyboardNavMixin.d.ts +47 -0
  306. package/types/mixins/KeyboardNavMixin.d.ts.map +1 -0
  307. package/types/mixins/NavigationListenerMixin.d.ts +8 -0
  308. package/types/mixins/NavigationListenerMixin.d.ts.map +1 -0
  309. package/types/mixins/PopupMixin.d.ts +82 -0
  310. package/types/mixins/PopupMixin.d.ts.map +1 -0
  311. package/types/mixins/RTLObserverMixin.d.ts +7 -0
  312. package/types/mixins/RTLObserverMixin.d.ts.map +1 -0
  313. package/types/mixins/ResizeObserverMixin.d.ts +12 -0
  314. package/types/mixins/ResizeObserverMixin.d.ts.map +1 -0
  315. package/types/mixins/RippleMixin.d.ts +92 -0
  316. package/types/mixins/RippleMixin.d.ts.map +1 -0
  317. package/types/mixins/ScrollListenerMixin.d.ts +41 -0
  318. package/types/mixins/ScrollListenerMixin.d.ts.map +1 -0
  319. package/types/mixins/SemiStickyMixin.d.ts +50 -0
  320. package/types/mixins/SemiStickyMixin.d.ts.map +1 -0
  321. package/types/mixins/ShapeMaskedMixin.d.ts +9 -0
  322. package/types/mixins/ShapeMaskedMixin.d.ts.map +1 -0
  323. package/types/mixins/ShapeMixin.d.ts +38 -0
  324. package/types/mixins/ShapeMixin.d.ts.map +1 -0
  325. package/types/mixins/StateMixin.d.ts +27 -0
  326. package/types/mixins/StateMixin.d.ts.map +1 -0
  327. package/types/mixins/TextFieldMixin.d.ts +1354 -0
  328. package/types/mixins/TextFieldMixin.d.ts.map +1 -0
  329. package/types/mixins/ThemableMixin.d.ts +9 -0
  330. package/types/mixins/ThemableMixin.d.ts.map +1 -0
  331. package/types/mixins/TooltipTriggerMixin.d.ts +106 -0
  332. package/types/mixins/TooltipTriggerMixin.d.ts.map +1 -0
  333. package/types/mixins/TouchTargetMixin.d.ts +3 -0
  334. package/types/mixins/TouchTargetMixin.d.ts.map +1 -0
  335. package/types/mixins/TypographyMixin.d.ts +17 -0
  336. package/types/mixins/TypographyMixin.d.ts.map +1 -0
  337. package/types/services/rtl.d.ts +3 -0
  338. package/types/services/rtl.d.ts.map +1 -0
  339. package/types/services/svgAlias.d.ts +13 -0
  340. package/types/services/svgAlias.d.ts.map +1 -0
  341. package/types/services/theme.d.ts +45 -0
  342. package/types/services/theme.d.ts.map +1 -0
  343. package/types/utils/cli.d.ts +3 -0
  344. package/types/utils/cli.d.ts.map +1 -0
  345. package/types/utils/function.d.ts +3 -0
  346. package/types/utils/function.d.ts.map +1 -0
  347. package/types/utils/jsx-runtime.d.ts +20 -0
  348. package/types/utils/jsx-runtime.d.ts.map +1 -0
  349. package/types/utils/material-color/blend.d.ts +34 -0
  350. package/types/utils/material-color/blend.d.ts.map +1 -0
  351. package/types/utils/material-color/hct/Cam16.d.ts +142 -0
  352. package/types/utils/material-color/hct/Cam16.d.ts.map +1 -0
  353. package/types/utils/material-color/hct/Hct.d.ts +93 -0
  354. package/types/utils/material-color/hct/Hct.d.ts.map +1 -0
  355. package/types/utils/material-color/hct/ViewingConditions.d.ts +69 -0
  356. package/types/utils/material-color/hct/ViewingConditions.d.ts.map +1 -0
  357. package/types/utils/material-color/hct/hctSolver.d.ts +30 -0
  358. package/types/utils/material-color/hct/hctSolver.d.ts.map +1 -0
  359. package/types/utils/material-color/helper.d.ts +8 -0
  360. package/types/utils/material-color/helper.d.ts.map +1 -0
  361. package/types/utils/material-color/palettes/CorePalette.d.ts +75 -0
  362. package/types/utils/material-color/palettes/CorePalette.d.ts.map +1 -0
  363. package/types/utils/material-color/palettes/TonalPalette.d.ts +38 -0
  364. package/types/utils/material-color/palettes/TonalPalette.d.ts.map +1 -0
  365. package/types/utils/material-color/scheme/Scheme.d.ts +264 -0
  366. package/types/utils/material-color/scheme/Scheme.d.ts.map +1 -0
  367. package/types/utils/material-color/utils/color.d.ts +172 -0
  368. package/types/utils/material-color/utils/color.d.ts.map +1 -0
  369. package/types/utils/material-color/utils/math.d.ts +94 -0
  370. package/types/utils/material-color/utils/math.d.ts.map +1 -0
  371. package/types/utils/pixelmatch.d.ts +22 -0
  372. package/types/utils/pixelmatch.d.ts.map +1 -0
  373. package/types/utils/popup.d.ts +106 -0
  374. package/types/utils/popup.d.ts.map +1 -0
  375. package/types/utils/searchParams.d.ts +3 -0
  376. package/types/utils/searchParams.d.ts.map +1 -0
  377. package/types/utils/svg.d.ts +7 -0
  378. package/types/utils/svg.d.ts.map +1 -0
  379. package/utils/material-color/scheme/Scheme.js +1 -1
  380. package/utils/pixelmatch.js +360 -0
  381. package/utils/popup.js +86 -10
  382. package/utils/searchParams.js +19 -0
  383. package/components/ExtendedFab.js +0 -32
  384. package/components/Layout.js +0 -504
  385. package/components/Nav.js +0 -38
  386. package/core/DomAdapter.js +0 -586
  387. package/core/ICustomElement.d.ts +0 -291
  388. package/core/ICustomElement.js +0 -1
  389. package/core/test.js +0 -126
  390. package/core/typings.d.ts +0 -142
  391. package/core/typings.js +0 -1
  392. package/mixins/SurfaceMixin.js +0 -127
  393. package/theming/loader.js +0 -22
  394. /package/{utils/color_keywords.js → constants/colorKeywords.js} +0 -0
package/components/Tab.js CHANGED
@@ -3,6 +3,9 @@
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';
@@ -14,30 +17,18 @@ export default CustomElement
14
17
  .mixin(StateMixin)
15
18
  .mixin(RippleMixin)
16
19
  .mixin(ScrollListenerMixin)
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, icon } = this.refs;
25
- const target = slot.clientWidth ? slot : icon;
26
- return {
27
- width: target.clientWidth,
28
- left: target.offsetLeft,
29
- };
30
- },
31
24
  })
32
25
  .set({
33
- delegatesFocus: true,
34
26
  stateLayer: true,
35
27
  })
36
28
  .observe({
37
29
  active: 'boolean',
38
30
  icon: 'string',
39
31
  src: 'string',
40
- href: 'string',
41
32
  ariaLabel: 'string',
42
33
  })
43
34
  .methods({
@@ -45,25 +36,48 @@ export default CustomElement
45
36
  focus(options) {
46
37
  this.refs.anchor.focus(options);
47
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
+ },
47
+ })
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;
66
+ },
48
67
  })
49
68
  .html`
50
- <a id=anchor role=tab
51
- aria-label={ariaLabel}
52
- aria-controls=${({ href }) => (href?.startsWith('#') ? href.slice(1) : null)}
53
- aria-selected=${({ active }) => (active ? 'true' : 'false')}
54
- aria-disabled=${({ disabledState }) => `${disabledState}`}
55
- disabled={disabledState}
56
- href=${({ href }) => href ?? '#'}>
57
- <mdw-icon mdw-if=${(data) => data.icon || data.src} id=icon aria-hidden=true src={src} active={active}>{icon}</mdw-icon>
58
- <slot id=slot></slot>
59
- </a>
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>
60
71
  `
61
- .on({
62
- composed() {
63
- const { shape, rippleContainer, state } = this.refs;
64
- shape.append(state, rippleContainer);
65
- state.setAttribute('state-disabled', 'focus');
66
- },
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');
67
81
  })
68
82
  .events({
69
83
  keydown(event) {
@@ -87,14 +101,24 @@ export default CustomElement
87
101
  return;
88
102
  }
89
103
  if (href.startsWith('#')) {
90
- const root = /** @type {HTMLElement} */ this.getRootNode();
104
+ const root = /** @type {HTMLElement} */ (this.getRootNode());
105
+ /** @type {HTMLElement} */
91
106
  const el = root.querySelector(href);
92
107
  if (!el) {
93
108
  console.warn('Unknown element', href);
94
109
  return;
95
110
  }
96
111
  event.preventDefault();
97
- 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
+ });
98
122
  }
99
123
  },
100
124
  },
@@ -106,6 +130,7 @@ export default CustomElement
106
130
  display: inline-flex;
107
131
 
108
132
  min-inline-size: 64px;
133
+ flex: none;
109
134
 
110
135
  cursor: pointer;
111
136
  }
@@ -136,8 +161,6 @@ export default CustomElement
136
161
  padding-block: 4px;
137
162
 
138
163
  font-size: 24px;
139
- font-variation-settings: 'FILL' 0;
140
-
141
164
  }
142
165
 
143
166
  #shape[disabled],
@@ -152,10 +175,6 @@ export default CustomElement
152
175
  color: rgb(var(--mdw-ink));
153
176
  }
154
177
 
155
- #icon[active] {
156
- font-variation-settings: 'FILL' 1;
157
- }
158
-
159
178
  #slot {
160
179
  display: block;
161
180
  overflow-x: hidden;
@@ -121,6 +121,7 @@ export default CustomElement
121
121
  // @ts-ignore Skip cast
122
122
  this._panelNodes = slot.assignedElements()
123
123
  .filter((el) => el.tagName === TabPanel.elementName.toUpperCase());
124
+ this._panelMetrics = null;
124
125
  this.updatePanels();
125
126
  },
126
127
  },
@@ -4,6 +4,7 @@ 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
 
@@ -16,6 +17,10 @@ export default CustomElement
16
17
  .mixin(ResizeObserverMixin)
17
18
  .mixin(RTLObserverMixin)
18
19
  .mixin(ShapeMixin)
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
 
@@ -258,7 +268,7 @@ export default CustomElement
258
268
  ariaRole: 'tablist',
259
269
  })
260
270
  .html`
261
- <slot id=slot ink={ink} type-style={typeStyle}></slot>
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');
@@ -34,7 +34,7 @@ export default Box
34
34
 
35
35
  :host(:is([active],[peeking])) {
36
36
  /* Safari bug: Visiblity not changing without !important or layout reflow */
37
- visibility: visible !important;
37
+ visibility: inherit !important;
38
38
  }
39
39
  `
40
40
  .autoRegister('mdw-tab-panel');
@@ -0,0 +1,116 @@
1
+ import CustomElement from '../core/CustomElement.js';
2
+
3
+ // https://html.spec.whatwg.org/multipage/tables.html#htmltableelement
4
+
5
+ /**
6
+ * @param {Element} parent
7
+ * @param {string} tagName
8
+ * @return {Element?}
9
+ */
10
+ function getByTagName(parent, tagName) {
11
+ for (const element of parent.children) {
12
+ if (element.tagName === tagName) {
13
+ return element;
14
+ }
15
+ }
16
+ return null;
17
+ }
18
+
19
+ /**
20
+ * @param {Element} parent
21
+ * @param {string} tagName
22
+ * @param {Element|null} value
23
+ * @param {string} errorMessage
24
+ * @return {Element?}
25
+ */
26
+ function setByTagName(parent, tagName, value, errorMessage) {
27
+ const current = getByTagName(parent, tagName);
28
+ if (!value) {
29
+ current?.remove();
30
+ return undefined;
31
+ }
32
+ if (value === current) return value;
33
+ if (value instanceof HTMLElement && value.tagName === tagName) {
34
+ if (current) {
35
+ current.replaceWith(value);
36
+ } else {
37
+ this.prepend(value);
38
+ }
39
+ return value;
40
+ }
41
+ throw new TypeError(errorMessage);
42
+ }
43
+
44
+ /**
45
+ * @param {Element} parent
46
+ * @param {string} tagName
47
+ * @return {Element?}
48
+ */
49
+ function createByTagName(parent, tagName) {
50
+ let element = this.getByTagName(parent, tagName);
51
+ if (element) return element;
52
+ element = document.createElement(tagName);
53
+ this.prepend(element);
54
+ return element;
55
+ }
56
+
57
+ /**
58
+ * @param {Element} parent
59
+ * @param {string} tagName
60
+ * @return {void}
61
+ */
62
+ function deleteByTagName(parent, tagName) {
63
+ this.setByTagName(parent, tagName, null);
64
+ }
65
+
66
+ /** -implements {HTMLTableElement} */
67
+ CustomElement
68
+ .extend()
69
+ .define({
70
+ caption: {
71
+ get() {
72
+ return getByTagName(this, 'mdw-caption');
73
+ },
74
+ set(value) {
75
+ return setByTagName(this, 'mdw-caption', value, "Failed to set the 'caption' property on 'MDWTableElement': Failed to convert value to 'MDWCaptionElement'.");
76
+ },
77
+ },
78
+ tHead: {
79
+ get() {
80
+ return getByTagName(this, 'mdw-thread');
81
+ },
82
+ set(value) {
83
+ return setByTagName(this, 'mdw-thead', value, "Failed to set the 'tHead' property on 'MDWTableElement': Failed to convert value to 'MDWTHeadElement'.");
84
+ },
85
+ },
86
+ tFoot: {
87
+ get() {
88
+ return getByTagName(this, 'mdw-tfoot');
89
+ },
90
+ set(value) {
91
+ return setByTagName(this, 'mdw-tfoot', value, "Failed to set the 'tFoot' property on 'MDWTableElement': Failed to convert value to 'MDWTFootElement'.");
92
+ },
93
+ },
94
+ tBodies() {
95
+ return this.getElementsByTagName('mdw-tbody');
96
+ },
97
+ rows() {
98
+ return this.getElementsByTagName('mdw-tr');
99
+ },
100
+ })
101
+ .methods({
102
+ createCaption() { return createByTagName(this, 'mdw-caption'); },
103
+ deleteCaption() { return deleteByTagName(this, 'mdw-caption'); },
104
+ createTHead() { return createByTagName(this, 'mdw-thead'); },
105
+ deleteTHead() { return deleteByTagName(this, 'mdw-thead'); },
106
+ createTFoot() { return createByTagName(this, 'mdw-tfoot'); },
107
+ deleteTFoot() { return deleteByTagName(this, 'mdw-tfoot'); },
108
+ createTBody() { return this.insertBefore(this.tFoot, document.createElement('mdw-tbody')); },
109
+ })
110
+ .html`<slot id=slot></slot>`
111
+ .css`
112
+ :host{
113
+ display:table;
114
+ }
115
+ `
116
+ .autoRegister('mdw-table');
@@ -135,9 +135,7 @@ export default CustomElement
135
135
  this._resizing = false;
136
136
  // if (this.placeholder) textarea.setAttribute('placeholder', this.placeholder);
137
137
  },
138
-
139
- /** @param {ResizeObserverEntry} entry */
140
- onResizeObserved(entry) {
138
+ onResizeObserved() {
141
139
  if (this.matches(':active')) return;
142
140
  this.resize();
143
141
  },
@@ -167,19 +165,18 @@ export default CustomElement
167
165
  },
168
166
  },
169
167
  })
168
+ .recompose(({ refs: { control } }) => {
169
+ // Spec
170
+ control.removeAttribute('placeholder');
171
+ control.setAttribute('rows', '{rows}');
172
+
173
+ // Custom
174
+ control.setAttribute('input-prefix', '{inputPrefix}');
175
+ control.setAttribute('input-suffix', '{inputSuffix}');
176
+ control.setAttribute('fixed', '{fixed}');
177
+ control.setAttribute('icon', '{icon}');
178
+ })
170
179
  .on({
171
- composed() {
172
- const { control } = this.refs;
173
- // Spec
174
- control.removeAttribute('placeholder');
175
- control.setAttribute('rows', '{rows}');
176
-
177
- // Custom
178
- control.setAttribute('input-prefix', '{inputPrefix}');
179
- control.setAttribute('input-suffix', '{inputSuffix}');
180
- control.setAttribute('fixed', '{fixed}');
181
- control.setAttribute('icon', '{icon}');
182
- },
183
180
  defaultValueAttrChanged(oldValue, newValue) {
184
181
  this.defaultValue = newValue;
185
182
  },
@@ -286,6 +283,10 @@ export default CustomElement
286
283
  max-block-size: calc((var(--max-rows) * var(--line-height)));
287
284
  }
288
285
 
286
+ #icon {
287
+ margin-inline-end: 16px;
288
+ }
289
+
289
290
  #control[icon] {
290
291
  padding-inline-start: 0;
291
292
  }
@@ -1,14 +1,9 @@
1
- import Headline from './Headline.js';
1
+ import Display from './Display.js';
2
2
 
3
- export default Headline
3
+ export default Display
4
4
  .extend()
5
- .expressions({
6
- computeAriaLevel({ ariaLevel, size }) {
7
- if (ariaLevel) return ariaLevel;
8
- if (size === 'medium') return '5';
9
- if (size === 'small') return '6';
10
- return '4';
11
- },
5
+ .set({
6
+ _baseAriaLevel: 7,
12
7
  })
13
8
  .css`
14
9
  :host {
@@ -1,9 +1,14 @@
1
+ import CustomElement from '../core/CustomElement.js';
1
2
  import AriaReflectorMixin from '../mixins/AriaReflectorMixin.js';
3
+ import ShapeMixin from '../mixins/ShapeMixin.js';
4
+ import ThemableMixin from '../mixins/ThemableMixin.js';
2
5
 
3
- import Surface from './Surface.js';
6
+ /* https://m3.material.io/components/tooltips/specs */
4
7
 
5
- export default Surface
8
+ export default CustomElement
6
9
  .extend()
10
+ .mixin(ThemableMixin)
11
+ .mixin(ShapeMixin)
7
12
  .mixin(AriaReflectorMixin)
8
13
  .set({
9
14
  _ariaRole: 'tooltip',
@@ -15,48 +20,65 @@ export default Surface
15
20
  this.updateAriaProperty('ariaHidden', newValue ? 'true' : 'false');
16
21
  },
17
22
  },
18
- touch: 'boolean',
19
23
  })
24
+ .html`
25
+ <div id=hover-target></div>
26
+ <slot id=slot></slot>
27
+ `
20
28
  .css`
21
- /* https://m2.material.io/components/tooltips */
22
-
23
29
  :host {
24
30
  --mdw-shape__size: var(--mdw-shape__extra-small);
25
- --mdw-ink: var(--mdw-color__on-surface-variant);
26
- --mdw-shape__bg: rgb(var(--mdw-color__surface-container));
31
+ --mdw-ink: var(--mdw-color__inverse-on-surface);
32
+ --mdw-bg: var(--mdw-color__inverse-surface);
27
33
  display: block;
28
- vertical-align: middle;
29
34
 
30
35
  box-sizing: border-box;
31
- /* stylelint-disable-next-line declaration-property-value-disallowed-list */
32
- margin-inline: auto;
33
- padding-block: 4px;
36
+
37
+ /* Ensure 24px min-height while keeping display:block */
38
+ padding-block: calc(12px - var(--mdw-typescale__body-small__line-height) / 2);
34
39
  padding-inline: 8px;
35
40
 
36
41
  pointer-events: none;
37
42
 
38
43
  opacity: 0;
39
44
  transform: scale(0);
40
- z-index: 24;
45
+ z-index: 28;
41
46
 
42
- font: var(--mdw-typescale__label-medium__font);
43
- letter-spacing: var(--mdw-typescale__label-medium__letter-spacing);
47
+ background-color: rgb(var(--mdw-bg));
48
+ color: rgb(var(--mdw-ink));
44
49
 
45
- transition: transform 200ms, opacity 200ms;
50
+ font: var(--mdw-typescale__body-small__font);
51
+ letter-spacing: var(--mdw-typescale__body-small__letter-spacing);
46
52
 
53
+ transition: transform 200ms, opacity 200ms;
47
54
  }
48
55
 
49
- :host([touch]) {
50
- padding-block: 6px;
51
- padding-inline: 16px;
52
-
53
- font: var(--mdw-typescale__label-large__font);
54
- letter-spacing: var(--mdw-typescale__label-large__letter-spacing);
56
+ @supports(width: 1lh) {
57
+ :host {
58
+ padding-block: calc(12px - 0.5lh);
59
+ }
55
60
  }
56
61
 
57
62
  :host([open]) {
63
+ pointer-events: auto;
64
+
58
65
  opacity: 1;
59
66
  transform: scale(1);
60
67
  }
68
+
69
+ #hover-target {
70
+ position: absolute;
71
+ inset-block-start: 50%;
72
+ inset-inline-start: 50%;
73
+
74
+ box-sizing: content-box;
75
+ block-size: 100%;
76
+ inline-size: 100%;
77
+ padding: 8px;
78
+
79
+ transform: translateX(-50%) translateY(-50%);
80
+ z-index: -1;
81
+
82
+ }
61
83
  `
62
84
  .autoRegister('mdw-tooltip');