@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
@@ -1 +1 @@
1
- {"version":3,"file":"text-field.js","sourceRoot":"","sources":["text-field.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, LitElement, nothing, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {live} from 'lit/directives/live.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {html as staticHtml, StaticValue} from 'lit/static-html.js';\n\nimport {redispatchEvent} from '../../controller/events.js';\nimport {FormController, getFormValue} from '../../controller/form-controller.js';\nimport {stringConverter} from '../../controller/string-converter.js';\nimport {ariaProperty} from '../../decorators/aria-property.js';\nimport {ARIAAutoComplete, ARIAExpanded, ARIARole} from '../../types/aria.js';\n\n/**\n * Input types that are compatible with the text field.\n */\nexport type TextFieldType =\n 'email'|'number'|'password'|'search'|'tel'|'text'|'url';\n\n/**\n * Input types that are not fully supported for the text field.\n */\nexport type UnsupportedTextFieldType =\n 'color'|'date'|'datetime-local'|'file'|'month'|'time'|'week';\n\n/**\n * Input types that are incompatible with the text field.\n */\nexport type InvalidTextFieldType =\n 'button'|'checkbox'|'hidden'|'image'|'radio'|'range'|'reset'|'submit';\n\n/**\n * A text field component.\n */\nexport abstract class TextField extends LitElement {\n static override shadowRootOptions:\n ShadowRootInit = {...LitElement.shadowRootOptions, delegatesFocus: true};\n\n @property({type: Boolean, reflect: true}) disabled = false;\n /**\n * Gets or sets whether or not the text field is in a visually invalid state.\n *\n * Calling `reportValidity()` will automatically update `error`.\n */\n @property({type: Boolean, reflect: true}) error = false;\n /**\n * The error message that replaces supporting text when `error` is true. If\n * `errorText` is an empty string, then the supporting text will continue to\n * show.\n *\n * Calling `reportValidity()` will automatically update `errorText` to the\n * native `validationMessage`.\n */\n @property({type: String}) errorText = '';\n @property({type: String}) label?: string;\n @property({type: Boolean, reflect: true}) required = false;\n /**\n * The current value of the text field. It is always a string.\n *\n * This is equal to `defaultValue` before user input.\n */\n @property({type: String}) value = '';\n /**\n * The default value of the text field. Before user input, changing the\n * default value will update `value` as well.\n *\n * When the text field is reset, its `value` will be set to this default\n * value.\n */\n @property({type: String}) defaultValue = '';\n /**\n * An optional prefix to display before the input value.\n */\n @property({type: String}) prefixText = '';\n /**\n * An optional suffix to display after the input value.\n */\n @property({type: String}) suffixText = '';\n /**\n * Whether or not the text field has a leading icon. Used for SSR.\n */\n @property({type: Boolean}) hasLeadingIcon = false;\n /**\n * Whether or not the text field has a trailing icon. Used for SSR.\n */\n @property({type: Boolean}) hasTrailingIcon = false;\n /**\n * Conveys additional information below the text field, such as how it should\n * be used.\n */\n @property({type: String}) supportingText = '';\n /**\n * Override the input text CSS `direction`. Useful for RTL languages that use\n * LTR notation for fractions.\n */\n @property({type: String}) textDirection = '';\n\n // ARIA\n @property(\n {type: String, attribute: 'data-aria-autocomplete', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n override ariaAutoComplete: ARIAAutoComplete|null = null;\n\n @property({type: String, attribute: 'data-aria-controls', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n ariaControls: string|null = null;\n\n @property(\n {type: String, attribute: 'data-aria-activedescendant', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n ariaActiveDescendant: string|null = null;\n\n @property({type: String, attribute: 'data-aria-expanded', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n override ariaExpanded: ARIAExpanded|null = null;\n\n /**\n * The `aria-label` of the text field's input.\n */\n @property({type: String, attribute: 'data-aria-label', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n override ariaLabel!: string;\n\n @property({type: String, attribute: 'data-role', noAccessor: true})\n @ariaProperty // tslint:disable-line:no-new-decorators\n override role: ARIARole|null = null;\n\n // FormElement\n get form() {\n return this.closest('form');\n }\n\n @property({type: String, reflect: true, converter: stringConverter})\n name = '';\n\n [getFormValue]() {\n return this.value;\n }\n\n // <input> properties\n /**\n * Defines the greatest value in the range of permitted values.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#max\n */\n @property({type: String}) max = '';\n /**\n * The maximum number of characters a user can enter into the text field. Set\n * to -1 for none.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#maxlength\n */\n @property({type: Number}) maxLength = -1;\n /**\n * Defines the most negative value in the range of permitted values.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#min\n */\n @property({type: String}) min = '';\n /**\n * The minimum number of characters a user can enter into the text field. Set\n * to -1 for none.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#minlength\n */\n @property({type: Number}) minLength = -1;\n /**\n * A regular expression that the text field's value must match to pass\n * constraint validation.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#pattern\n */\n @property({type: String}) pattern = '';\n @property({type: String, reflect: true, converter: stringConverter})\n placeholder = '';\n\n /**\n * Indicates whether or not a user should be able to edit the text field's\n * value.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#readonly\n */\n @property({type: Boolean, reflect: true}) readOnly = false;\n\n /**\n * Gets or sets the direction in which selection occurred.\n */\n get selectionDirection() {\n return this.getInput().selectionDirection;\n }\n set selectionDirection(value: 'forward'|'backward'|'none'|null) {\n this.getInput().selectionDirection = value;\n }\n\n /**\n * Gets or sets the end position or offset of a text selection.\n */\n get selectionEnd() {\n return this.getInput().selectionEnd;\n }\n set selectionEnd(value: number|null) {\n this.getInput().selectionEnd = value;\n }\n\n /**\n * Gets or sets the starting position or offset of a text selection.\n */\n get selectionStart() {\n return this.getInput().selectionStart;\n }\n set selectionStart(value: number|null) {\n this.getInput().selectionStart = value;\n }\n\n /**\n * Returns or sets the element's step attribute, which works with min and max\n * to limit the increments at which a numeric or date-time value can be set.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step\n */\n @property({type: String}) step = '';\n\n @property({type: String, reflect: true})\n type: TextFieldType|UnsupportedTextFieldType = 'text';\n\n /**\n * Returns the native validation error message that would be displayed upon\n * calling `reportValidity()`.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validationMessage\n */\n get validationMessage() {\n return this.getInput().validationMessage;\n }\n\n /**\n * Returns a ValidityState object that represents the validity states of the\n * text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validity\n */\n get validity() {\n return this.getInput().validity;\n }\n\n /**\n * The text field's value as a number.\n */\n get valueAsNumber() {\n return this.getInput().valueAsNumber;\n }\n set valueAsNumber(value: number) {\n this.getInput().valueAsNumber = value;\n this.value = this.getInput().value;\n }\n\n /**\n * The text field's value as a Date.\n */\n get valueAsDate() {\n return this.getInput().valueAsDate;\n }\n set valueAsDate(value: Date|null) {\n this.getInput().valueAsDate = value;\n this.value = this.getInput().value;\n }\n\n /**\n * Returns whether an element will successfully validate based on forms\n * validation rules and constraints.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/willValidate\n */\n get willValidate() {\n return this.getInput().willValidate;\n }\n\n protected abstract readonly fieldTag: StaticValue;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n @state() private focused = false;\n /**\n * When set to true, the error text's `role=\"alert\"` will be removed, then\n * re-added after an animation frame. This will re-announce an error message\n * to screen readers.\n */\n @state() private refreshErrorAlert = false;\n /**\n * Returns true when the text field's `value` property has been changed from\n * it's initial value.\n *\n * Setting `value` should always overwrite `defaultValue`, even when `value`\n * is an empty string. This flag ensures that behavior.\n */\n @state() private valueHasChanged = false;\n /**\n * Whether or not to ignore the next `value` change when computing\n * `valueHasChanged`.\n */\n private ignoreNextValueChange = false;\n /**\n * Whether or not a native error has been reported via `reportValidity()`.\n */\n @state() private nativeError = false;\n /**\n * The validation message displayed from a native error via\n * `reportValidity()`.\n */\n @state() private nativeErrorText = '';\n\n private get hasError() {\n return this.error || this.nativeError;\n }\n\n @query('input') private readonly input?: HTMLInputElement|null;\n @queryAssignedElements({slot: 'leadingicon'})\n private readonly leadingIcons!: Element[];\n @queryAssignedElements({slot: 'trailingicon'})\n private readonly trailingIcons!: Element[];\n\n constructor() {\n super();\n this.addController(new FormController(this));\n this.addEventListener('click', this.focus);\n this.addEventListener('focusin', this.handleFocusin);\n this.addEventListener('focusout', this.handleFocusout);\n }\n\n /**\n * Checks the text field's native validation and returns whether or not the\n * element is valid.\n *\n * If invalid, this method will dispatch the `invalid` event.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/checkValidity\n *\n * @return true if the text field is valid, or false if not.\n */\n checkValidity() {\n const {valid} = this.checkValidityAndDispatch();\n return valid;\n }\n\n /**\n * Focuses the text field's input text.\n */\n override focus() {\n if (this.disabled || this.matches(':focus-within')) {\n // Don't shift focus from an element within the text field, like an icon\n // button, to the input when focus is requested.\n return;\n }\n\n super.focus();\n }\n\n /**\n * Checks the text field's native validation and returns whether or not the\n * element is valid.\n *\n * If invalid, this method will dispatch the `invalid` event.\n *\n * This method will display or clear an error text message equal to the text\n * field's `validationMessage`, unless the invalid event is canceled.\n *\n * Use `setCustomValidity()` to customize the `validationMessage`.\n *\n * This method can also be used to re-announce error messages to screen\n * readers.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/reportValidity\n *\n * @return true if the text field is valid, or false if not.\n */\n reportValidity() {\n const {valid, canceled} = this.checkValidityAndDispatch();\n if (!canceled) {\n const prevMessage = this.getErrorText();\n this.nativeError = !valid;\n this.nativeErrorText = this.validationMessage;\n\n const needsRefresh =\n this.shouldErrorAnnounce() && prevMessage === this.getErrorText();\n if (needsRefresh) {\n this.refreshErrorAlert = true;\n }\n }\n\n return valid;\n }\n\n /**\n * Selects all the text in the text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select\n */\n select() {\n this.getInput().select();\n }\n\n /**\n * Sets the text field's native validation error message. This is used to\n * customize `validationMessage`.\n *\n * When the error is not an empty string, the text field is considered invalid\n * and `validity.customError` will be true.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setCustomValidity\n *\n * @param error The error message to display.\n */\n setCustomValidity(error: string) {\n this.getInput().setCustomValidity(error);\n }\n\n /**\n * Replaces a range of text with a new string.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText\n */\n setRangeText(replacement: string): void;\n setRangeText(\n replacement: string, start: number, end: number,\n selectionMode?: SelectionMode): void;\n setRangeText(...args: unknown[]) {\n // Calling setRangeText with 1 vs 3-4 arguments has different behavior.\n // Use spread syntax and type casting to ensure correct usage.\n this.getInput().setRangeText(\n ...args as Parameters<HTMLInputElement['setRangeText']>);\n this.value = this.getInput().value;\n }\n\n /**\n * Sets the start and end positions of a selection in the text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n *\n * @param start The offset into the text field for the start of the selection.\n * @param end The offset into the text field for the end of the selection.\n * @param direction The direction in which the selection is performed.\n */\n setSelectionRange(\n start: number|null, end: number|null,\n direction?: 'forward'|'backward'|'none') {\n this.getInput().setSelectionRange(start, end, direction);\n }\n\n /**\n * Decrements the value of a numeric type text field by `step` or `n` `step`\n * number of times.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/stepDown\n *\n * @param stepDecrement The number of steps to decrement, defaults to 1.\n */\n stepDown(stepDecrement?: number) {\n const input = this.getInput();\n input.stepDown(stepDecrement);\n this.value = input.value;\n }\n\n /**\n * Increments the value of a numeric type text field by `step` or `n` `step`\n * number of times.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/stepUp\n *\n * @param stepIncrement The number of steps to increment, defaults to 1.\n */\n stepUp(stepIncrement?: number) {\n const input = this.getInput();\n input.stepUp(stepIncrement);\n this.value = input.value;\n }\n\n /**\n * Reset the text field to its default value.\n */\n reset() {\n this.dirty = false;\n this.valueHasChanged = false;\n this.ignoreNextValueChange = true;\n this.value = this.defaultValue;\n this.nativeError = false;\n this.nativeErrorText = '';\n }\n\n protected override update(changedProperties: PropertyValues) {\n // Consider a value change anything that is not the initial empty string\n // value.\n const valueHasChanged = changedProperties.has('value') &&\n changedProperties.get('value') !== undefined;\n if (valueHasChanged && !this.ignoreNextValueChange) {\n this.valueHasChanged = true;\n }\n\n if (this.ignoreNextValueChange) {\n this.ignoreNextValueChange = false;\n }\n\n super.update(changedProperties);\n }\n\n override render() {\n const classes = {\n 'disabled': this.disabled,\n 'error': !this.disabled && this.hasError,\n };\n\n return html`\n <span class=\"text-field ${classMap(classes)}\">\n ${this.renderField()}\n </span>\n `;\n }\n\n protected override updated(changedProperties: PropertyValues) {\n // Keep changedProperties arg so that subclasses may call it\n\n // If a property such as `type` changes and causes the internal <input>\n // value to change without dispatching an event, re-sync it.\n const value = this.getInput().value;\n if (this.value !== value) {\n // Don't consider these updates (such as setting `defaultValue`) as\n // the developer directly changing the `value`.\n this.ignoreNextValueChange = true;\n // Note this is typically inefficient in updated() since it schedules\n // another update. However, it is needed for the <input> to fully render\n // before checking its value.\n this.value = value;\n }\n\n if (this.refreshErrorAlert) {\n // The past render cycle removed the role=\"alert\" from the error message.\n // Re-add it after an animation frame to re-announce the error.\n requestAnimationFrame(() => {\n this.refreshErrorAlert = false;\n });\n }\n }\n\n private renderField() {\n const prefix = this.renderPrefix();\n const suffix = this.renderSuffix();\n const input = this.renderInput();\n\n return staticHtml`<${this.fieldTag}\n class=\"field\"\n ?disabled=${this.disabled}\n ?error=${this.hasError}\n ?focused=${this.focused}\n ?hasEnd=${this.hasTrailingIcon}\n ?hasStart=${this.hasLeadingIcon}\n .label=${this.label}\n ?populated=${!!this.getInputValue()}\n ?required=${this.required}\n >\n ${this.renderLeadingIcon()}\n ${prefix}${input}${suffix}\n ${this.renderTrailingIcon()}\n ${this.renderSupportingText()}\n ${this.renderCounter()}\n </${this.fieldTag}>`;\n }\n\n private renderLeadingIcon() {\n return html`\n <span class=\"icon leading\" slot=\"start\">\n <slot name=\"leadingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderTrailingIcon() {\n return html`\n <span class=\"icon trailing\" slot=\"end\">\n <slot name=\"trailingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderInput() {\n const style = {direction: this.textDirection};\n\n // TODO(b/243805848): remove `as unknown as number` once lit analyzer is\n // fixed\n return html`<input\n style=${styleMap(style)}\n aria-activedescendant=${this.ariaActiveDescendant || nothing}\n aria-autocomplete=${this.ariaAutoComplete || nothing}\n aria-controls=${this.ariaControls || nothing}\n aria-describedby=${this.getAriaDescribedBy() || nothing}\n aria-expanded=${this.ariaExpanded || nothing}\n aria-invalid=${this.hasError}\n aria-label=${this.ariaLabel || this.label || nothing}\n ?disabled=${this.disabled}\n max=${(this.max || nothing) as unknown as number}\n maxlength=${this.maxLength > -1 ? this.maxLength : nothing}\n min=${(this.min || nothing) as unknown as number}\n minlength=${this.minLength > -1 ? this.minLength : nothing}\n pattern=${this.pattern || nothing}\n placeholder=${this.placeholder || nothing}\n role=${this.role || nothing}\n ?readonly=${this.readOnly}\n ?required=${this.required}\n step=${(this.step || nothing) as unknown as number}\n type=${this.type}\n .value=${live(this.getInputValue())}\n @change=${this.redispatchEvent}\n @input=${this.handleInput}\n @select=${this.redispatchEvent}\n >`;\n }\n\n private getInputValue() {\n const alwaysShowValue = this.dirty || this.valueHasChanged;\n if (alwaysShowValue) {\n return this.value;\n }\n\n return this.defaultValue || this.value;\n }\n\n private getAriaDescribedBy() {\n const ids: string[] = [];\n if (this.getSupportingText()) {\n ids.push('support');\n }\n\n if (this.getCounterText()) {\n ids.push('counter');\n }\n\n return ids.join(' ');\n }\n\n private renderPrefix() {\n return this.renderAffix(this.prefixText, /* isSuffix */ false);\n }\n\n private renderSuffix() {\n return this.renderAffix(this.suffixText, /* isSuffix */ true);\n }\n\n private renderAffix(text: string, isSuffix: boolean) {\n if (!text) {\n return nothing;\n }\n\n const classes = {\n 'suffix': isSuffix,\n 'prefix': !isSuffix,\n };\n\n return html`<span class=\"${classMap(classes)}\">${text}</span>`;\n }\n\n private renderSupportingText() {\n const text = this.getSupportingText();\n if (!text) {\n return nothing;\n }\n\n return html`<span id=\"support\"\n slot=\"supporting-text\"\n role=${this.shouldErrorAnnounce() ? 'alert' : nothing}>${text}</span>`;\n }\n\n private getSupportingText() {\n const errorText = this.getErrorText();\n return this.hasError && errorText ? errorText : this.supportingText;\n }\n\n private getErrorText() {\n return this.error ? this.errorText : this.nativeErrorText;\n }\n\n private shouldErrorAnnounce() {\n // Announce if there is an error and error text visible.\n // If refreshErrorAlert is true, do not announce. This will remove the\n // role=\"alert\" attribute. Another render cycle will happen after an\n // animation frame to re-add the role.\n return this.hasError && !!this.getErrorText() && !this.refreshErrorAlert;\n }\n\n private renderCounter() {\n const text = this.getCounterText();\n if (!text) {\n return nothing;\n }\n\n // TODO(b/244473435): add aria-label and announcements\n return html`<span id=\"counter\"\n class=\"counter\"\n slot=\"supporting-text-end\">${text}</span>`;\n }\n\n private getCounterText() {\n return this.maxLength > -1 ? `${this.value.length} / ${this.maxLength}` :\n '';\n }\n\n private handleFocusin() {\n this.focused = true;\n }\n\n private handleFocusout() {\n if (this.matches(':focus-within')) {\n // Changing focus to another child within the text field, like a button\n return;\n }\n\n this.focused = false;\n }\n\n private handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n this.redispatchEvent(event);\n }\n\n private redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n private getInput() {\n if (!this.input) {\n // If the input is not yet defined, synchronously render.\n // e.g.\n // const textField = document.createElement('md-outlined-text-field');\n // document.body.appendChild(textField);\n // textField.focus(); // synchronously render\n this.connectedCallback();\n this.scheduleUpdate();\n }\n\n if (this.isUpdatePending) {\n // If there are pending updates, synchronously perform them. This ensures\n // that constraint validation properties (like `required`) are synced\n // before interacting with input APIs that depend on them.\n this.scheduleUpdate();\n }\n\n return this.input!;\n }\n\n private checkValidityAndDispatch() {\n const valid = this.getInput().checkValidity();\n let canceled = false;\n if (!valid) {\n canceled = !this.dispatchEvent(new Event('invalid', {cancelable: true}));\n }\n\n return {valid, canceled};\n }\n\n private handleIconChange() {\n this.hasLeadingIcon = this.leadingIcons.length > 0;\n this.hasTrailingIcon = this.trailingIcons.length > 0;\n }\n}\n"]}
1
+ {"version":3,"file":"text-field.js","sourceRoot":"","sources":["text-field.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {html, isServer, LitElement, nothing, PropertyValues} from 'lit';\nimport {property, query, queryAssignedElements, state} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {live} from 'lit/directives/live.js';\nimport {styleMap} from 'lit/directives/style-map.js';\nimport {html as staticHtml, StaticValue} from 'lit/static-html.js';\n\nimport {requestUpdateOnAriaChange} from '../../aria/delegate.js';\nimport {redispatchEvent} from '../../controller/events.js';\nimport {FormController, getFormValue} from '../../controller/form-controller.js';\nimport {stringConverter} from '../../controller/string-converter.js';\nimport {ARIAMixinStrict} from '../../types/aria.js';\n\n/**\n * Input types that are compatible with the text field.\n */\nexport type TextFieldType =\n 'email'|'number'|'password'|'search'|'tel'|'text'|'url';\n\n/**\n * Input types that are not fully supported for the text field.\n */\nexport type UnsupportedTextFieldType =\n 'color'|'date'|'datetime-local'|'file'|'month'|'time'|'week';\n\n/**\n * Input types that are incompatible with the text field.\n */\nexport type InvalidTextFieldType =\n 'button'|'checkbox'|'hidden'|'image'|'radio'|'range'|'reset'|'submit';\n\n/**\n * A text field component.\n */\nexport abstract class TextField extends LitElement {\n static {\n requestUpdateOnAriaChange(this);\n }\n\n static override shadowRootOptions:\n ShadowRootInit = {...LitElement.shadowRootOptions, delegatesFocus: true};\n\n @property({type: Boolean, reflect: true}) disabled = false;\n /**\n * Gets or sets whether or not the text field is in a visually invalid state.\n *\n * Calling `reportValidity()` will automatically update `error`.\n */\n @property({type: Boolean, reflect: true}) error = false;\n /**\n * The error message that replaces supporting text when `error` is true. If\n * `errorText` is an empty string, then the supporting text will continue to\n * show.\n *\n * Calling `reportValidity()` will automatically update `errorText` to the\n * native `validationMessage`.\n */\n @property() errorText = '';\n @property() label?: string;\n @property({type: Boolean, reflect: true}) required = false;\n /**\n * The current value of the text field. It is always a string.\n *\n * This is equal to `defaultValue` before user input.\n */\n @property() value = '';\n /**\n * The default value of the text field. Before user input, changing the\n * default value will update `value` as well.\n *\n * When the text field is reset, its `value` will be set to this default\n * value.\n */\n @property() defaultValue = '';\n /**\n * An optional prefix to display before the input value.\n */\n @property() prefixText = '';\n /**\n * An optional suffix to display after the input value.\n */\n @property() suffixText = '';\n /**\n * Whether or not the text field has a leading icon. Used for SSR.\n */\n @property({type: Boolean}) hasLeadingIcon = false;\n /**\n * Whether or not the text field has a trailing icon. Used for SSR.\n */\n @property({type: Boolean}) hasTrailingIcon = false;\n /**\n * Conveys additional information below the text field, such as how it should\n * be used.\n */\n @property() supportingText = '';\n /**\n * Override the input text CSS `direction`. Useful for RTL languages that use\n * LTR notation for fractions.\n */\n @property() textDirection = '';\n\n // FormElement\n get form() {\n return this.closest('form');\n }\n\n @property({reflect: true, converter: stringConverter}) name = '';\n\n [getFormValue]() {\n return this.value;\n }\n\n // <input> properties\n /**\n * Defines the greatest value in the range of permitted values.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#max\n */\n @property() max = '';\n /**\n * The maximum number of characters a user can enter into the text field. Set\n * to -1 for none.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#maxlength\n */\n @property({type: Number}) maxLength = -1;\n /**\n * Defines the most negative value in the range of permitted values.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#min\n */\n @property() min = '';\n /**\n * The minimum number of characters a user can enter into the text field. Set\n * to -1 for none.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#minlength\n */\n @property({type: Number}) minLength = -1;\n /**\n * A regular expression that the text field's value must match to pass\n * constraint validation.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#pattern\n */\n @property() pattern = '';\n @property({reflect: true, converter: stringConverter}) placeholder = '';\n\n /**\n * Indicates whether or not a user should be able to edit the text field's\n * value.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#readonly\n */\n @property({type: Boolean, reflect: true}) readOnly = false;\n\n /**\n * Gets or sets the direction in which selection occurred.\n */\n get selectionDirection() {\n return this.getInput().selectionDirection;\n }\n set selectionDirection(value: 'forward'|'backward'|'none'|null) {\n this.getInput().selectionDirection = value;\n }\n\n /**\n * Gets or sets the end position or offset of a text selection.\n */\n get selectionEnd() {\n return this.getInput().selectionEnd;\n }\n set selectionEnd(value: number|null) {\n this.getInput().selectionEnd = value;\n }\n\n /**\n * Gets or sets the starting position or offset of a text selection.\n */\n get selectionStart() {\n return this.getInput().selectionStart;\n }\n set selectionStart(value: number|null) {\n this.getInput().selectionStart = value;\n }\n\n /**\n * Returns or sets the element's step attribute, which works with min and max\n * to limit the increments at which a numeric or date-time value can be set.\n *\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#step\n */\n @property() step = '';\n\n @property({reflect: true})\n type: TextFieldType|UnsupportedTextFieldType = 'text';\n\n /**\n * Returns the native validation error message that would be displayed upon\n * calling `reportValidity()`.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validationMessage\n */\n get validationMessage() {\n return this.getInput().validationMessage;\n }\n\n /**\n * Returns a ValidityState object that represents the validity states of the\n * text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/validity\n */\n get validity() {\n return this.getInput().validity;\n }\n\n /**\n * The text field's value as a number.\n */\n get valueAsNumber() {\n return this.getInput().valueAsNumber;\n }\n set valueAsNumber(value: number) {\n this.getInput().valueAsNumber = value;\n this.value = this.getInput().value;\n }\n\n /**\n * The text field's value as a Date.\n */\n get valueAsDate() {\n return this.getInput().valueAsDate;\n }\n set valueAsDate(value: Date|null) {\n this.getInput().valueAsDate = value;\n this.value = this.getInput().value;\n }\n\n /**\n * Returns whether an element will successfully validate based on forms\n * validation rules and constraints.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement/willValidate\n */\n get willValidate() {\n return this.getInput().willValidate;\n }\n\n protected abstract readonly fieldTag: StaticValue;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n @state() private focused = false;\n /**\n * When set to true, the error text's `role=\"alert\"` will be removed, then\n * re-added after an animation frame. This will re-announce an error message\n * to screen readers.\n */\n @state() private refreshErrorAlert = false;\n /**\n * Returns true when the text field's `value` property has been changed from\n * it's initial value.\n *\n * Setting `value` should always overwrite `defaultValue`, even when `value`\n * is an empty string. This flag ensures that behavior.\n */\n @state() private valueHasChanged = false;\n /**\n * Whether or not to ignore the next `value` change when computing\n * `valueHasChanged`.\n */\n private ignoreNextValueChange = false;\n /**\n * Whether or not a native error has been reported via `reportValidity()`.\n */\n @state() private nativeError = false;\n /**\n * The validation message displayed from a native error via\n * `reportValidity()`.\n */\n @state() private nativeErrorText = '';\n\n private get hasError() {\n return this.error || this.nativeError;\n }\n\n @query('input') private readonly input?: HTMLInputElement|null;\n @queryAssignedElements({slot: 'leadingicon'})\n private readonly leadingIcons!: Element[];\n @queryAssignedElements({slot: 'trailingicon'})\n private readonly trailingIcons!: Element[];\n\n constructor() {\n super();\n this.addController(new FormController(this));\n if (!isServer) {\n this.addEventListener('click', this.focus);\n this.addEventListener('focusin', this.handleFocusin);\n this.addEventListener('focusout', this.handleFocusout);\n }\n }\n\n /**\n * Checks the text field's native validation and returns whether or not the\n * element is valid.\n *\n * If invalid, this method will dispatch the `invalid` event.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/checkValidity\n *\n * @return true if the text field is valid, or false if not.\n */\n checkValidity() {\n const {valid} = this.checkValidityAndDispatch();\n return valid;\n }\n\n /**\n * Focuses the text field's input text.\n */\n override focus() {\n if (this.disabled || this.matches(':focus-within')) {\n // Don't shift focus from an element within the text field, like an icon\n // button, to the input when focus is requested.\n return;\n }\n\n super.focus();\n }\n\n /**\n * Checks the text field's native validation and returns whether or not the\n * element is valid.\n *\n * If invalid, this method will dispatch the `invalid` event.\n *\n * This method will display or clear an error text message equal to the text\n * field's `validationMessage`, unless the invalid event is canceled.\n *\n * Use `setCustomValidity()` to customize the `validationMessage`.\n *\n * This method can also be used to re-announce error messages to screen\n * readers.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/reportValidity\n *\n * @return true if the text field is valid, or false if not.\n */\n reportValidity() {\n const {valid, canceled} = this.checkValidityAndDispatch();\n if (!canceled) {\n const prevMessage = this.getErrorText();\n this.nativeError = !valid;\n this.nativeErrorText = this.validationMessage;\n\n const needsRefresh =\n this.shouldErrorAnnounce() && prevMessage === this.getErrorText();\n if (needsRefresh) {\n this.refreshErrorAlert = true;\n }\n }\n\n return valid;\n }\n\n /**\n * Selects all the text in the text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/select\n */\n select() {\n this.getInput().select();\n }\n\n /**\n * Sets the text field's native validation error message. This is used to\n * customize `validationMessage`.\n *\n * When the error is not an empty string, the text field is considered invalid\n * and `validity.customError` will be true.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setCustomValidity\n *\n * @param error The error message to display.\n */\n setCustomValidity(error: string) {\n this.getInput().setCustomValidity(error);\n }\n\n /**\n * Replaces a range of text with a new string.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setRangeText\n */\n setRangeText(replacement: string): void;\n setRangeText(\n replacement: string, start: number, end: number,\n selectionMode?: SelectionMode): void;\n setRangeText(...args: unknown[]) {\n // Calling setRangeText with 1 vs 3-4 arguments has different behavior.\n // Use spread syntax and type casting to ensure correct usage.\n this.getInput().setRangeText(\n ...args as Parameters<HTMLInputElement['setRangeText']>);\n this.value = this.getInput().value;\n }\n\n /**\n * Sets the start and end positions of a selection in the text field.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange\n *\n * @param start The offset into the text field for the start of the selection.\n * @param end The offset into the text field for the end of the selection.\n * @param direction The direction in which the selection is performed.\n */\n setSelectionRange(\n start: number|null, end: number|null,\n direction?: 'forward'|'backward'|'none') {\n this.getInput().setSelectionRange(start, end, direction);\n }\n\n /**\n * Decrements the value of a numeric type text field by `step` or `n` `step`\n * number of times.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/stepDown\n *\n * @param stepDecrement The number of steps to decrement, defaults to 1.\n */\n stepDown(stepDecrement?: number) {\n const input = this.getInput();\n input.stepDown(stepDecrement);\n this.value = input.value;\n }\n\n /**\n * Increments the value of a numeric type text field by `step` or `n` `step`\n * number of times.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/stepUp\n *\n * @param stepIncrement The number of steps to increment, defaults to 1.\n */\n stepUp(stepIncrement?: number) {\n const input = this.getInput();\n input.stepUp(stepIncrement);\n this.value = input.value;\n }\n\n /**\n * Reset the text field to its default value.\n */\n reset() {\n this.dirty = false;\n this.valueHasChanged = false;\n this.ignoreNextValueChange = true;\n this.value = this.defaultValue;\n this.nativeError = false;\n this.nativeErrorText = '';\n }\n\n protected override update(changedProperties: PropertyValues) {\n // Consider a value change anything that is not the initial empty string\n // value.\n const valueHasChanged = changedProperties.has('value') &&\n changedProperties.get('value') !== undefined;\n if (valueHasChanged && !this.ignoreNextValueChange) {\n this.valueHasChanged = true;\n }\n\n if (this.ignoreNextValueChange) {\n this.ignoreNextValueChange = false;\n }\n\n super.update(changedProperties);\n }\n\n override render() {\n const classes = {\n 'disabled': this.disabled,\n 'error': !this.disabled && this.hasError,\n };\n\n return html`\n <span class=\"text-field ${classMap(classes)}\">\n ${this.renderField()}\n </span>\n `;\n }\n\n protected override updated(changedProperties: PropertyValues) {\n // Keep changedProperties arg so that subclasses may call it\n\n // If a property such as `type` changes and causes the internal <input>\n // value to change without dispatching an event, re-sync it.\n const value = this.getInput().value;\n if (this.value !== value) {\n // Don't consider these updates (such as setting `defaultValue`) as\n // the developer directly changing the `value`.\n this.ignoreNextValueChange = true;\n // Note this is typically inefficient in updated() since it schedules\n // another update. However, it is needed for the <input> to fully render\n // before checking its value.\n this.value = value;\n }\n\n if (this.refreshErrorAlert) {\n // The past render cycle removed the role=\"alert\" from the error message.\n // Re-add it after an animation frame to re-announce the error.\n requestAnimationFrame(() => {\n this.refreshErrorAlert = false;\n });\n }\n }\n\n private renderField() {\n const prefix = this.renderPrefix();\n const suffix = this.renderSuffix();\n const input = this.renderInput();\n\n return staticHtml`<${this.fieldTag}\n class=\"field\"\n ?disabled=${this.disabled}\n ?error=${this.hasError}\n ?focused=${this.focused}\n ?hasEnd=${this.hasTrailingIcon}\n ?hasStart=${this.hasLeadingIcon}\n .label=${this.label}\n ?populated=${!!this.getInputValue()}\n ?required=${this.required}\n >\n ${this.renderLeadingIcon()}\n ${prefix}${input}${suffix}\n ${this.renderTrailingIcon()}\n ${this.renderSupportingText()}\n ${this.renderCounter()}\n </${this.fieldTag}>`;\n }\n\n private renderLeadingIcon() {\n return html`\n <span class=\"icon leading\" slot=\"start\">\n <slot name=\"leadingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderTrailingIcon() {\n return html`\n <span class=\"icon trailing\" slot=\"end\">\n <slot name=\"trailingicon\" @slotchange=${this.handleIconChange}></slot>\n </span>\n `;\n }\n\n private renderInput() {\n const style = {direction: this.textDirection};\n\n // TODO(b/243805848): remove `as unknown as number` once lit analyzer is\n // fixed\n return html`<input\n style=${styleMap(style)}\n aria-autocomplete=${\n (this as ARIAMixinStrict).ariaAutoComplete || nothing}\n aria-describedby=${this.getAriaDescribedBy() || nothing}\n aria-expanded=${(this as ARIAMixinStrict).ariaExpanded || nothing}\n aria-invalid=${this.hasError}\n aria-label=${\n (this as ARIAMixinStrict).ariaLabel || this.label || nothing}\n ?disabled=${this.disabled}\n max=${(this.max || nothing) as unknown as number}\n maxlength=${this.maxLength > -1 ? this.maxLength : nothing}\n min=${(this.min || nothing) as unknown as number}\n minlength=${this.minLength > -1 ? this.minLength : nothing}\n pattern=${this.pattern || nothing}\n placeholder=${this.placeholder || nothing}\n ?readonly=${this.readOnly}\n ?required=${this.required}\n step=${(this.step || nothing) as unknown as number}\n type=${this.type}\n .value=${live(this.getInputValue())}\n @change=${this.redispatchEvent}\n @input=${this.handleInput}\n @select=${this.redispatchEvent}\n >`;\n }\n\n private getInputValue() {\n const alwaysShowValue = this.dirty || this.valueHasChanged;\n if (alwaysShowValue) {\n return this.value;\n }\n\n return this.defaultValue || this.value;\n }\n\n private getAriaDescribedBy() {\n const ids: string[] = [];\n if (this.getSupportingText()) {\n ids.push('support');\n }\n\n if (this.getCounterText()) {\n ids.push('counter');\n }\n\n return ids.join(' ');\n }\n\n private renderPrefix() {\n return this.renderAffix(this.prefixText, /* isSuffix */ false);\n }\n\n private renderSuffix() {\n return this.renderAffix(this.suffixText, /* isSuffix */ true);\n }\n\n private renderAffix(text: string, isSuffix: boolean) {\n if (!text) {\n return nothing;\n }\n\n const classes = {\n 'suffix': isSuffix,\n 'prefix': !isSuffix,\n };\n\n return html`<span class=\"${classMap(classes)}\">${text}</span>`;\n }\n\n private renderSupportingText() {\n const text = this.getSupportingText();\n if (!text) {\n return nothing;\n }\n\n return html`<span id=\"support\"\n slot=\"supporting-text\"\n role=${this.shouldErrorAnnounce() ? 'alert' : nothing}>${text}</span>`;\n }\n\n private getSupportingText() {\n const errorText = this.getErrorText();\n return this.hasError && errorText ? errorText : this.supportingText;\n }\n\n private getErrorText() {\n return this.error ? this.errorText : this.nativeErrorText;\n }\n\n private shouldErrorAnnounce() {\n // Announce if there is an error and error text visible.\n // If refreshErrorAlert is true, do not announce. This will remove the\n // role=\"alert\" attribute. Another render cycle will happen after an\n // animation frame to re-add the role.\n return this.hasError && !!this.getErrorText() && !this.refreshErrorAlert;\n }\n\n private renderCounter() {\n const text = this.getCounterText();\n if (!text) {\n return nothing;\n }\n\n // TODO(b/244473435): add aria-label and announcements\n return html`<span id=\"counter\"\n class=\"counter\"\n slot=\"supporting-text-end\">${text}</span>`;\n }\n\n private getCounterText() {\n return this.maxLength > -1 ? `${this.value.length} / ${this.maxLength}` :\n '';\n }\n\n private handleFocusin() {\n this.focused = true;\n }\n\n private handleFocusout() {\n if (this.matches(':focus-within')) {\n // Changing focus to another child within the text field, like a button\n return;\n }\n\n this.focused = false;\n }\n\n private handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n this.redispatchEvent(event);\n }\n\n private redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n private getInput() {\n if (!this.input) {\n // If the input is not yet defined, synchronously render.\n // e.g.\n // const textField = document.createElement('md-outlined-text-field');\n // document.body.appendChild(textField);\n // textField.focus(); // synchronously render\n this.connectedCallback();\n this.scheduleUpdate();\n }\n\n if (this.isUpdatePending) {\n // If there are pending updates, synchronously perform them. This ensures\n // that constraint validation properties (like `required`) are synced\n // before interacting with input APIs that depend on them.\n this.scheduleUpdate();\n }\n\n return this.input!;\n }\n\n private checkValidityAndDispatch() {\n const valid = this.getInput().checkValidity();\n let canceled = false;\n if (!valid) {\n canceled = !this.dispatchEvent(new Event('invalid', {cancelable: true}));\n }\n\n return {valid, canceled};\n }\n\n private handleIconChange() {\n this.hasLeadingIcon = this.leadingIcons.length > 0;\n this.hasTrailingIcon = this.trailingIcons.length > 0;\n }\n}\n"]}
@@ -26,6 +26,7 @@
26
26
  @forward './md-comp-extended-fab-secondary' as md-comp-extended-fab-secondary-*;
