@material/web 1.0.0-pre.6 → 1.0.0-pre.7

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 (334) hide show
  1. package/README.md +7 -7
  2. package/aria/aria.d.ts +43 -0
  3. package/aria/aria.js +56 -0
  4. package/aria/aria.js.map +1 -0
  5. package/aria/delegate.d.ts +37 -0
  6. package/aria/delegate.js +53 -0
  7. package/aria/delegate.js.map +1 -0
  8. package/badge/badge.d.ts +0 -1
  9. package/badge/badge.js +0 -1
  10. package/badge/badge.js.map +1 -1
  11. package/badge/lib/badge.d.ts +8 -7
  12. package/badge/lib/badge.js +5 -6
  13. package/badge/lib/badge.js.map +1 -1
  14. package/button/lib/_elevation.scss +13 -3
  15. package/button/lib/button.d.ts +1 -12
  16. package/button/lib/button.js +29 -60
  17. package/button/lib/button.js.map +1 -1
  18. package/button/lib/shared-elevation-styles.css.js +1 -1
  19. package/button/lib/shared-elevation-styles.css.js.map +1 -1
  20. package/checkbox/lib/checkbox.d.ts +0 -1
  21. package/checkbox/lib/checkbox.js +33 -43
  22. package/checkbox/lib/checkbox.js.map +1 -1
  23. package/chips/_filter-chip.scss +6 -0
  24. package/chips/filter-chip.d.ts +20 -0
  25. package/chips/filter-chip.js +24 -0
  26. package/chips/filter-chip.js.map +1 -0
  27. package/chips/lib/_filter-chip.scss +141 -0
  28. package/chips/lib/_shared.scss +18 -14
  29. package/chips/lib/assist-styles.css.js +1 -1
  30. package/chips/lib/assist-styles.css.js.map +1 -1
  31. package/chips/lib/chip.d.ts +8 -3
  32. package/chips/lib/chip.js +29 -30
  33. package/chips/lib/chip.js.map +1 -1
  34. package/chips/lib/filter-chip.d.ts +21 -0
  35. package/chips/lib/filter-chip.js +47 -0
  36. package/chips/lib/filter-chip.js.map +1 -0
  37. package/chips/lib/filter-styles.css.js +9 -0
  38. package/chips/lib/filter-styles.css.js.map +1 -0
  39. package/{fab/lib/fab-extended-styles.scss → chips/lib/filter-styles.scss} +3 -3
  40. package/chips/lib/shared-styles.css.js +1 -1
  41. package/chips/lib/shared-styles.css.js.map +1 -1
  42. package/chips/lib/suggestion-styles.css.js +1 -1
  43. package/chips/lib/suggestion-styles.css.js.map +1 -1
  44. package/circularprogress/harness.d.ts +1 -0
  45. package/circularprogress/harness.js +4 -0
  46. package/circularprogress/harness.js.map +1 -1
  47. package/circularprogress/lib/circular-progress.d.ts +0 -1
  48. package/circularprogress/lib/circular-progress.js +16 -19
  49. package/circularprogress/lib/circular-progress.js.map +1 -1
  50. package/dialog/lib/_dialog.scss +8 -8
  51. package/dialog/lib/dialog-styles.css.js +1 -1
  52. package/dialog/lib/dialog-styles.css.js.map +1 -1
  53. package/dialog/lib/dialog.js +25 -49
  54. package/dialog/lib/dialog.js.map +1 -1
  55. package/divider/lib/divider.js +4 -7
  56. package/divider/lib/divider.js.map +1 -1
  57. package/elevation/lib/_elevation.scss +5 -7
  58. package/elevation/lib/elevation-styles.css.js +1 -1
  59. package/elevation/lib/elevation-styles.css.js.map +1 -1
  60. package/fab/_fab.scss +1 -0
  61. package/fab/branded-fab.d.ts +53 -0
  62. package/fab/branded-fab.js +56 -0
  63. package/fab/branded-fab.js.map +1 -0
  64. package/fab/fab.d.ts +25 -5
  65. package/fab/fab.js +27 -10
  66. package/fab/fab.js.map +1 -1
  67. package/fab/harness.d.ts +1 -2
  68. package/fab/harness.js +1 -1
  69. package/fab/harness.js.map +1 -1
  70. package/fab/lib/_fab-branded.scss +27 -0
  71. package/fab/lib/_fab.scss +144 -16
  72. package/fab/lib/_shared.scss +155 -130
  73. package/fab/lib/fab-branded-styles.css.js +9 -0
  74. package/fab/lib/fab-branded-styles.css.js.map +1 -0
  75. package/fab/lib/fab-branded-styles.scss +10 -0
  76. package/fab/lib/fab-styles.css.js +1 -1
  77. package/fab/lib/fab-styles.css.js.map +1 -1
  78. package/fab/lib/fab.d.ts +14 -10
  79. package/fab/lib/fab.js +19 -12
  80. package/fab/lib/fab.js.map +1 -1
  81. package/fab/lib/forced-colors-styles.css.d.ts +1 -0
  82. package/fab/lib/forced-colors-styles.css.js +9 -0
  83. package/fab/lib/forced-colors-styles.css.js.map +1 -0
  84. package/fab/lib/forced-colors-styles.scss +26 -0
  85. package/fab/lib/shared-styles.css.d.ts +1 -0
  86. package/fab/lib/shared-styles.css.js +9 -0
  87. package/fab/lib/shared-styles.css.js.map +1 -0
  88. package/fab/lib/{fab-shared-styles.scss → shared-styles.scss} +1 -1
  89. package/fab/lib/{fab-shared.d.ts → shared.d.ts} +24 -16
  90. package/fab/lib/shared.js +137 -0
  91. package/fab/lib/shared.js.map +1 -0
  92. package/field/lib/field.js +14 -27
  93. package/field/lib/field.js.map +1 -1
  94. package/focus/focus-ring.d.ts +0 -1
  95. package/focus/focus-ring.js +0 -1
  96. package/focus/focus-ring.js.map +1 -1
  97. package/focus/lib/focus-ring.js +2 -3
  98. package/focus/lib/focus-ring.js.map +1 -1
  99. package/focus/strong-focus.js +5 -0
  100. package/focus/strong-focus.js.map +1 -1
  101. package/icon/icon.d.ts +0 -1
  102. package/icon/icon.js +0 -1
  103. package/icon/icon.js.map +1 -1
  104. package/icon/lib/_icon.scss +2 -0
  105. package/icon/lib/icon-styles.css.js +1 -1
  106. package/icon/lib/icon-styles.css.js.map +1 -1
  107. package/icon/lib/icon.d.ts +5 -4
  108. package/icon/lib/icon.js +3 -2
  109. package/icon/lib/icon.js.map +1 -1
  110. package/iconbutton/lib/icon-button.d.ts +0 -4
  111. package/iconbutton/lib/icon-button.js +28 -48
  112. package/iconbutton/lib/icon-button.js.map +1 -1
  113. package/linearprogress/_linear-progress.scss +6 -0
  114. package/linearprogress/harness.d.ts +13 -0
  115. package/linearprogress/harness.js +18 -0
  116. package/linearprogress/harness.js.map +1 -0
  117. package/linearprogress/lib/_linear-progress.scss +380 -0
  118. package/linearprogress/lib/linear-progress-styles.css.d.ts +1 -0
  119. package/linearprogress/lib/linear-progress-styles.css.js +9 -0
  120. package/linearprogress/lib/linear-progress-styles.css.js.map +1 -0
  121. package/linearprogress/lib/linear-progress-styles.scss +8 -0
  122. package/linearprogress/lib/linear-progress.d.ts +35 -0
  123. package/linearprogress/lib/linear-progress.js +127 -0
  124. package/linearprogress/lib/linear-progress.js.map +1 -0
  125. package/linearprogress/linear-progress.d.ts +23 -0
  126. package/linearprogress/linear-progress.js +26 -0
  127. package/linearprogress/linear-progress.js.map +1 -0
  128. package/list/lib/_list.scss +6 -49
  129. package/list/lib/list-styles.css.js +1 -1
  130. package/list/lib/list-styles.css.js.map +1 -1
  131. package/list/lib/list.d.ts +1 -3
  132. package/list/lib/list.js +18 -34
  133. package/list/lib/list.js.map +1 -1
  134. package/list/lib/listitem/_list-item.scss +10 -69
  135. package/list/lib/listitem/forced-colors-styles.css.js +1 -1
  136. package/list/lib/listitem/forced-colors-styles.css.js.map +1 -1
  137. package/list/lib/listitem/list-item-styles.css.js +1 -1
  138. package/list/lib/listitem/list-item-styles.css.js.map +1 -1
  139. package/list/lib/listitem/list-item.d.ts +2 -4
  140. package/list/lib/listitem/list-item.js +24 -53
  141. package/list/lib/listitem/list-item.js.map +1 -1
  142. package/list/lib/listitemlink/list-item-link.js +4 -6
  143. package/list/lib/listitemlink/list-item-link.js.map +1 -1
  144. package/menu/lib/_menu.scss +6 -28
  145. package/menu/lib/menu-styles.css.js +1 -1
  146. package/menu/lib/menu-styles.css.js.map +1 -1
  147. package/menu/lib/menu.d.ts +1 -2
  148. package/menu/lib/menu.js +38 -63
  149. package/menu/lib/menu.js.map +1 -1
  150. package/menu/lib/menuitem/_menu-item.scss +13 -32
  151. package/menu/lib/menuitem/menu-item-styles.css.js +1 -1
  152. package/menu/lib/menuitem/menu-item-styles.css.js.map +1 -1
  153. package/menu/lib/menuitem/menu-item.d.ts +1 -1
  154. package/menu/lib/menuitem/menu-item.js +4 -6
  155. package/menu/lib/menuitem/menu-item.js.map +1 -1
  156. package/menu/lib/menuitemlink/menu-item-link.d.ts +0 -2
  157. package/menu/lib/menuitemlink/menu-item-link.js +3 -6
  158. package/menu/lib/menuitemlink/menu-item-link.js.map +1 -1
  159. package/menu/lib/shared.d.ts +6 -2
  160. package/menu/lib/shared.js.map +1 -1
  161. package/menu/lib/submenuitem/sub-menu-item.d.ts +0 -2
  162. package/menu/lib/submenuitem/sub-menu-item.js +7 -15
  163. package/menu/lib/submenuitem/sub-menu-item.js.map +1 -1
  164. package/navigationbar/lib/_navigation-bar.scss +7 -1
  165. package/navigationbar/lib/navigation-bar-styles.css.js +1 -1
  166. package/navigationbar/lib/navigation-bar-styles.css.js.map +1 -1
  167. package/navigationbar/lib/navigation-bar.d.ts +5 -5
  168. package/navigationbar/lib/navigation-bar.js +17 -18
  169. package/navigationbar/lib/navigation-bar.js.map +1 -1
  170. package/navigationbar/navigation-bar.d.ts +0 -1
  171. package/navigationbar/navigation-bar.js +0 -1
  172. package/navigationbar/navigation-bar.js.map +1 -1
  173. package/navigationdrawer/lib/navigation-drawer-modal.d.ts +5 -10
  174. package/navigationdrawer/lib/navigation-drawer-modal.js +19 -41
  175. package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
  176. package/navigationdrawer/lib/navigation-drawer.d.ts +5 -9
  177. package/navigationdrawer/lib/navigation-drawer.js +17 -38
  178. package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
  179. package/navigationdrawer/navigation-drawer-modal.d.ts +0 -1
  180. package/navigationdrawer/navigation-drawer-modal.js +0 -1
  181. package/navigationdrawer/navigation-drawer-modal.js.map +1 -1
  182. package/navigationdrawer/navigation-drawer.d.ts +0 -1
  183. package/navigationdrawer/navigation-drawer.js +0 -1
  184. package/navigationdrawer/navigation-drawer.js.map +1 -1
  185. package/navigationtab/lib/navigation-tab.d.ts +19 -24
  186. package/navigationtab/lib/navigation-tab.js +48 -68
  187. package/navigationtab/lib/navigation-tab.js.map +1 -1
  188. package/navigationtab/navigation-tab.d.ts +0 -1
  189. package/navigationtab/navigation-tab.js +0 -1
  190. package/navigationtab/navigation-tab.js.map +1 -1
  191. package/package.json +1 -1
  192. package/radio/lib/radio.d.ts +0 -1
  193. package/radio/lib/radio.js +30 -37
  194. package/radio/lib/radio.js.map +1 -1
  195. package/ripple/lib/ripple.js +7 -13
  196. package/ripple/lib/ripple.js.map +1 -1
  197. package/segmentedbutton/lib/outlined-segmented-button.d.ts +16 -7
  198. package/segmentedbutton/lib/outlined-segmented-button.js +3 -3
  199. package/segmentedbutton/lib/outlined-segmented-button.js.map +1 -1
  200. package/segmentedbutton/lib/segmented-button.d.ts +27 -33
  201. package/segmentedbutton/lib/segmented-button.js +42 -75
  202. package/segmentedbutton/lib/segmented-button.js.map +1 -1
  203. package/segmentedbutton/outlined-segmented-button.d.ts +0 -1
  204. package/segmentedbutton/outlined-segmented-button.js +0 -1
  205. package/segmentedbutton/outlined-segmented-button.js.map +1 -1
  206. package/segmentedbuttonset/lib/outlined-segmented-button-set.d.ts +6 -4
  207. package/segmentedbuttonset/lib/outlined-segmented-button-set.js +3 -2
  208. package/segmentedbuttonset/lib/outlined-segmented-button-set.js.map +1 -1
  209. package/segmentedbuttonset/lib/segmented-button-set.d.ts +3 -9
  210. package/segmentedbuttonset/lib/segmented-button-set.js +14 -20
  211. package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
  212. package/segmentedbuttonset/outlined-segmented-button-set.d.ts +0 -1
  213. package/segmentedbuttonset/outlined-segmented-button-set.js +0 -1
  214. package/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
  215. package/select/_filled-select.scss +6 -0
  216. package/select/_outlined-select.scss +6 -0
  217. package/select/filled-select.d.ts +41 -0
  218. package/select/filled-select.js +46 -0
  219. package/select/filled-select.js.map +1 -0
  220. package/select/harness.d.ts +24 -0
  221. package/select/harness.js +53 -0
  222. package/select/harness.js.map +1 -0
  223. package/select/lib/_filled-select.scss +163 -0
  224. package/select/lib/_outlined-select.scss +146 -0
  225. package/select/lib/_shared.scss +48 -0
  226. package/select/lib/filled-forced-colors-styles.css.d.ts +1 -0
  227. package/select/lib/filled-forced-colors-styles.css.js +9 -0
  228. package/select/lib/filled-forced-colors-styles.css.js.map +1 -0
  229. package/select/lib/filled-forced-colors-styles.scss +29 -0
  230. package/select/lib/filled-select-styles.css.d.ts +1 -0
  231. package/select/lib/filled-select-styles.css.js +9 -0
  232. package/select/lib/filled-select-styles.css.js.map +1 -0
  233. package/select/lib/filled-select-styles.scss +10 -0
  234. package/select/lib/filled-select.d.ts +10 -0
  235. package/select/lib/filled-select.js +16 -0
  236. package/select/lib/filled-select.js.map +1 -0
  237. package/select/lib/outlined-forced-colors-styles.css.d.ts +1 -0
  238. package/select/lib/outlined-forced-colors-styles.css.js +9 -0
  239. package/select/lib/outlined-forced-colors-styles.css.js.map +1 -0
  240. package/select/lib/outlined-forced-colors-styles.scss +29 -0
  241. package/select/lib/outlined-select-styles.css.d.ts +1 -0
  242. package/select/lib/outlined-select-styles.css.js +9 -0
  243. package/select/lib/outlined-select-styles.css.js.map +1 -0
  244. package/select/lib/outlined-select-styles.scss +10 -0
  245. package/select/lib/outlined-select.d.ts +10 -0
  246. package/select/lib/outlined-select.js +16 -0
  247. package/select/lib/outlined-select.js.map +1 -0
  248. package/select/lib/select.d.ts +218 -0
  249. package/select/lib/select.js +587 -0
  250. package/select/lib/select.js.map +1 -0
  251. package/select/lib/selectoption/harness.d.ts +11 -0
  252. package/select/lib/selectoption/harness.js +12 -0
  253. package/select/lib/selectoption/harness.js.map +1 -0
  254. package/select/lib/selectoption/select-option.d.ts +30 -0
  255. package/select/lib/selectoption/select-option.js +71 -0
  256. package/select/lib/selectoption/select-option.js.map +1 -0
  257. package/select/lib/shared-styles.css.d.ts +1 -0
  258. package/select/lib/shared-styles.css.js +9 -0
  259. package/select/lib/shared-styles.css.js.map +1 -0
  260. package/select/lib/shared-styles.scss +10 -0
  261. package/select/lib/shared.d.ts +52 -0
  262. package/select/lib/shared.js +41 -0
  263. package/select/lib/shared.js.map +1 -0
  264. package/select/outlined-select.d.ts +41 -0
  265. package/select/outlined-select.js +46 -0
  266. package/select/outlined-select.js.map +1 -0
  267. package/select/select-option.d.ts +44 -0
  268. package/select/select-option.js +51 -0
  269. package/select/select-option.js.map +1 -0
  270. package/slider/harness.d.ts +1 -0
  271. package/slider/harness.js +5 -0
  272. package/slider/harness.js.map +1 -1
  273. package/slider/lib/_slider.scss +146 -164
  274. package/slider/lib/forced-colors-styles.css.js +1 -1
  275. package/slider/lib/forced-colors-styles.css.js.map +1 -1
  276. package/slider/lib/forced-colors-styles.scss +2 -2
  277. package/slider/lib/slider-styles.css.js +1 -1
  278. package/slider/lib/slider-styles.css.js.map +1 -1
  279. package/slider/lib/slider.d.ts +2 -7
  280. package/slider/lib/slider.js +64 -118
  281. package/slider/lib/slider.js.map +1 -1
  282. package/switch/lib/switch.d.ts +0 -2
  283. package/switch/lib/switch.js +32 -54
  284. package/switch/lib/switch.js.map +1 -1
  285. package/textfield/lib/text-field.d.ts +0 -10
  286. package/textfield/lib/text-field.js +45 -115
  287. package/textfield/lib/text-field.js.map +1 -1
  288. package/tokens/_index.scss +3 -0
  289. package/tokens/_md-comp-assist-chip.scss +25 -20
  290. package/tokens/_md-comp-elevation.scss +0 -4
  291. package/tokens/_md-comp-fab-branded.scss +109 -1
  292. package/tokens/_md-comp-fab.scss +290 -0
  293. package/tokens/_md-comp-filled-select.scss +150 -1
  294. package/tokens/_md-comp-filter-chip.scss +103 -93
  295. package/tokens/_md-comp-input-chip.scss +77 -85
  296. package/tokens/_md-comp-linear-progress-indicator.scss +14 -1
  297. package/tokens/_md-comp-list-item.scss +201 -0
  298. package/tokens/_md-comp-list.scss +107 -26
  299. package/tokens/_md-comp-menu-item.scss +76 -0
  300. package/tokens/_md-comp-menu.scss +52 -2
  301. package/tokens/_md-comp-outlined-select.scss +150 -1
  302. package/tokens/_md-comp-slider.scss +13 -1
  303. package/tokens/_md-comp-suggestion-chip.scss +29 -21
  304. package/tokens/_values.scss +5 -2
  305. package/types/aria.d.ts +61 -1
  306. package/actionelement/action-element.d.ts +0 -79
  307. package/actionelement/action-element.js +0 -97
  308. package/actionelement/action-element.js.map +0 -1
  309. package/button/lib/state.d.ts +0 -10
  310. package/button/lib/state.js +0 -7
  311. package/button/lib/state.js.map +0 -1
  312. package/controller/action-controller.d.ts +0 -147
  313. package/controller/action-controller.js +0 -286
  314. package/controller/action-controller.js.map +0 -1
  315. package/decorators/aria-property.d.ts +0 -32
  316. package/decorators/aria-property.js +0 -99
  317. package/decorators/aria-property.js.map +0 -1
  318. package/fab/_fab-extended.scss +0 -6
  319. package/fab/fab-extended.d.ts +0 -23
  320. package/fab/fab-extended.js +0 -29
  321. package/fab/fab-extended.js.map +0 -1
  322. package/fab/lib/_fab-extended.scss +0 -73
  323. package/fab/lib/fab-extended-styles.css.js +0 -9
  324. package/fab/lib/fab-extended-styles.css.js.map +0 -1
  325. package/fab/lib/fab-extended.d.ts +0 -19
  326. package/fab/lib/fab-extended.js +0 -28
  327. package/fab/lib/fab-extended.js.map +0 -1
  328. package/fab/lib/fab-shared-styles.css.js +0 -9
  329. package/fab/lib/fab-shared-styles.css.js.map +0 -1
  330. package/fab/lib/fab-shared.js +0 -121
  331. package/fab/lib/fab-shared.js.map +0 -1
  332. package/slider/lib/_tokens.scss +0 -65
  333. /package/{fab/lib/fab-extended-styles.css.d.ts → chips/lib/filter-styles.css.d.ts} +0 -0
  334. /package/fab/lib/{fab-shared-styles.css.d.ts → fab-branded-styles.css.d.ts} +0 -0
