@shortfuse/materialdesignweb 0.8.0 → 0.9.1

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 (405) hide show
  1. package/README.md +50 -198
  2. package/bin/mdw-css.js +1 -1
  3. package/components/Badge.js +15 -5
  4. package/components/Body.js +7 -0
  5. package/components/BottomAppBar.js +7 -10
  6. package/components/BottomSheet.js +472 -0
  7. package/components/Box.js +11 -49
  8. package/components/Button.js +81 -82
  9. package/components/Card.js +74 -62
  10. package/components/Checkbox.js +15 -25
  11. package/components/CheckboxIcon.js +19 -31
  12. package/components/Chip.js +18 -13
  13. package/components/Dialog.js +70 -100
  14. package/components/DialogActions.js +4 -0
  15. package/components/Display.js +64 -0
  16. package/components/Divider.js +5 -0
  17. package/components/Fab.js +94 -17
  18. package/components/FabContainer.js +57 -0
  19. package/components/FilterChip.js +43 -32
  20. package/components/Grid.js +187 -0
  21. package/components/Headline.js +9 -28
  22. package/components/Icon.js +80 -71
  23. package/components/IconButton.js +77 -120
  24. package/components/Input.js +745 -86
  25. package/components/InputChip.js +193 -0
  26. package/components/Label.js +7 -0
  27. package/components/List.js +11 -5
  28. package/components/ListItem.js +92 -23
  29. package/components/ListOption.js +143 -65
  30. package/components/Listbox.js +57 -17
  31. package/components/Menu.js +39 -27
  32. package/components/MenuItem.js +49 -36
  33. package/components/NavBar.js +66 -21
  34. package/components/NavBarItem.js +5 -0
  35. package/components/NavDrawer.js +33 -16
  36. package/components/NavDrawerItem.js +7 -4
  37. package/components/NavItem.js +61 -34
  38. package/components/NavRail.js +32 -21
  39. package/components/NavRailItem.js +10 -2
  40. package/components/Page.js +119 -0
  41. package/components/Pane.js +24 -0
  42. package/components/Popup.js +23 -8
  43. package/components/Progress.js +25 -5
  44. package/components/Radio.js +8 -7
  45. package/components/RadioIcon.js +24 -15
  46. package/components/Ripple.js +25 -7
  47. package/components/Root.js +225 -0
  48. package/components/Scrim.js +95 -0
  49. package/components/Search.js +30 -25
  50. package/components/SegmentedButton.js +53 -40
  51. package/components/SegmentedButtonGroup.js +15 -12
  52. package/components/Select.js +19 -10
  53. package/components/Shape.js +10 -66
  54. package/components/SideSheet.js +337 -0
  55. package/components/Slider.js +93 -36
  56. package/components/Snackbar.js +52 -20
  57. package/components/SnackbarContainer.js +51 -0
  58. package/components/Surface.js +20 -10
  59. package/components/Switch.js +21 -18
  60. package/components/SwitchIcon.js +62 -33
  61. package/components/Tab.js +78 -38
  62. package/components/TabContent.js +33 -12
  63. package/components/TabList.js +95 -34
  64. package/components/TabPanel.js +10 -1
  65. package/components/Table.js +151 -0
  66. package/components/TextArea.js +48 -16
  67. package/components/Title.js +8 -9
  68. package/components/Tooltip.js +51 -22
  69. package/components/TopAppBar.js +71 -78
  70. package/constants/shapes.js +36 -0
  71. package/constants/typography.js +127 -0
  72. package/core/Composition.js +391 -201
  73. package/core/CompositionAdapter.js +35 -18
  74. package/core/CustomElement.js +634 -254
  75. package/core/css.js +117 -12
  76. package/core/customTypes.js +161 -49
  77. package/core/dom.js +18 -11
  78. package/core/jsonMergePatch.js +27 -11
  79. package/core/observe.js +308 -256
  80. package/core/optimizations.js +9 -9
  81. package/core/template.js +14 -57
  82. package/dist/CustomElement.min.js +2 -0
  83. package/dist/CustomElement.min.js.map +7 -0
  84. package/dist/core/CustomElement.min.js +2 -0
  85. package/dist/core/CustomElement.min.js.map +7 -0
  86. package/dist/index.min.js +85 -115
  87. package/dist/index.min.js.map +4 -4
  88. package/dist/meta.json +1 -1
  89. package/dom/HTMLOptionsCollectionProxy.js +108 -0
  90. package/{theming/themableMixinLoader.js → loaders/palette.js} +4 -3
  91. package/loaders/theme.js +12 -0
  92. package/mixins/AriaReflectorMixin.js +64 -15
  93. package/mixins/AriaToolbarMixin.js +6 -0
  94. package/mixins/ControlMixin.js +79 -33
  95. package/mixins/DelegatesFocusMixin.js +62 -0
  96. package/mixins/DensityMixin.js +7 -3
  97. package/mixins/ElevationMixin.js +61 -0
  98. package/mixins/FlexableMixin.js +87 -39
  99. package/mixins/FormAssociatedMixin.js +76 -10
  100. package/mixins/HyperlinkMixin.js +76 -0
  101. package/mixins/InputMixin.js +227 -32
  102. package/mixins/KeyboardNavMixin.js +11 -7
  103. package/mixins/NavigationListenerMixin.js +33 -0
  104. package/mixins/PopupMixin.js +216 -219
  105. package/mixins/RTLObserverMixin.js +2 -0
  106. package/mixins/ResizeObserverMixin.js +18 -4
  107. package/mixins/RippleMixin.js +11 -7
  108. package/mixins/ScrollListenerMixin.js +14 -2
  109. package/mixins/SemiStickyMixin.js +51 -98
  110. package/mixins/ShapeMaskedMixin.js +125 -0
  111. package/mixins/ShapeMixin.js +30 -203
  112. package/mixins/StateMixin.js +74 -34
  113. package/mixins/TextFieldMixin.js +128 -145
  114. package/mixins/ThemableMixin.js +57 -56
  115. package/mixins/TooltipTriggerMixin.js +305 -359
  116. package/mixins/TouchTargetMixin.js +5 -2
  117. package/mixins/TypographyMixin.js +128 -0
  118. package/package.json +125 -81
  119. package/services/rtl.js +10 -0
  120. package/services/svgAlias.js +17 -0
  121. package/{theming/index.js → services/theme.js} +25 -176
  122. package/types/bin/mdw-css.d.ts +3 -0
  123. package/types/bin/mdw-css.d.ts.map +1 -0
  124. package/types/components/Badge.d.ts +39 -0
  125. package/types/components/Badge.d.ts.map +1 -0
  126. package/types/components/Body.d.ts +29 -0
  127. package/types/components/Body.d.ts.map +1 -0
  128. package/types/components/BottomAppBar.d.ts +72 -0
  129. package/types/components/BottomAppBar.d.ts.map +1 -0
  130. package/types/components/BottomSheet.d.ts +135 -0
  131. package/types/components/BottomSheet.d.ts.map +1 -0
  132. package/types/components/Box.d.ts +16 -0
  133. package/types/components/Box.d.ts.map +1 -0
  134. package/types/components/Button.d.ts +245 -0
  135. package/types/components/Button.d.ts.map +1 -0
  136. package/types/components/Card.d.ts +147 -0
  137. package/types/components/Card.d.ts.map +1 -0
  138. package/types/components/Checkbox.d.ts +207 -0
  139. package/types/components/Checkbox.d.ts.map +1 -0
  140. package/types/components/CheckboxIcon.d.ts +44 -0
  141. package/types/components/CheckboxIcon.d.ts.map +1 -0
  142. package/types/components/Chip.d.ts +248 -0
  143. package/types/components/Chip.d.ts.map +1 -0
  144. package/types/components/Dialog.d.ts +103 -0
  145. package/types/components/Dialog.d.ts.map +1 -0
  146. package/types/components/DialogActions.d.ts +4 -0
  147. package/types/components/DialogActions.d.ts.map +1 -0
  148. package/types/components/Display.d.ts +46 -0
  149. package/types/components/Display.d.ts.map +1 -0
  150. package/types/components/Divider.d.ts +10 -0
  151. package/types/components/Divider.d.ts.map +1 -0
  152. package/types/components/Fab.d.ts +273 -0
  153. package/types/components/Fab.d.ts.map +1 -0
  154. package/types/components/FabContainer.d.ts +10 -0
  155. package/types/components/FabContainer.d.ts.map +1 -0
  156. package/types/components/FilterChip.d.ts +256 -0
  157. package/types/components/FilterChip.d.ts.map +1 -0
  158. package/types/components/Grid.d.ts +38 -0
  159. package/types/components/Grid.d.ts.map +1 -0
  160. package/types/components/Headline.d.ts +46 -0
  161. package/types/components/Headline.d.ts.map +1 -0
  162. package/types/components/Icon.d.ts +55 -0
  163. package/types/components/Icon.d.ts.map +1 -0
  164. package/types/components/IconButton.d.ts +284 -0
  165. package/types/components/IconButton.d.ts.map +1 -0
  166. package/types/components/Input.d.ts +2528 -0
  167. package/types/components/Input.d.ts.map +1 -0
  168. package/types/components/InputChip.d.ts +85 -0
  169. package/types/components/InputChip.d.ts.map +1 -0
  170. package/types/components/Label.d.ts +29 -0
  171. package/types/components/Label.d.ts.map +1 -0
  172. package/types/components/List.d.ts +35 -0
  173. package/types/components/List.d.ts.map +1 -0
  174. package/types/components/ListItem.d.ts +124 -0
  175. package/types/components/ListItem.d.ts.map +1 -0
  176. package/types/components/ListOption.d.ts +158 -0
  177. package/types/components/ListOption.d.ts.map +1 -0
  178. package/types/components/Listbox.d.ts +763 -0
  179. package/types/components/Listbox.d.ts.map +1 -0
  180. package/types/components/Menu.d.ts +130 -0
  181. package/types/components/Menu.d.ts.map +1 -0
  182. package/types/components/MenuItem.d.ts +232 -0
  183. package/types/components/MenuItem.d.ts.map +1 -0
  184. package/types/components/NavBar.d.ts +20 -0
  185. package/types/components/NavBar.d.ts.map +1 -0
  186. package/types/components/NavBarItem.d.ts +97 -0
  187. package/types/components/NavBarItem.d.ts.map +1 -0
  188. package/types/components/NavDrawer.d.ts +107 -0
  189. package/types/components/NavDrawer.d.ts.map +1 -0
  190. package/types/components/NavDrawerItem.d.ts +97 -0
  191. package/types/components/NavDrawerItem.d.ts.map +1 -0
  192. package/types/components/NavItem.d.ts +99 -0
  193. package/types/components/NavItem.d.ts.map +1 -0
  194. package/types/components/NavRail.d.ts +108 -0
  195. package/types/components/NavRail.d.ts.map +1 -0
  196. package/types/components/NavRailItem.d.ts +97 -0
  197. package/types/components/NavRailItem.d.ts.map +1 -0
  198. package/types/components/Page.d.ts +25 -0
  199. package/types/components/Page.d.ts.map +1 -0
  200. package/types/components/Pane.d.ts +44 -0
  201. package/types/components/Pane.d.ts.map +1 -0
  202. package/types/components/Popup.d.ts +78 -0
  203. package/types/components/Popup.d.ts.map +1 -0
  204. package/types/components/Progress.d.ts +21 -0
  205. package/types/components/Progress.d.ts.map +1 -0
  206. package/types/components/Radio.d.ts +201 -0
  207. package/types/components/Radio.d.ts.map +1 -0
  208. package/types/components/RadioIcon.d.ts +46 -0
  209. package/types/components/RadioIcon.d.ts.map +1 -0
  210. package/types/components/Ripple.d.ts +35 -0
  211. package/types/components/Ripple.d.ts.map +1 -0
  212. package/types/components/Root.d.ts +68 -0
  213. package/types/components/Root.d.ts.map +1 -0
  214. package/types/components/Scrim.d.ts +6 -0
  215. package/types/components/Scrim.d.ts.map +1 -0
  216. package/types/components/Search.d.ts +516 -0
  217. package/types/components/Search.d.ts.map +1 -0
  218. package/types/components/SegmentedButton.d.ts +252 -0
  219. package/types/components/SegmentedButton.d.ts.map +1 -0
  220. package/types/components/SegmentedButtonGroup.d.ts +43 -0
  221. package/types/components/SegmentedButtonGroup.d.ts.map +1 -0
  222. package/types/components/Select.d.ts +158 -0
  223. package/types/components/Select.d.ts.map +1 -0
  224. package/types/components/Shape.d.ts +10 -0
  225. package/types/components/Shape.d.ts.map +1 -0
  226. package/types/components/SideSheet.d.ts +111 -0
  227. package/types/components/SideSheet.d.ts.map +1 -0
  228. package/types/components/Slider.d.ts +203 -0
  229. package/types/components/Slider.d.ts.map +1 -0
  230. package/types/components/Snackbar.d.ts +73 -0
  231. package/types/components/Snackbar.d.ts.map +1 -0
  232. package/types/components/SnackbarContainer.d.ts +6 -0
  233. package/types/components/SnackbarContainer.d.ts.map +1 -0
  234. package/types/components/Surface.d.ts +45 -0
  235. package/types/components/Surface.d.ts.map +1 -0
  236. package/types/components/Switch.d.ts +187 -0
  237. package/types/components/Switch.d.ts.map +1 -0
  238. package/types/components/SwitchIcon.d.ts +61 -0
  239. package/types/components/SwitchIcon.d.ts.map +1 -0
  240. package/types/components/Tab.d.ts +139 -0
  241. package/types/components/Tab.d.ts.map +1 -0
  242. package/types/components/TabContent.d.ts +124 -0
  243. package/types/components/TabContent.d.ts.map +1 -0
  244. package/types/components/TabList.d.ts +1111 -0
  245. package/types/components/TabList.d.ts.map +1 -0
  246. package/types/components/TabPanel.d.ts +28 -0
  247. package/types/components/TabPanel.d.ts.map +1 -0
  248. package/types/components/Table.d.ts +25 -0
  249. package/types/components/Table.d.ts.map +1 -0
  250. package/types/components/TextArea.d.ts +201 -0
  251. package/types/components/TextArea.d.ts.map +1 -0
  252. package/types/components/Title.d.ts +46 -0
  253. package/types/components/Title.d.ts.map +1 -0
  254. package/types/components/Tooltip.d.ts +49 -0
  255. package/types/components/Tooltip.d.ts.map +1 -0
  256. package/types/components/TopAppBar.d.ts +129 -0
  257. package/types/components/TopAppBar.d.ts.map +1 -0
  258. package/types/constants/colorKeywords.d.ts +2 -0
  259. package/types/constants/colorKeywords.d.ts.map +1 -0
  260. package/types/constants/shapes.d.ts +38 -0
  261. package/types/constants/shapes.d.ts.map +1 -0
  262. package/types/constants/typography.d.ts +212 -0
  263. package/types/constants/typography.d.ts.map +1 -0
  264. package/types/core/Composition.d.ts +260 -0
  265. package/types/core/Composition.d.ts.map +1 -0
  266. package/types/core/CompositionAdapter.d.ts +114 -0
  267. package/types/core/CompositionAdapter.d.ts.map +1 -0
  268. package/types/core/CustomElement.d.ts +304 -0
  269. package/types/core/CustomElement.d.ts.map +1 -0
  270. package/types/core/css.d.ts +44 -0
  271. package/types/core/css.d.ts.map +1 -0
  272. package/types/core/customTypes.d.ts +22 -0
  273. package/types/core/customTypes.d.ts.map +1 -0
  274. package/types/core/dom.d.ts +32 -0
  275. package/types/core/dom.d.ts.map +1 -0
  276. package/types/core/jsonMergePatch.d.ts +31 -0
  277. package/types/core/jsonMergePatch.d.ts.map +1 -0
  278. package/types/core/observe.d.ts +114 -0
  279. package/types/core/observe.d.ts.map +1 -0
  280. package/types/core/optimizations.d.ts +7 -0
  281. package/types/core/optimizations.d.ts.map +1 -0
  282. package/types/core/template.d.ts +47 -0
  283. package/types/core/template.d.ts.map +1 -0
  284. package/types/core/uid.d.ts +6 -0
  285. package/types/core/uid.d.ts.map +1 -0
  286. package/types/dom/HTMLOptionsCollectionProxy.d.ts +18 -0
  287. package/types/dom/HTMLOptionsCollectionProxy.d.ts.map +1 -0
  288. package/types/index.d.ts +88 -0
  289. package/types/index.d.ts.map +1 -0
  290. package/types/loaders/palette.d.ts +2 -0
  291. package/types/loaders/palette.d.ts.map +1 -0
  292. package/types/loaders/theme.d.ts +2 -0
  293. package/types/loaders/theme.d.ts.map +1 -0
  294. package/types/mixins/AriaReflectorMixin.d.ts +31 -0
  295. package/types/mixins/AriaReflectorMixin.d.ts.map +1 -0
  296. package/types/mixins/AriaToolbarMixin.d.ts +34 -0
  297. package/types/mixins/AriaToolbarMixin.d.ts.map +1 -0
  298. package/types/mixins/ControlMixin.d.ts +124 -0
  299. package/types/mixins/ControlMixin.d.ts.map +1 -0
  300. package/types/mixins/DelegatesFocusMixin.d.ts +13 -0
  301. package/types/mixins/DelegatesFocusMixin.d.ts.map +1 -0
  302. package/types/mixins/DensityMixin.d.ts +8 -0
  303. package/types/mixins/DensityMixin.d.ts.map +1 -0
  304. package/types/mixins/ElevationMixin.d.ts +32 -0
  305. package/types/mixins/ElevationMixin.d.ts.map +1 -0
  306. package/types/mixins/FlexableMixin.d.ts +14 -0
  307. package/types/mixins/FlexableMixin.d.ts.map +1 -0
  308. package/types/mixins/FormAssociatedMixin.d.ts +123 -0
  309. package/types/mixins/FormAssociatedMixin.d.ts.map +1 -0
  310. package/types/mixins/HyperlinkMixin.d.ts +25 -0
  311. package/types/mixins/HyperlinkMixin.d.ts.map +1 -0
  312. package/types/mixins/InputMixin.d.ts +173 -0
  313. package/types/mixins/InputMixin.d.ts.map +1 -0
  314. package/types/mixins/KeyboardNavMixin.d.ts +46 -0
  315. package/types/mixins/KeyboardNavMixin.d.ts.map +1 -0
  316. package/types/mixins/NavigationListenerMixin.d.ts +8 -0
  317. package/types/mixins/NavigationListenerMixin.d.ts.map +1 -0
  318. package/types/mixins/PopupMixin.d.ts +98 -0
  319. package/types/mixins/PopupMixin.d.ts.map +1 -0
  320. package/types/mixins/RTLObserverMixin.d.ts +8 -0
  321. package/types/mixins/RTLObserverMixin.d.ts.map +1 -0
  322. package/types/mixins/ResizeObserverMixin.d.ts +13 -0
  323. package/types/mixins/ResizeObserverMixin.d.ts.map +1 -0
  324. package/types/mixins/RippleMixin.d.ts +94 -0
  325. package/types/mixins/RippleMixin.d.ts.map +1 -0
  326. package/types/mixins/ScrollListenerMixin.d.ts +46 -0
  327. package/types/mixins/ScrollListenerMixin.d.ts.map +1 -0
  328. package/types/mixins/SemiStickyMixin.d.ts +50 -0
  329. package/types/mixins/SemiStickyMixin.d.ts.map +1 -0
  330. package/types/mixins/ShapeMaskedMixin.d.ts +12 -0
  331. package/types/mixins/ShapeMaskedMixin.d.ts.map +1 -0
  332. package/types/mixins/ShapeMixin.d.ts +39 -0
  333. package/types/mixins/ShapeMixin.d.ts.map +1 -0
  334. package/types/mixins/StateMixin.d.ts +29 -0
  335. package/types/mixins/StateMixin.d.ts.map +1 -0
  336. package/types/mixins/TextFieldMixin.d.ts +153 -0
  337. package/types/mixins/TextFieldMixin.d.ts.map +1 -0
  338. package/types/mixins/ThemableMixin.d.ts +10 -0
  339. package/types/mixins/ThemableMixin.d.ts.map +1 -0
  340. package/types/mixins/TooltipTriggerMixin.d.ts +114 -0
  341. package/types/mixins/TooltipTriggerMixin.d.ts.map +1 -0
  342. package/types/mixins/TouchTargetMixin.d.ts +6 -0
  343. package/types/mixins/TouchTargetMixin.d.ts.map +1 -0
  344. package/types/mixins/TypographyMixin.d.ts +20 -0
  345. package/types/mixins/TypographyMixin.d.ts.map +1 -0
  346. package/types/services/rtl.d.ts +3 -0
  347. package/types/services/rtl.d.ts.map +1 -0
  348. package/types/services/svgAlias.d.ts +13 -0
  349. package/types/services/svgAlias.d.ts.map +1 -0
  350. package/types/services/theme.d.ts +45 -0
  351. package/types/services/theme.d.ts.map +1 -0
  352. package/types/utils/cli.d.ts +3 -0
  353. package/types/utils/cli.d.ts.map +1 -0
  354. package/types/utils/function.d.ts +3 -0
  355. package/types/utils/function.d.ts.map +1 -0
  356. package/types/utils/jsx-runtime.d.ts +20 -0
  357. package/types/utils/jsx-runtime.d.ts.map +1 -0
  358. package/types/utils/material-color/blend.d.ts +34 -0
  359. package/types/utils/material-color/blend.d.ts.map +1 -0
  360. package/types/utils/material-color/hct/Cam16.d.ts +142 -0
  361. package/types/utils/material-color/hct/Cam16.d.ts.map +1 -0
  362. package/types/utils/material-color/hct/Hct.d.ts +93 -0
  363. package/types/utils/material-color/hct/Hct.d.ts.map +1 -0
  364. package/types/utils/material-color/hct/ViewingConditions.d.ts +69 -0
  365. package/types/utils/material-color/hct/ViewingConditions.d.ts.map +1 -0
  366. package/types/utils/material-color/hct/hctSolver.d.ts +30 -0
  367. package/types/utils/material-color/hct/hctSolver.d.ts.map +1 -0
  368. package/types/utils/material-color/helper.d.ts +8 -0
  369. package/types/utils/material-color/helper.d.ts.map +1 -0
  370. package/types/utils/material-color/palettes/CorePalette.d.ts +75 -0
  371. package/types/utils/material-color/palettes/CorePalette.d.ts.map +1 -0
  372. package/types/utils/material-color/palettes/TonalPalette.d.ts +38 -0
  373. package/types/utils/material-color/palettes/TonalPalette.d.ts.map +1 -0
  374. package/types/utils/material-color/scheme/Scheme.d.ts +264 -0
  375. package/types/utils/material-color/scheme/Scheme.d.ts.map +1 -0
  376. package/types/utils/material-color/utils/color.d.ts +172 -0
  377. package/types/utils/material-color/utils/color.d.ts.map +1 -0
  378. package/types/utils/material-color/utils/math.d.ts +94 -0
  379. package/types/utils/material-color/utils/math.d.ts.map +1 -0
  380. package/types/utils/pixelmatch.d.ts +22 -0
  381. package/types/utils/pixelmatch.d.ts.map +1 -0
  382. package/types/utils/popup.d.ts +106 -0
  383. package/types/utils/popup.d.ts.map +1 -0
  384. package/types/utils/searchParams.d.ts +3 -0
  385. package/types/utils/searchParams.d.ts.map +1 -0
  386. package/types/utils/svg.d.ts +7 -0
  387. package/types/utils/svg.d.ts.map +1 -0
  388. package/utils/jsx-runtime.js +9 -4
  389. package/utils/material-color/scheme/Scheme.js +1 -1
  390. package/utils/pixelmatch.js +363 -0
  391. package/utils/popup.js +86 -10
  392. package/utils/searchParams.js +22 -0
  393. package/components/Button.md +0 -61
  394. package/components/ExtendedFab.js +0 -32
  395. package/components/Layout.js +0 -504
  396. package/components/Nav.js +0 -38
  397. package/core/DomAdapter.js +0 -586
  398. package/core/ICustomElement.d.ts +0 -291
  399. package/core/ICustomElement.js +0 -1
  400. package/core/test.js +0 -126
  401. package/core/typings.d.ts +0 -142
  402. package/core/typings.js +0 -1
  403. package/mixins/SurfaceMixin.js +0 -127
  404. package/theming/loader.js +0 -22
  405. /package/{utils/color_keywords.js → constants/colorKeywords.js} +0 -0