27
27
  @forward './md-comp-extended-fab-surface' as md-comp-extended-fab-surface-*;
28
28
  @forward './md-comp-extended-fab-tertiary' as md-comp-extended-fab-tertiary-*;
29
+ @forward './md-comp-fab' as md-comp-fab-*;
29
30
  @forward './md-comp-fab-branded' as md-comp-fab-branded-*;
30
31
  @forward './md-comp-fab-branded-large' as md-comp-fab-branded-large-*;
31
32
  @forward './md-comp-fab-primary' as md-comp-fab-primary-*;
@@ -58,7 +59,9 @@
58
59
  @forward './md-comp-linear-progress-indicator' as
59
60
  md-comp-linear-progress-indicator-*;
60
61
  @forward './md-comp-list' as md-comp-list-*;
62
+ @forward './md-comp-list-item' as md-comp-list-item-*;
61
63
  @forward './md-comp-menu' as md-comp-menu-*;
64
+ @forward './md-comp-menu-item' as md-comp-menu-item-*;
62
65
  @forward './md-comp-navigation-bar' as md-comp-navigation-bar-*;
63
66
  @forward './md-comp-navigation-drawer' as md-comp-navigation-drawer-*;
64
67
  @forward './md-comp-navigation-rail' as md-comp-navigation-rail-*;