package/README.md CHANGED
@@ -34,23 +34,23 @@ changes.
34
34
  Component | Alpha | Beta | Stable
35
35
  ----------------------------- | :---: | :--: | :----:
36
36
  Button | ✅ | ✅ | ❌
37
- FAB | ✅ | | ❌
37
+ FAB | ✅ | | ❌
38
38
  Icon button | ✅ | ✅ | ❌
39
39
  Checkbox | ✅ | ✅ | ❌
40
40
  Chips | 🟡 | ❌ | ❌
41
41
  Dialog | ✅ | ✅ | ❌
42
42
  Divider | ✅ | ✅ | 🟡
43
- Elevation | ✅ | |
43
+ Elevation | ✅ | | 🟡
44
44
  Focus ring | ✅ | ❌ | ❌
45
45
  Field | ✅ | ✅ | 🟡
46
46
  Icon | ✅ | ✅ | ❌
47
- List | ✅ | 🟡 | 🟡
48
- Menu | ✅ | 🟡 | 🟡
49
- Progress indicator (circular) | ✅ | 🟡 | ❌
50
- Progress indicator (linear) | 🟡 | | ❌
47
+ List | ✅ | |
48
+ Menu | ✅ | |
49
+ Progress indicator (circular) | ✅ | | ❌
50
+ Progress indicator (linear) | | | ❌
51
51
  Radio button | ✅ | ✅ | ❌
