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

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 (321) hide show
  1. package/README.md +3 -3
  2. package/aria/aria.js +37 -13
  3. package/aria/aria.js.map +1 -1
  4. package/aria/delegate.d.ts +1 -1
  5. package/aria/delegate.js +1 -1
  6. package/aria/delegate.js.map +1 -1
  7. package/badge/lib/badge.d.ts +0 -3
  8. package/badge/lib/badge.js +4 -6
  9. package/badge/lib/badge.js.map +1 -1
  10. package/button/lib/_elevated-button.scss +35 -6
  11. package/button/lib/_filled-button.scss +35 -3
  12. package/button/lib/_outlined-button.scss +35 -6
  13. package/button/lib/_shared.scss +4 -2
  14. package/button/lib/_text-button.scss +35 -6
  15. package/button/lib/_tonal-button.scss +34 -7
  16. package/button/lib/button.d.ts +23 -26
  17. package/button/lib/button.js +12 -30
  18. package/button/lib/button.js.map +1 -1
  19. package/button/lib/elevated-button.d.ts +6 -4
  20. package/button/lib/elevated-button.js.map +1 -1
  21. package/button/lib/elevated-styles.css.js +1 -1
  22. package/button/lib/elevated-styles.css.js.map +1 -1
  23. package/button/lib/filled-button.d.ts +6 -4
  24. package/button/lib/filled-button.js.map +1 -1
  25. package/button/lib/filled-styles.css.js +1 -1
  26. package/button/lib/filled-styles.css.js.map +1 -1
  27. package/button/lib/outlined-button.d.ts +6 -4
  28. package/button/lib/outlined-button.js.map +1 -1
  29. package/button/lib/outlined-styles.css.js +1 -1
  30. package/button/lib/outlined-styles.css.js.map +1 -1
  31. package/button/lib/shared-styles.css.js +1 -1
  32. package/button/lib/shared-styles.css.js.map +1 -1
  33. package/button/lib/text-button.d.ts +5 -2
  34. package/button/lib/text-button.js.map +1 -1
  35. package/button/lib/text-styles.css.js +1 -1
  36. package/button/lib/text-styles.css.js.map +1 -1
  37. package/button/lib/tonal-button.d.ts +6 -4
  38. package/button/lib/tonal-button.js.map +1 -1
  39. package/button/lib/tonal-styles.css.js +1 -1
  40. package/button/lib/tonal-styles.css.js.map +1 -1
  41. package/checkbox/lib/_checkbox.scss +48 -47
  42. package/checkbox/lib/checkbox-styles.css.js +1 -1
  43. package/checkbox/lib/checkbox-styles.css.js.map +1 -1
  44. package/checkbox/lib/checkbox.d.ts +2 -6
  45. package/checkbox/lib/checkbox.js +3 -20
  46. package/checkbox/lib/checkbox.js.map +1 -1
  47. package/checkbox/lib/forced-colors-styles.css.js +1 -1
  48. package/checkbox/lib/forced-colors-styles.css.js.map +1 -1
  49. package/chips/assist-chip.js +2 -1
  50. package/chips/assist-chip.js.map +1 -1
  51. package/chips/filter-chip.js +2 -1
  52. package/chips/filter-chip.js.map +1 -1
  53. package/chips/lib/_assist-chip.scss +37 -3
  54. package/chips/lib/_elevated.scss +60 -0
  55. package/chips/lib/_filter-chip.scss +43 -9
  56. package/chips/lib/_shared.scss +36 -76
  57. package/chips/lib/_suggestion-chip.scss +36 -5
  58. package/chips/lib/assist-chip.d.ts +12 -0
  59. package/chips/lib/assist-chip.js +64 -0
  60. package/chips/lib/assist-chip.js.map +1 -1
  61. package/chips/lib/assist-styles.css.js +1 -1
  62. package/chips/lib/assist-styles.css.js.map +1 -1
  63. package/chips/lib/chip.d.ts +19 -16
  64. package/chips/lib/chip.js +43 -63
  65. package/chips/lib/chip.js.map +1 -1
  66. package/chips/lib/elevated-styles.css.d.ts +1 -0
  67. package/chips/lib/elevated-styles.css.js +9 -0
  68. package/chips/lib/elevated-styles.css.js.map +1 -0
  69. package/chips/lib/elevated-styles.scss +10 -0
  70. package/chips/lib/filter-chip.d.ts +6 -1
  71. package/chips/lib/filter-chip.js +38 -5
  72. package/chips/lib/filter-chip.js.map +1 -1
  73. package/chips/lib/filter-styles.css.js +1 -1
  74. package/chips/lib/filter-styles.css.js.map +1 -1
  75. package/chips/lib/shared-styles.css.js +1 -1
  76. package/chips/lib/shared-styles.css.js.map +1 -1
  77. package/chips/lib/suggestion-chip.d.ts +2 -2
  78. package/chips/lib/suggestion-chip.js +4 -2
  79. package/chips/lib/suggestion-chip.js.map +1 -1
  80. package/chips/lib/suggestion-styles.css.js +1 -1
  81. package/chips/lib/suggestion-styles.css.js.map +1 -1
  82. package/chips/suggestion-chip.js +2 -1
  83. package/chips/suggestion-chip.js.map +1 -1
  84. package/circularprogress/lib/_circular-progress.scss +13 -7
  85. package/circularprogress/lib/circular-progress-styles.css.js +1 -1
  86. package/circularprogress/lib/circular-progress-styles.css.js.map +1 -1
  87. package/circularprogress/lib/circular-progress.d.ts +5 -6
  88. package/circularprogress/lib/circular-progress.js +1 -2
  89. package/circularprogress/lib/circular-progress.js.map +1 -1
  90. package/dialog/lib/_dialog.scss +0 -1
  91. package/dialog/lib/_tokens.scss +0 -1
  92. package/dialog/lib/dialog.d.ts +10 -10
  93. package/dialog/lib/dialog.js +8 -7
  94. package/dialog/lib/dialog.js.map +1 -1
  95. package/elevation/lib/elevation.d.ts +1 -1
  96. package/elevation/lib/elevation.js.map +1 -1
  97. package/fab/branded-fab.d.ts +3 -0
  98. package/fab/lib/_fab-branded.scss +58 -4
  99. package/fab/lib/_fab.scss +80 -6
  100. package/fab/lib/_shared.scss +8 -3
  101. package/fab/lib/fab-branded-styles.css.js +1 -1
  102. package/fab/lib/fab-branded-styles.css.js.map +1 -1
  103. package/fab/lib/fab-styles.css.js +1 -1
  104. package/fab/lib/fab-styles.css.js.map +1 -1
  105. package/fab/lib/fab.d.ts +4 -0
  106. package/fab/lib/forced-colors-styles.css.js +1 -1
  107. package/fab/lib/forced-colors-styles.css.js.map +1 -1
  108. package/fab/lib/shared-styles.css.js +1 -1
  109. package/fab/lib/shared-styles.css.js.map +1 -1
  110. package/fab/lib/shared.d.ts +12 -15
  111. package/fab/lib/shared.js +2 -26
  112. package/fab/lib/shared.js.map +1 -1
  113. package/field/lib/_filled-field.scss +47 -12
  114. package/field/lib/_outlined-field.scss +39 -12
  115. package/field/lib/filled-styles.css.js +1 -1
  116. package/field/lib/filled-styles.css.js.map +1 -1
  117. package/field/lib/outlined-styles.css.js +1 -1
  118. package/field/lib/outlined-styles.css.js.map +1 -1
  119. package/focus/focus-ring.d.ts +2 -0
  120. package/focus/focus-ring.js +2 -0
  121. package/focus/focus-ring.js.map +1 -1
  122. package/focus/lib/_focus-ring.scss +49 -34
  123. package/focus/lib/focus-ring-styles.css.js +1 -1
  124. package/focus/lib/focus-ring-styles.css.js.map +1 -1
  125. package/focus/lib/focus-ring.d.ts +59 -12
  126. package/focus/lib/focus-ring.js +116 -11
  127. package/focus/lib/focus-ring.js.map +1 -1
  128. package/iconbutton/filled-icon-button.d.ts +6 -2
  129. package/iconbutton/filled-icon-button.js.map +1 -1
  130. package/iconbutton/filled-tonal-icon-button.d.ts +6 -2
  131. package/iconbutton/filled-tonal-icon-button.js.map +1 -1
  132. package/iconbutton/harness.d.ts +1 -1
  133. package/iconbutton/harness.js +4 -1
  134. package/iconbutton/harness.js.map +1 -1
  135. package/iconbutton/lib/_filled-icon-button.scss +38 -13
  136. package/iconbutton/lib/_filled-tonal-icon-button.scss +38 -11
  137. package/iconbutton/lib/_outlined-icon-button.scss +38 -13
  138. package/iconbutton/lib/_shared.scss +4 -6
  139. package/iconbutton/lib/_standard-icon-button.scss +14 -14
  140. package/iconbutton/lib/filled-styles.css.js +1 -1
  141. package/iconbutton/lib/filled-styles.css.js.map +1 -1
  142. package/iconbutton/lib/filled-tonal-styles.css.js +1 -1
  143. package/iconbutton/lib/filled-tonal-styles.css.js.map +1 -1
  144. package/iconbutton/lib/icon-button.d.ts +17 -21
  145. package/iconbutton/lib/icon-button.js +12 -28
  146. package/iconbutton/lib/icon-button.js.map +1 -1
  147. package/iconbutton/lib/outlined-styles.css.js +1 -1
  148. package/iconbutton/lib/outlined-styles.css.js.map +1 -1
  149. package/iconbutton/lib/shared-styles.css.js +1 -1
  150. package/iconbutton/lib/shared-styles.css.js.map +1 -1
  151. package/iconbutton/lib/standard-styles.css.js +1 -1
  152. package/iconbutton/lib/standard-styles.css.js.map +1 -1
  153. package/iconbutton/outlined-icon-button.d.ts +5 -2
  154. package/iconbutton/outlined-icon-button.js.map +1 -1
  155. package/iconbutton/standard-icon-button.d.ts +5 -2
  156. package/iconbutton/standard-icon-button.js.map +1 -1
  157. package/linearprogress/lib/_linear-progress.scss +78 -72
  158. package/linearprogress/lib/linear-progress.d.ts +5 -5
  159. package/linearprogress/lib/linear-progress.js +1 -1
  160. package/linearprogress/lib/linear-progress.js.map +1 -1
  161. package/list/lib/_list.scss +4 -2
  162. package/list/lib/list.d.ts +7 -12
  163. package/list/lib/list.js +2 -11
  164. package/list/lib/list.js.map +1 -1
  165. package/list/lib/listitem/_list-item.scss +8 -4
  166. package/list/lib/listitem/list-item-styles.css.js +1 -1
  167. package/list/lib/listitem/list-item-styles.css.js.map +1 -1
  168. package/list/lib/listitem/list-item.d.ts +27 -27
  169. package/list/lib/listitem/list-item.js +4 -29
  170. package/list/lib/listitem/list-item.js.map +1 -1
  171. package/list/lib/listitemlink/list-item-link.js +1 -3
  172. package/list/lib/listitemlink/list-item-link.js.map +1 -1
  173. package/menu/lib/_menu.scss +4 -2
  174. package/menu/lib/menu-styles.css.js +1 -1
  175. package/menu/lib/menu-styles.css.js.map +1 -1
  176. package/menu/lib/menu.d.ts +31 -39
  177. package/menu/lib/menu.js +14 -20
  178. package/menu/lib/menu.js.map +1 -1
  179. package/menu/lib/menuitem/_menu-item.scss +4 -2
  180. package/menu/lib/shared.d.ts +14 -0
  181. package/menu/lib/shared.js +18 -0
  182. package/menu/lib/shared.js.map +1 -1
  183. package/menu/lib/submenuitem/sub-menu-item.d.ts +16 -11
  184. package/menu/lib/submenuitem/sub-menu-item.js +20 -3
  185. package/menu/lib/submenuitem/sub-menu-item.js.map +1 -1
  186. package/menu/lib/typeaheadController.d.ts +9 -9
  187. package/menu/lib/typeaheadController.js.map +1 -1
  188. package/navigationbar/lib/navigation-bar.d.ts +2 -2
  189. package/navigationbar/lib/navigation-bar.js.map +1 -1
  190. package/navigationdrawer/lib/_navigation-drawer-modal.scss +0 -3
  191. package/navigationdrawer/lib/_navigation-drawer.scss +0 -3
  192. package/navigationdrawer/lib/_shared.scss +1 -4
  193. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js +1 -1
  194. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js.map +1 -1
  195. package/navigationdrawer/lib/navigation-drawer-modal.d.ts +3 -3
  196. package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
  197. package/navigationdrawer/lib/navigation-drawer-styles.css.js +1 -1
  198. package/navigationdrawer/lib/navigation-drawer-styles.css.js.map +1 -1
  199. package/navigationdrawer/lib/navigation-drawer.d.ts +2 -2
  200. package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
  201. package/navigationdrawer/lib/shared-styles.css.js +1 -1
  202. package/navigationdrawer/lib/shared-styles.css.js.map +1 -1
  203. package/navigationtab/lib/_navigation-tab.scss +2 -2
  204. package/navigationtab/lib/navigation-tab-styles.css.js +1 -1
  205. package/navigationtab/lib/navigation-tab-styles.css.js.map +1 -1
  206. package/navigationtab/lib/navigation-tab.d.ts +9 -17
  207. package/navigationtab/lib/navigation-tab.js +3 -22
  208. package/navigationtab/lib/navigation-tab.js.map +1 -1
  209. package/navigationtab/lib/state.d.ts +1 -1
  210. package/navigationtab/lib/state.js.map +1 -1
  211. package/package.json +1 -1
  212. package/radio/lib/_radio.scss +1 -1
  213. package/radio/lib/radio-styles.css.js +1 -1
  214. package/radio/lib/radio-styles.css.js.map +1 -1
  215. package/radio/lib/radio.d.ts +2 -7
  216. package/radio/lib/radio.js +2 -22
  217. package/radio/lib/radio.js.map +1 -1
  218. package/ripple/lib/ripple.js +4 -0
  219. package/ripple/lib/ripple.js.map +1 -1
  220. package/segmentedbutton/lib/segmented-button.d.ts +15 -21
  221. package/segmentedbutton/lib/segmented-button.js +3 -24
  222. package/segmentedbutton/lib/segmented-button.js.map +1 -1
  223. package/segmentedbuttonset/lib/_outlined-segmented-button-set.scss +32 -13
  224. package/segmentedbuttonset/lib/outlined-styles.css.js +1 -1
  225. package/segmentedbuttonset/lib/outlined-styles.css.js.map +1 -1
  226. package/segmentedbuttonset/lib/segmented-button-set.d.ts +1 -1
  227. package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
  228. package/select/lib/_filled-select.scss +66 -7
  229. package/select/lib/_outlined-select.scss +41 -7
  230. package/select/lib/filled-select-styles.css.js +1 -1
  231. package/select/lib/filled-select-styles.css.js.map +1 -1
  232. package/select/lib/outlined-select-styles.css.js +1 -1
  233. package/select/lib/outlined-select-styles.css.js.map +1 -1
  234. package/select/lib/select.d.ts +46 -48
  235. package/select/lib/select.js +21 -19
  236. package/select/lib/select.js.map +1 -1
  237. package/slider/harness.d.ts +1 -1
  238. package/slider/harness.js +9 -9
  239. package/slider/harness.js.map +1 -1
  240. package/slider/lib/_slider.scss +6 -6
  241. package/slider/lib/slider-styles.css.js +1 -1
  242. package/slider/lib/slider-styles.css.js.map +1 -1
  243. package/slider/lib/slider.d.ts +22 -51
  244. package/slider/lib/slider.js +18 -54
  245. package/slider/lib/slider.js.map +1 -1
  246. package/switch/lib/_switch.scss +63 -18
  247. package/switch/lib/switch-styles.css.js +1 -1
  248. package/switch/lib/switch-styles.css.js.map +1 -1
  249. package/switch/lib/switch.d.ts +0 -5
  250. package/switch/lib/switch.js +2 -27
  251. package/switch/lib/switch.js.map +1 -1
  252. package/textfield/harness.d.ts +1 -1
  253. package/textfield/harness.js.map +1 -1
  254. package/textfield/lib/_filled-text-field.scss +70 -14
  255. package/textfield/lib/_outlined-text-field.scss +60 -35
  256. package/textfield/lib/filled-forced-colors-styles.css.js +1 -1
  257. package/textfield/lib/filled-forced-colors-styles.css.js.map +1 -1
  258. package/textfield/lib/filled-styles.css.js +1 -1
  259. package/textfield/lib/filled-styles.css.js.map +1 -1
  260. package/textfield/lib/outlined-forced-colors-styles.css.js +1 -1
  261. package/textfield/lib/outlined-forced-colors-styles.css.js.map +1 -1
  262. package/textfield/lib/outlined-styles.css.js +1 -1
  263. package/textfield/lib/outlined-styles.css.js.map +1 -1
  264. package/textfield/lib/text-field.d.ts +1 -1
  265. package/textfield/lib/text-field.js.map +1 -1
  266. package/tokens/_index.scss +2 -18
  267. package/tokens/_md-comp-assist-chip.scss +0 -9
  268. package/tokens/_md-comp-checkbox.scss +78 -1
  269. package/tokens/_md-comp-circular-progress-indicator.scss +39 -13
  270. package/tokens/_md-comp-elevated-button.scss +0 -10
  271. package/tokens/_md-comp-fab-branded.scss +6 -31
  272. package/tokens/_md-comp-fab.scss +9 -50
  273. package/tokens/_md-comp-filled-button.scss +0 -10
  274. package/{field/lib → tokens}/_md-comp-filled-field.scss +91 -9
  275. package/tokens/_md-comp-filled-icon-button.scss +46 -1
  276. package/tokens/_md-comp-filled-select.scss +4 -30
  277. package/tokens/_md-comp-filled-text-field.scss +93 -9
  278. package/tokens/_md-comp-filled-tonal-button.scss +0 -11
  279. package/tokens/_md-comp-filled-tonal-icon-button.scss +45 -3
  280. package/tokens/_md-comp-filter-chip.scss +0 -10
  281. package/tokens/_md-comp-focus-ring.scss +23 -24
  282. package/tokens/_md-comp-icon-button.scss +37 -1
  283. package/tokens/_md-comp-input-chip.scss +0 -10
  284. package/tokens/_md-comp-linear-progress-indicator.scss +23 -8
  285. package/tokens/_md-comp-list-item.scss +0 -27
  286. package/tokens/_md-comp-list.scss +3 -29
  287. package/tokens/_md-comp-menu-item.scss +3 -29
  288. package/tokens/_md-comp-menu.scss +0 -23
  289. package/tokens/_md-comp-outlined-button.scss +0 -10
  290. package/{field/lib → tokens}/_md-comp-outlined-field.scss +85 -9
  291. package/tokens/_md-comp-outlined-icon-button.scss +41 -1
  292. package/tokens/_md-comp-outlined-segmented-button.scss +57 -11
  293. package/tokens/_md-comp-outlined-select.scss +1 -28
  294. package/tokens/_md-comp-outlined-text-field.scss +85 -8
  295. package/tokens/_md-comp-suggestion-chip.scss +0 -9
  296. package/tokens/_md-comp-switch.scss +81 -1
  297. package/tokens/_md-comp-text-button.scss +0 -10
  298. package/tokens/_values.scss +2 -7
  299. package/types/aria.d.ts +0 -2
  300. package/focus/strong-focus.d.ts +0 -56
  301. package/focus/strong-focus.js +0 -101
  302. package/focus/strong-focus.js.map +0 -1
  303. package/sass/_shape.scss +0 -154
  304. package/tokens/_md-comp-extended-fab-branded.scss +0 -45
  305. package/tokens/_md-comp-extended-fab-primary.scss +0 -45
  306. package/tokens/_md-comp-extended-fab-secondary.scss +0 -48
  307. package/tokens/_md-comp-extended-fab-surface.scss +0 -45
  308. package/tokens/_md-comp-extended-fab-tertiary.scss +0 -48
  309. package/tokens/_md-comp-fab-branded-large.scss +0 -23
  310. package/tokens/_md-comp-fab-primary-large.scss +0 -23
  311. package/tokens/_md-comp-fab-primary-small.scss +0 -23
  312. package/tokens/_md-comp-fab-primary.scss +0 -23
  313. package/tokens/_md-comp-fab-secondary-large.scss +0 -23
  314. package/tokens/_md-comp-fab-secondary-small.scss +0 -23
  315. package/tokens/_md-comp-fab-secondary.scss +0 -23
  316. package/tokens/_md-comp-fab-surface-large.scss +0 -23
  317. package/tokens/_md-comp-fab-surface-small.scss +0 -23
  318. package/tokens/_md-comp-fab-surface.scss +0 -23
  319. package/tokens/_md-comp-fab-tertiary-large.scss +0 -23
  320. package/tokens/_md-comp-fab-tertiary-small.scss +0 -23
  321. package/tokens/_md-comp-fab-tertiary.scss +0 -23