@@ -1,13 +1,21 @@
1
1
  import Button from './Button.js';
2
2
 
3
+ /**
4
+ * Chips help people enter information, make selections, filter content, or trigger actions.
5
+ * @see https://m3.material.io/components/chips/specs
6
+ */
3
7
  export default Button
4
8
  .extend()
5
9
  .observe({
10
+ /** When true, renders the chip as a suggestion variant. */
6
11
  suggestion: 'boolean',
7
12
  })
13
+ .expressions({
14
+ iconVariation({ elevated }) {
15
+ return elevated ? 'filled' : null;
16
+ },
17
+ })
8
18
  .css`
9
- /* https://m3.material.io/components/chips/specs */
10
-
11
19
  :host {
12
20
  --mdw-shape__size: 8px;
13
21
  --mdw-ink: var(--mdw-color__on-surface);
@@ -43,16 +51,13 @@ export default Button
43
51
  }
44
52
 
45
53
  `
46
- .on({
47
- composed({ inline }) {
48
- const { slot, outline, icon } = this.refs;
49
- slot.setAttribute('disabled', '{disabledState}');
50
- slot.removeAttribute('ink');
51
- slot.removeAttribute('color');
52
- outline.setAttribute('mdw-if', '{!elevated}');
53
- outline.setAttribute('ink', '{ink}');
54
- outline.setAttribute('color', '{color}');
55
- icon.setAttribute('ink', inline(({ ink, iconInk }) => iconInk ?? ink ?? 'primary'));
56
- },
54
+ .recompose(({ inline, refs: { slot, outline, icon } }) => {
55
+ slot.setAttribute('disabled', '{disabledState}');
56
+ slot.removeAttribute('ink');
57
+ slot.removeAttribute('color');
58
+ outline.setAttribute('mdw-if', '{!elevated}');
59
+ outline.setAttribute('ink', '{ink}');
60
+ outline.setAttribute('color', '{color}');
61
+ icon.setAttribute('ink', inline(({ ink, iconInk }) => iconInk ?? ink ?? 'primary'));
57
62
  })
58
63
  .autoRegister('mdw-chip');
@@ -7,7 +7,6 @@ import CustomElement from '../core/CustomElement.js';
7
7
  import { attemptFocus } from '../core/dom.js';
8
8
  import PopupMixin from '../mixins/PopupMixin.js';
9
9
  import ShapeMixin from '../mixins/ShapeMixin.js';
10
- import SurfaceMixin from '../mixins/SurfaceMixin.js';
11
10
  import ThemableMixin from '../mixins/ThemableMixin.js';
12
11
 
13
12
  /**
@@ -18,12 +17,12 @@ import ThemableMixin from '../mixins/ThemableMixin.js';
18
17
  function listTabbables(root) {
19
18
  const treeWalker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT);
20
19
  const focusables = [];
21
- /** @type {Element} */
20
+ /** @type {HTMLElement} */
22
21
  let node;
23
- while ((node = treeWalker.nextNode())) {
22
+ while ((node = /** @type {HTMLElement} */ (treeWalker.nextNode()))) {
24
23
  if (node.tagName === 'SLOT') {
25
24
  for (const el of (/** @type {HTMLSlotElement} */ (node)).assignedElements()) {
26
- if (el.tabIndex >= 0 && !el.matches(':disabled')) {
25
+ if ((/** @type {HTMLElement} */ (el)).tabIndex >= 0 && !el.matches(':disabled')) {
27
26
  focusables.push(el);
28
27
  }
29
28
  focusables.push(...listTabbables(el));
@@ -49,7 +48,7 @@ function focusOnTree(root, autofocus, forward = true) {
49
48
  const focusables = [];
50
49
  /** @type {Element} */
51
50
  let node;
52
- while ((node = treeWalker.nextNode())) {
51
+ while ((node = /** @type {Element} */ (treeWalker.nextNode()))) {
53
52
  if (autofocus && node.hasAttribute('autofocus')) {
54
53
  if (attemptFocus(node)) return true;
55
54
  continue;
@@ -60,20 +59,26 @@ function focusOnTree(root, autofocus, forward = true) {
60
59
  if (attemptFocus(el)) return true;
61
60
  continue;
62
61
  }
62
+ // @ts-ignore Valid as long tabIndex isn't negative
63
63
  if (el.tabIndex >= 0) {
64
64
  // Can focus, add to later in case we find an autofocusable
65
65
  if (autofocus || !forward) {
66
66
  focusables.push(node);
67
- } else if (attemptFocus(node)) return true;
67
+ } else if (attemptFocus(node)) {
68
+ return true;
69
+ }
68
70
  }
69
71
  if (focusOnTree(el, autofocus, forward)) return true;
70
72
  }
71
73
  // Step through
72
74
  }
75
+ // @ts-ignore Valid as long tabIndex isn't negative
73
76
  if (node.tabIndex >= 0) {
74
77
  if (autofocus || !forward) {
75
78
  focusables.push(node);
76
- } else if (attemptFocus(node)) return true;
79
+ } else if (attemptFocus(node)) {
80
+ return true;
81
+ }
77
82
  }
78
83
  }
79
84
  for (const el of forward ? focusables : focusables.reverse()) {
@@ -82,36 +87,49 @@ function focusOnTree(root, autofocus, forward = true) {
82
87
  return false;
83
88
  }
84
89
 
90
+ /**
91
+ * Dialogs provide important prompts in a user flow.
92
+ * @see https://m3.material.io/components/dialogs/specs
93
+ */
85
94
  export default CustomElement
86
95
  .extend()
87
96
  .mixin(ThemableMixin)
88
- .mixin(SurfaceMixin)
89
97
  .mixin(ShapeMixin)
90
98
  .mixin(PopupMixin)
91
99
  .define({
100
+ /** Return the `returnValue` from the internal dialog element. */
92
101
  returnValue() {
93
102
  return /** @type {HTMLDialogElement} */ (this.refs.dialog).returnValue;
94
103
  },
95
104
  })
96
105
  .observe({
106
+ /** Divider style for the dialog: 'full', 'inset', or empty. */
97
107
  dividers: {
98
108
  /** @type {'full'|''|'inset'} */
99
109
  value: null,
100
110
  },
111
+ /** Headline text displayed in the dialog header. */
101
112
  headline: 'string',
113
+ /** Optional icon name shown in the dialog header. */
102
114
  icon: 'string',
115
+ /** Default action (value) for the dialog when submitting. */
103
116
  default: { value: 'confirm' },
117
+ /** Label for the cancel action button. */
104
118
  cancel: { value: 'Cancel' },
119
+ /** Label for the confirm action button. */
105
120
  confirm: { value: 'Confirm' },
106
121
  })
122
+ .define({
123
+ /** Dialogs are not anchored to source */
124
+ _anchor: {
125
+ get() { return null; },
126
+ set() { /* noop */ },
127
+ },
128
+ })
107
129
  .set({
130
+ flow: 'center',
108
131
  _useScrim: true,
109
132
  })
110
- .overrides({
111
- updatePopupPosition() {
112
- // noop (keep centered);
113
- },
114
- })
115
133
  .methods({
116
134
  /**
117
135
  * @param {Event & {currentTarget: HTMLSlotElement}} event
@@ -123,30 +141,7 @@ export default CustomElement
123
141
  || (node.nodeType === node.TEXT_NODE && node.nodeValue.trim().length));
124
142
  currentTarget.toggleAttribute('slotted', hasContent);
125
143
  },
126
-
127
- /**
128
- * @param {SubmitEvent & {currentTarget: HTMLFormElement}} event
129
- * @return {void}
130
- */
131
- onFormSubmit(event) {
132
- if (event.currentTarget.assignedSlot) {
133
- // Custom form.
134
- // @ts-ignore Skip cast
135
- const returnValue = event.submitter?.value;
136
- this.close(returnValue);
137
- event.preventDefault();
138
- }
139
- },
140
-
141
- /**
142
- * @param {Event & {currentTarget: HTMLFormElement}} event
143
- * @return {void}
144
- */
145
- onFormSlotChange({ currentTarget }) {
146
- /** @type {HTMLFormElement} */
147
- const [form] = currentTarget.assignedNodes();
148
- form?.addEventListener('submit', (e) => this.onFormSubmit(e));
149
- },
144
+ /** Focus the first autofocusable or focusable element inside the dialog. */
150
145
  focus() {
151
146
  focusOnTree(this.shadowRoot, true, true);
152
147
  },
@@ -156,60 +151,41 @@ export default CustomElement
156
151
  confirmAutoFocus({ default: d }) { return d === 'confirm'; },
157
152
  })
158
153
  .html`
159
- <div id=prepend>
160
- <mdw-icon mdw-if={icon} id=icon class=content ink=secondary aria-hidden=true>{icon}</mdw-icon>
154
+ <div id=dialog-inner>
155
+ <mdw-icon mdw-if={icon} id=icon class=content ink=secondary aria-hidden=true icon={icon}></mdw-icon>
161
156
  <slot id=headline name=headline on-slotchange={onSlotChange} role=header>{headline}</slot>
162
157
  <slot id=fixed name=fixed class=content on-slotchange={onSlotChange}></slot>
163
158
  <mdw-divider id=divider-top size={dividers}></mdw-divider>
164
- </div>
165
- <div id=append>
159
+ <slot id=content name=content></slot>
166
160
  <mdw-divider id=divider-bottom size={dividers}></mdw-divider>
167
- <slot name=form id=form-slot on-slotchange={onFormSlotChange}>
168
- <form id=form method=dialog role=none on-submit={onFormSubmit}>
169
- <mdw-dialog-actions>
170
- <mdw-button id=cancel type=submit value=cancel
171
- autofocus={cancelAutoFocus}>{cancel}</mdw-button>
172
- <mdw-button id=confirm type=submit value=confirm
173
- autofocus={confirmAutoFocus}>{confirm}</mdw-button>
174
- </mdw-dialog-actions>
161
+ <slot id=actions name=actions>
162
+ <form method=dialog role=none>
163
+ <mdw-button id=cancel type=submit value=cancel autofocus={cancelAutoFocus} formnovalidate>{cancel}</mdw-button>
164
+ <mdw-button id=confirm type=submit value=confirm autofocus={confirmAutoFocus}>{confirm}</mdw-button>
175
165
  </form>
176
166
  </slot>
177
167
  </div>
178
168
  `
179
- .on({
180
- composed() {
181
- const { prepend, append, surface, shape, dialog, slot } = this.refs;
182
- dialog.setAttribute('aria-labelledby', 'headline');
183
- dialog.setAttribute('aria-describedby', 'slot');
184
- surface.append(shape);
185
-
186
- slot.classList.add('content');
187
-
188
- dialog.prepend(surface, ...prepend.childNodes);
189
- dialog.append(...append.childNodes);
190
- prepend.remove();
191
- append.remove();
192
- },
169
+ .recompose(({ refs: { dialog, dialogInner, content, slot } }) => {
170
+ dialog.setAttribute('aria-labelledby', 'headline');
171
+ dialog.setAttribute('aria-describedby', 'slot');
172
+
173
+ // Use content slot as content
174
+ // Use default slot as padded content
175
+ slot.classList.add('content');
176
+ content.append(slot);
177
+
178
+ dialog.prepend(...dialogInner.childNodes);
179
+ dialogInner.remove();
193
180
  })
194
181
  .css`
195
182
  /* https://m3.material.io/components/dialogs/specs */
196
183
 
197
184
  :host {
198
- --mdw-shape__size: 28px;
199
-
200
- --mdw-surface__shadow__resting: var(--mdw-surface__shadow__3);
201
- --mdw-surface__shadow__raised: var(--mdw-surface__shadow__resting);
202
- /* padding-inline: 12px; */
203
-
204
185
  --mdw-bg: var(--mdw-color__surface-container-high);
205
186
  --mdw-ink: var(--mdw-color__on-surface);
206
187
  position: fixed;
207
188
 
208
- /* stylelint-disable-next-line liberty/use-logical-spec */
209
- top: 50%;
210
- /* stylelint-disable-next-line liberty/use-logical-spec */
211
- left: 50%;
212
-
213
189
  display: flex;
214
190
  align-items: flex-start;
215
191
  flex-direction: column;
@@ -219,33 +195,18 @@ export default CustomElement
219
195
  overscroll-behavior: none;
220
196
  overscroll-behavior: contain;
221
197
 
222
- box-sizing: border-box;
223
198
  max-block-size: calc(100% - 40px);
224
199
  inline-size: max-content;
225
200
  min-inline-size: 280px;
226
201
  max-inline-size: min(560px, calc(100% - 40px));
227
-
228
202
  padding-block-start: 8px;
229
203
 
230
- pointer-events: none;
231
-
232
- opacity: 0;
233
-
234
- transform: translateX(-50%) translateY(-50%) scale(0);
235
- /* visiblity:hidden still registers events, hide from pointer with scale(0) */
236
- transform-origin: top center;
237
- visibility: hidden;
204
+ transform: translateY(-40px) scaleY(0);
205
+ transform-origin: top center !important;
238
206
 
207
+ background-color: rgb(var(--mdw-bg));
239
208
  color: rgb(var(--mdw-ink));
240
209
 
241
- font: var(--mdw-type__font);
242
- letter-spacing: var(--mdw-type__letter-spacing);
243
-
244
- transition-delay: 0s, 200ms, 200ms;
245
- transition-duration: 200ms, 0s, 0s;
246
- transition-property: opacity, transform, visibility;
247
- transition-timing-function: ease-out;
248
- will-change: display, transform, opacity;
249
210
  }
250
211
 
251
212
  #dialog:modal {
@@ -256,10 +217,6 @@ export default CustomElement
256
217
  align-items: center;
257
218
  }
258
219
 
259
- #shape {
260
- background-color: rgb(var(--mdw-bg));
261
- }
262
-
263
220
  #icon {
264
221
  padding-block-start: 16px;
265
222
 
@@ -335,14 +292,18 @@ export default CustomElement
335
292
  display: contents;
336
293
  }
337
294
 
338
- #form-slot::slotted(form) {
339
- display: contents;
295
+ #actions {
296
+ display: flex;
297
+ align-self: flex-end;
298
+
299
+ margin-block: 24px;
300
+ padding-inline: 24px;
340
301
  }
341
302
  `
342
303
  .events({
343
304
  keydown(event) {
344
305
  if (event.key === 'Tab') {
345
- if (!this._isNativeModal) {
306
+ if (!this.native) {
346
307
  // Tab trap
347
308
  event.preventDefault();
348
309
  const tabbables = listTabbables(this.shadowRoot);
@@ -401,6 +362,15 @@ export default CustomElement
401
362
  this.close(undefined, false);
402
363
  });
403
364
  },
365
+ submit(event) {
366
+ if (event.defaultPrevented) return;
367
+ const form = event.target;
368
+ if (form instanceof HTMLFormElement === false) return;
369
+ if (form.method !== 'dialog') return;
370
+ const submitter = /** @type {HTMLInputElement|HTMLButtonElement} */ (event.submitter);
371
+ const returnValue = submitter?.value;
372
+ this.close(returnValue);
373
+ },
404
374
  })
405
375
  .childEvents({
406
376
  dialog: {
@@ -418,7 +388,7 @@ export default CustomElement
418
388
  '~click'(event) {
419
389
  // Track if click on backdrop
420
390
  if (event.target !== event.currentTarget) return;
421
- if (!this._isNativeModal) return;
391
+ if (!this.native) return;
422
392
  if (event.offsetX >= 0 && event.offsetX < event.currentTarget.offsetWidth
423
393
  && event.offsetY >= 0 && event.offsetY < event.currentTarget.offsetHeight) return;
424
394
  const cancelEvent = new Event('cancel', { cancelable: true });
@@ -1,5 +1,9 @@
1
1
  import CustomElement from '../core/CustomElement.js';
2
2
 
3
+ /**
4
+ * Dialog action regions contain primary and secondary actions for dialogs.
5
+ * @see https://m3.material.io/components/dialogs/specs
6
+ */
3
7
  export default CustomElement
4
8
  .extend()
5
9
  .css`
@@ -0,0 +1,64 @@
1
+ import AriaReflectorMixin from '../mixins/AriaReflectorMixin.js';
2
+ import TypographyMixin from '../mixins/TypographyMixin.js';
3
+
4
+ import Box from './Box.js';
5
+
6
+ /**
7
+ * Material Design Type scale: Display
8
+ * @see https://m3.material.io/styles/typography/type-scale-tokens
9
+ */
10
+ export default Box
11
+ .extend()
12
+ .mixin(AriaReflectorMixin)
13
+ .mixin(TypographyMixin)
14
+ .set({
15
+ /** ARIA role applied to the host (default: 'heading'). */
16
+ _ariaRole: 'heading',
17
+ /** Base aria level used when computing the heading level. */
18
+ _baseAriaLevel: 1,
19
+ })
20
+ .observe({
21
+ /** Explicit aria-level; if set, overrides the computed level. */
22
+ ariaLevel: 'string',
23
+ /** Display size controlling typographic scale: 'large'|'medium'|'small'. */
24
+ size: {
25
+ type: 'string',
26
+ /** @type {'large'|'medium'|'small'} */
27
+ empty: 'large',
28
+ },
29
+ })
30
+ .observe({
31
+ /** Computed aria-level (string) derived from `ariaLevel` and `size`. */
32
+ _computedAriaLevel({ ariaLevel, size, _baseAriaLevel }) {
33
+ if (ariaLevel) return ariaLevel;
34
+ if (size === 'medium') return `${_baseAriaLevel + 1}`;
35
+ if (size === 'small') return `${_baseAriaLevel + 2}`;
36
+ return `${_baseAriaLevel}`;
37
+ },
38
+ })
39
+
40
+ .on({
41
+ _computedAriaLevelChanged(oldValue, newValue) {
42
+ this.updateAriaProperty('ariaLevel', newValue);
43
+ },
44
+ constructed() {
45
+ this.updateAriaProperty('ariaLevel', this._computedAriaLevel);
46
+ },
47
+ })
48
+ .css`
49
+ :host {
50
+ font: var(--mdw-typescale__display-large__font);
51
+ letter-spacing: var(--mdw-typescale__display-large__letter-spacing);
52
+ }
53
+
54
+ :host([size="medium"]) {
55
+ font: var(--mdw-typescale__display-medium__font);
56
+ letter-spacing: var(--mdw-typescale__display-medium__letter-spacing);
57
+ }
58
+
59
+ :host([size="small"]) {
60
+ font: var(--mdw-typescale__display-small__font);
61
+ letter-spacing: var(--mdw-typescale__display-small__letter-spacing);
62
+ }
63
+ `
64
+ .autoRegister('mdw-display');
@@ -3,10 +3,15 @@
3
3
  import CustomElement from '../core/CustomElement.js';
4
4
  import ThemableMixin from '../mixins/ThemableMixin.js';
5
5
 
6
+ /**
7
+ * Dividers are thin lines that group content in lists or other containers
8
+ * @see https://m3.material.io/components/divider/specs
9
+ */
6
10
  export default CustomElement
7
11
  .extend()
8
12
  .mixin(ThemableMixin)
9
13
  .observe({
14
+ /** When true, render the divider vertically instead of horizontally. */
10
15
  vertical: 'boolean',
11
16
  })
12
17
  .css`
package/components/Fab.js CHANGED
@@ -1,29 +1,94 @@
1
1
  import TooltipTriggerMixin from '../mixins/TooltipTriggerMixin.js';
2
2
 
3
- import ExtendedFab from './ExtendedFab.js';
3
+ import Button from './Button.js';
4
4
 
5
- export default ExtendedFab
5
+ /**
6
+ * Floating action buttons (FABs) help people take primary actions.
7
+ * @see https://m3.material.io/components/floating-action-button/specs
8
+ * @see https://m3.material.io/components/extended-fab/specs
9
+ */
10
+ export default Button
6
11
  .extend()
7
12
  .mixin(TooltipTriggerMixin)
8
13
  .observe({
14
+ /** When true, render the lowered FAB variant (reduced elevation). */
15
+ lowered: 'boolean',
16
+ /** When true, the FAB is extended and shows a text label. */
17
+ extended: 'boolean',
18
+ /** FAB size: `null` (default), 'small' or 'large'. */
9
19
  fabSize: {
10
20
  /** @type {null|'small'|'large'} */
11
21
  value: null,
12
22
  },
23
+ /** Filled variant; default is 'tonal' when omitted. */
24
+ filled: { empty: 'tonal' },
25
+ /** Whether the FAB uses elevated styling. */
26
+ elevated: { type: 'boolean', empty: true },
27
+ })
28
+ .observe({
29
+ /** Whether to show the tooltip automatically (true when not extended). */
30
+ autoTooltip({ extended }) {
31
+ return !extended;
32
+ },
33
+ })
34
+ .recompose(({ refs: { icon, slot } }) => {
35
+ icon.setAttribute('fab-size', '{fabSize}');
36
+ slot.setAttribute('extended', '{extended}');
37
+ slot.setAttribute('icon', '{icon}');
13
38
  })
14
39
  .css`
15
- /* https://m3.material.io/components/floating-action-button/specs */
40
+ /* https://m3.material.io/components/extended-fab/specs */
16
41
 
17
42
  :host {
43
+ --mdw-bg: var(--mdw-color__surface-container-high);
44
+ --mdw-ink: var(--mdw-color__primary);
45
+ --mdw-shape__size: 16px;
46
+ gap: 0;
47
+ grid-area: fab;
48
+
18
49
  min-inline-size: 24px;
50
+ padding: calc(16px + (var(--mdw-density) * 2px));
51
+
52
+ background-color: rgb(var(--mdw-bg));
53
+
54
+ box-shadow: var(--mdw-elevation__box-shadow__3);
55
+ color: rgb(var(--mdw-ink));
56
+
57
+ transition-duration: 200ms;
58
+
59
+ transition-property: box-shadow, gap, min-inline-size;
19
60
  }
20
61
 
21
- #icon {
22
- font-size: 24px;
62
+ :host(:where([extended])) {
63
+ gap: 8px;
64
+
65
+ min-inline-size: 48px;
23
66
  }
24
67
 
25
- #icon[fab-size="large"] {
26
- font-size: 36px;
68
+ #slot {
69
+ display: inline-flex;
70
+ align-items: center;
71
+
72
+ min-block-size: 24px;
73
+
74
+ visibility: hidden;
75
+
76
+ color: transparent;
77
+
78
+ font-size: 0;
79
+
80
+
81
+ transition: color 200ms, font-size 200ms, visibility 200ms;
82
+ }
83
+
84
+ #slot[extended] {
85
+ visibility: inherit;
86
+
87
+ color: inherit;
88
+
89
+ font-size: inherit;
90
+
91
+ transition: color 200ms, font-size 200ms, visibility 0ms;
27
92
  }
28
93
 
29
94
  :host([fab-size="small"]) {
@@ -35,15 +100,27 @@ export default ExtendedFab
35
100
  --mdw-shape__size: 28px;
36
101
  padding: calc(30px + (var(--mdw-density) * 2px));
37
102
  }
103
+
104
+
105
+ #icon {
106
+ font-size: 24px;
107
+ }
108
+
109
+ #icon[fab-size="large"] {
110
+ font-size: 36px;
111
+ }
112
+
113
+ :host(:where([lowered])) {
114
+ --mdw-bg: var(--mdw-color__surface-container-low);
115
+ box-shadow: var(--mdw-elevation__box-shadow__1);
116
+ }
117
+
118
+ :host(:where(:hover:not(:active))) {
119
+ box-shadow: var(--mdw-elevation__box-shadow__4);
120
+ }
121
+
122
+ :host(:where([lowered]:hover:not(:active))) {
123
+ box-shadow: var(--mdw-elevation__box-shadow__2);
124
+ }
38
125
  `
39
- .on({
40
- composed() {
41
- const { slot, tooltipSlot, control, shape, icon } = this.refs;
42
- slot.remove();
43
- tooltipSlot.removeAttribute('name');
44
- control.setAttribute('aria-labelledby', 'tooltip');
45
- shape.setAttribute('fab-size', '{fabSize}');
46
- icon.setAttribute('fab-size', '{fabSize}');
47
- },
48
- })
49
126
  .autoRegister('mdw-fab');
@@ -0,0 +1,57 @@
1
+ import CustomElement from '../core/CustomElement.js';
2
+ import { ELEMENT_STYLE_TYPE } from '../core/customTypes.js';
3
+ import DelegatesFocusMixin from '../mixins/DelegatesFocusMixin.js';
4
+
5
+ /**
6
+ * Container for Floating Action Buttons (FAB) used to position FABs.
7
+ * @see https://m3.material.io/components/floating-action-button/specs
8
+ */
9
+ export default CustomElement
10
+ .extend()
11
+ .mixin(DelegatesFocusMixin)
12
+ .observe({
13
+ /** Hide the FAB container at this min-width (pixels). */
14
+ hideBreakpoint: { value: 728 },
15
+ })
16
+ .observe({
17
+ /**
18
+ * Computed element styles. Generates a media query that hides the
19
+ * container when `hideBreakpoint` is set.
20
+ */
21
+ _styles: {
22
+ ...ELEMENT_STYLE_TYPE,
23
+ get({ hideBreakpoint }) {
24
+ if (hideBreakpoint) {
25
+ return `@media(min-width:${hideBreakpoint}px){:host{display:none}}`;
26
+ }
27
+ return undefined;
28
+ },
29
+ },
30
+ })
31
+ .html`<slot id=slot></slot>`
32
+ .css`
33
+ :host {
34
+ display: grid;
35
+ align-items: flex-end;
36
+ grid-template:
37
+ "fab" auto
38
+ / auto;
39
+ justify-content: flex-end;
40
+
41
+ margin: 16px;
42
+
43
+ pointer-events: none;
44
+
45
+ }
46
+
47
+ @media (min-width: 648px) {
48
+ :host {
49
+ margin: 24px;
50
+ }
51
+ }
52
+
53
+ #slot {
54
+ pointer-events: auto;
55
+ }
56
+ `
57
+ .autoRegister('mdw-fab-container');