52
52
  Ripple | ✅ | ✅ | 🟡
53
- Select | 🟡 | | ❌
53
+ Select | | | ❌
54
54
  Slider | ✅ | ✅ | ❌
55
55
  Switch | ✅ | ✅ | ❌
56
56
  Tabs | 🟡 | ❌ | ❌
package/aria/aria.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Accessibility Object Model reflective aria property name types.
8
+ */
9
+ export type ARIAProperty = Exclude<keyof ARIAMixin, 'role'>;
10
+ /**
11
+ * Accessibility Object Model reflective aria properties.
12
+ */
13
+ export declare const ARIA_PROPERTIES: ARIAProperty[];
14
+ /**
15
+ * Accessibility Object Model aria attribute name types.
16
+ */
17
+ export type ARIAAttribute = ARIAPropertyToAttribute<ARIAProperty>;
18
+ /**
19
+ * Accessibility Object Model aria attributes.
20
+ */
21
+ export declare const ARIA_ATTRIBUTES: ("aria-atomic" | "aria-autocomplete" | "aria-busy" | "aria-checked" | "aria-colcount" | "aria-colindex" | "aria-colindextext" | "aria-colspan" | "aria-current" | "aria-disabled" | "aria-expanded" | "aria-haspopup" | "aria-hidden" | "aria-invalid" | "aria-keyshortcuts" | "aria-label" | "aria-level" | "aria-live" | "aria-modal" | "aria-multiline" | "aria-multiselectable" | "aria-orientation" | "aria-placeholder" | "aria-posinset" | "aria-pressed" | "aria-readonly" | "aria-required" | "aria-roledescription" | "aria-rowcount" | "aria-rowindex" | "aria-rowindextext" | "aria-rowspan" | "aria-selected" | "aria-setsize" | "aria-sort" | "aria-valuemax" | "aria-valuemin" | "aria-valuenow" | "aria-valuetext")[];
22
+ /**
23
+ * Checks if an attribute is one of the AOM aria attributes.
24
+ *
25
+ * @example
26
+ * isAriaAttribute('aria-label'); // true
27
+ *
28
+ * @param attribute The attribute to check.
29
+ * @return True if the attribute is an aria attribute, or false if not.
30
+ */
31
+ export declare function isAriaAttribute(attribute: string): attribute is ARIAAttribute;
32
+ /**
33
+ * Converts an AOM aria property into its corresponding attribute.
34
+ *
35
+ * @example
36
+ * ariaPropertyToAttribute('ariaLabel'); // 'aria-label'
37
+ *
38
+ * @param property The aria property.
39
+ * @return The aria attribute.
40
+ */
41
+ export declare function ariaPropertyToAttribute<K extends ARIAProperty | 'role'>(property: K): ARIAPropertyToAttribute<K>;
42
+ type ARIAPropertyToAttribute<K extends string> = K extends `aria${infer Suffix}Element${infer OptS}` ? `aria-${Lowercase<Suffix>}` : K extends `aria${infer Suffix}` ? `aria-${Lowercase<Suffix>}` : K;
43
+ export {};
package/aria/aria.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Accessibility Object Model reflective aria properties.
8
+ */
9
+ export const ARIA_PROPERTIES = [
10
+ 'ariaAtomic', 'ariaAutoComplete', 'ariaBusy',
11
+ 'ariaChecked', 'ariaColCount', 'ariaColIndex',
12
+ 'ariaColIndexText', 'ariaColSpan', 'ariaCurrent',
13
+ 'ariaDisabled', 'ariaExpanded', 'ariaHasPopup',
14
+ 'ariaHidden', 'ariaInvalid', 'ariaKeyShortcuts',
15
+ 'ariaLabel', 'ariaLevel', 'ariaLive',
16
+ 'ariaModal', 'ariaMultiLine', 'ariaMultiSelectable',
17
+ 'ariaOrientation', 'ariaPlaceholder', 'ariaPosInSet',
18
+ 'ariaPressed', 'ariaReadOnly', 'ariaRequired',
19
+ 'ariaRoleDescription', 'ariaRowCount', 'ariaRowIndex',
20
+ 'ariaRowIndexText', 'ariaRowSpan', 'ariaSelected',
21
+ 'ariaSetSize', 'ariaSort', 'ariaValueMax',
22
+ 'ariaValueMin', 'ariaValueNow', 'ariaValueText',
23
+ ];
24
+ /**
25
+ * Accessibility Object Model aria attributes.
26
+ */
27
+ export const ARIA_ATTRIBUTES = ARIA_PROPERTIES.map(ariaPropertyToAttribute);
28
+ /**
29
+ * Checks if an attribute is one of the AOM aria attributes.
30
+ *
31
+ * @example
32
+ * isAriaAttribute('aria-label'); // true
33
+ *
34
+ * @param attribute The attribute to check.
35
+ * @return True if the attribute is an aria attribute, or false if not.
36
+ */
37
+ export function isAriaAttribute(attribute) {
38
+ return attribute.startsWith('aria-');
39
+ }
40
+ /**
41
+ * Converts an AOM aria property into its corresponding attribute.
42
+ *
43
+ * @example
44
+ * ariaPropertyToAttribute('ariaLabel'); // 'aria-label'
45
+ *
46
+ * @param property The aria property.
47
+ * @return The aria attribute.
48
+ */
49
+ export function ariaPropertyToAttribute(property) {
50
+ return property
51
+ .replace('aria', 'aria-')
52
+ // IDREF attributes also include an "Element" or "Elements" suffix
53
+ .replace(/Elements?/g, '')
54
+ .toLowerCase();
55
+ }
56
+ //# sourceMappingURL=aria.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aria.js","sourceRoot":"","sources":["aria.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,YAAY,EAAW,kBAAkB,EAAE,UAAU;IACrD,aAAa,EAAU,cAAc,EAAM,cAAc;IACzD,kBAAkB,EAAK,aAAa,EAAO,aAAa;IACxD,cAAc,EAAS,cAAc,EAAM,cAAc;IACzD,YAAY,EAAW,aAAa,EAAO,kBAAkB;IAC7D,WAAW,EAAY,WAAW,EAAS,UAAU;IACrD,WAAW,EAAY,eAAe,EAAK,qBAAqB;IAChE,iBAAiB,EAAM,iBAAiB,EAAG,cAAc;IACzD,aAAa,EAAU,cAAc,EAAM,cAAc;IACzD,qBAAqB,EAAE,cAAc,EAAM,cAAc;IACzD,kBAAkB,EAAK,aAAa,EAAO,cAAc;IACzD,aAAa,EAAU,UAAU,EAAU,cAAc;IACzD,cAAc,EAAS,cAAc,EAAM,eAAe;CAC3D,CAAC;AAOF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5E;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACnC,QAAW;IACb,OAAO,QAAQ;SACH,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;QACzB,kEAAkE;SACjE,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,WAAW,EAAgC,CAAC;AAC1D,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Accessibility Object Model reflective aria property name types.\n */\nexport type ARIAProperty = Exclude<keyof ARIAMixin, 'role'>;\n\n/**\n * Accessibility Object Model reflective aria properties.\n */\nexport const ARIA_PROPERTIES: ARIAProperty[] = [\n 'ariaAtomic', 'ariaAutoComplete', 'ariaBusy',\n 'ariaChecked', 'ariaColCount', 'ariaColIndex',\n 'ariaColIndexText', 'ariaColSpan', 'ariaCurrent',\n 'ariaDisabled', 'ariaExpanded', 'ariaHasPopup',\n 'ariaHidden', 'ariaInvalid', 'ariaKeyShortcuts',\n 'ariaLabel', 'ariaLevel', 'ariaLive',\n 'ariaModal', 'ariaMultiLine', 'ariaMultiSelectable',\n 'ariaOrientation', 'ariaPlaceholder', 'ariaPosInSet',\n 'ariaPressed', 'ariaReadOnly', 'ariaRequired',\n 'ariaRoleDescription', 'ariaRowCount', 'ariaRowIndex',\n 'ariaRowIndexText', 'ariaRowSpan', 'ariaSelected',\n 'ariaSetSize', 'ariaSort', 'ariaValueMax',\n 'ariaValueMin', 'ariaValueNow', 'ariaValueText',\n];\n\n/**\n * Accessibility Object Model aria attribute name types.\n */\nexport type ARIAAttribute = ARIAPropertyToAttribute<ARIAProperty>;\n\n/**\n * Accessibility Object Model aria attributes.\n */\nexport const ARIA_ATTRIBUTES = ARIA_PROPERTIES.map(ariaPropertyToAttribute);\n\n/**\n * Checks if an attribute is one of the AOM aria attributes.\n *\n * @example\n * isAriaAttribute('aria-label'); // true\n *\n * @param attribute The attribute to check.\n * @return True if the attribute is an aria attribute, or false if not.\n */\nexport function isAriaAttribute(attribute: string): attribute is ARIAAttribute {\n return attribute.startsWith('aria-');\n}\n\n/**\n * Converts an AOM aria property into its corresponding attribute.\n *\n * @example\n * ariaPropertyToAttribute('ariaLabel'); // 'aria-label'\n *\n * @param property The aria property.\n * @return The aria attribute.\n */\nexport function ariaPropertyToAttribute<K extends ARIAProperty|'role'>(\n property: K) {\n return property\n .replace('aria', 'aria-')\n // IDREF attributes also include an \"Element\" or \"Elements\" suffix\n .replace(/Elements?/g, '')\n .toLowerCase() as ARIAPropertyToAttribute<K>;\n}\n\n// Converts an `ariaFoo` string type to an `aria-foo` string type.\ntype ARIAPropertyToAttribute<K extends string> =\n K extends `aria${infer Suffix}Element${infer OptS}` ?\n `aria-${Lowercase < Suffix >}` :\n K extends `aria${infer Suffix}` ? `aria-${Lowercase < Suffix >}` : K;\n"]}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ReactiveElement } from 'lit';
7
+ /**
8
+ * Sets up a `ReactiveElement` constructor to enable updates when delegating
9
+ * aria attributes. Elements may bind `this.aria*` properties to `aria-*`
10
+ * attributes in their render functions.
11
+ *
12
+ * This function will:
13
+ * - Call `requestUpdate()` when an aria attribute changes.
14
+ * - Add `role="presentation"` to the host.
15
+ *
16
+ * NOTE: The following features are not currently supported:
17
+ * - Delegating IDREF attributes (ex: `aria-labelledby`, `aria-controls`)
18
+ * - Delegating the `role` attribute
19
+ *
20
+ * @example
21
+ * class XButton extends LitElement {
22
+ * static {
23
+ * requestUpdateOnAriaChange(this);
24
+ * }
25
+ *
26
+ * override render() {
27
+ * return html`
28
+ * <button aria-label=${this.ariaLabel || nothing}>
29
+ * <slot></slot>
30
+ * </button>
31
+ * `;
32
+ * }
33
+ * }
34
+ *
35
+ * @param ctor The `ReactiveElement` constructor to patch.
36
+ */
37
+ export declare function requestUpdateOnAriaChange(ctor: typeof ReactiveElement): void;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ARIA_PROPERTIES, ariaPropertyToAttribute } from './aria.js';
7
+ /**
8
+ * Sets up a `ReactiveElement` constructor to enable updates when delegating
9
+ * aria attributes. Elements may bind `this.aria*` properties to `aria-*`
10
+ * attributes in their render functions.
11
+ *
12
+ * This function will:
13
+ * - Call `requestUpdate()` when an aria attribute changes.
14
+ * - Add `role="presentation"` to the host.
15
+ *
16
+ * NOTE: The following features are not currently supported:
17
+ * - Delegating IDREF attributes (ex: `aria-labelledby`, `aria-controls`)
18
+ * - Delegating the `role` attribute
19
+ *
20
+ * @example
21
+ * class XButton extends LitElement {
22
+ * static {
23
+ * requestUpdateOnAriaChange(this);
24
+ * }
25
+ *
26
+ * override render() {
27
+ * return html`
28
+ * <button aria-label=${this.ariaLabel || nothing}>
29
+ * <slot></slot>
30
+ * </button>
31
+ * `;
32
+ * }
33
+ * }
34
+ *
35
+ * @param ctor The `ReactiveElement` constructor to patch.
36
+ */
37
+ export function requestUpdateOnAriaChange(ctor) {
38
+ for (const ariaProperty of ARIA_PROPERTIES) {
39
+ ctor.createProperty(ariaProperty, {
40
+ attribute: ariaPropertyToAttribute(ariaProperty),
41
+ reflect: true,
42
+ });
43
+ }
44
+ ctor.addInitializer(element => {
45
+ const controller = {
46
+ hostConnected() {
47
+ element.setAttribute('role', 'presentation');
48
+ }
49
+ };
50
+ element.addController(controller);
51
+ });
52
+ }
53
+ //# sourceMappingURL=delegate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegate.js","sourceRoot":"","sources":["delegate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,eAAe,EAAE,uBAAuB,EAAC,MAAM,WAAW,CAAC;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAA4B;IACpE,KAAK,MAAM,YAAY,IAAI,eAAe,EAAE;QAC1C,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE;YAChC,SAAS,EAAE,uBAAuB,CAAC,YAAY,CAAC;YAChD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;KACJ;IAED,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;QAC5B,MAAM,UAAU,GAAG;YACjB,aAAa;gBACX,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YAC/C,CAAC;SACF,CAAC;QAEF,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {ReactiveElement} from 'lit';\n\nimport {ARIA_PROPERTIES, ariaPropertyToAttribute} from './aria.js';\n\n/**\n * Sets up a `ReactiveElement` constructor to enable updates when delegating\n * aria attributes. Elements may bind `this.aria*` properties to `aria-*`\n * attributes in their render functions.\n *\n * This function will:\n * - Call `requestUpdate()` when an aria attribute changes.\n * - Add `role=\"presentation\"` to the host.\n *\n * NOTE: The following features are not currently supported:\n * - Delegating IDREF attributes (ex: `aria-labelledby`, `aria-controls`)\n * - Delegating the `role` attribute\n *\n * @example\n * class XButton extends LitElement {\n * static {\n * requestUpdateOnAriaChange(this);\n * }\n *\n * override render() {\n * return html`\n * <button aria-label=${this.ariaLabel || nothing}>\n * <slot></slot>\n * </button>\n * `;\n * }\n * }\n *\n * @param ctor The `ReactiveElement` constructor to patch.\n */\nexport function requestUpdateOnAriaChange(ctor: typeof ReactiveElement) {\n for (const ariaProperty of ARIA_PROPERTIES) {\n ctor.createProperty(ariaProperty, {\n attribute: ariaPropertyToAttribute(ariaProperty),\n reflect: true,\n });\n }\n\n ctor.addInitializer(element => {\n const controller = {\n hostConnected() {\n element.setAttribute('role', 'presentation');\n }\n };\n\n element.addController(controller);\n });\n}\n"]}
package/badge/badge.d.ts CHANGED
@@ -10,7 +10,6 @@ declare global {
10
10
  }
