@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
@@ -3,7 +3,34 @@ export default function AriaReflectorMixin(Base) {
3
3
  return Base
4
4
  .observe({
5
5
  _ariaRole: 'string',
6
- }).methods({
6
+ })
7
+ .set({
8
+ /**
9
+ * Browsers that do no support AriaMixin in ElementInternals need to have
10
+ * their attributes after construction.
11
+ * @type {Map<string, string>}
12
+ */
13
+ onConnectAriaValues: null,
14
+ hasFiredConnected: false,
15
+ })
16
+ .methods({
17
+ /**
18
+ * @param {keyof HTMLElement & keyof ElementInternals} name
19
+ */
20
+ readAriaProperty(name) {
21
+ if (this.elementInternals && name in this.elementInternals) {
22
+ return this.elementInternals[name];
23
+ } if (name in this) {
24
+ return this[name];
25
+ }
26
+ // console.warn('Unknown ARIA property', name, this);
27
+ /** @type {string} */
28
+ let attrName = name;
29
+ if (attrName.startsWith('aria')) {
30
+ attrName = `aria-${attrName.slice(4).toLowerCase()}`;
31
+ }
32
+ return this.getAttribute(name);
33
+ },
7
34
  /**
8
35
  * @param {keyof HTMLElement & keyof ElementInternals} name
9
36
  * @param {string} value
@@ -11,20 +38,26 @@ export default function AriaReflectorMixin(Base) {
11
38
  updateAriaProperty(name, value) {
12
39
  if (this.elementInternals && name in this.elementInternals) {
13
40
  this.elementInternals[name] = value;
14
- } else if (name in this) {
15
- this[name] = value;
16
- } else {
17
- console.warn('Unknown ARIA property', name, this);
18
- /** @type {string} */
19
- let attrName = name;
20
- if (attrName.startsWith('aria')) {
21
- attrName = `aria-${attrName.slice(4).toLowerCase()}`;
22
- }
23
- if (value == null) {
24
- this.removeAttribute(name);
41
+ } else if (this.isConnected) {
42
+ if (name in this) {
43
+ this[name] = value;
25
44
  } else {
26
- this.setAttribute(attrName, value);
45
+ // console.warn('Unknown ARIA property', name, this);
46
+ /** @type {string} */
47
+ let attrName = name;
48
+ if (attrName.startsWith('aria')) {
49
+ attrName = `aria-${attrName.slice(4).toLowerCase()}`;
50
+ }
51
+ if (value == null) {
52
+ this.removeAttribute(name);
53
+ } else {
54
+ this.setAttribute(attrName, value);
55
+ }
27
56
  }
57
+ } else {
58
+ this.onConnectAriaValues ??= new Map();
59
+ this.onConnectAriaValues.set(name, value);
60
+ // Elements should not add attributes during construction
28
61
  }
29
62
  },
30
63
  })
@@ -35,5 +68,12 @@ export default function AriaReflectorMixin(Base) {
35
68
  constructed() {
36
69
  this.updateAriaProperty('role', this._ariaRole);
37
70
  },
71
+ connected() {
72
+ if (!this.onConnectAriaValues) return;
73
+ for (const [key, value] of this.onConnectAriaValues) {
74
+ this.updateAriaProperty(key, value);
75
+ }
76
+ this.onConnectAriaValues = null;
77
+ },
38
78
  });
39
79
  }
@@ -1,3 +1,4 @@
1
+ import AriaReflectorMixin from './AriaReflectorMixin.js';
1
2
  import KeyboardNavMixin from './KeyboardNavMixin.js';
2
3
 
3
4
  /**
@@ -5,8 +6,10 @@ import KeyboardNavMixin from './KeyboardNavMixin.js';
5
6
  */
6
7
  export default function AriaToolbarMixin(Base) {
7
8
  return Base
9
+ .mixin(AriaReflectorMixin)
8
10
  .mixin(KeyboardNavMixin)
9
11
  .set({
10
12
  ariaOrientationDefault: 'horizontal',
13
+ _ariaRole: 'toolbar',
11
14
  });
12
15
  }
@@ -1,7 +1,9 @@
1
1
  /* https://html.spec.whatwg.org/multipage/form-control-infrastructure.html */
2
2
 
3
3
  import { cloneAttributeCallback } from '../core/CustomElement.js';
4
+ import { FIREFOX_VERSION, SAFARI_VERSION } from '../core/dom.js';
4
5
 