@@ -7,17 +7,7 @@ import { __decorate } from "tslib";
7
7
  import { LitElement } from 'lit';
8
8
  import { property } from 'lit/decorators.js';
9
9
  /**
10
- * @summary An accessible, themable ring designed to be shown on
11
- * `:focus-visible`.
12
- *
13
- * @description
14
- * An accessible, themable ring designed to be shown on focus-visible.
15
- * Focus ring is designed to be controlled by the `strong-focus` module in the
16
- * same package.
17
- *
18
- * In most cases, `visible` should be set to
19
- * `shouldShowStrongFocus()` on `focus` and `pointerdown` (see `pointerPress()`
20
- * documentation in the `strong-focus` module), and `false` on `blur`.
10
+ * A focus ring component.
21
11
  */
22
12
  export class FocusRing extends LitElement {
23
13
  constructor() {
@@ -26,9 +16,124 @@ export class FocusRing extends LitElement {
26
16
  * Makes the focus ring visible.
27
17
  */
28
18
  this.visible = false;
19
+ /**
20
+ * Reflects the value of the `for` attribute, which is the ID of the focus
21
+ * ring's associated control element.
22
+ *
23
+ * Use this when the focus ring's associated element is not a parent element.
24
+ *
25
+ * To manually control a focus ring, set its `for` attribute to `""`.
26
+ *
27
+ * @example
28
+ * ```html
29
+ * <div class="container">
30
+ * <md-focus-ring for="interactive"></md-focus-ring>
31
+ * <button id="interactive">Action</button>
32
+ * </div>
33
+ * ```
34
+ *
35
+ * @example
36
+ * ```html
37
+ * <button class="manually-controlled">
38
+ * <md-focus-ring visible for=""></md-focus-ring>
39
+ * </button>
40
+ * ```
41
+ */
42
+ this.htmlFor = null;
43
+ this.currentControl = null;
44
+ }
45
+ /**
46
+ * The element that controls the visibility of the focus ring. It is one of:
47
+ *
48
+ * - The element referenced by the `for` attribute.
49
+ * - The element provided to `.attach(element)`
50
+ * - The parent element.
51
+ * - `null` if the focus ring is not controlled.
52
+ */
53
+ get control() {
54
+ if (this.hasAttribute('for')) {
55
+ if (!this.htmlFor) {
56
+ return null;
57
+ }
58
+ return this.getRootNode()
59
+ .querySelector(`#${this.htmlFor}`);
60
+ }
61
+ return this.currentControl || this.parentElement;
62
+ }
63
+ /**
64
+ * Attaches the focus ring to an interactive element.
65
+ *
66
+ * @param control The element that controls the focus ring.
67
+ */
68
+ attach(control) {
69
+ if (control === this.currentControl) {
70
+ return;
71
+ }
72
+ this.setCurrentControl(control);
73
+ // When imperatively attaching the focus ring, remove the `for` attribute so
74
+ // that the attached control is used instead of a referenced one.
75
+ this.removeAttribute('for');
76
+ }
77
+ /**
78
+ * Detaches the focus ring from its current interactive element.
79
+ */
80
+ detach() {
81
+ this.setCurrentControl(null);
82
+ // When imperatively detaching, add an empty `for=""` attribute. This will
83
+ // ensure the control is `null` rather than the `parentElement`.
84
+ this.setAttribute('for', '');
85
+ }
86
+ connectedCallback() {
87
+ super.connectedCallback();
88
+ this.setCurrentControl(this.control);
89
+ }
90
+ disconnectedCallback() {
91
+ super.disconnectedCallback();
92
+ this.setCurrentControl(null);
93
+ }
94
+ updated(changedProperties) {
95
+ if (changedProperties.has('htmlFor')) {
96
+ const { control } = this;
97
+ if (control) {
98
+ this.setCurrentControl(control);
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * @private
104
+ */
105
+ handleEvent(event) {
106
+ if (event[HANDLED_BY_FOCUS_RING]) {
107
+ // This ensures the focus ring does not activate when multiple focus rings
108
+ // are used within a single component.
109
+ return;
110
+ }
111
+ switch (event.type) {
112
+ default:
113
+ return;
114
+ case 'focusin':
115
+ this.visible = this.control?.matches(':focus-visible') ?? false;
116
+ break;
117
+ case 'focusout':
118
+ case 'pointerdown':
119
+ this.visible = false;
120
+ break;
121
+ }
122
+ event[HANDLED_BY_FOCUS_RING] = true;
123
+ }
124
+ setCurrentControl(control) {
125
+ for (const event of ['focusin', 'focusout', 'pointerdown']) {
126
+ this.currentControl?.removeEventListener(event, this);
127
+ control?.addEventListener(event, this);
128
+ }
129
+ this.currentControl = control;
29
130
  }
30
131
  }
31
132
  __decorate([
32
133
  property({ type: Boolean, reflect: true })
33
134
  ], FocusRing.prototype, "visible", void 0);
135
+ __decorate([
136
+ property({ attribute: 'for', reflect: true })
137
+ ], FocusRing.prototype, "htmlFor", void 0);
138
+ const HANDLED_BY_FOCUS_RING = Symbol('handledByFocusRing');
34
139
  //# sourceMappingURL=focus-ring.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus-ring.js","sourceRoot":"","sources":["focus-ring.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,UAAU,EAAC,MAAM,KAAK,CAAC;AAC/B,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IAAzC;;QACE;;WAEG;QACuC,YAAO,GAAG,KAAK,CAAC;IAC5D,CAAC;CAAA;AAD2C;IAAzC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;0CAAiB","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {LitElement} from 'lit';\nimport {property} from 'lit/decorators.js';\n\n/**\n * @summary An accessible, themable ring designed to be shown on\n * `:focus-visible`.\n *\n * @description\n * An accessible, themable ring designed to be shown on focus-visible.\n * Focus ring is designed to be controlled by the `strong-focus` module in the\n * same package.\n *\n * In most cases, `visible` should be set to\n * `shouldShowStrongFocus()` on `focus` and `pointerdown` (see `pointerPress()`\n * documentation in the `strong-focus` module), and `false` on `blur`.\n */\nexport class FocusRing extends LitElement {\n /**\n * Makes the focus ring visible.\n */\n @property({type: Boolean, reflect: true}) visible = false;\n}\n"]}
1
+ {"version":3,"file":"focus-ring.js","sourceRoot":"","sources":["focus-ring.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,UAAU,EAAiB,MAAM,KAAK,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,UAAU;IAAzC;;QACE;;WAEG;QACuC,YAAO,GAAG,KAAK,CAAC;QAE1D;;;;;;;;;;;;;;;;;;;;;;WAsBG;QAC0C,YAAO,GAAgB,IAAI,CAAC;QAuBjE,mBAAc,GAAqB,IAAI,CAAC;IAgFlD,CAAC;IArGC;;;;;;;OAOG;IACH,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YAED,OAAQ,IAAI,CAAC,WAAW,EAA4B;iBAC/C,aAAa,CAAc,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACrD;QAED,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC;IACnD,CAAC;IAID;;;;OAIG;IACH,MAAM,CAAC,OAAoB;QACzB,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,EAAE;YACnC,OAAO;SACR;QAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChC,4EAA4E;QAC5E,iEAAiE;QACjE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7B,0EAA0E;QAC1E,gEAAgE;QAChE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEQ,iBAAiB;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAEQ,oBAAoB;QAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEkB,OAAO,CAAC,iBAA4C;QACrE,IAAI,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;YACpC,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC;YACvB,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;aACjC;SACF;IACH,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,KAAqB;QAC/B,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE;YAChC,0EAA0E;YAC1E,sCAAsC;YACtC,OAAO;SACR;QAED,QAAQ,KAAK,CAAC,IAAI,EAAE;YAClB;gBACE,OAAO;YACT,KAAK,SAAS;gBACZ,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAAC;gBAChE,MAAM;YACR,KAAK,UAAU,CAAC;YAChB,KAAK,aAAa;gBAChB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM;SACT;QAED,KAAK,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;IACtC,CAAC;IAEO,iBAAiB,CAAC,OAAyB;QACjD,KAAK,MAAM,KAAK,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE;YAC1D,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,OAAO,EAAE,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;CACF;AAhI2C;IAAzC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;0CAAiB;AAyBb;IAA5C,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;0CAA6B;AAyG3E,MAAM,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {LitElement, PropertyValues} from 'lit';\nimport {property} from 'lit/decorators.js';\n\n/**\n * A focus ring component.\n */\nexport class FocusRing extends LitElement {\n /**\n * Makes the focus ring visible.\n */\n @property({type: Boolean, reflect: true}) visible = false;\n\n /**\n * Reflects the value of the `for` attribute, which is the ID of the focus\n * ring's associated control element.\n *\n * Use this when the focus ring's associated element is not a parent element.\n *\n * To manually control a focus ring, set its `for` attribute to `\"\"`.\n *\n * @example\n * ```html\n * <div class=\"container\">\n * <md-focus-ring for=\"interactive\"></md-focus-ring>\n * <button id=\"interactive\">Action</button>\n * </div>\n * ```\n *\n * @example\n * ```html\n * <button class=\"manually-controlled\">\n * <md-focus-ring visible for=\"\"></md-focus-ring>\n * </button>\n * ```\n */\n @property({attribute: 'for', reflect: true}) htmlFor: string|null = null;\n\n /**\n * The element that controls the visibility of the focus ring. It is one of:\n *\n * - The element referenced by the `for` attribute.\n * - The element provided to `.attach(element)`\n * - The parent element.\n * - `null` if the focus ring is not controlled.\n */\n get control() {\n if (this.hasAttribute('for')) {\n if (!this.htmlFor) {\n return null;\n }\n\n return (this.getRootNode() as Document | ShadowRoot)\n .querySelector<HTMLElement>(`#${this.htmlFor}`);\n }\n\n return this.currentControl || this.parentElement;\n }\n\n private currentControl: HTMLElement|null = null;\n\n /**\n * Attaches the focus ring to an interactive element.\n *\n * @param control The element that controls the focus ring.\n */\n attach(control: HTMLElement) {\n if (control === this.currentControl) {\n return;\n }\n\n this.setCurrentControl(control);\n // When imperatively attaching the focus ring, remove the `for` attribute so\n // that the attached control is used instead of a referenced one.\n this.removeAttribute('for');\n }\n\n /**\n * Detaches the focus ring from its current interactive element.\n */\n detach() {\n this.setCurrentControl(null);\n // When imperatively detaching, add an empty `for=\"\"` attribute. This will\n // ensure the control is `null` rather than the `parentElement`.\n this.setAttribute('for', '');\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this.setCurrentControl(this.control);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.setCurrentControl(null);\n }\n\n protected override updated(changedProperties: PropertyValues<FocusRing>) {\n if (changedProperties.has('htmlFor')) {\n const {control} = this;\n if (control) {\n this.setCurrentControl(control);\n }\n }\n }\n\n /**\n * @private\n */\n handleEvent(event: FocusRingEvent) {\n if (event[HANDLED_BY_FOCUS_RING]) {\n // This ensures the focus ring does not activate when multiple focus rings\n // are used within a single component.\n return;\n }\n\n switch (event.type) {\n default:\n return;\n case 'focusin':\n this.visible = this.control?.matches(':focus-visible') ?? false;\n break;\n case 'focusout':\n case 'pointerdown':\n this.visible = false;\n break;\n }\n\n event[HANDLED_BY_FOCUS_RING] = true;\n }\n\n private setCurrentControl(control: HTMLElement|null) {\n for (const event of ['focusin', 'focusout', 'pointerdown']) {\n this.currentControl?.removeEventListener(event, this);\n control?.addEventListener(event, this);\n }\n\n this.currentControl = control;\n }\n}\n\nconst HANDLED_BY_FOCUS_RING = Symbol('handledByFocusRing');\n\ninterface FocusRingEvent extends Event {\n [HANDLED_BY_FOCUS_RING]: true;\n}\n"]}
@@ -3,7 +3,6 @@
3
3
  * Copyright 2022 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ClassInfo } from 'lit/directives/class-map.js';
7
6
  import { IconButton } from './lib/icon-button.js';
8
7
  declare global {
9
8
  interface HTMLElementTagNameMap {
@@ -27,5 +26,10 @@ declare global {
27
26
  */
28
27
  export declare class MdFilledIconButton extends IconButton {
29
28
  static styles: import("lit").CSSResult[];
30
- protected getRenderClasses(): ClassInfo;
29
+ protected getRenderClasses(): {
30
+ 'md3-icon-button--filled': boolean;
31
+ 'md3-icon-button--toggle-filled': boolean;
32
+ 'md3-icon-button--flip-icon': boolean;
33
+ 'md3-icon-button--selected': boolean;
34
+ };
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filled-icon-button.js","sourceRoot":"","sources":["filled-icon-button.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAQlE;;;;;;;;;;;;;;GAcG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAG7B,gBAAgB;QACjC,OAAO;YACL,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAC3B,yBAAyB,EAAE,IAAI;YAC/B,gCAAgC,EAAE,IAAI,CAAC,MAAM;SAC9C,CAAC;IACJ,CAAC;;AARe,yBAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AADrC,kBAAkB;IAD9B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,kBAAkB,CAU9B;SAVY,kBAAkB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\nimport {ClassInfo} from 'lit/directives/class-map.js';\n\nimport {styles} from './lib/filled-styles.css.js';\nimport {IconButton} from './lib/icon-button.js';\nimport {styles as sharedStyles} from './lib/shared-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-icon-button': MdFilledIconButton;\n }\n}\n\n/**\n * @summary Icon buttons help people take supplementary actions with a single\n * tap.\n *\n * @description\n * __Emphasis:__ Low emphasis – For optional or supplementary actions with the\n * least amount of prominence.\n *\n * __Rationale:__ The most compact and unobtrusive type of button, icon buttons\n * are used for optional supplementary actions such as \"Bookmark\" or \"Star.\"\n *\n * __Example usages:__\n * - Add to Favorites\n * - Print\n */\n@customElement('md-filled-icon-button')\nexport class MdFilledIconButton extends IconButton {\n static override styles = [sharedStyles, styles];\n\n protected override getRenderClasses(): ClassInfo {\n return {\n ...super.getRenderClasses(),\n 'md3-icon-button--filled': true,\n 'md3-icon-button--toggle-filled': this.toggle,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"filled-icon-button.js","sourceRoot":"","sources":["filled-icon-button.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAQlE;;;;;;;;;;;;;;GAcG;AAEI,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,UAAU;IAG7B,gBAAgB;QACjC,OAAO;YACL,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAC3B,yBAAyB,EAAE,IAAI;YAC/B,gCAAgC,EAAE,IAAI,CAAC,MAAM;SAC9C,CAAC;IACJ,CAAC;;AARe,yBAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AADrC,kBAAkB;IAD9B,aAAa,CAAC,uBAAuB,CAAC;GAC1B,kBAAkB,CAU9B;SAVY,kBAAkB","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 {styles} from './lib/filled-styles.css.js';\nimport {IconButton} from './lib/icon-button.js';\nimport {styles as sharedStyles} from './lib/shared-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-icon-button': MdFilledIconButton;\n }\n}\n\n/**\n * @summary Icon buttons help people take supplementary actions with a single\n * tap.\n *\n * @description\n * __Emphasis:__ Low emphasis – For optional or supplementary actions with the\n * least amount of prominence.\n *\n * __Rationale:__ The most compact and unobtrusive type of button, icon buttons\n * are used for optional supplementary actions such as \"Bookmark\" or \"Star.\"\n *\n * __Example usages:__\n * - Add to Favorites\n * - Print\n */\n@customElement('md-filled-icon-button')\nexport class MdFilledIconButton extends IconButton {\n static override styles = [sharedStyles, styles];\n\n protected override getRenderClasses() {\n return {\n ...super.getRenderClasses(),\n 'md3-icon-button--filled': true,\n 'md3-icon-button--toggle-filled': this.toggle,\n };\n }\n}\n"]}
@@ -3,7 +3,6 @@
3
3
  * Copyright 2022 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { ClassInfo } from 'lit/directives/class-map.js';
7
6
  import { IconButton } from './lib/icon-button.js';
8
7
  declare global {
9
8
  interface HTMLElementTagNameMap {
@@ -27,5 +26,10 @@ declare global {
27
26
  */
28
27
  export declare class MdFilledTonalIconButton extends IconButton {
29
28
  static styles: import("lit").CSSResult[];
30
- protected getRenderClasses(): ClassInfo;
29
+ protected getRenderClasses(): {
30
+ 'md3-icon-button--filled-tonal': boolean;
31
+ 'md3-icon-button--toggle-filled-tonal': boolean;
32
+ 'md3-icon-button--flip-icon': boolean;
33
+ 'md3-icon-button--selected': boolean;
34
+ };
31
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filled-tonal-icon-button.js","sourceRoot":"","sources":["filled-tonal-icon-button.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAQlE;;;;;;;;;;;;;;GAcG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAGlC,gBAAgB;QACjC,OAAO;YACL,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAC3B,+BAA+B,EAAE,IAAI;YACrC,sCAAsC,EAAE,IAAI,CAAC,MAAM;SACpD,CAAC;IACJ,CAAC;;AARe,8BAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AADrC,uBAAuB;IADnC,aAAa,CAAC,6BAA6B,CAAC;GAChC,uBAAuB,CAUnC;SAVY,uBAAuB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\nimport {ClassInfo} from 'lit/directives/class-map.js';\n\nimport {styles} from './lib/filled-tonal-styles.css.js';\nimport {IconButton} from './lib/icon-button.js';\nimport {styles as sharedStyles} from './lib/shared-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-tonal-icon-button': MdFilledTonalIconButton;\n }\n}\n\n/**\n * @summary Icon buttons help people take supplementary actions with a single\n * tap.\n *\n * @description\n * __Emphasis:__ Low emphasis – For optional or supplementary actions with the\n * least amount of prominence.\n *\n * __Rationale:__ The most compact and unobtrusive type of button, icon buttons\n * are used for optional supplementary actions such as \"Bookmark\" or \"Star.\"\n *\n * __Example usages:__\n * - Add to Favorites\n * - Print\n */\n@customElement('md-filled-tonal-icon-button')\nexport class MdFilledTonalIconButton extends IconButton {\n static override styles = [sharedStyles, styles];\n\n protected override getRenderClasses(): ClassInfo {\n return {\n ...super.getRenderClasses(),\n 'md3-icon-button--filled-tonal': true,\n 'md3-icon-button--toggle-filled-tonal': this.toggle,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"filled-tonal-icon-button.js","sourceRoot":"","sources":["filled-tonal-icon-button.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,kCAAkC,CAAC;AACxD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAC,MAAM,IAAI,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAQlE;;;;;;;;;;;;;;GAcG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAGlC,gBAAgB;QACjC,OAAO;YACL,GAAG,KAAK,CAAC,gBAAgB,EAAE;YAC3B,+BAA+B,EAAE,IAAI;YACrC,sCAAsC,EAAE,IAAI,CAAC,MAAM;SACpD,CAAC;IACJ,CAAC;;AARe,8BAAM,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AADrC,uBAAuB;IADnC,aAAa,CAAC,6BAA6B,CAAC;GAChC,uBAAuB,CAUnC;SAVY,uBAAuB","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 {styles} from './lib/filled-tonal-styles.css.js';\nimport {IconButton} from './lib/icon-button.js';\nimport {styles as sharedStyles} from './lib/shared-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-filled-tonal-icon-button': MdFilledTonalIconButton;\n }\n}\n\n/**\n * @summary Icon buttons help people take supplementary actions with a single\n * tap.\n *\n * @description\n * __Emphasis:__ Low emphasis – For optional or supplementary actions with the\n * least amount of prominence.\n *\n * __Rationale:__ The most compact and unobtrusive type of button, icon buttons\n * are used for optional supplementary actions such as \"Bookmark\" or \"Star.\"\n *\n * __Example usages:__\n * - Add to Favorites\n * - Print\n */\n@customElement('md-filled-tonal-icon-button')\nexport class MdFilledTonalIconButton extends IconButton {\n static override styles = [sharedStyles, styles];\n\n protected override getRenderClasses() {\n return {\n ...super.getRenderClasses(),\n 'md3-icon-button--filled-tonal': true,\n 'md3-icon-button--toggle-filled-tonal': this.toggle,\n };\n }\n}\n"]}
@@ -9,5 +9,5 @@ import { IconButton } from './lib/icon-button.js';
9
9
  * Test harness for icon buttons.
10
10
  */
11
11
  export declare class IconButtonHarness extends Harness<IconButton> {
12
- protected getInteractiveElement(): Promise<HTMLElement>;
12
+ protected getInteractiveElement(): Promise<HTMLAnchorElement | HTMLButtonElement>;
13
13
  }
@@ -10,7 +10,10 @@ import { Harness } from '../testing/harness.js';
10
10
  export class IconButtonHarness extends Harness {
11
11
  async getInteractiveElement() {
12
12
  await this.element.updateComplete;
13
- return this.element.renderRoot.querySelector('.md3-icon-button');
13
+ if (this.element.href) {
14
+ return this.element.renderRoot.querySelector('a');
15
+ }
16
+ return this.element.renderRoot.querySelector('button');
14
17
  }
15
18
  }
16
19
  //# sourceMappingURL=harness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAI9C;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAAmB;IACrC,KAAK,CAAC,qBAAqB;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,kBAAkB,CAChD,CAAC;IAClB,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Harness} from '../testing/harness.js';\n\nimport {IconButton} from './lib/icon-button.js';\n\n/**\n * Test harness for icon buttons.\n */\nexport class IconButtonHarness extends Harness<IconButton> {\n protected override async getInteractiveElement() {\n await this.element.updateComplete;\n return this.element.renderRoot.querySelector('.md3-icon-button') as\n HTMLElement;\n }\n}\n"]}
1
+ {"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAI9C;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAAmB;IACrC,KAAK,CAAC,qBAAqB;QAC5C,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAE,CAAC;SACpD;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAE,CAAC;IAC1D,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Harness} from '../testing/harness.js';\n\nimport {IconButton} from './lib/icon-button.js';\n\n/**\n * Test harness for icon buttons.\n */\nexport class IconButtonHarness extends Harness<IconButton> {\n protected override async getInteractiveElement() {\n await this.element.updateComplete;\n if (this.element.href) {\n return this.element.renderRoot.querySelector('a')!;\n }\n\n return this.element.renderRoot.querySelector('button')!;\n }\n}\n"]}
@@ -7,40 +7,65 @@
7
7
  // Selector '.md3-*' should only be used in this project.
8
8
 
9
9
  // go/keep-sorted start
10
+ @use 'sass:list';
10
11
  @use 'sass:map';
11
12
  // go/keep-sorted end
12
13
  // go/keep-sorted start
13
14
  @use '../../ripple/ripple';
14
- @use '../../sass/shape';
15
- @use '../../sass/theme';
16
15
  @use '../../tokens';
17
16
  @use './shared';
18
17
  // go/keep-sorted end
19
18
 
20
- $_custom-property-prefix: 'filled-icon-button';
21
-
22
19
  @mixin theme($tokens) {
23
- $tokens: theme.validate-theme(
24
- tokens.md-comp-filled-icon-button-values(),
25
- $tokens
20
+ $supported-tokens: list.join(
21
+ tokens.$md-comp-filled-icon-button-supported-tokens,
22
+ (
23
+ 'container-shape-start-start',
24
+ 'container-shape-start-end',
25
+ 'container-shape-end-end',
26
+ 'container-shape-end-start'
27
+ )
26
28
  );
29
+
27
30
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled');
28
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
29
- $tokens: shared.resolve-shape-tokens($tokens);
30
31
 
31
- @include theme.emit-theme-vars($tokens);
32
+ @each $token, $value in $tokens {
33
+ @if list.index($supported-tokens, $token) == null {
34
+ @error 'Token `#{$token}` is not a supported token.';
35
+ }
36
+
37
+ @if $value {
38
+ --md-filled-icon-button-#{$token}: #{$value};
39
+ }
40
+ }
32
41
  }
33
42
 
34
43
  @mixin styles() {
35
44
  $tokens: tokens.md-comp-filled-icon-button-values();
36
45
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled');
37
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
38
- $tokens: shared.resolve-shape-tokens($tokens);
39
46
 
40
47
  :host {
41
48
  @each $token, $value in $tokens {
42
- --_#{$token}: #{$value};
49
+ --_#{$token}: var(--md-filled-icon-button-#{$token}, #{$value});
43
50
  }
51
+
52
+ // Support logical shape properties
53
+ --_container-shape-start-start: var(
54
+ --md-filled-icon-button-container-shape-start-start,
55
+ var(--_container-shape)
56
+ );
57
+ --_container-shape-start-end: var(
58
+ --md-filled-icon-button-container-shape-start-end,
59
+ var(--_container-shape)
60
+ );
61
+ --_container-shape-end-end: var(
62
+ --md-filled-icon-button-container-shape-end-end,
63
+ var(--_container-shape)
64
+ );
65
+ --_container-shape-end-start: var(
66
+ --md-filled-icon-button-container-shape-end-start,
67
+ var(--_container-shape)
68
+ );
44
69
  }
45
70
 
46
71
  .md3-icon-button {
@@ -7,12 +7,11 @@
7
7
  // Selector '.md3-*' should only be used in this project.
8
8
 
9
9
  // go/keep-sorted start
10
+ @use 'sass:list';
10
11
  @use 'sass:map';
11
12
  // go/keep-sorted end
12
13
  // go/keep-sorted start
13
14
  @use '../../ripple/ripple';
14
- @use '../../sass/shape';
15
- @use '../../sass/theme';
16
15
  @use '../../tokens';
17
16
  @use './shared';
18
17
  // go/keep-sorted end
@@ -20,27 +19,55 @@
20
19
  $_custom-property-prefix: 'filled-tonal-icon-button';
21
20
 
22
21
  @mixin theme($tokens) {
23
- $tokens: theme.validate-theme(
24
- tokens.md-comp-filled-tonal-icon-button-values(),
25
- $tokens
22
+ $supported-tokens: list.join(
23
+ tokens.$md-comp-filled-tonal-icon-button-supported-tokens,
24
+ (
25
+ 'container-shape-start-start',
26
+ 'container-shape-start-end',
27
+ 'container-shape-end-end',
28
+ 'container-shape-end-start'
29
+ )
26
30
  );
31
+
27
32
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled-tonal');
28
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
29
- $tokens: shared.resolve-shape-tokens($tokens);
30
33
 
31
- @include theme.emit-theme-vars($tokens);
34
+ @each $token, $value in $tokens {
35
+ @if list.index($supported-tokens, $token) == null {
36
+ @error 'Token `#{$token}` is not a supported token.';
37
+ }
38
+
39
+ @if $value {
40
+ --md-filled-tonal-icon-button-#{$token}: #{$value};
41
+ }
42
+ }
32
43
  }
33
44
 
34
45
  @mixin styles() {
35
46
  $tokens: tokens.md-comp-filled-tonal-icon-button-values();
36
47
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'filled-tonal');
37
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
38
- $tokens: shared.resolve-shape-tokens($tokens);
39
48
 
40
49
  :host {
41
50
  @each $token, $value in $tokens {
42
- --_#{$token}: #{$value};
51
+ --_#{$token}: var(--md-filled-tonal-icon-button-#{$token}, #{$value});
43
52
  }
53
+
54
+ // Support logical shape properties
55
+ --_container-shape-start-start: var(
56
+ --md-filled-tonal-icon-button-container-shape-start-start,
57
+ var(--_container-shape)
58
+ );
59
+ --_container-shape-start-end: var(
60
+ --md-filled-tonal-icon-button-container-shape-start-end,
61
+ var(--_container-shape)
62
+ );
63
+ --_container-shape-end-end: var(
64
+ --md-filled-tonal-icon-button-container-shape-end-end,
65
+ var(--_container-shape)
66
+ );
67
+ --_container-shape-end-start: var(
68
+ --md-filled-tonal-icon-button-container-shape-end-start,
69
+ var(--_container-shape)
70
+ );
44
71
  }
45
72
 
46
73
  .md3-icon-button {
@@ -7,41 +7,66 @@
7
7
  // Selector '.md3-*' should only be used in this project.
8
8
 
9
9
  // go/keep-sorted start
10
+ @use 'sass:list';
10
11
  @use 'sass:map';
11
12
  // go/keep-sorted end
12
13
  // go/keep-sorted start
13
14
  @use '../../ripple/ripple';
14
15
  @use '../../sass/color';
15
- @use '../../sass/shape';
16
- @use '../../sass/theme';
17
16
  @use '../../tokens';
18
17
  @use './shared';
19
18
  // go/keep-sorted end
20
19
 
21
- $_custom-property-prefix: 'outlined-icon-button';
22
-
23
20
  @mixin theme($tokens) {
24
- $tokens: theme.validate-theme(
25
- tokens.md-comp-outlined-icon-button-values(),
26
- $tokens
21
+ $supported-tokens: list.join(
22
+ tokens.$md-comp-outlined-icon-button-supported-tokens,
23
+ (
24
+ 'container-shape-start-start',
25
+ 'container-shape-start-end',
26
+ 'container-shape-end-end',
27
+ 'container-shape-end-start'
28
+ )
27
29
  );
30
+
28
31
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'outlined');
29
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
30
- $tokens: shared.resolve-shape-tokens($tokens);
31
32
 
32
- @include theme.emit-theme-vars($tokens);
33
+ @each $token, $value in $tokens {
34
+ @if list.index($supported-tokens, $token) == null {
35
+ @error 'Token `#{$token}` is not a supported token.';
36
+ }
37
+
38
+ @if $value {
39
+ --md-outlined-icon-button-#{$token}: #{$value};
40
+ }
41
+ }
33
42
  }
34
43
 
35
44
  @mixin styles() {
36
45
  $tokens: tokens.md-comp-outlined-icon-button-values();
37
46
  $tokens: shared.flatten-disabled-colors($tokens, $variant: 'outlined');
38
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
39
- $tokens: shared.resolve-shape-tokens($tokens);
40
47
 
41
48
  :host {
42
49
  @each $token, $value in $tokens {
43
- --_#{$token}: #{$value};
50
+ --_#{$token}: var(--md-outlined-icon-button-#{$token}, #{$value});
44
51
  }
52
+
53
+ // Support logical shape properties
54
+ --_container-shape-start-start: var(
55
+ --md-outlined-icon-button-container-shape-start-start,
56
+ var(--_container-shape)
57
+ );
58
+ --_container-shape-start-end: var(
59
+ --md-outlined-icon-button-container-shape-start-end,
60
+ var(--_container-shape)
61
+ );
62
+ --_container-shape-end-end: var(
63
+ --md-outlined-icon-button-container-shape-end-end,
64
+ var(--_container-shape)
65
+ );
66
+ --_container-shape-end-start: var(
67
+ --md-outlined-icon-button-container-shape-end-start,
68
+ var(--_container-shape)
69
+ );
45
70
  }
46
71
 
47
72
  .md3-icon-button--outlined {
@@ -16,7 +16,6 @@
16
16
  @use '../../focus/focus-ring';
17
17
  @use '../../icon/icon';
18
18
  @use '../../sass/color';
19
- @use '../../sass/shape';
20
19
  @use '../../sass/touch-target';
21
20
  @use '../../tokens';
22
21
  // go/keep-sorted end
@@ -32,7 +31,10 @@
32
31
 
33
32
  @include focus-ring.theme(
34
33
  (
35
- shape: shape.corners-to-shape-token('--_container-shape'),
34
+ 'shape-start-start': var(--_container-shape-start-start),
35
+ 'shape-start-end': var(--_container-shape-start-end),
36
+ 'shape-end-end': var(--_container-shape-end-end),
37
+ 'shape-end-start': var(--_container-shape-end-start),
36
38
  )
37
39
  );
38
40
  }
@@ -159,7 +161,3 @@
159
161
  )
160
162
  );
161
163
  }
162
-
163
- @function resolve-shape-tokens($tokens, $property: 'container-shape') {
164
- @return shape.resolve-tokens($tokens, $property);
165
- }
@@ -7,38 +7,38 @@
7
7
  // Selector '.md3-*' should only be used in this project.
8
8
 
9
9
  // go/keep-sorted start
10
+ @use 'sass:list';
10
11
  @use 'sass:map';
11
12
  // go/keep-sorted end
12
13
  // go/keep-sorted start
13
14
  @use '../../focus/focus-ring';
14
15
  @use '../../ripple/ripple';
15
- @use '../../sass/shape';
16
- @use '../../sass/theme';
17
16
  @use '../../tokens';
18
17
  @use './shared';
19
18
  // go/keep-sorted end
20
19
 
21
- $_custom-property-prefix: 'icon-button';
22
- $_shape-property: 'state-layer-shape';
23
-
24
20
  @mixin theme($tokens) {
25
- $tokens: theme.validate-theme(tokens.md-comp-icon-button-values(), $tokens);
21
+ $supported-tokens: tokens.$md-comp-icon-button-supported-tokens;
26
22
  $tokens: shared.flatten-disabled-colors($tokens);
27
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
28
- $tokens: shared.resolve-shape-tokens($tokens, $property: $_shape-property);
29
23
 
30
- @include theme.emit-theme-vars($tokens);
24
+ @each $token, $value in $tokens {
25
+ @if list.index($supported-tokens, $token) == null {
26
+ @error 'Token `#{$token}` is not a supported token.';
27
+ }
28
+
29
+ @if $value {
30
+ --md-icon-button-#{$token}: #{$value};
31
+ }
32
+ }
31
33
  }
32
34
 
33
35
  @mixin styles() {
34
36
  $tokens: tokens.md-comp-icon-button-values();
35
37
  $tokens: shared.flatten-disabled-colors($tokens);
36
- $tokens: theme.create-theme-vars($tokens, $_custom-property-prefix);
37
- $tokens: shared.resolve-shape-tokens($tokens, $property: $_shape-property);
38
38
 
39
39
  :host {
40
40
  @each $token, $value in $tokens {
41
- --_#{$token}: #{$value};
41
+ --_#{$token}: var(--md-icon-button-#{$token}, #{$value});
42
42
  }
43
43
 
44
44
  height: var(--_state-layer-size);
@@ -46,7 +46,7 @@ $_shape-property: 'state-layer-shape';
46
46
 
47
47
  @include focus-ring.theme(
48
48
  (
49
- shape: shape.corners-to-shape-token('--_state-layer-shape'),
49
+ 'shape': var(--_state-layer-shape),
50
50
  )
51
51
  );
52
52
  }
@@ -63,7 +63,7 @@ $_shape-property: 'state-layer-shape';
63
63
  hover-opacity: var(--_unselected-hover-state-layer-opacity),
64
64
  pressed-color: var(--_unselected-pressed-state-layer-color),
65
65
  pressed-opacity: var(--_unselected-pressed-state-layer-opacity),
66
- shape: shape.corners-to-shape-token('--_state-layer-shape'),
66
+ shape: var(--_state-layer-shape),
67
67
  )
68
68
  );
69
69
 
@@ -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 `:host{--_container-shape-start-start: var(--md-filled-icon-button-container-shape-start-start, var(--md-filled-icon-button-container-shape, 9999px));--_container-shape-start-end: var(--md-filled-icon-button-container-shape-start-end, var(--md-filled-icon-button-container-shape, 9999px));--_container-shape-end-end: var(--md-filled-icon-button-container-shape-end-end, var(--md-filled-icon-button-container-shape, 9999px));--_container-shape-end-start: var(--md-filled-icon-button-container-shape-end-start, var(--md-filled-icon-button-container-shape, 9999px));--_container-color: var(--md-filled-icon-button-container-color, var(--md-sys-color-primary, #6750a4));--_container-size: var(--md-filled-icon-button-container-size, 40px);--_disabled-container-color: var(--md-filled-icon-button-disabled-container-color, rgb(var(--md-sys-color-on-surface-rgb, 29, 27, 32), 0.12));--_disabled-icon-color: var(--md-filled-icon-button-disabled-icon-color, rgb(var(--md-sys-color-on-surface-rgb, 29, 27, 32), 0.38));--_focus-icon-color: var(--md-filled-icon-button-focus-icon-color, var(--md-sys-color-on-primary, #fff));--_focus-state-layer-color: var(--md-filled-icon-button-focus-state-layer-color, var(--md-sys-color-on-primary, #fff));--_focus-state-layer-opacity: var(--md-filled-icon-button-focus-state-layer-opacity, 0.12);--_hover-icon-color: var(--md-filled-icon-button-hover-icon-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-color: var(--md-filled-icon-button-hover-state-layer-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-opacity: var(--md-filled-icon-button-hover-state-layer-opacity, 0.08);--_icon-color: var(--md-filled-icon-button-icon-color, var(--md-sys-color-on-primary, #fff));--_icon-size: var(--md-filled-icon-button-icon-size, 24px);--_pressed-icon-color: var(--md-filled-icon-button-pressed-icon-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-color: var(--md-filled-icon-button-pressed-state-layer-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-opacity: var(--md-filled-icon-button-pressed-state-layer-opacity, 0.12);--_selected-container-color: var(--md-filled-icon-button-selected-container-color, var(--md-sys-color-primary, #6750a4));--_toggle-selected-focus-icon-color: var(--md-filled-icon-button-toggle-selected-focus-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-focus-state-layer-color: var(--md-filled-icon-button-toggle-selected-focus-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-hover-icon-color: var(--md-filled-icon-button-toggle-selected-hover-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-hover-state-layer-color: var(--md-filled-icon-button-toggle-selected-hover-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-icon-color: var(--md-filled-icon-button-toggle-selected-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-pressed-icon-color: var(--md-filled-icon-button-toggle-selected-pressed-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-pressed-state-layer-color: var(--md-filled-icon-button-toggle-selected-pressed-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-unselected-focus-icon-color: var(--md-filled-icon-button-toggle-unselected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-focus-state-layer-color: var(--md-filled-icon-button-toggle-unselected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-hover-icon-color: var(--md-filled-icon-button-toggle-unselected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-hover-state-layer-color: var(--md-filled-icon-button-toggle-unselected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-icon-color: var(--md-filled-icon-button-toggle-unselected-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-pressed-icon-color: var(--md-filled-icon-button-toggle-unselected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-pressed-state-layer-color: var(--md-filled-icon-button-toggle-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-container-color: var(--md-filled-icon-button-unselected-container-color, var(--md-sys-color-surface-container-highest, #e6e0e9))}.md3-icon-button{background-color:var(--_container-color);color:var(--_icon-color);--md-ripple-focus-color:var(--_focus-state-layer-color);--md-ripple-focus-opacity:var(--_focus-state-layer-opacity);--md-ripple-hover-color:var(--_hover-state-layer-color);--md-ripple-hover-opacity:var(--_hover-state-layer-opacity);--md-ripple-pressed-color:var(--_pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_pressed-state-layer-opacity)}.md3-icon-button:hover{color:var(--_hover-icon-color)}.md3-icon-button:focus{color:var(--_focus-icon-color)}.md3-icon-button:active{color:var(--_pressed-icon-color)}.md3-icon-button:disabled{background-color:var(--_disabled-container-color);color:var(--_disabled-icon-color)}.md3-icon-button--toggle-filled{--md-ripple-focus-color:var(--_toggle-unselected-focus-state-layer-color);--md-ripple-hover-color:var(--_toggle-unselected-hover-state-layer-color);--md-ripple-pressed-color:var(--_toggle-unselected-pressed-state-layer-color)}.md3-icon-button--toggle-filled:not(:disabled){background-color:var(--_unselected-container-color);color:var(--_toggle-unselected-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):hover{color:var(--_toggle-unselected-hover-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):focus{color:var(--_toggle-unselected-focus-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):active{color:var(--_toggle-unselected-pressed-icon-color)}.md3-icon-button--selected{--md-ripple-focus-color:var(--_toggle-selected-focus-state-layer-color);--md-ripple-hover-color:var(--_toggle-selected-hover-state-layer-color);--md-ripple-pressed-color:var(--_toggle-selected-pressed-state-layer-color)}.md3-icon-button--selected:not(:disabled){background-color:var(--_selected-container-color);color:var(--_toggle-selected-icon-color)}.md3-icon-button--selected:not(:disabled):hover{color:var(--_toggle-selected-hover-icon-color)}.md3-icon-button--selected:not(:disabled):focus{color:var(--_toggle-selected-focus-icon-color)}.md3-icon-button--selected:not(:disabled):active{color:var(--_toggle-selected-pressed-icon-color)}/*# sourceMappingURL=filled-styles.css.map */
7
+ export const styles = css `:host{--_container-color: var(--md-filled-icon-button-container-color, var(--md-sys-color-primary, #6750a4));--_container-shape: var(--md-filled-icon-button-container-shape, 9999px);--_container-size: var(--md-filled-icon-button-container-size, 40px);--_disabled-container-color: var(--md-filled-icon-button-disabled-container-color, rgb(var(--md-sys-color-on-surface-rgb, 29, 27, 32), 0.12));--_disabled-icon-color: var(--md-filled-icon-button-disabled-icon-color, rgb(var(--md-sys-color-on-surface-rgb, 29, 27, 32), 0.38));--_focus-icon-color: var(--md-filled-icon-button-focus-icon-color, var(--md-sys-color-on-primary, #fff));--_focus-state-layer-color: var(--md-filled-icon-button-focus-state-layer-color, var(--md-sys-color-on-primary, #fff));--_focus-state-layer-opacity: var(--md-filled-icon-button-focus-state-layer-opacity, 0.12);--_hover-icon-color: var(--md-filled-icon-button-hover-icon-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-color: var(--md-filled-icon-button-hover-state-layer-color, var(--md-sys-color-on-primary, #fff));--_hover-state-layer-opacity: var(--md-filled-icon-button-hover-state-layer-opacity, 0.08);--_icon-color: var(--md-filled-icon-button-icon-color, var(--md-sys-color-on-primary, #fff));--_icon-size: var(--md-filled-icon-button-icon-size, 24px);--_pressed-icon-color: var(--md-filled-icon-button-pressed-icon-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-color: var(--md-filled-icon-button-pressed-state-layer-color, var(--md-sys-color-on-primary, #fff));--_pressed-state-layer-opacity: var(--md-filled-icon-button-pressed-state-layer-opacity, 0.12);--_selected-container-color: var(--md-filled-icon-button-selected-container-color, var(--md-sys-color-primary, #6750a4));--_toggle-selected-focus-icon-color: var(--md-filled-icon-button-toggle-selected-focus-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-focus-state-layer-color: var(--md-filled-icon-button-toggle-selected-focus-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-hover-icon-color: var(--md-filled-icon-button-toggle-selected-hover-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-hover-state-layer-color: var(--md-filled-icon-button-toggle-selected-hover-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-icon-color: var(--md-filled-icon-button-toggle-selected-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-pressed-icon-color: var(--md-filled-icon-button-toggle-selected-pressed-icon-color, var(--md-sys-color-on-primary, #fff));--_toggle-selected-pressed-state-layer-color: var(--md-filled-icon-button-toggle-selected-pressed-state-layer-color, var(--md-sys-color-on-primary, #fff));--_toggle-unselected-focus-icon-color: var(--md-filled-icon-button-toggle-unselected-focus-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-focus-state-layer-color: var(--md-filled-icon-button-toggle-unselected-focus-state-layer-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-hover-icon-color: var(--md-filled-icon-button-toggle-unselected-hover-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-hover-state-layer-color: var(--md-filled-icon-button-toggle-unselected-hover-state-layer-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-icon-color: var(--md-filled-icon-button-toggle-unselected-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-pressed-icon-color: var(--md-filled-icon-button-toggle-unselected-pressed-icon-color, var(--md-sys-color-primary, #6750a4));--_toggle-unselected-pressed-state-layer-color: var(--md-filled-icon-button-toggle-unselected-pressed-state-layer-color, var(--md-sys-color-primary, #6750a4));--_unselected-container-color: var(--md-filled-icon-button-unselected-container-color, var(--md-sys-color-surface-container-highest, #e6e0e9));--_container-shape-start-start: var( --md-filled-icon-button-container-shape-start-start, var(--_container-shape) );--_container-shape-start-end: var( --md-filled-icon-button-container-shape-start-end, var(--_container-shape) );--_container-shape-end-end: var( --md-filled-icon-button-container-shape-end-end, var(--_container-shape) );--_container-shape-end-start: var( --md-filled-icon-button-container-shape-end-start, var(--_container-shape) )}.md3-icon-button{background-color:var(--_container-color);color:var(--_icon-color);--md-ripple-focus-color:var(--_focus-state-layer-color);--md-ripple-focus-opacity:var(--_focus-state-layer-opacity);--md-ripple-hover-color:var(--_hover-state-layer-color);--md-ripple-hover-opacity:var(--_hover-state-layer-opacity);--md-ripple-pressed-color:var(--_pressed-state-layer-color);--md-ripple-pressed-opacity:var(--_pressed-state-layer-opacity)}.md3-icon-button:hover{color:var(--_hover-icon-color)}.md3-icon-button:focus{color:var(--_focus-icon-color)}.md3-icon-button:active{color:var(--_pressed-icon-color)}.md3-icon-button:disabled{background-color:var(--_disabled-container-color);color:var(--_disabled-icon-color)}.md3-icon-button--toggle-filled{--md-ripple-focus-color:var(--_toggle-unselected-focus-state-layer-color);--md-ripple-hover-color:var(--_toggle-unselected-hover-state-layer-color);--md-ripple-pressed-color:var(--_toggle-unselected-pressed-state-layer-color)}.md3-icon-button--toggle-filled:not(:disabled){background-color:var(--_unselected-container-color);color:var(--_toggle-unselected-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):hover{color:var(--_toggle-unselected-hover-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):focus{color:var(--_toggle-unselected-focus-icon-color)}.md3-icon-button--toggle-filled:not(:disabled):active{color:var(--_toggle-unselected-pressed-icon-color)}.md3-icon-button--selected{--md-ripple-focus-color:var(--_toggle-selected-focus-state-layer-color);--md-ripple-hover-color:var(--_toggle-selected-hover-state-layer-color);--md-ripple-pressed-color:var(--_toggle-selected-pressed-state-layer-color)}.md3-icon-button--selected:not(:disabled){background-color:var(--_selected-container-color);color:var(--_toggle-selected-icon-color)}.md3-icon-button--selected:not(:disabled):hover{color:var(--_toggle-selected-hover-icon-color)}.md3-icon-button--selected:not(:disabled):focus{color:var(--_toggle-selected-focus-icon-color)}.md3-icon-button--selected:not(:disabled):active{color:var(--_toggle-selected-pressed-icon-color)}/*# sourceMappingURL=filled-styles.css.map */
8
8
  `;
9
9
  //# sourceMappingURL=filled-styles.css.js.map