11
11
  }
12
12
  /**
13
- * @soyCompatible
14
13
  * @final
15
14
  * @suppress {visibility}
16
15
  */
package/badge/badge.js CHANGED
@@ -8,7 +8,6 @@ import { customElement } from 'lit/decorators.js';
8
8
  import { Badge } from './lib/badge.js';
9
9
  import { styles } from './lib/badge-styles.css.js';
10
10
  /**
11
- * @soyCompatible
12
11
  * @final
13
12
  * @suppress {visibility}
14
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["badge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAQjD;;;;GAIG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,KAAK;;AAChB,cAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAEnB;SAFY,OAAO","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {Badge} from './lib/badge.js';\nimport {styles} from './lib/badge-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-badge': MdBadge;\n }\n}\n\n/**\n * @soyCompatible\n * @final\n * @suppress {visibility}\n */\n@customElement('md-badge')\nexport class MdBadge extends Badge {\n static override styles = [styles];\n}\n"]}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["badge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAQjD;;;GAGG;AAEI,IAAM,OAAO,GAAb,MAAM,OAAQ,SAAQ,KAAK;;AAChB,cAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,OAAO;IADnB,aAAa,CAAC,UAAU,CAAC;GACb,OAAO,CAEnB;SAFY,OAAO","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {Badge} from './lib/badge.js';\nimport {styles} from './lib/badge-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-badge': MdBadge;\n }\n}\n\n/**\n * @final\n * @suppress {visibility}\n */\n@customElement('md-badge')\nexport class MdBadge extends Badge {\n static override styles = [styles];\n}\n"]}
@@ -3,13 +3,14 @@
3
3
  * Copyright 2022 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { LitElement, TemplateResult } from 'lit';