6
+ import DelegatesFocusMixin from './DelegatesFocusMixin.js';
5
7
  import FormAssociatedMixin from './FormAssociatedMixin.js';
6
8
 
7
9
  /** @typedef {import('../core/CustomElement.js').default} CustomElement */
@@ -16,16 +18,25 @@ import FormAssociatedMixin from './FormAssociatedMixin.js';
16
18
  export default function ControlMixin(Base) {
17
19
  return Base
18
20
  .mixin(FormAssociatedMixin)
21
+ .mixin(DelegatesFocusMixin)
19
22
  .observe({
20
23
  ariaLabel: 'string',
24
+ _slotInnerText: 'string',
21
25
  })
22
26
  .set({
23
- delegatesFocus: true,
24
27
  focusableOnDisabled: false,
25
28
  controlTagName: 'input',
26
29
  controlVoidElement: true,
30
+ _slotMutationObserver: null,
27
31
  })
28
32
  .methods({
33
+ /**
34
+ * Default behavior can be overridden
35
+ * @param {string} value
36
+ */
37
+ _onControlValue(value) {
38
+ this._value = value;
39
+ },
29
40
  onValueChangingContentAttribute() {
30
41
  const control = /** @type {HTMLControlElement} */ (this.refs.control);
31
42
 
@@ -36,7 +47,7 @@ export default function ControlMixin(Base) {
36
47
  control.setAttribute('value', ''); // Chrome needs to know to reset
37
48
  }
38
49
  // Changing control attribute may change the value (eg: min/max)
39
- this._value = control.value;
50
+ this._onControlValue(control.value);
40
51
  },
41
52
  /** @type {HTMLElement['focus']} */
42
53
  focus(...options) {
@@ -44,20 +55,16 @@ export default function ControlMixin(Base) {
44
55
  },
45
56
  /** Redirect click requests to control itself */
46
57
  click() {
47
- console.log('ControlMixin: Click');
58
+ if (this.disabledState) return;
48
59
  this.refs.control.click();
49
60
  },
50
61
  })
51
62
  .define({
52
63
  stateTargetElement() { return this.refs.control; },
53
- form() { return this.elementInternals.form; },
54
- validity() { return this.elementInternals.validity; },
55
- validationMessage() { return this.elementInternals.validationMessage; },
56
- willValidate() { return this.elementInternals.willValidate; },
57
- labels() { return this.elementInternals.labels; },
58
64
  })
59
65
  .methods({
60
66
  checkValidity() {
67
+ if (!this.willValidate) return true;
61
68
  const control = /** @type {HTMLControlElement} */ (this.refs.control);
62
69
  const validityState = control.checkValidity();
63
70
  /** @type {Partial<ValidityState>} */
@@ -95,21 +102,30 @@ export default function ControlMixin(Base) {
95
102
  this.refs.control,
96
103
  );
97
104
  },
105
+ })
106
+ .observe({
107
+ _computedAriaLabel({ ariaLabel, _slotInnerText }) {
108
+ return ariaLabel?.trim() || _slotInnerText?.trim() || null;
109
+ },
110
+ })
111
+ .expressions({
112
+ _computedAriaLabelledby({ _computedAriaLabel }) {
113
+ return _computedAriaLabel ? null : 'slot';
114
+ },
115
+ })
98
116
 
117
+ .recompose(({ template, html, element }) => {
118
+ template.append(html`
119
+ <${element.controlTagName} id=control
120
+ aria-label={_computedAriaLabel}
121
+ aria-labelledby={_computedAriaLabelledby}
122
+ part=control
123
+ form-disabled={disabledState}
124
+ type={type}
125
+ >${element.controlVoidElement ? '' : `</${element.controlTagName}>`}
126
+ `);
99
127
  })
100
128
  .on({
101
- // Wait until controlTagName is settled before templating
102
- composed({ template, html }) {
103
- template.append(html`
104
- <${this.controlTagName} id=control
105
- aria-labelledby=${({ ariaLabel }) => (ariaLabel ? null : 'slot')}
106
- part=control
107
- aria-label={ariaLabel}
108
- form-disabled={disabledState}
109
- type={type}
110
- >${this.controlVoidElement ? '' : `</${this.controlTagName}>`}
111
- `);
112
- },
113
129
  disabledStateChanged(oldValue, newValue) {
114
130
  const control = /** @type {HTMLControlElement} */ (this.refs.control);
115
131
  control.setAttribute('aria-disabled', `${newValue}`);
@@ -122,9 +138,17 @@ export default function ControlMixin(Base) {
122
138
  }
123
139
  }
124
140
  },
141
+ readOnlyChanged(oldValue, newValue) {
142
+ const control = /** @type {HTMLControlElement} */ (this.refs.control);
143
+ if (this.type === 'checkbox') {
144
+ control.setAttribute('aria-readonly', newValue ? 'true' : 'false');
145
+ } else {
146
+ control.removeAttribute('aria-readonly');
147
+ }
148
+ },
125
149
  constructed() {
126
150
  const control = /** @type {HTMLControlElement} */ (this.refs.control);
127
- this._value = control.value;
151
+ this._onControlValue(control.value);
128
152
  },
129
153
  connected() {
130
154
  // Expose this element as focusable
@@ -141,11 +165,14 @@ export default function ControlMixin(Base) {
141
165
  })
142
166
  .childEvents({
143
167
  control: {
144
- invalid() {
145
- console.debug('ControlMixin: invalid', this);
168
+ click(e) {
169
+ if ((this.type === 'checkbox' && this.readOnly)
170
+ || (this.focusableOnDisabled && this.disabledState)) {
171
+ e.preventDefault();
172
+ e.stopImmediatePropagation();
173
+ }
146
174
  },
147
175
  input({ currentTarget }) {
148
- console.debug('ControlMixin: input');
149
176
  const control = /** @type {HTMLControlElement} */ (currentTarget);
150
177
  if (this.validity.valid) {
151
178
  // Track internally
@@ -155,18 +182,37 @@ export default function ControlMixin(Base) {
155
182
  // Perform check in case user has validated
156
183
  this.checkValidity();
157
184
  }
158
- this._value = control.value;
185
+ this._onControlValue(control.value);
159
186
  },
160
187
  change({ currentTarget }) {
161
- console.debug('ControlMixin: change');
162
188
  const control = /** @type {HTMLControlElement} */ (currentTarget);
163
189
  this._valueDirty = true;
164
- this._value = control.value;
190
+ this._onControlValue(control.value);
165
191
  this.checkValidity();
166
- // Change event is NOT composed. Needs to escape shadow DOM
167
- this.dispatchEvent(new Event('change', { bubbles: true }));
168
192
  },
169
193
  },
194
+ slot: (FIREFOX_VERSION < 116 || SAFARI_VERSION) ? {
195
+ slotchange({ currentTarget }) {
196
+ // Firefox and Safari will not apply label from slots.
197
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1826194
198
+ // https://commits.webkit.org/263644@main
199
+ // https://bugs.webkit.org/show_bug.cgi?id=260772
200
+ this._slotInnerText = this.textContent;
201
+ if (!this._slotMutationObserver) {
202
+ this._slotMutationObserver = new MutationObserver(() => {
203
+ this._slotInnerText = this.textContent;
204
+ });
205
+ this._slotMutationObserver.observe(currentTarget, { characterData: true });
206
+ }
207
+ },
208
+ } : {},
209
+ })
210
+ .rootEvents({
211
+ change(event) {
212
+ // Change event is NOT composed. Needs to escape shadow DOM
213
+ // @ts-ignore skip constructor cast
214
+ this.dispatchEvent(new event.constructor(event.type, event));
215
+ },
170
216
  })
171
217
  .css`
172
218
  :host {
@@ -206,15 +252,12 @@ export default function ControlMixin(Base) {
206
252
 
207
253
  cursor: auto;
208
254
  outline: none;
209
-
210
- pointer-events: auto;
211
-
212
255
  transform: translateX(-50%) translateY(-50%);
213
256
 
214
257
  /* Safari and Chrome will emit two click events if not at top of stack */
215
258
  /* Allows up to 3 other layers (eg: ripple, outline) */
216
259
  z-index: 4;
217
-
260
+
218
261
  background-color: transparent;
219
262
 
220
263
  border-radius: 0;
@@ -0,0 +1,54 @@
1
+ import { CHROME_VERSION, isFocused } from '../core/dom.js';
2
+
3
+ /** @param {typeof import('../core/CustomElement.js').default} Base */
4
+ export default function DelegatesFocusMixin(Base) {
5
+ return Base
6
+ .set({
7
+ delegatesFocus: true,
8
+ })
9
+ .extend(CHROME_VERSION >= 111
10
+ ? (BaseClass) => BaseClass
11
+ : (BaseClass) => class extends BaseClass {
12
+ get tabIndex() {
13
+ return super.tabIndex;
14
+ }
15
+
16
+ set tabIndex(value) {
17
+ if (value === super.tabIndex && value !== -1) {
18
+ // Non -1 value already set
19
+ return;
20
+ }
21
+
22
+ if (this.delegatesFocus && isFocused(this)) {
23
+ if (this.getAttribute('tabindex') === value.toString()) {
24
+ // Skip if possible
25
+ return;
26
+ }
27
+
28
+ // Chrome blurs on tabindex changes with delegatesFocus
29
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1346606
30
+ /** @type {EventListener} */
31
+ const listener = (e) => {
32
+ e.stopImmediatePropagation();
33
+ e.stopPropagation();
34
+ if (e.type === 'blur') {
35
+ console.warn('Chromium bug 1346606: Tabindex change caused blur. Giving focusing back.', this);
36
+ this.focus();
37
+ } else {
38
+ console.warn(`Chromium bug 1346606: Blocking ${e.type} event.`, this);
39
+ }
40
+ };
41
+ for (const type of ['blur', 'focus', 'focusout', 'focusin']) {
42
+ this.addEventListener(type, listener, { capture: true, once: true });
43
+ }
44
+ super.tabIndex = value;
45
+ for (const type of ['blur', 'focus', 'focusout', 'focusin']) {
46
+ this.removeEventListener(type, listener, { capture: true });
47
+ }
48
+ return;
49
+ }
50
+
51
+ super.tabIndex = value;
52
+ }
53
+ });
54
+ }
@@ -14,11 +14,11 @@ export default function DensityMixin(Base) {
14
14
 
15
15
  :host([density="-1"]) { --mdw-density: -1; }
16
16
  :host([density="-2"]) { --mdw-density: -2; }
17
- :host([density="-3"]) { --mdw-density: -2; }
17
+ :host([density="-3"]) { --mdw-density: -3; }
18
18
  :host([density="-4"]) { --mdw-density: -4; }
19
19
  :host([density="1"]) { --mdw-density: 1; }
20
20
  :host([density="2"]) { --mdw-density: 2; }
21
21
  :host([density="3"]) { --mdw-density: 3; }
22
- :host([density="4"]) { --mdw-density: 3; }
22
+ :host([density="4"]) { --mdw-density: 4; }
23
23
  `;
24
24
  }
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Displays elevation via shadows or underlighting.
3
+ * Uses `filter:drop-shadow` to display elevation.
4
+ * @param {ReturnType<import('./StateMixin.js').default> & ReturnType<import('./ThemableMixin.js').default>} Base
5
+ */
6
+ export default function ElevationMixin(Base) {
7
+ return Base
8
+ .css`:host {
9
+
10
+ /** Reference Properties */
11
+ /*
12
+ --mdw-surface__box-shadow__1__umbra: 0px 1px 2px 0px rgba(var(--mdw-color__shadow), 0.30);
13
+ --mdw-surface__box-shadow__2__umbra: 0px 1px 2px 0px rgba(var(--mdw-color__shadow), 0.30);
14
+ --mdw-surface__box-shadow__3__umbra: 0px 1px 3px 0px rgba(var(--mdw-color__shadow), 0.30);
15
+ --mdw-surface__box-shadow__4__umbra: 0px 2px 3px 0px rgba(var(--mdw-color__shadow), 0.30);
16
+ --mdw-surface__box-shadow__5__umbra: 0px 4px 4px 0px rgba(var(--mdw-color__shadow), 0.30);
17
+
18
+ --mdw-surface__filter__0__umbra: drop-shadow(0px 1px 1px rgba(var(--mdw-color__shadow), 0));
19
+ --mdw-surface__filter__1__umbra: drop-shadow(0px 1px 1px rgba(var(--mdw-color__shadow), 0.30));
20
+ --mdw-surface__filter__2__umbra: drop-shadow(0px 1px 1px rgba(var(--mdw-color__shadow), 0.30));
21
+ --mdw-surface__filter__3__umbra: drop-shadow(0px 1px 1.5px rgba(var(--mdw-color__shadow), 0.30));
22
+ --mdw-surface__filter__4__umbra: drop-shadow(0px 2px 1.5px rgba(var(--mdw-color__shadow), 0.30));
23
+ --mdw-surface__filter__5__umbra: drop-shadow(0px 4px 2px rgba(var(--mdw-color__shadow), 0.30));
24
+
25
+ --mdw-surface__box-shadow__1__penumbra: 0px 1px 3px 1px rgba(var(--mdw-color__shadow), 0.15);
26
+ --mdw-surface__box-shadow__2__penumbra: 0px 2px 6px 2px rgba(var(--mdw-color__shadow), 0.15);
27
+ --mdw-surface__box-shadow__3__penumbra: 0px 4px 8px 3px rgba(var(--mdw-color__shadow), 0.15);
28
+ --mdw-surface__box-shadow__4__penumbra: 0px 6px 10px 4px rgba(var(--mdw-color__shadow), 0.15);
29
+ --mdw-surface__box-shadow__5__penumbra: 0px 8px 12px 6px rgba(var(--mdw-color__shadow), 0.15);
30
+
31
+ --mdw-elevation__filter__0__penumbra: drop-shadow(0px 1px 2.5px rgba(var(--mdw-color__shadow), 0));
32
+ --mdw-elevation__filter__1__penumbra: drop-shadow(0px 1px 2.5px rgba(var(--mdw-color__shadow), 0.25));
33
+ --mdw-elevation__filter__2__penumbra: drop-shadow(0px 2px 5px rgba(var(--mdw-color__shadow), 0.25));
34
+ --mdw-elevation__filter__3__penumbra: drop-shadow(0px 4px 7px rgba(var(--mdw-color__shadow), 0.263));
35
+ --mdw-elevation__filter__4__penumbra: drop-shadow(0px 6px 9px rgba(var(--mdw-color__shadow), 0.27));
36
+ --mdw-elevation__filter__5__penumbra: drop-shadow(0px 8px 12px rgba(var(--mdw-color__shadow), 0.30));
37
+
38
+ --mdw-elevation__filter__0: var(--mdw-surface__shadow__0__umbra) var(--mdw-surface__shadow__0__penumbra);
39
+ --mdw-elevation__filter__1: var(--mdw-surface__shadow__1__umbra) var(--mdw-surface__shadow__1__penumbra);
40
+ --mdw-elevation__filter__2: var(--mdw-surface__shadow__2__umbra) var(--mdw-surface__shadow__2__penumbra);
41
+ --mdw-elevation__filter__3: var(--mdw-surface__shadow__3__umbra) var(--mdw-surface__shadow__3__penumbra);
42
+ --mdw-elevation__filter__4: var(--mdw-surface__shadow__4__umbra) var(--mdw-surface__shadow__4__penumbra);
43
+ --mdw-elevation__filter__5: var(--mdw-surface__shadow__5__umbra) var(--mdw-surface__shadow__5__penumbra);
44
+ */
45
+
46
+ --mdw-elevation__rgb: var(--mdw-color__shadow);
47
+
48
+ --mdw-elevation__box-shadow__0: 0px 1px 1px 0px rgba(var(--mdw-elevation__rgb), 0.00), 0px 0px 1px 1px rgba(var(--mdw-elevation__rgb), 0.00);
49
+ --mdw-elevation__box-shadow__1: 0px 1px 2px 0px rgba(var(--mdw-elevation__rgb), 0.30), 0px 1px 3px 1px rgba(var(--mdw-elevation__rgb), 0.15);
50
+ --mdw-elevation__box-shadow__2: 0px 1px 2px 0px rgba(var(--mdw-elevation__rgb), 0.30), 0px 2px 6px 2px rgba(var(--mdw-elevation__rgb), 0.15);
51
+ --mdw-elevation__box-shadow__3: 0px 1px 3px 0px rgba(var(--mdw-elevation__rgb), 0.30), 0px 4px 8px 3px rgba(var(--mdw-elevation__rgb), 0.15);
52
+ --mdw-elevation__box-shadow__4: 0px 2px 3px 0px rgba(var(--mdw-elevation__rgb), 0.30), 0px 6px 10px 4px rgba(var(--mdw-elevation__rgb), 0.15);
53
+ --mdw-elevation__box-shadow__5: 0px 4px 4px 0px rgba(var(--mdw-elevation__rgb), 0.30), 0px 8px 12px 6px rgba(var(--mdw-elevation__rgb), 0.15);
54
+
55
+ --mdw-elevation__drop-shadow__0: drop-shadow(0px 1px 001px rgba(var(--mdw-elevation__rgb),000)) drop-shadow(0px 1px 2.5px rgba(var(--mdw-elevation__rgb),00000));
56
+ --mdw-elevation__drop-shadow__1: drop-shadow(0px 1px 001px rgba(var(--mdw-elevation__rgb),0.3)) drop-shadow(0px 1px 2.5px rgba(var(--mdw-elevation__rgb),0.250));
57
+ --mdw-elevation__drop-shadow__2: drop-shadow(0px 1px 001px rgba(var(--mdw-elevation__rgb),0.3)) drop-shadow(0px 2px 005px rgba(var(--mdw-elevation__rgb),0.250));
58
+ --mdw-elevation__drop-shadow__3: drop-shadow(0px 1px 1.5px rgba(var(--mdw-elevation__rgb),0.3)) drop-shadow(0px 4px 007px rgba(var(--mdw-elevation__rgb),0.263));
59
+ --mdw-elevation__drop-shadow__4: drop-shadow(0px 2px 1.5px rgba(var(--mdw-elevation__rgb),0.3)) drop-shadow(0px 6px 009px rgba(var(--mdw-elevation__rgb),0.270));
60
+ --mdw-elevation__drop-shadow__5: drop-shadow(0px 4px 2.0px rgba(var(--mdw-elevation__rgb),0.3)) drop-shadow(0px 8px 012px rgba(var(--mdw-elevation__rgb),0.300));
61
+ }`;
62
+ }
@@ -4,12 +4,9 @@
4
4
  export default function FlexableMixin(Base) {
5
5
  return Base
6
6
  .observe({
7
- flex: {
8
- type: 'string',
9
- empty: 'row',
10
- /** @type {'row'|'column'} */
11
- value: 'row',
12
- },
7
+ block: 'boolean',
8
+ inline: 'boolean',
9
+ row: 'boolean',
13
10
  x: {
14
11
  type: 'string',
15
12
  empty: 'start',
@@ -23,87 +20,119 @@ export default function FlexableMixin(Base) {
23
20
  value: 'start',
24
21
  },
25
22
  gap: 'float',
26
- padding: 'float',
23
+ padding: 'string',
27
24
  })
28
25
  .css`
29
26
  /* https://css-tricks.com/snippets/css/a-guide-to-flexbox/ */
30
27
 
31
28
  :host{
29
+ display: flex;
30
+ flex-direction: column;
31
+
32
32
  box-sizing: border-box;
33
+
33
34
  }
34
35
 
35
- :host([flex]) {
36
- display:flex;
36
+ :host(:is([inline])) {
37
+ display: inline-flex;
37
38
  }
38
39
 
39
- :host([flex="column"]) {
40
- flex-direction: column;
40
+ :host(:is([block])) {
41
+ display: block;
42
+ }
43
+
44
+
45
+ :host(:is([inline][block])) {
46
+ display: inline-block;
41
47
  }
42
48
 
43
- :host(:where([flex][y="start"], [flex="column"][x="start"])) {
49
+ :host(:is([row])) {
50
+ flex-direction: row;
51
+ }
52
+
53
+ :host(:is([row][y="start"], [x="start"]:not([row]))) {
44
54
  align-items: flex-start;
45
55
  }
46
56
 
47
- :host(:where([flex][y="end"], [flex="column"][x="end"])) {
57
+ :host(:is([row][y="end"], [x="end"]:not([row]))) {
48
58
  align-items: flex-end;
49
59
  }
50
60
 
51
- :host(:where([flex][y="center"], [flex="column"][x="center"])) {
61
+ :host(:is([row][y="center"], [x="center"]:not([row]))) {
52
62
  align-items: center;
53
63
  }
54
64
 
55
- :host(:where([flex][y="between"], [flex="column"][x="between"])) {
65
+ :host(:is([row][y="between"], [x="between"]:not([row]))) {
56
66
  align-items: space-between;
57
67
  }
58
68
 
59
- :host(:where([flex][y="around"], [flex="column"][x="around"])) {
69
+ :host(:is([row][y="around"], [x="around"]:not([row]))) {
60
70
  align-items: space-around;
61
71
  }
62
72
 
63
- :host(:where([flex][y="stretch"], [flex="column"][x="stretch"])) {
73
+ :host(:is([row][y="stretch"], [x="stretch"]:not([row]))) {
64
74
  align-items: stretch;
65
75
  }
66
76
 
67
- :host(:where([flex][x="start"], [flex="column"][y="start"])) {
77
+ :host(:is([row][x="start"], [y="start"]:not([row]))) {
68
78
  justify-content: flex-start;
69
79
  }
70
80
 
71
- :host(:where([flex][x="end"], [flex="column"][y="end"])) {
81
+ :host(:is([row][x="end"], [y="end"]:not([row]))) {
72
82
  justify-content: flex-end;
73
83
  }
74
84
 
75
- :host(:where([flex][x="center"], [flex="column"][y="center"])) {
85
+ :host(:is([row][x="center"], [y="center"]:not([row]))) {
76
86
  justify-content: center;
77
87
  }
78
88
 
79
- :host(:where([flex][x="between"], [flex="column"][y="between"])) {
89
+ :host(:is([row][x="between"], [y="between"]:not([row]))) {
80
90
  justify-content: space-between;
81
91
  }
82
92
 
83
- :host(:where([flex][x="stretch"], [flex="column"][y="stretch"])) {
93
+ :host(:is([row][x="stretch"], [y="stretch"]:not([row]))) {
84
94
  justify-content: stretch;
85
95
  }
86
96
 
87
- :host([wrap]) {
97
+ :host(:is([wrap])) {
88
98
  flex-wrap: wrap;
89
99
  }
90
100
 
91
- :host([wrap="reverse"]) {
101
+ :host(:is([wrap="reverse"])) {
92
102
  flex-wrap: wrap-reverse;
93
103
  }
94
104
 
95
- :host([gap="4"]) {gap: 4px;}
96
- :host([gap="8"]) {gap: 8px;}
97
- :host([gap="12"]) {gap: 12px;}
98
- :host([gap="16"]) {gap: 16px;}
99
- :host([gap="20"]) {gap: 20px;}
100
- :host([gap="24"]) {gap: 24px;}
101
-
102
- :host([padding="4"]) {padding: 4px;}
103
- :host([padding="8"]) {padding: 8px;}
104
- :host([padding="12"]) {padding: 12px;}
105
- :host([padding="16"]) {padding: 16px;}
106
- :host([padding="20"]) {padding: 20px;}
107
- :host([padding="24"]) {padding: 24px;}
105
+ :host(:is([gap])) {gap: 0;}
106
+ :host(:is([gap="4"])) {gap: 4px;}
107
+ :host(:is([gap="8"])) {gap: 8px;}
108
+ :host(:is([gap="12"])) {gap: 12px;}
109
+ :host(:is([gap="16"])) {gap: 16px;}
110
+ :host(:is([gap="20"])) {gap: 20px;}
111
+ :host(:is([gap="24"])) {gap: 24px;}
112
+
113
+ :host(:is([padding])) {padding: 0;}
114
+ :host(:is([padding="pane"])) { padding-inline: var(--mdw-pane__padding-inline, 0) }
115
+ :host(:is([padding="4"])) {padding: 4px;}
116
+ :host(:is([padding="8"])) {padding: 8px;}
117
+ :host(:is([padding="12"])) {padding: 12px;}
118
+ :host(:is([padding="16"])) {padding: 16px;}
119
+ :host(:is([padding="20"])) {padding: 20px;}
120
+ :host(:is([padding="24"])) {padding: 24px;}
121
+ :host(:is([padding-x])) {padding-inline: 0;}
122
+ :host(:is([padding-x="4"])) {padding-inline: 4px;}
123
+ :host(:is([padding-x="8"])) {padding-inline: 8px;}
124
+ :host(:is([padding-x="12"])) {padding-inline: 12px;}
125
+ :host(:is([padding-x="16"])) {padding-inline: 16px;}
126
+ :host(:is([padding-x="20"])) {padding-inline: 20px;}
127
+ :host(:is([padding-x="24"])) {padding-inline: 24px;}
128
+ :host(:is([padding-y])) {padding-block: 0;}
129
+ :host(:is([padding-y="4"])) {padding-block: 4px;}
130
+ :host(:is([padding-y="8"])) {padding-block: 8px;}
131
+ :host(:is([padding-y="12"])) {padding-block: 12px;}
132
+ :host(:is([padding-y="16"])) {padding-block: 16px;}
133
+ :host(:is([padding-y="20"])) {padding-block: 20px;}
134
+ :host(:is([padding-y="24"])) {padding-block: 24px;}
135
+
136
+
108
137
  `;
109
138
  }