@@ -25,6 +25,8 @@ $supported-tokens: (
25
25
  'disabled-label-text-opacity',
26
26
  'disabled-leading-icon-color',
27
27
  'disabled-leading-icon-opacity',
28
+ 'disabled-outline-color',
29
+ 'disabled-outline-opacity',
28
30
  'elevated-container-color',
29
31
  'elevated-container-elevation',
30
32
  'elevated-container-shadow-color',
@@ -34,13 +36,9 @@ $supported-tokens: (
34
36
  'elevated-focus-container-elevation',
35
37
  'elevated-hover-container-elevation',
36
38
  'elevated-pressed-container-elevation',
37
- 'flat-disabled-outline-color',
38
- 'flat-disabled-outline-opacity',
39
- 'flat-focus-outline-color',
40
- 'flat-outline-color',
41
- 'flat-outline-width',
42
39
  'focus-label-text-color',
43
40
  'focus-leading-icon-color',
41
+ 'focus-outline-color',
44
42
  'focus-state-layer-color',
45
43
  'focus-state-layer-opacity',
46
44
  'hover-label-text-color',
@@ -51,6 +49,8 @@ $supported-tokens: (
51
49
  'label-text-color',
52
50
  'label-text-type',
53
51
  'leading-icon-color',
52
+ 'outline-color',
53
+ 'outline-width',
54
54
  'pressed-label-text-color',
55
55
  'pressed-leading-icon-color',
56
56
  'pressed-state-layer-color',
@@ -60,12 +60,12 @@ $supported-tokens: (
60
60
 
61
61
  $unsupported-tokens: (
62
62
  // go/keep-sorted start
63
+ 'container-elevation',
63
64
  'dragged-container-elevation',
64
65
  'dragged-label-text-color',
65
66
  'dragged-leading-icon-color',
66
67
  'dragged-state-layer-color',
67
68
  'dragged-state-layer-opacity',
68
- 'flat-container-elevation',
69
69
  'label-text-font',
70
70
  'label-text-line-height',
71
71
  'label-text-size',
@@ -74,19 +74,6 @@ $unsupported-tokens: (
74
74
  // go/keep-sorted end
75
75
  );
76
76
 
77
- $renamed-tokens: (
78
- // Remove "with-icon-*" prefix (b/273534858)
79
- // Rename "icon" to "leading-icon" (b/275577569)
80
- 'with-icon-disabled-icon-color': 'disabled-leading-icon-color',
81
- 'with-icon-disabled-icon-opacity': 'disabled-leading-icon-opacity',
82
- 'with-icon-dragged-icon-color': 'dragged-leading-icon-color',
83
- 'with-icon-focus-icon-color': 'focus-leading-icon-color',
84
- 'with-icon-hover-icon-color': 'hover-leading-icon-color',
85
- 'with-icon-icon-color': 'leading-icon-color',
86
- 'with-icon-icon-size': 'icon-size',
87
- 'with-icon-pressed-icon-color': 'pressed-leading-icon-color'
88
- );
89
-
90
77
  $_default: (
91
78
  'md-sys-color': md-sys-color.values-light(),
92
79
  'md-sys-elevation': md-sys-elevation.values(),
@@ -100,7 +87,25 @@ $_default: (
100
87
  md-comp-assist-chip.values($deps, $exclude-hardcoded-values),
101
88
  $supported-tokens: $supported-tokens,
102
89
  $unsupported-tokens: $unsupported-tokens,
103
- $renamed-tokens: $renamed-tokens
90
+ $renamed-tokens: (
91
+ // Remove "flat-*" prefix (b/275577569)
92
+ 'flat-container-elevation': 'container-elevation',
93
+ 'flat-disabled-outline-color': 'disabled-outline-color',
94
+ 'flat-disabled-outline-opacity': 'disabled-outline-opacity',
95
+ 'flat-focus-outline-color': 'focus-outline-color',
96
+ 'flat-outline-color': 'outline-color',
97
+ 'flat-outline-width': 'outline-width',
98
+ // Remove "with-*" prefixes (b/273534858)
99
+ // Rename "icon" to "leading-icon" (b/275577569)
100
+ 'with-icon-disabled-icon-color': 'disabled-leading-icon-color',
101
+ 'with-icon-disabled-icon-opacity': 'disabled-leading-icon-opacity',
102
+ 'with-icon-dragged-icon-color': 'dragged-leading-icon-color',
103
+ 'with-icon-focus-icon-color': 'focus-leading-icon-color',
104
+ 'with-icon-hover-icon-color': 'hover-leading-icon-color',
105
+ 'with-icon-icon-color': 'leading-icon-color',
106
+ 'with-icon-icon-size': 'icon-size',
107
+ 'with-icon-pressed-icon-color': 'pressed-leading-icon-color'
108
+ )
104
109
  );
105
110
 
106
111
  // TODO(b/271876162): remove when tokens compiler emits typescale tokens
@@ -9,19 +9,15 @@
9
9
  // go/keep-sorted start
10
10
  @use './md-sys-color';
11
11
  @use './md-sys-elevation';
12
- @use './md-sys-motion';
13
12
  // go/keep-sorted end
14
13
 
15
14
  $_default: (
16
15
  'md-sys-color': md-sys-color.values-light(),
17
16
  'md-sys-elevation': md-sys-elevation.values(),
18
- 'md-sys-motion': md-sys-motion.values(),
19
17
  );
20
18
 
21
19
  @function values($deps: $_default, $exclude-hardcoded-values: false) {
22
20
  @return (
23
- 'duration': if($exclude-hardcoded-values, null, 0s),
24
- 'easing': map.get($deps, 'md-sys-motion', 'easing-emphasized'),
25
21
  'level': map.get($deps, 'md-sys-elevation', 'level0'),
26
22
  'shadow-color': map.get($deps, 'md-sys-color', 'shadow')
27
23
  );
@@ -4,20 +4,128 @@
4
4
  //
5
5
 
6
6
  // go/keep-sorted start
7
+ @use 'sass:map';
8
+ // go/keep-sorted end
9
+ // go/keep-sorted start
10
+ @use '../sass/shape';
7
11
  @use './md-sys-color';
8
12
  @use './md-sys-elevation';
9
13
  @use './md-sys-shape';
10
14
  @use './md-sys-state';
15
+ @use './md-sys-typescale';
16
+ @use './v0_172/md-comp-extended-fab-branded';
11
17
  @use './v0_172/md-comp-fab-branded';
18
+ @use './v0_172/md-comp-fab-branded-large';
19
+ @use './values';
12
20
  // go/keep-sorted end
13
21
 
22
+ $supported-tokens: (
23
+ // go/keep-sorted start
24
+ 'container-color',
25
+ 'container-elevation',
26
+ 'container-height',
27
+ 'container-shadow-color',
28
+ 'container-shape',
29
+ 'container-width',
30
+ 'focus-container-elevation',
31
+ 'focus-label-text-color',
32
+ 'focus-state-layer-color',
33
+ 'focus-state-layer-opacity',
34
+ 'hover-container-elevation',
35
+ 'hover-label-text-color',
36
+ 'hover-state-layer-color',
37
+ 'hover-state-layer-opacity',
38
+ 'icon-size',
39
+ 'label-text-color',
40
+ 'label-text-type',
41
+ 'large-container-height',
42
+ 'large-container-shape',
43
+ 'large-container-width',
44
+ 'large-icon-size',
45
+ 'lowered-container-color',
46
+ 'lowered-container-elevation',
47
+ 'lowered-focus-container-elevation',
48
+ 'lowered-hover-container-elevation',
49
+ 'lowered-pressed-container-elevation',
50
+ 'pressed-container-elevation',
51
+ 'pressed-label-text-color',
52
+ 'pressed-state-layer-color',
53
+ 'pressed-state-layer-opacity',
54
+ // go/keep-sorted end
55
+ );
56
+
57
+ @function _get-new-tokens($deps, $exclude-hardcoded-values) {
58
+ $large-tokens: md-comp-fab-branded-large.values(
59
+ $deps,
60
+ $exclude-hardcoded-values
61
+ );
62
+ $extended-branded-tokens: md-comp-extended-fab-branded.values(
63
+ $deps,
64
+ $exclude-hardcoded-values
65
+ );
66
+
67
+ @return (
68
+ 'focus-label-text-color':
69
+ map.get($extended-branded-tokens, 'focus-label-text-color'),
70
+ 'hover-label-text-color':
71
+ map.get($extended-branded-tokens, 'hover-label-text-color'),
72
+ 'label-text-color': map.get($extended-branded-tokens, 'label-text-color'),
73
+ 'label-text-type': map.get($extended-branded-tokens, 'label-text-type'),
74
+ 'large-container-height': map.get($large-tokens, 'container-height'),
75
+ 'large-container-shape': map.get($large-tokens, 'container-shape'),
76
+ 'large-container-width': map.get($large-tokens, 'container-width'),
77
+ 'large-icon-size': map.get($large-tokens, 'icon-size'),
78
+ 'pressed-label-text-color':
79
+ map.get($extended-branded-tokens, 'pressed-label-text-color')
80
+ );
81
+ }
82
+
14
83
  $_default: (
15
84
  'md-sys-color': md-sys-color.values-light(),
16
85
  'md-sys-elevation': md-sys-elevation.values(),
17
86
  'md-sys-shape': md-sys-shape.values(),
18
87
  'md-sys-state': md-sys-state.values(),
88
+ 'md-sys-typescale': md-sys-typescale.values(),
19
89
  );
20
90
 
21
91
  @function values($deps: $_default, $exclude-hardcoded-values: false) {
22
- @return md-comp-fab-branded.values($deps, $exclude-hardcoded-values);
92
+ $tokens: values.validate(
93
+ md-comp-fab-branded.values($deps, $exclude-hardcoded-values),
94
+ $supported-tokens: $supported-tokens,
95
+ $new-tokens: _get-new-tokens($deps, $exclude-hardcoded-values)
96
+ );
97
+
98
+ @each $token, $value in $tokens {
99
+ $tokens: map.set(
100
+ $tokens,
101
+ $token,
102
+ var(--md-fab-branded-#{$token}, #{$value})
103
+ );
104
+ }
105
+
106
+ $tokens: shape.resolve-tokens($tokens, 'container-shape');
107
+ $tokens: shape.resolve-tokens($tokens, 'large-container-shape');
108
+ @return $tokens;
109
+ }
110
+
111
+ // TODO(b/276957188): Remove this when we resolve issues with values fn.
112
+ @function theme-values($deps: $_default, $exclude-hardcoded-values: false) {
113
+ $tokens: values.validate(
114
+ md-comp-fab-branded.values($deps, $exclude-hardcoded-values),
115
+ $supported-tokens: $supported-tokens,
116
+ $new-tokens: _get-new-tokens($deps, $exclude-hardcoded-values),
117
+ $is-subset: true
118
+ );
119
+
120
+ @each $token, $value in $tokens {
121
+ @if $value {
122
+ $tokens: map.set($tokens, $token, #{$value});
123
+ } @else {
124
+ $tokens: map.remove($tokens, $token);
125
+ }
126
+ }
127
+
128
+ $tokens: shape.resolve-tokens($tokens, 'container-shape');
129
+ $tokens: shape.resolve-tokens($tokens, 'large-container-shape');
130
+ @return $tokens;
23
131
  }