7
- import { ClassInfo } from 'lit/directives/class-map.js';
8
- /** @soyCompatible */
6
+ import { LitElement } from 'lit';
7
+ /**
8
+ * TODO(b/265340196): add docs
9
+ */
9
10
  export declare class Badge extends LitElement {
10
11
  value: string;
11
- /** @soyTemplate */
12
- protected render(): TemplateResult;
13
- /** @soyTemplate */
14
- protected getRenderClasses(): ClassInfo;
12
+ protected render(): import("lit-html").TemplateResult<1>;
13
+ protected getRenderClasses(): {
14
+ 'md3-badge--large': string;
15
+ };
15
16
  }
@@ -3,21 +3,21 @@
3
3
  * Copyright 2022 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { __decorate, __metadata } from "tslib";
6
+ import { __decorate } from "tslib";
7
7
  import { html, LitElement } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  import { classMap } from 'lit/directives/class-map.js';
10
- /** @soyCompatible */
10
+ /**
11
+ * TODO(b/265340196): add docs
12
+ */
11
13
  export class Badge extends LitElement {
12
14
  constructor() {
13
15
  super(...arguments);
14
16
  this.value = '';
15
17
  }
16
- /** @soyTemplate */
17
18
  render() {
18
19
  return html `<div class="md3-badge ${classMap(this.getRenderClasses())}"><p class="md3-badge__value">${this.value}</p></div>`;
19
20
  }
20
- /** @soyTemplate */
21
21
  getRenderClasses() {
22
22
  return {
23
23
  'md3-badge--large': this.value,
@@ -25,7 +25,6 @@ export class Badge extends LitElement {
25
25
  }
26
26
  }
27
27
  __decorate([
28
- property({ type: String }),
29
- __metadata("design:type", Object)
28
+ property()
30
29
  ], Badge.prototype, "value", void 0);
31
30
  //# sourceMappingURL=badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sourceRoot":"","sources":["badge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,IAAI,EAAE,UAAU,EAAiB,MAAM,KAAK,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAY,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAEhE,qBAAqB;AACrB,MAAM,OAAO,KAAM,SAAQ,UAAU;IAArC;;QAC4B,UAAK,GAAG,EAAE,CAAC;IAevC,CAAC;IAbC,mBAAmB;IACA,MAAM;QACvB,OAAO,IAAI,CAAA,yBACP,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iCACjC,IAAI,CAAC,KAAK,YAAY,CAAC;IAC7B,CAAC;IAED,mBAAmB;IACT,gBAAgB;QACxB,OAAO;YACL,kBAAkB,EAAE,IAAI,CAAC,KAAK;SAC/B,CAAC;IACJ,CAAC;CACF;AAfC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;oCAAY","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, LitElement, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\n\n/** @soyCompatible */\nexport class Badge extends LitElement {\n @property({type: String}) value = '';\n\n /** @soyTemplate */\n protected override render(): TemplateResult {\n return html`<div class=\"md3-badge ${\n classMap(this.getRenderClasses())}\"><p class=\"md3-badge__value\">${\n this.value}</p></div>`;\n }\n\n /** @soyTemplate */\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-badge--large': this.value,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"badge.js","sourceRoot":"","sources":["badge.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACrC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,KAAM,SAAQ,UAAU;IAArC;;QACc,UAAK,GAAG,EAAE,CAAC;IAazB,CAAC;IAXoB,MAAM;QACvB,OAAO,IAAI,CAAA,yBACP,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,iCACjC,IAAI,CAAC,KAAK,YAAY,CAAC;IAC7B,CAAC;IAES,gBAAgB;QACxB,OAAO;YACL,kBAAkB,EAAE,IAAI,CAAC,KAAK;SAC/B,CAAC;IACJ,CAAC;CACF;AAba;IAAX,QAAQ,EAAE;oCAAY","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, LitElement} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\n\n/**\n * TODO(b/265340196): add docs\n */\nexport class Badge extends LitElement {\n @property() value = '';\n\n protected override render() {\n return html`<div class=\"md3-badge ${\n classMap(this.getRenderClasses())}\"><p class=\"md3-badge__value\">${\n this.value}</p></div>`;\n }\n\n protected getRenderClasses() {\n return {\n 'md3-badge--large': this.value,\n };\n }\n}\n"]}
@@ -6,18 +6,28 @@
6
6
  // stylelint-disable selector-class-pattern --
7
7
  // Selector '.md3-*' should only be used in this project.
8
8
 
9
+ // go/keep-sorted start
10
+ @use 'sass:map';
11
+ // go/keep-sorted end
9
12
  // go/keep-sorted start
10
13
  @use '../../elevation/elevation';
14
+ @use '../../tokens';
11
15
  // go/keep-sorted end
12
16
 
17
+ $_md-sys-motion: tokens.md-sys-motion-values();
18
+
13
19
  @mixin styles() {
20
+ md-elevation {
21
+ // TODO: replace duration with animation tokens
22
+ transition-duration: 280ms;
23
+ transition-timing-function: map.get($_md-sys-motion, 'emphasized-easing');
24
+ }
25
+
14
26
  .md3-button {
15
27
  @include elevation.theme(
16
28
  (
17
- // TODO: replace duration with animation tokens
18
- 'duration': 280ms,
19
29
  'level': var(--_container-elevation),
20
- 'shadow-color': var(--_container-shadow-color)
30
+ 'shadow-color': var(--_container-shadow-color),
21
31
  )
22
32
  );
23
33
 
@@ -8,16 +8,11 @@ import '../../ripple/ripple.js';
8
8
  import { LitElement, TemplateResult } from 'lit';
9
9
  import { ClassInfo } from 'lit/directives/class-map.js';
10
10
  import { MdRipple } from '../../ripple/ripple.js';
11
- import { ARIAExpanded, ARIAHasPopup } from '../../types/aria.js';
12
- import { ButtonState } from './state.js';
13
11
  /**
14
12
  * A button component.
15
13
  */
16
- export declare abstract class Button extends LitElement implements ButtonState {
14
+ export declare abstract class Button extends LitElement {
17
15
  static shadowRootOptions: ShadowRootInit;
18
- ariaExpanded: ARIAExpanded;
19
- ariaHasPopup: ARIAHasPopup;
20
- ariaLabel: string;
21
16
  /**
22
17
  * Whether or not the button is disabled.
23
18
  */
@@ -38,12 +33,6 @@ export declare abstract class Button extends LitElement implements ButtonState {
38
33
  * _Note:_ Link buttons cannot have trailing icons.
39
34
  */
40
35
  trailingIcon: boolean;
41
- /**
42
- * The button's visible label.
43
- *
44
- * @deprecated Set text as content of the button instead.
45
- */
46
- label: string;
47
36
  /**
48
37
  * Whether to display the icon or not.
49
38
  */
@@ -3,18 +3,17 @@
3
3
  * Copyright 2019 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { __decorate, __metadata } from "tslib";
7
- // This is required for @ariaProperty
8
- // tslint:disable:no-new-decorators
6
+ var _a;
7
+ import { __decorate } from "tslib";
9
8
  import '../../focus/focus-ring.js';
10
9
  import '../../ripple/ripple.js';
11
- import { html, LitElement, nothing } from 'lit';
10
+ import { html, isServer, LitElement, nothing } from 'lit';
12
11
  import { property, query, queryAssignedElements, queryAsync, state } from 'lit/decorators.js';
13
12
  import { classMap } from 'lit/directives/class-map.js';
14
13
  import { when } from 'lit/directives/when.js';
15
14
  import { html as staticHtml, literal } from 'lit/static-html.js';
15
+ import { requestUpdateOnAriaChange } from '../../aria/delegate.js';
16
16
  import { dispatchActivationClick, isActivationClick } from '../../controller/events.js';
17
- import { ariaProperty } from '../../decorators/aria-property.js';
18
17
  import { pointerPress, shouldShowStrongFocus } from '../../focus/strong-focus.js';
19
18
  import { ripple } from '../../ripple/directive.js';
20
19
  /**
@@ -34,13 +33,6 @@ export class Button extends LitElement {
34
33
  * _Note:_ Link buttons cannot have trailing icons.
35
34
  */
36
35
  this.trailingIcon = false;
37
- // TODO(b/272598771): remove label property
38
- /**
39
- * The button's visible label.
40
- *
41
- * @deprecated Set text as content of the button instead.
42
- */
43
- this.label = '';
44
36
  /**
45
37
  * Whether to display the icon or not.
46
38
  */
@@ -67,7 +59,9 @@ export class Button extends LitElement {
67
59
  this.renderRipple = () => {
68
60
  return html `<md-ripple class="md3-button__ripple" ?disabled="${this.disabled}"></md-ripple>`;
69
61
  };
70
- this.addEventListener('click', this.handleActivationClick);
62
+ if (!isServer) {
63
+ this.addEventListener('click', this.handleActivationClick);
64
+ }
71
65
  }
72
66
  focus() {
73
67
  this.buttonElement.focus();
@@ -79,13 +73,15 @@ export class Button extends LitElement {
79
73
  // Link buttons may not be disabled
80
74
  const isDisabled = this.disabled && !this.href;
81
75
  const button = this.href ? literal `a` : literal `button`;
76
+ // Needed for closure conformance
77
+ const { ariaLabel, ariaHasPopup, ariaExpanded } = this;
82
78
  return staticHtml `
83
79
  <${button}
84
80
  class="md3-button ${classMap(this.getRenderClasses())}"
85
81
  ?disabled=${isDisabled}
86
- aria-label="${this.ariaLabel || nothing}"
87
- aria-haspopup="${this.ariaHasPopup || nothing}"
88
- aria-expanded="${this.ariaExpanded || nothing}"
82
+ aria-label="${ariaLabel || nothing}"
83
+ aria-haspopup="${ariaHasPopup || nothing}"
84
+ aria-expanded="${ariaExpanded || nothing}"
89
85
  href=${this.href || nothing}
90
86
  target=${this.target || nothing}
91
87
  @pointerdown="${this.handlePointerDown}"
@@ -102,7 +98,7 @@ export class Button extends LitElement {
102
98
  ${this.renderLeadingIcon()}
103
99
  ${this.renderLabel()}
104
100
  ${this.renderTrailingIcon()}
105
- </${button}}>`;
101
+ </${button}>`;
106
102
  }
107
103
  getRenderClasses() {
108
104
  return {
@@ -125,8 +121,7 @@ export class Button extends LitElement {
125
121
  return html `<md-focus-ring .visible="${this.showFocusRing}"></md-focus-ring>`;
126
122
  }
127
123
  renderLabel() {
128
- // TODO(b/272598771): remove the ternary when label property is removed
129
- return html `<span class="md3-button__label">${this.label ? this.label : html `<slot></slot>`}</span>`;
124
+ return html `<span class="md3-button__label"><slot></slot></span>`;
130
125
  }
131
126
  renderLeadingIcon() {
132
127
  return this.trailingIcon ? '' : this.renderIcon();
@@ -156,68 +151,42 @@ export class Button extends LitElement {
156
151
  this.hasIcon = this.assignedIcons.length > 0;
157
152
  }
158
153
  }
154
+ _a = Button;
155
+ (() => {
156
+ requestUpdateOnAriaChange(_a);
157
+ })();
159
158
  Button.shadowRootOptions = { mode: 'open', delegatesFocus: true };
160
159
  __decorate([
161
- property({ type: String, attribute: 'data-aria-expanded', noAccessor: true }),
162
- ariaProperty,
163
- __metadata("design:type", String)
164
- ], Button.prototype, "ariaExpanded", void 0);
165
- __decorate([
166
- property({ type: String, attribute: 'data-aria-has-popup', noAccessor: true }),
167
- ariaProperty,
168
- __metadata("design:type", String)
169
- ], Button.prototype, "ariaHasPopup", void 0);
170
- __decorate([
171
- property({ type: String, attribute: 'data-aria-label', noAccessor: true }),
172
- ariaProperty,
173
- __metadata("design:type", String)
174
- ], Button.prototype, "ariaLabel", void 0);
175
- __decorate([
176
- property({ type: Boolean, reflect: true }),
177
- __metadata("design:type", Object)
160
+ property({ type: Boolean, reflect: true })
178
161
  ], Button.prototype, "disabled", void 0);
179
162
  __decorate([
180
- property({ type: String }),
181
- __metadata("design:type", String)
163
+ property()
182
164
  ], Button.prototype, "href", void 0);
183
165
  __decorate([
184
- property({ type: String }),
185
- __metadata("design:type", String)
166
+ property()
186
167
  ], Button.prototype, "target", void 0);
187
168
  __decorate([
188
- property({ type: Boolean, attribute: 'trailingicon' }),
189
- __metadata("design:type", Object)
169
+ property({ type: Boolean, attribute: 'trailingicon' })
190
170
  ], Button.prototype, "trailingIcon", void 0);
191
171
  __decorate([
192
- property({ type: String }),
193
- __metadata("design:type", Object)
194
- ], Button.prototype, "label", void 0);
195
- __decorate([
196
- property({ type: Boolean }),
197
- __metadata("design:type", Object)
172
+ property({ type: Boolean })
198
173
  ], Button.prototype, "hasIcon", void 0);
199
174
  __decorate([
200
- property({ type: Boolean }),
201
- __metadata("design:type", Object)
175
+ property({ type: Boolean })
202
176
  ], Button.prototype, "preventClickDefault", void 0);
203
177
  __decorate([
204
- query('.md3-button'),
205
- __metadata("design:type", HTMLElement)
178
+ query('.md3-button')
206
179
  ], Button.prototype, "buttonElement", void 0);
207
180
  __decorate([
208
- queryAsync('md-ripple'),
209
- __metadata("design:type", Promise)
181
+ queryAsync('md-ripple')
210
182
  ], Button.prototype, "ripple", void 0);
211
183
  __decorate([
212
- state(),
213
- __metadata("design:type", Object)
184
+ state()
214
185
  ], Button.prototype, "showFocusRing", void 0);
215
186
  __decorate([
216
- state(),
217
- __metadata("design:type", Object)
187
+ state()
218
188
  ], Button.prototype, "showRipple", void 0);
219
189
  __decorate([
220
- queryAssignedElements({ slot: 'icon', flatten: true }),
221
- __metadata("design:type", Array)
190
+ queryAssignedElements({ slot: 'icon', flatten: true })
222
191
  ], Button.prototype, "assignedIcons", void 0);
223
192
  //# sourceMappingURL=button.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["button.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// This is required for @ariaProperty\n// tslint:disable:no-new-decorators\n\nimport '../../focus/focus-ring.js';\nimport '../../ripple/ripple.js';\n\nimport {html, LitElement, nothing, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, queryAsync, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {when} from 'lit/directives/when.js';\nimport {html as staticHtml, literal} from 'lit/static-html.js';\n\nimport {dispatchActivationClick, isActivationClick} from '../../controller/events.js';\nimport {ariaProperty} from '../../decorators/aria-property.js';\nimport {pointerPress, shouldShowStrongFocus} from '../../focus/strong-focus.js';\nimport {ripple} from '../../ripple/directive.js';\nimport {MdRipple} from '../../ripple/ripple.js';\nimport {ARIAExpanded, ARIAHasPopup} from '../../types/aria.js';\n\nimport {ButtonState} from './state.js';\n\n/**\n * A button component.\n */\nexport abstract class Button extends LitElement implements ButtonState {\n static override shadowRootOptions:\n ShadowRootInit = {mode: 'open', delegatesFocus: true};\n\n @property({type: String, attribute: 'data-aria-expanded', noAccessor: true})\n @ariaProperty\n override ariaExpanded!: ARIAExpanded;\n\n @property({type: String, attribute: 'data-aria-has-popup', noAccessor: true})\n @ariaProperty\n override ariaHasPopup!: ARIAHasPopup;\n\n @property({type: String, attribute: 'data-aria-label', noAccessor: true})\n @ariaProperty\n override ariaLabel!: string;\n\n /**\n * Whether or not the button is disabled.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /**\n * The URL that the link button points to.\n */\n @property({type: String}) href?: string;\n\n /**\n * Where to display the linked `href` URL for a link button. Common options\n * include `_blank` to open in a new tab.\n */\n @property({type: String}) target?: string;\n\n /**\n * Whether to render the icon at the inline end of the label rather than the\n * inline start.\n *\n * _Note:_ Link buttons cannot have trailing icons.\n */\n @property({type: Boolean, attribute: 'trailingicon'}) trailingIcon = false;\n\n // TODO(b/272598771): remove label property\n /**\n * The button's visible label.\n *\n * @deprecated Set text as content of the button instead.\n */\n @property({type: String}) label = '';\n\n /**\n * Whether to display the icon or not.\n */\n @property({type: Boolean}) hasIcon = false;\n\n /**\n * Whether `preventDefault()` should be called on the underlying button.\n * Useful for preventing certain native functionalities like preventing form\n * submissions.\n */\n @property({type: Boolean}) preventClickDefault = false;\n\n @query('.md3-button') protected buttonElement!: HTMLElement;\n\n @queryAsync('md-ripple') protected ripple!: Promise<MdRipple|null>;\n\n @state() protected showFocusRing = false;\n\n @state() protected showRipple = false;\n\n @queryAssignedElements({slot: 'icon', flatten: true})\n protected assignedIcons!: HTMLElement[];\n\n constructor() {\n super();\n this.addEventListener('click', this.handleActivationClick);\n }\n\n private readonly handleActivationClick = (event: MouseEvent) => {\n if (!isActivationClick((event))) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.buttonElement);\n };\n\n override focus() {\n this.buttonElement.focus();\n }\n\n override blur() {\n this.buttonElement.blur();\n }\n\n protected readonly getRipple = () => {\n this.showRipple = true;\n return this.ripple;\n };\n\n protected override render(): TemplateResult {\n // Link buttons may not be disabled\n const isDisabled = this.disabled && !this.href;\n\n const button = this.href ? literal`a` : literal`button`;\n return staticHtml`\n <${button}\n class=\"md3-button ${classMap(this.getRenderClasses())}\"\n ?disabled=${isDisabled}\n aria-label=\"${this.ariaLabel || nothing}\"\n aria-haspopup=\"${this.ariaHasPopup || nothing}\"\n aria-expanded=\"${this.ariaExpanded || nothing}\"\n href=${this.href || nothing}\n target=${this.target || nothing}\n @pointerdown=\"${this.handlePointerDown}\"\n @focus=\"${this.handleFocus}\"\n @blur=\"${this.handleBlur}\"\n @click=\"${this.handleClick}\"\n ${ripple(this.getRipple)}\n >\n ${this.renderFocusRing()}\n ${this.renderElevation()}\n ${when(this.showRipple, this.renderRipple)}\n ${this.renderOutline()}\n ${this.renderTouchTarget()}\n ${this.renderLeadingIcon()}\n ${this.renderLabel()}\n ${this.renderTrailingIcon()}\n </${button}}>`;\n }\n\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-button--icon-leading': !this.trailingIcon && this.hasIcon,\n 'md3-button--icon-trailing': this.trailingIcon && this.hasIcon,\n };\n }\n\n protected renderTouchTarget(): TemplateResult {\n return html`\n <span class=\"md3-button__touch\"></span>\n `;\n }\n\n protected renderElevation(): TemplateResult {\n return html``;\n }\n\n protected renderRipple = () => {\n return html`<md-ripple class=\"md3-button__ripple\" ?disabled=\"${\n this.disabled}\"></md-ripple>`;\n };\n\n protected renderOutline(): TemplateResult {\n return html``;\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<md-focus-ring .visible=\"${\n this.showFocusRing}\"></md-focus-ring>`;\n }\n\n protected renderLabel(): TemplateResult {\n // TODO(b/272598771): remove the ternary when label property is removed\n return html`<span class=\"md3-button__label\">${\n this.label ? this.label : html`<slot></slot>`}</span>`;\n }\n\n protected renderLeadingIcon(): TemplateResult|string {\n return this.trailingIcon ? '' : this.renderIcon();\n }\n\n protected renderTrailingIcon(): TemplateResult|string {\n return this.trailingIcon ? this.renderIcon() : '';\n }\n\n protected renderIcon(): TemplateResult {\n return html`<slot name=\"icon\" @slotchange=\"${\n this.handleSlotChange}\"></slot>`;\n }\n\n protected handlePointerDown(e: PointerEvent) {\n pointerPress();\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n protected handleClick(e: MouseEvent) {\n if (this.preventClickDefault) {\n e.preventDefault();\n }\n }\n\n protected handleFocus() {\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n protected handleBlur() {\n this.showFocusRing = false;\n }\n\n protected handleSlotChange() {\n this.hasIcon = this.assignedIcons.length > 0;\n }\n}\n"]}
1
+ {"version":3,"file":"button.js","sourceRoot":"","sources":["button.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../focus/focus-ring.js';\nimport '../../ripple/ripple.js';\n\nimport {html, isServer, LitElement, nothing, TemplateResult} from 'lit';\nimport {property, query, queryAssignedElements, queryAsync, state} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {when} from 'lit/directives/when.js';\nimport {html as staticHtml, literal} from 'lit/static-html.js';\n\nimport {requestUpdateOnAriaChange} from '../../aria/delegate.js';\nimport {dispatchActivationClick, isActivationClick} from '../../controller/events.js';\nimport {pointerPress, shouldShowStrongFocus} from '../../focus/strong-focus.js';\nimport {ripple} from '../../ripple/directive.js';\nimport {MdRipple} from '../../ripple/ripple.js';\nimport {ARIAMixinStrict} from '../../types/aria.js';\n\n/**\n * A button component.\n */\nexport abstract class Button extends LitElement {\n static {\n requestUpdateOnAriaChange(this);\n }\n\n static override shadowRootOptions:\n ShadowRootInit = {mode: 'open', delegatesFocus: true};\n\n /**\n * Whether or not the button is disabled.\n */\n @property({type: Boolean, reflect: true}) disabled = false;\n\n /**\n * The URL that the link button points to.\n */\n @property() href?: string;\n\n /**\n * Where to display the linked `href` URL for a link button. Common options\n * include `_blank` to open in a new tab.\n */\n @property() target?: string;\n\n /**\n * Whether to render the icon at the inline end of the label rather than the\n * inline start.\n *\n * _Note:_ Link buttons cannot have trailing icons.\n */\n @property({type: Boolean, attribute: 'trailingicon'}) trailingIcon = false;\n\n /**\n * Whether to display the icon or not.\n */\n @property({type: Boolean}) hasIcon = false;\n\n /**\n * Whether `preventDefault()` should be called on the underlying button.\n * Useful for preventing certain native functionalities like preventing form\n * submissions.\n */\n @property({type: Boolean}) preventClickDefault = false;\n\n @query('.md3-button') protected buttonElement!: HTMLElement;\n\n @queryAsync('md-ripple') protected ripple!: Promise<MdRipple|null>;\n\n @state() protected showFocusRing = false;\n\n @state() protected showRipple = false;\n\n @queryAssignedElements({slot: 'icon', flatten: true})\n protected assignedIcons!: HTMLElement[];\n\n constructor() {\n super();\n if (!isServer) {\n this.addEventListener('click', this.handleActivationClick);\n }\n }\n\n private readonly handleActivationClick = (event: MouseEvent) => {\n if (!isActivationClick((event))) {\n return;\n }\n this.focus();\n dispatchActivationClick(this.buttonElement);\n };\n\n override focus() {\n this.buttonElement.focus();\n }\n\n override blur() {\n this.buttonElement.blur();\n }\n\n protected readonly getRipple = () => {\n this.showRipple = true;\n return this.ripple;\n };\n\n protected override render(): TemplateResult {\n // Link buttons may not be disabled\n const isDisabled = this.disabled && !this.href;\n\n const button = this.href ? literal`a` : literal`button`;\n // Needed for closure conformance\n const {ariaLabel, ariaHasPopup, ariaExpanded} = this as ARIAMixinStrict;\n return staticHtml`\n <${button}\n class=\"md3-button ${classMap(this.getRenderClasses())}\"\n ?disabled=${isDisabled}\n aria-label=\"${ariaLabel || nothing}\"\n aria-haspopup=\"${ariaHasPopup || nothing}\"\n aria-expanded=\"${ariaExpanded || nothing}\"\n href=${this.href || nothing}\n target=${this.target || nothing}\n @pointerdown=\"${this.handlePointerDown}\"\n @focus=\"${this.handleFocus}\"\n @blur=\"${this.handleBlur}\"\n @click=\"${this.handleClick}\"\n ${ripple(this.getRipple)}\n >\n ${this.renderFocusRing()}\n ${this.renderElevation()}\n ${when(this.showRipple, this.renderRipple)}\n ${this.renderOutline()}\n ${this.renderTouchTarget()}\n ${this.renderLeadingIcon()}\n ${this.renderLabel()}\n ${this.renderTrailingIcon()}\n </${button}>`;\n }\n\n protected getRenderClasses(): ClassInfo {\n return {\n 'md3-button--icon-leading': !this.trailingIcon && this.hasIcon,\n 'md3-button--icon-trailing': this.trailingIcon && this.hasIcon,\n };\n }\n\n protected renderTouchTarget(): TemplateResult {\n return html`\n <span class=\"md3-button__touch\"></span>\n `;\n }\n\n protected renderElevation(): TemplateResult {\n return html``;\n }\n\n protected renderRipple = () => {\n return html`<md-ripple class=\"md3-button__ripple\" ?disabled=\"${\n this.disabled}\"></md-ripple>`;\n };\n\n protected renderOutline(): TemplateResult {\n return html``;\n }\n\n protected renderFocusRing(): TemplateResult {\n return html`<md-focus-ring .visible=\"${\n this.showFocusRing}\"></md-focus-ring>`;\n }\n\n protected renderLabel(): TemplateResult {\n return html`<span class=\"md3-button__label\"><slot></slot></span>`;\n }\n\n protected renderLeadingIcon(): TemplateResult|string {\n return this.trailingIcon ? '' : this.renderIcon();\n }\n\n protected renderTrailingIcon(): TemplateResult|string {\n return this.trailingIcon ? this.renderIcon() : '';\n }\n\n protected renderIcon(): TemplateResult {\n return html`<slot name=\"icon\" @slotchange=\"${\n this.handleSlotChange}\"></slot>`;\n }\n\n protected handlePointerDown(e: PointerEvent) {\n pointerPress();\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n protected handleClick(e: MouseEvent) {\n if (this.preventClickDefault) {\n e.preventDefault();\n }\n }\n\n protected handleFocus() {\n this.showFocusRing = shouldShowStrongFocus();\n }\n\n protected handleBlur() {\n this.showFocusRing = false;\n }\n\n protected handleSlotChange() {\n this.hasIcon = this.assignedIcons.length > 0;\n }\n}\n"]}
@@ -4,6 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { css } from 'lit';
7
- export const styles = css `.md3-button{--md-elevation-duration:280ms;--md-elevation-level:var(--_container-elevation);--md-elevation-shadow-color:var(--_container-shadow-color)}.md3-button:focus{--md-elevation-level:var(--_focus-container-elevation)}.md3-button:hover{--md-elevation-level:var(--_hover-container-elevation)}.md3-button:active{--md-elevation-level:var(--_pressed-container-elevation)}.md3-button:disabled{--md-elevation-level:var(--_disabled-container-elevation)}/*# sourceMappingURL=shared-elevation-styles.css.map */
7
+ export const styles = css `md-elevation{transition-duration:280ms}.md3-button{--md-elevation-level:var(--_container-elevation);--md-elevation-shadow-color:var(--_container-shadow-color)}.md3-button:focus{--md-elevation-level:var(--_focus-container-elevation)}.md3-button:hover{--md-elevation-level:var(--_hover-container-elevation)}.md3-button:active{--md-elevation-level:var(--_pressed-container-elevation)}.md3-button:disabled{--md-elevation-level:var(--_disabled-container-elevation)}/*# sourceMappingURL=shared-elevation-styles.css.map */
8
8
  `;
9
9
  //# sourceMappingURL=shared-elevation-styles.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"shared-elevation-styles.css.js","sourceRoot":"","sources":["shared-elevation-styles.css.ts"],"names":[],"mappings":"AAAA;;;;IAII;AACH,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;CACzB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n import {css} from 'lit';\n export const styles = css`.md3-button{--md-elevation-duration:280ms;--md-elevation-level:var(--_container-elevation);--md-elevation-shadow-color:var(--_container-shadow-color)}.md3-button:focus{--md-elevation-level:var(--_focus-container-elevation)}.md3-button:hover{--md-elevation-level:var(--_hover-container-elevation)}.md3-button:active{--md-elevation-level:var(--_pressed-container-elevation)}.md3-button:disabled{--md-elevation-level:var(--_disabled-container-elevation)}/*# sourceMappingURL=shared-elevation-styles.css.map */\n`;\n "]}
1
+ {"version":3,"file":"shared-elevation-styles.css.js","sourceRoot":"","sources":["shared-elevation-styles.css.ts"],"names":[],"mappings":"AAAA;;;;IAII;AACH,OAAO,EAAC,GAAG,EAAC,MAAM,KAAK,CAAC;AACxB,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;CACzB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n import {css} from 'lit';\n export const styles = css`md-elevation{transition-duration:280ms}.md3-button{--md-elevation-level:var(--_container-elevation);--md-elevation-shadow-color:var(--_container-shadow-color)}.md3-button:focus{--md-elevation-level:var(--_focus-container-elevation)}.md3-button:hover{--md-elevation-level:var(--_hover-container-elevation)}.md3-button:active{--md-elevation-level:var(--_pressed-container-elevation)}.md3-button:disabled{--md-elevation-level:var(--_disabled-container-elevation)}/*# sourceMappingURL=shared-elevation-styles.css.map */\n`;\n "]}