@material/web 1.0.0-pre.2 → 1.0.0-pre.4

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 (684) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +41 -41
  3. package/autocomplete/autocomplete-item.js.map +1 -1
  4. package/autocomplete/autocomplete-list.js.map +1 -1
  5. package/autocomplete/autocomplete-surface.js.map +1 -1
  6. package/autocomplete/filled-autocomplete.d.ts +0 -2
  7. package/autocomplete/filled-autocomplete.js +0 -7
  8. package/autocomplete/filled-autocomplete.js.map +1 -1
  9. package/autocomplete/lib/_filled-autocomplete.scss +22 -28
  10. package/autocomplete/lib/_outlined-autocomplete.scss +23 -29
  11. package/autocomplete/lib/_shared.scss +6 -10
  12. package/autocomplete/lib/autocomplete.d.ts +2 -2
  13. package/autocomplete/lib/autocomplete.js +4 -5
  14. package/autocomplete/lib/autocomplete.js.map +1 -1
  15. package/autocomplete/lib/autocompletelist/autocomplete-list-styles.scss +2 -0
  16. package/autocomplete/lib/autocompletesurface/autocomplete-surface-styles.scss +2 -0
  17. package/autocomplete/lib/filled-styles.css.js +1 -1
  18. package/autocomplete/lib/filled-styles.css.js.map +1 -1
  19. package/autocomplete/lib/filled-styles.scss +2 -0
  20. package/autocomplete/lib/outlined-styles.css.js +1 -1
  21. package/autocomplete/lib/outlined-styles.css.js.map +1 -1
  22. package/autocomplete/lib/outlined-styles.scss +2 -0
  23. package/autocomplete/lib/shared-styles.scss +2 -0
  24. package/autocomplete/outlined-autocomplete.d.ts +0 -2
  25. package/autocomplete/outlined-autocomplete.js +0 -7
  26. package/autocomplete/outlined-autocomplete.js.map +1 -1
  27. package/badge/badge.js.map +1 -1
  28. package/badge/lib/_badge.scss +10 -13
  29. package/badge/lib/badge-styles.css.js +1 -1
  30. package/badge/lib/badge-styles.css.js.map +1 -1
  31. package/badge/lib/badge-styles.scss +2 -0
  32. package/badge/lib/badge.js.map +1 -1
  33. package/button/elevated-button.js.map +1 -1
  34. package/button/elevated-link-button.js.map +1 -1
  35. package/button/filled-button.js.map +1 -1
  36. package/button/filled-link-button.js.map +1 -1
  37. package/button/lib/_elevated-button.scss +10 -15
  38. package/button/lib/_elevation.scss +4 -1
  39. package/button/lib/_filled-button.scss +12 -14
  40. package/button/lib/_icon.scss +1 -0
  41. package/button/lib/_outlined-button.scss +10 -15
  42. package/button/lib/_shared.scss +14 -19
  43. package/button/lib/_text-button.scss +12 -14
  44. package/button/lib/_tonal-button.scss +10 -15
  45. package/button/lib/button.js.map +1 -1
  46. package/button/lib/elevated-styles.css.js +1 -1
  47. package/button/lib/elevated-styles.css.js.map +1 -1
  48. package/button/lib/elevated-styles.scss +2 -0
  49. package/button/lib/filled-styles.css.js +1 -1
  50. package/button/lib/filled-styles.css.js.map +1 -1
  51. package/button/lib/filled-styles.scss +2 -0
  52. package/button/lib/link-button.js.map +1 -1
  53. package/button/lib/outlined-styles.css.js +1 -1
  54. package/button/lib/outlined-styles.css.js.map +1 -1
  55. package/button/lib/outlined-styles.scss +2 -0
  56. package/button/lib/shared-elevation-styles.scss +2 -0
  57. package/button/lib/shared-styles.css.js +1 -1
  58. package/button/lib/shared-styles.css.js.map +1 -1
  59. package/button/lib/shared-styles.scss +2 -0
  60. package/button/lib/text-styles.css.js +1 -1
  61. package/button/lib/text-styles.css.js.map +1 -1
  62. package/button/lib/text-styles.scss +2 -0
  63. package/button/lib/tonal-styles.css.js +1 -1
  64. package/button/lib/tonal-styles.css.js.map +1 -1
  65. package/button/lib/tonal-styles.scss +2 -0
  66. package/button/outlined-button.js.map +1 -1
  67. package/button/outlined-link-button.js.map +1 -1
  68. package/button/text-button.js.map +1 -1
  69. package/button/text-link-button.js.map +1 -1
  70. package/button/tonal-button.js.map +1 -1
  71. package/button/tonal-link-button.js.map +1 -1
  72. package/checkbox/checkbox.js.map +1 -1
  73. package/checkbox/lib/_checkbox.scss +26 -31
  74. package/checkbox/lib/checkbox-styles.css.js +1 -1
  75. package/checkbox/lib/checkbox-styles.css.js.map +1 -1
  76. package/checkbox/lib/checkbox-styles.scss +2 -0
  77. package/checkbox/lib/checkbox.js +6 -6
  78. package/checkbox/lib/checkbox.js.map +1 -1
  79. package/checkbox/lib/forced-colors-styles.scss +2 -0
  80. package/chips/action/delete-action.js.map +1 -1
  81. package/chips/action/lib/action.js +4 -4
  82. package/chips/action/lib/action.js.map +1 -1
  83. package/chips/action/lib/link-action.js +1 -1
  84. package/chips/action/lib/link-action.js.map +1 -1
  85. package/chips/action/lib/primary-action.js.map +1 -1
  86. package/chips/action/lib/selectable-action.js.map +1 -1
  87. package/chips/action/link-action.js.map +1 -1
  88. package/chips/action/presentational-action.js.map +1 -1
  89. package/chips/action/primary-action.js.map +1 -1
  90. package/chips/action/selectable-action.js.map +1 -1
  91. package/chips/chip/lib/_assist-chip-theme.scss +4 -0
  92. package/chips/chip/lib/_chip-theme.scss +29 -40
  93. package/chips/chip/lib/_chip.scss +2 -0
  94. package/chips/chip/lib/_filter-chip-theme.scss +4 -0
  95. package/chips/chip/lib/_input-chip-theme.scss +4 -0
  96. package/chips/chip/lib/_suggestion-chip-theme.scss +4 -0
  97. package/chips/chip/lib/chip.js.map +1 -1
  98. package/chips/chip/lib/foundation.js +4 -4
  99. package/chips/chip/lib/foundation.js.map +1 -1
  100. package/chips/chip/lib/link-chip.js.map +1 -1
  101. package/chips/chip/lib/selectable-chip.js.map +1 -1
  102. package/chips/chip/lib/types.d.ts +2 -2
  103. package/chips/chipset/lib/_chip-set-theme.scss +2 -0
  104. package/chips/chipset/lib/_chip-set.scss +2 -0
  105. package/chips/chipset/lib/foundation.js +3 -3
  106. package/chips/chipset/lib/foundation.js.map +1 -1
  107. package/chips/chipset/lib/types.d.ts +3 -3
  108. package/controller/events.js +4 -0
  109. package/controller/events.js.map +1 -1
  110. package/controller/form-controller.d.ts +1 -1
  111. package/controller/form-controller.js +21 -29
  112. package/controller/form-controller.js.map +1 -1
  113. package/dialog/dialog.js.map +1 -1
  114. package/dialog/harness.d.ts +2 -2
  115. package/dialog/harness.js +11 -8
  116. package/dialog/harness.js.map +1 -1
  117. package/dialog/lib/_dialog.scss +7 -11
  118. package/dialog/lib/_tokens.scss +9 -6
  119. package/dialog/lib/dialog-styles.css.js +1 -1
  120. package/dialog/lib/dialog-styles.css.js.map +1 -1
  121. package/dialog/lib/dialog-styles.scss +2 -0
  122. package/dialog/lib/dialog.js +9 -7
  123. package/dialog/lib/dialog.js.map +1 -1
  124. package/divider/divider.js.map +1 -1
  125. package/divider/lib/_divider.scss +2 -0
  126. package/divider/lib/divider-styles.scss +2 -0
  127. package/divider/lib/divider.js.map +1 -1
  128. package/elevation/elevation.js.map +1 -1
  129. package/elevation/lib/_elevation.scss +4 -0
  130. package/elevation/lib/_md-comp-elevation.scss +4 -0
  131. package/elevation/lib/elevation-styles.scss +2 -0
  132. package/elevation/lib/elevation.js.map +1 -1
  133. package/fab/fab-extended.js.map +1 -1
  134. package/fab/fab.js.map +1 -1
  135. package/fab/lib/_fab-extended.scss +18 -11
  136. package/fab/lib/_fab.scss +7 -2
  137. package/fab/lib/_shared.scss +16 -8
  138. package/fab/lib/fab-extended-styles.css.js +1 -1
  139. package/fab/lib/fab-extended-styles.css.js.map +1 -1
  140. package/fab/lib/fab-extended-styles.scss +2 -0
  141. package/fab/lib/fab-shared-styles.css.js +1 -1
  142. package/fab/lib/fab-shared-styles.css.js.map +1 -1
  143. package/fab/lib/fab-shared-styles.scss +2 -0
  144. package/fab/lib/fab-shared.d.ts +9 -15
  145. package/fab/lib/fab-shared.js +21 -33
  146. package/fab/lib/fab-shared.js.map +1 -1
  147. package/fab/lib/fab-styles.css.js +1 -1
  148. package/fab/lib/fab-styles.css.js.map +1 -1
  149. package/fab/lib/fab-styles.scss +2 -0
  150. package/field/filled-field.d.ts +1 -1
  151. package/field/filled-field.js +1 -1
  152. package/field/filled-field.js.map +1 -1
  153. package/field/harness.js +1 -1
  154. package/field/harness.js.map +1 -1
  155. package/field/lib/_content.scss +120 -57
  156. package/field/lib/_filled-field.scss +73 -130
  157. package/field/lib/_label.scss +27 -65
  158. package/field/lib/_md-comp-filled-field.scss +127 -56
  159. package/field/lib/_md-comp-outlined-field.scss +104 -52
  160. package/field/lib/_outlined-field.scss +108 -120
  161. package/field/lib/_shared.scss +27 -45
  162. package/field/lib/_supporting-text.scss +25 -52
  163. package/field/lib/field.d.ts +15 -31
  164. package/field/lib/field.js +130 -139
  165. package/field/lib/field.js.map +1 -1
  166. package/field/lib/filled-field.d.ts +5 -16
  167. package/field/lib/filled-field.js +8 -70
  168. package/field/lib/filled-field.js.map +1 -1
  169. package/field/lib/filled-styles.css.js +1 -1
  170. package/field/lib/filled-styles.css.js.map +1 -1
  171. package/field/lib/outlined-field.d.ts +4 -10
  172. package/field/lib/outlined-field.js +13 -33
  173. package/field/lib/outlined-field.js.map +1 -1
  174. package/field/lib/outlined-styles.css.js +1 -1
  175. package/field/lib/outlined-styles.css.js.map +1 -1
  176. package/field/lib/shared-styles.css.js +1 -1
  177. package/field/lib/shared-styles.css.js.map +1 -1
  178. package/field/outlined-field.d.ts +1 -1
  179. package/field/outlined-field.js +1 -1
  180. package/field/outlined-field.js.map +1 -1
  181. package/focus/focus-ring.js.map +1 -1
  182. package/focus/lib/_focus-ring.scss +7 -13
  183. package/focus/lib/_md-comp-focus-ring.scss +4 -0
  184. package/focus/lib/focus-ring-styles.css.js +1 -1
  185. package/focus/lib/focus-ring-styles.css.js.map +1 -1
  186. package/focus/lib/focus-ring-styles.scss +2 -0
  187. package/focus/lib/focus-ring.js.map +1 -1
  188. package/icon/icon.js.map +1 -1
  189. package/icon/lib/_icon.scss +3 -1
  190. package/icon/lib/_md-comp-icon.scss +1 -2
  191. package/icon/lib/icon-styles.css.js +1 -1
  192. package/icon/lib/icon-styles.css.js.map +1 -1
  193. package/icon/lib/icon-styles.scss +2 -0
  194. package/iconbutton/filled-icon-button-toggle.js.map +1 -1
  195. package/iconbutton/filled-icon-button.js.map +1 -1
  196. package/iconbutton/filled-link-icon-button.js.map +1 -1
  197. package/iconbutton/filled-tonal-icon-button-toggle.js.map +1 -1
  198. package/iconbutton/filled-tonal-icon-button.js.map +1 -1
  199. package/iconbutton/filled-tonal-link-icon-button.js.map +1 -1
  200. package/iconbutton/lib/_filled-icon-button.scss +19 -19
  201. package/iconbutton/lib/_filled-tonal-icon-button.scss +19 -19
  202. package/iconbutton/lib/_outlined-icon-button.scss +20 -16
  203. package/iconbutton/lib/_shared.scss +8 -8
  204. package/iconbutton/lib/_standard-icon-button.scss +21 -18
  205. package/iconbutton/lib/filled-styles.css.js +1 -1
  206. package/iconbutton/lib/filled-styles.css.js.map +1 -1
  207. package/iconbutton/lib/filled-styles.scss +2 -0
  208. package/iconbutton/lib/filled-tonal-styles.css.js +1 -1
  209. package/iconbutton/lib/filled-tonal-styles.css.js.map +1 -1
  210. package/iconbutton/lib/filled-tonal-styles.scss +2 -0
  211. package/iconbutton/lib/icon-button-toggle.js.map +1 -1
  212. package/iconbutton/lib/icon-button.js.map +1 -1
  213. package/iconbutton/lib/link-icon-button.js.map +1 -1
  214. package/iconbutton/lib/outlined-styles.css.js +1 -1
  215. package/iconbutton/lib/outlined-styles.css.js.map +1 -1
  216. package/iconbutton/lib/outlined-styles.scss +2 -0
  217. package/iconbutton/lib/shared-styles.scss +2 -0
  218. package/iconbutton/lib/standard-styles.css.js +1 -1
  219. package/iconbutton/lib/standard-styles.css.js.map +1 -1
  220. package/iconbutton/lib/standard-styles.scss +2 -0
  221. package/iconbutton/outlined-icon-button-toggle.js.map +1 -1
  222. package/iconbutton/outlined-icon-button.js.map +1 -1
  223. package/iconbutton/outlined-link-icon-button.js.map +1 -1
  224. package/iconbutton/standard-icon-button-toggle.js.map +1 -1
  225. package/iconbutton/standard-icon-button.js.map +1 -1
  226. package/iconbutton/standard-link-icon-button.js.map +1 -1
  227. package/list/lib/_list.scss +25 -11
  228. package/list/lib/list-styles.scss +2 -0
  229. package/list/lib/list.js +3 -1
  230. package/list/lib/list.js.map +1 -1
  231. package/list/lib/listitem/_list-item.scss +320 -128
  232. package/list/lib/listitem/list-item-styles.css.js +1 -1
  233. package/list/lib/listitem/list-item-styles.css.js.map +1 -1
  234. package/list/lib/listitem/list-item-styles.scss +2 -0
  235. package/list/lib/listitem/list-item.d.ts +8 -7
  236. package/list/lib/listitem/list-item.js +25 -27
  237. package/list/lib/listitem/list-item.js.map +1 -1
  238. package/list/lib/listitemlink/list-item-link.js.map +1 -1
  239. package/list/list-item-link.d.ts +18 -0
  240. package/list/list-item-link.js +19 -2
  241. package/list/list-item-link.js.map +1 -1
  242. package/list/list-item.d.ts +19 -0
  243. package/list/list-item.js +20 -2
  244. package/list/list-item.js.map +1 -1
  245. package/list/list.js.map +1 -1
  246. package/menu/lib/_menu.scss +32 -8
  247. package/menu/lib/menu-styles.css.js +1 -1
  248. package/menu/lib/menu-styles.css.js.map +1 -1
  249. package/menu/lib/menu-styles.scss +2 -0
  250. package/menu/lib/menu.d.ts +1 -1
  251. package/menu/lib/menu.js +8 -7
  252. package/menu/lib/menu.js.map +1 -1
  253. package/menu/lib/menuitem/_menu-item.scss +44 -76
  254. package/menu/lib/menuitem/menu-item-styles.css.js +1 -1
  255. package/menu/lib/menuitem/menu-item-styles.css.js.map +1 -1
  256. package/menu/lib/menuitem/menu-item-styles.scss +2 -0
  257. package/menu/lib/menuitem/menu-item.js.map +1 -1
  258. package/menu/lib/menuitemlink/menu-item-link.js.map +1 -1
  259. package/menu/lib/shared.d.ts +3 -3
  260. package/menu/lib/submenuitem/sub-menu-item.d.ts +0 -1
  261. package/menu/lib/submenuitem/sub-menu-item.js +0 -1
  262. package/menu/lib/submenuitem/sub-menu-item.js.map +1 -1
  263. package/menu/lib/surfacePositionController.d.ts +1 -1
  264. package/menu/lib/typeaheadController.d.ts +1 -1
  265. package/menu/menu-item-link.js +1 -2
  266. package/menu/menu-item-link.js.map +1 -1
  267. package/menu/menu-item.js +2 -3
  268. package/menu/menu-item.js.map +1 -1
  269. package/menu/menu.js.map +1 -1
  270. package/menu/sub-menu-item.js +1 -2
  271. package/menu/sub-menu-item.js.map +1 -1
  272. package/menusurface/lib/_md-comp-menu-surface.scss +5 -1
  273. package/menusurface/lib/_menu-surface.scss +4 -0
  274. package/menusurface/lib/foundation.js +31 -31
  275. package/menusurface/lib/foundation.js.map +1 -1
  276. package/menusurface/lib/menu-surface-styles.scss +2 -0
  277. package/menusurface/lib/menu-surface.d.ts +2 -2
  278. package/menusurface/lib/menu-surface.js.map +1 -1
  279. package/menusurface/menu-surface.js.map +1 -1
  280. package/navigationbar/lib/_navigation-bar.scss +2 -0
  281. package/navigationbar/lib/constants.d.ts +1 -1
  282. package/navigationbar/lib/navigation-bar-styles.scss +2 -0
  283. package/navigationbar/lib/navigation-bar.js.map +1 -1
  284. package/navigationbar/navigation-bar.js.map +1 -1
  285. package/navigationdrawer/lib/_navigation-drawer-modal.scss +11 -2
  286. package/navigationdrawer/lib/_navigation-drawer.scss +10 -5
  287. package/navigationdrawer/lib/_shared.scss +4 -8
  288. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js +1 -1
  289. package/navigationdrawer/lib/navigation-drawer-modal-styles.css.js.map +1 -1
  290. package/navigationdrawer/lib/navigation-drawer-modal-styles.scss +2 -0
  291. package/navigationdrawer/lib/navigation-drawer-modal.js.map +1 -1
  292. package/navigationdrawer/lib/navigation-drawer-styles.css.js +1 -1
  293. package/navigationdrawer/lib/navigation-drawer-styles.css.js.map +1 -1
  294. package/navigationdrawer/lib/navigation-drawer-styles.scss +2 -0
  295. package/navigationdrawer/lib/navigation-drawer.js.map +1 -1
  296. package/navigationdrawer/lib/shared-styles.scss +2 -0
  297. package/navigationdrawer/navigation-drawer-modal.js.map +1 -1
  298. package/navigationdrawer/navigation-drawer.js.map +1 -1
  299. package/navigationtab/lib/_navigation-tab.scss +26 -22
  300. package/navigationtab/lib/navigation-tab-styles.css.js +1 -1
  301. package/navigationtab/lib/navigation-tab-styles.css.js.map +1 -1
  302. package/navigationtab/lib/navigation-tab-styles.scss +2 -0
  303. package/navigationtab/lib/navigation-tab.js +4 -4
  304. package/navigationtab/lib/navigation-tab.js.map +1 -1
  305. package/navigationtab/navigation-tab.js.map +1 -1
  306. package/package.json +2 -2
  307. package/radio/lib/_radio.scss +16 -14
  308. package/radio/lib/forced-colors-styles.scss +2 -0
  309. package/radio/lib/radio-styles.css.js +1 -1
  310. package/radio/lib/radio-styles.css.js.map +1 -1
  311. package/radio/lib/radio-styles.scss +2 -0
  312. package/radio/lib/radio.js +21 -21
  313. package/radio/lib/radio.js.map +1 -1
  314. package/radio/radio.js.map +1 -1
  315. package/ripple/directive.d.ts +1 -33
  316. package/ripple/directive.js +7 -194
  317. package/ripple/directive.js.map +1 -1
  318. package/ripple/lib/_md-comp-ripple.scss +20 -19
  319. package/ripple/lib/_ripple.scss +20 -20
  320. package/ripple/lib/ripple-styles.css.js +1 -1
  321. package/ripple/lib/ripple-styles.css.js.map +1 -1
  322. package/ripple/lib/ripple-styles.scss +2 -0
  323. package/ripple/lib/ripple.d.ts +50 -48
  324. package/ripple/lib/ripple.js +214 -76
  325. package/ripple/lib/ripple.js.map +1 -1
  326. package/ripple/ripple.d.ts +9 -1
  327. package/ripple/ripple.js +9 -1
  328. package/ripple/ripple.js.map +1 -1
  329. package/sass/_assert.scss +2 -0
  330. package/sass/_color-scheme.scss +4 -0
  331. package/sass/_color.scss +4 -0
  332. package/sass/_elevation.scss +4 -0
  333. package/sass/_feature-flags.scss +2 -0
  334. package/sass/_map-ext.scss +2 -0
  335. package/sass/_resolvers.scss +4 -4
  336. package/sass/_shape.scss +75 -27
  337. package/sass/_string-ext.scss +44 -0
  338. package/sass/_theme.scss +4 -0
  339. package/sass/_typography.scss +18 -93
  340. package/sass/_var.scss +4 -0
  341. package/segmentedbutton/lib/_outlined-segmented-button.scss +4 -0
  342. package/segmentedbutton/lib/_shared.scss +18 -22
  343. package/segmentedbutton/lib/outlined-styles.css.js +1 -1
  344. package/segmentedbutton/lib/outlined-styles.css.js.map +1 -1
  345. package/segmentedbutton/lib/outlined-styles.scss +2 -0
  346. package/segmentedbutton/lib/segmented-button.js +4 -4
  347. package/segmentedbutton/lib/segmented-button.js.map +1 -1
  348. package/segmentedbutton/lib/shared-styles.css.js +1 -1
  349. package/segmentedbutton/lib/shared-styles.css.js.map +1 -1
  350. package/segmentedbutton/lib/shared-styles.scss +2 -0
  351. package/segmentedbutton/outlined-segmented-button.js.map +1 -1
  352. package/segmentedbuttonset/lib/_outlined-segmented-button-set.scss +9 -5
  353. package/segmentedbuttonset/lib/_shared.scss +0 -13
  354. package/segmentedbuttonset/lib/outlined-styles.css.js +1 -1
  355. package/segmentedbuttonset/lib/outlined-styles.css.js.map +1 -1
  356. package/segmentedbuttonset/lib/outlined-styles.scss +2 -0
  357. package/segmentedbuttonset/lib/segmented-button-set.js.map +1 -1
  358. package/segmentedbuttonset/lib/shared-styles.scss +2 -0
  359. package/segmentedbuttonset/outlined-segmented-button-set.js.map +1 -1
  360. package/{list/lib/listitem/list-item-private-styles.scss → slider/_slider.scss} +1 -3
  361. package/slider/harness.d.ts +20 -0
  362. package/slider/harness.js +63 -0
  363. package/slider/harness.js.map +1 -0
  364. package/slider/lib/_slider.scss +503 -0
  365. package/slider/lib/_tokens.scss +66 -0
  366. package/slider/lib/forced-colors-styles.css.js +9 -0
  367. package/slider/lib/forced-colors-styles.css.js.map +1 -0
  368. package/slider/lib/forced-colors-styles.scss +53 -0
  369. package/slider/lib/slider-styles.css.js +9 -0
  370. package/slider/lib/slider-styles.css.js.map +1 -0
  371. package/{menu/lib/menuitem/menu-item-private-styles.scss → slider/lib/slider-styles.scss} +2 -2
  372. package/slider/lib/slider.d.ts +158 -0
  373. package/slider/lib/slider.js +575 -0
  374. package/slider/lib/slider.js.map +1 -0
  375. package/slider/slider.d.ts +28 -0
  376. package/slider/slider.js +32 -0
  377. package/slider/slider.js.map +1 -0
  378. package/switch/lib/README.md +55 -0
  379. package/switch/lib/_handle.scss +17 -18
  380. package/switch/lib/_icon.scss +4 -0
  381. package/switch/lib/_switch.scss +11 -18
  382. package/switch/lib/_track.scss +2 -0
  383. package/switch/lib/switch-styles.css.js +1 -1
  384. package/switch/lib/switch-styles.css.js.map +1 -1
  385. package/switch/lib/switch-styles.scss +2 -0
  386. package/switch/lib/switch.js +9 -9
  387. package/switch/lib/switch.js.map +1 -1
  388. package/switch/switch.js.map +1 -1
  389. package/textfield/filled-text-field.d.ts +1 -1
  390. package/textfield/filled-text-field.js +1 -2
  391. package/textfield/filled-text-field.js.map +1 -1
  392. package/textfield/harness.js +1 -1
  393. package/textfield/harness.js.map +1 -1
  394. package/textfield/lib/_filled-text-field.scss +116 -110
  395. package/textfield/lib/_icon.scss +14 -73
  396. package/textfield/lib/_input.scss +15 -36
  397. package/textfield/lib/_outlined-text-field.scss +107 -103
  398. package/textfield/lib/_shared.scss +10 -29
  399. package/textfield/lib/filled-forced-colors-styles.scss +2 -0
  400. package/textfield/lib/filled-styles.css.js +1 -1
  401. package/textfield/lib/filled-styles.css.js.map +1 -1
  402. package/textfield/lib/filled-styles.scss +2 -0
  403. package/textfield/lib/filled-text-field.d.ts +6 -5
  404. package/textfield/lib/filled-text-field.js +8 -7
  405. package/textfield/lib/filled-text-field.js.map +1 -1
  406. package/textfield/lib/outlined-forced-colors-styles.scss +2 -0
  407. package/textfield/lib/outlined-styles.css.js +1 -1
  408. package/textfield/lib/outlined-styles.css.js.map +1 -1
  409. package/textfield/lib/outlined-styles.scss +2 -0
  410. package/textfield/lib/outlined-text-field.d.ts +6 -5
  411. package/textfield/lib/outlined-text-field.js +8 -7
  412. package/textfield/lib/outlined-text-field.js.map +1 -1
  413. package/textfield/lib/shared-styles.css.js +1 -1
  414. package/textfield/lib/shared-styles.css.js.map +1 -1
  415. package/textfield/lib/shared-styles.scss +2 -0
  416. package/textfield/lib/text-field.d.ts +40 -88
  417. package/textfield/lib/text-field.js +194 -270
  418. package/textfield/lib/text-field.js.map +1 -1
  419. package/textfield/outlined-text-field.d.ts +1 -1
  420. package/textfield/outlined-text-field.js +1 -2
  421. package/textfield/outlined-text-field.js.map +1 -1
  422. package/tokens/_index.scss +1 -1
  423. package/tokens/{v0_152 → v0_160}/_md-comp-assist-chip.scss +1 -1
  424. package/tokens/{v0_152 → v0_160}/_md-comp-badge.scss +1 -1
  425. package/tokens/{v0_152 → v0_160}/_md-comp-banner.scss +1 -1
  426. package/tokens/{v0_152 → v0_160}/_md-comp-bottom-app-bar.scss +1 -1
  427. package/tokens/{v0_152 → v0_160}/_md-comp-carousel-item.scss +1 -1
  428. package/tokens/{v0_152 → v0_160}/_md-comp-checkbox.scss +4 -15
  429. package/tokens/{v0_152 → v0_160}/_md-comp-circular-progress-indicator.scss +1 -1
  430. package/tokens/{v0_152 → v0_160}/_md-comp-data-table.scss +1 -3
  431. package/tokens/{v0_152 → v0_160}/_md-comp-date-input-modal.scss +10 -10
  432. package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-docked.scss +23 -23
  433. package/tokens/{v0_152 → v0_160}/_md-comp-date-picker-modal.scss +34 -34
  434. package/tokens/{v0_152 → v0_160}/_md-comp-dialog.scss +1 -1
  435. package/tokens/{v0_152 → v0_160}/_md-comp-divider.scss +1 -1
  436. package/tokens/{v0_152 → v0_160}/_md-comp-elevated-button.scss +1 -1
  437. package/tokens/{v0_152 → v0_160}/_md-comp-elevated-card.scss +1 -1
  438. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-branded.scss +1 -1
  439. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-primary.scss +1 -1
  440. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-secondary.scss +1 -1
  441. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-surface.scss +1 -1
  442. package/tokens/{v0_152 → v0_160}/_md-comp-extended-fab-tertiary.scss +1 -1
  443. package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded-large.scss +1 -1
  444. package/tokens/{v0_152 → v0_160}/_md-comp-fab-branded.scss +1 -1
  445. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-large.scss +1 -1
  446. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary-small.scss +1 -1
  447. package/tokens/{v0_152 → v0_160}/_md-comp-fab-primary.scss +1 -1
  448. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-large.scss +1 -1
  449. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary-small.scss +1 -1
  450. package/tokens/{v0_152 → v0_160}/_md-comp-fab-secondary.scss +1 -1
  451. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-large.scss +1 -1
  452. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface-small.scss +1 -1
  453. package/tokens/{v0_152 → v0_160}/_md-comp-fab-surface.scss +1 -1
  454. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-large.scss +1 -1
  455. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary-small.scss +1 -1
  456. package/tokens/{v0_152 → v0_160}/_md-comp-fab-tertiary.scss +1 -1
  457. package/tokens/{v0_152 → v0_160}/_md-comp-filled-autocomplete.scss +1 -1
  458. package/tokens/{v0_152 → v0_160}/_md-comp-filled-button.scss +1 -1
  459. package/tokens/{v0_152 → v0_160}/_md-comp-filled-card.scss +1 -1
  460. package/tokens/{v0_152 → v0_160}/_md-comp-filled-icon-button.scss +1 -1
  461. package/tokens/{v0_152 → v0_160}/_md-comp-filled-menu-button.scss +1 -1
  462. package/tokens/{v0_152 → v0_160}/_md-comp-filled-select.scss +1 -1
  463. package/tokens/{v0_152 → v0_160}/_md-comp-filled-text-field.scss +1 -1
  464. package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-button.scss +1 -1
  465. package/tokens/{v0_152 → v0_160}/_md-comp-filled-tonal-icon-button.scss +1 -1
  466. package/tokens/{v0_152 → v0_160}/_md-comp-filter-chip.scss +1 -1
  467. package/tokens/{v0_152 → v0_160}/_md-comp-full-screen-dialog.scss +1 -1
  468. package/tokens/{v0_152 → v0_160}/_md-comp-icon-button.scss +1 -1
  469. package/tokens/{v0_152 → v0_160}/_md-comp-input-chip.scss +1 -1
  470. package/tokens/{v0_152 → v0_160}/_md-comp-linear-progress-indicator.scss +1 -1
  471. package/tokens/{v0_152 → v0_160}/_md-comp-list.scss +1 -1
  472. package/tokens/{v0_152 → v0_160}/_md-comp-menu.scss +1 -1
  473. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-bar.scss +1 -1
  474. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-drawer.scss +1 -1
  475. package/tokens/{v0_152 → v0_160}/_md-comp-navigation-rail.scss +1 -1
  476. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-autocomplete.scss +1 -1
  477. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-button.scss +1 -1
  478. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-card.scss +1 -1
  479. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-icon-button.scss +1 -1
  480. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-menu-button.scss +1 -1
  481. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-segmented-button.scss +1 -1
  482. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-select.scss +1 -1
  483. package/tokens/{v0_152 → v0_160}/_md-comp-outlined-text-field.scss +1 -1
  484. package/tokens/{v0_152 → v0_160}/_md-comp-plain-tooltip.scss +1 -1
  485. package/tokens/{v0_152 → v0_160}/_md-comp-primary-navigation-tab.scss +1 -3
  486. package/tokens/{v0_152 → v0_160}/_md-comp-radio-button.scss +1 -1
  487. package/tokens/{v0_152 → v0_160}/_md-comp-rich-tooltip.scss +1 -1
  488. package/tokens/{v0_152 → v0_160}/_md-comp-scrim.scss +1 -1
  489. package/tokens/{v0_152 → v0_160}/_md-comp-search-bar.scss +1 -1
  490. package/tokens/{v0_152 → v0_160}/_md-comp-search-view.scss +1 -1
  491. package/tokens/{v0_152 → v0_160}/_md-comp-secondary-navigation-tab.scss +1 -3
  492. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-bottom.scss +1 -1
  493. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-floating.scss +1 -1
  494. package/tokens/{v0_152 → v0_160}/_md-comp-sheet-side.scss +10 -10
  495. package/tokens/{v0_152 → v0_160}/_md-comp-slider.scss +1 -1
  496. package/tokens/{v0_152 → v0_160}/_md-comp-snackbar.scss +1 -1
  497. package/tokens/{v0_152 → v0_160}/_md-comp-standard-menu-button.scss +1 -1
  498. package/tokens/{v0_152 → v0_160}/_md-comp-suggestion-chip.scss +1 -1
  499. package/tokens/{v0_152 → v0_160}/_md-comp-switch.scss +1 -1
  500. package/tokens/{v0_152 → v0_160}/_md-comp-text-button.scss +1 -1
  501. package/tokens/{v0_152 → v0_160}/_md-comp-time-input.scss +1 -1
  502. package/tokens/{v0_152 → v0_160}/_md-comp-time-picker.scss +1 -1
  503. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-large.scss +1 -1
  504. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-medium.scss +1 -1
  505. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small-centered.scss +1 -1
  506. package/tokens/{v0_152 → v0_160}/_md-comp-top-app-bar-small.scss +1 -1
  507. package/tokens/{v0_152 → v0_160}/_md-ref-palette.scss +1 -1
  508. package/tokens/{v0_152 → v0_160}/_md-ref-typeface.scss +1 -1
  509. package/tokens/{v0_152 → v0_160}/_md-sys-color.scss +217 -1
  510. package/tokens/{v0_152 → v0_160}/_md-sys-elevation.scss +1 -1
  511. package/tokens/{v0_152 → v0_160}/_md-sys-motion.scss +1 -1
  512. package/tokens/{v0_152 → v0_160}/_md-sys-shape.scss +1 -1
  513. package/tokens/{v0_152 → v0_160}/_md-sys-state.scss +1 -1
  514. package/tokens/{v0_152 → v0_160}/_md-sys-typescale.scss +1 -1
  515. package/tokens/v0_161/_index.scss +107 -0
  516. package/tokens/v0_161/_md-comp-assist-chip.scss +109 -0
  517. package/tokens/v0_161/_md-comp-badge.scss +58 -0
  518. package/tokens/v0_161/_md-comp-banner.scss +75 -0
  519. package/tokens/v0_161/_md-comp-bottom-app-bar.scss +35 -0
  520. package/tokens/v0_161/_md-comp-carousel-item.scss +65 -0
  521. package/tokens/v0_161/_md-comp-checkbox.scss +126 -0
  522. package/tokens/v0_161/_md-comp-circular-progress-indicator.scss +39 -0
  523. package/tokens/v0_161/_md-comp-data-table.scss +96 -0
  524. package/tokens/v0_161/_md-comp-date-input-modal.scss +89 -0
  525. package/tokens/v0_161/_md-comp-date-picker-docked.scss +246 -0
  526. package/tokens/v0_161/_md-comp-date-picker-modal.scss +305 -0
  527. package/tokens/v0_161/_md-comp-dialog.scss +123 -0
  528. package/tokens/v0_161/_md-comp-divider.scss +25 -0
  529. package/tokens/v0_161/_md-comp-elevated-button.scss +91 -0
  530. package/tokens/v0_161/_md-comp-elevated-card.scss +59 -0
  531. package/tokens/v0_161/_md-comp-extended-fab-branded.scss +86 -0
  532. package/tokens/v0_161/_md-comp-extended-fab-primary.scss +94 -0
  533. package/tokens/v0_161/_md-comp-extended-fab-secondary.scss +95 -0
  534. package/tokens/v0_161/_md-comp-extended-fab-surface.scss +90 -0
  535. package/tokens/v0_161/_md-comp-extended-fab-tertiary.scss +95 -0
  536. package/tokens/v0_161/_md-comp-fab-branded-large.scss +60 -0
  537. package/tokens/v0_161/_md-comp-fab-branded.scss +60 -0
  538. package/tokens/v0_161/_md-comp-fab-primary-large.scss +65 -0
  539. package/tokens/v0_161/_md-comp-fab-primary-small.scss +65 -0
  540. package/tokens/v0_161/_md-comp-fab-primary.scss +65 -0
  541. package/tokens/v0_161/_md-comp-fab-secondary-large.scss +66 -0
  542. package/tokens/v0_161/_md-comp-fab-secondary-small.scss +66 -0
  543. package/tokens/v0_161/_md-comp-fab-secondary.scss +66 -0
  544. package/tokens/v0_161/_md-comp-fab-surface-large.scss +64 -0
  545. package/tokens/v0_161/_md-comp-fab-surface-small.scss +64 -0
  546. package/tokens/v0_161/_md-comp-fab-surface.scss +64 -0
  547. package/tokens/v0_161/_md-comp-fab-tertiary-large.scss +66 -0
  548. package/tokens/v0_161/_md-comp-fab-tertiary-small.scss +66 -0
  549. package/tokens/v0_161/_md-comp-fab-tertiary.scss +66 -0
  550. package/tokens/v0_161/_md-comp-filled-autocomplete.scss +267 -0
  551. package/tokens/v0_161/_md-comp-filled-button.scss +89 -0
  552. package/tokens/v0_161/_md-comp-filled-card.scss +58 -0
  553. package/tokens/v0_161/_md-comp-filled-icon-button.scss +79 -0
  554. package/tokens/v0_161/_md-comp-filled-menu-button.scss +98 -0
  555. package/tokens/v0_161/_md-comp-filled-select.scss +272 -0
  556. package/tokens/v0_161/_md-comp-filled-text-field.scss +189 -0
  557. package/tokens/v0_161/_md-comp-filled-tonal-button.scss +99 -0
  558. package/tokens/v0_161/_md-comp-filled-tonal-icon-button.scss +86 -0
  559. package/tokens/v0_161/_md-comp-filter-chip.scss +209 -0
  560. package/tokens/v0_161/_md-comp-full-screen-dialog.scss +111 -0
  561. package/tokens/v0_161/_md-comp-icon-button.scss +70 -0
  562. package/tokens/v0_161/_md-comp-input-chip.scss +184 -0
  563. package/tokens/v0_161/_md-comp-linear-progress-indicator.scss +41 -0
  564. package/tokens/v0_161/_md-comp-list.scss +248 -0
  565. package/tokens/v0_161/_md-comp-menu.scss +37 -0
  566. package/tokens/v0_161/_md-comp-navigation-bar.scss +114 -0
  567. package/tokens/v0_161/_md-comp-navigation-drawer.scss +162 -0
  568. package/tokens/v0_161/_md-comp-navigation-rail.scss +131 -0
  569. package/tokens/v0_161/_md-comp-outlined-autocomplete.scss +257 -0
  570. package/tokens/v0_161/_md-comp-outlined-button.scss +84 -0
  571. package/tokens/v0_161/_md-comp-outlined-card.scss +65 -0
  572. package/tokens/v0_161/_md-comp-outlined-icon-button.scss +79 -0
  573. package/tokens/v0_161/_md-comp-outlined-menu-button.scss +94 -0
  574. package/tokens/v0_161/_md-comp-outlined-segmented-button.scss +112 -0
  575. package/tokens/v0_161/_md-comp-outlined-select.scss +262 -0
  576. package/tokens/v0_161/_md-comp-outlined-text-field.scss +171 -0
  577. package/tokens/v0_161/_md-comp-plain-tooltip.scss +55 -0
  578. package/tokens/v0_161/_md-comp-primary-navigation-tab.scss +121 -0
  579. package/tokens/v0_161/_md-comp-radio-button.scss +68 -0
  580. package/tokens/v0_161/_md-comp-rich-tooltip.scss +121 -0
  581. package/tokens/v0_161/_md-comp-scrim.scss +25 -0
  582. package/tokens/v0_161/_md-comp-search-bar.scss +99 -0
  583. package/tokens/v0_161/_md-comp-search-view.scss +93 -0
  584. package/tokens/v0_161/_md-comp-secondary-navigation-tab.scss +84 -0
  585. package/tokens/v0_161/_md-comp-sheet-bottom.scss +45 -0
  586. package/tokens/v0_161/_md-comp-sheet-floating.scss +34 -0
  587. package/tokens/v0_161/_md-comp-sheet-side.scss +91 -0
  588. package/tokens/v0_161/_md-comp-slider.scss +114 -0
  589. package/tokens/v0_161/_md-comp-snackbar.scss +127 -0
  590. package/tokens/v0_161/_md-comp-standard-menu-button.scss +98 -0
  591. package/tokens/v0_161/_md-comp-suggestion-chip.scss +125 -0
  592. package/tokens/v0_161/_md-comp-switch.scss +136 -0
  593. package/tokens/v0_161/_md-comp-text-button.scss +77 -0
  594. package/tokens/v0_161/_md-comp-time-input.scss +218 -0
  595. package/tokens/v0_161/_md-comp-time-picker.scss +264 -0
  596. package/tokens/v0_161/_md-comp-top-app-bar-large.scss +63 -0
  597. package/tokens/v0_161/_md-comp-top-app-bar-medium.scss +63 -0
  598. package/tokens/v0_161/_md-comp-top-app-bar-small-centered.scss +66 -0
  599. package/tokens/v0_161/_md-comp-top-app-bar-small.scss +64 -0
  600. package/tokens/v0_161/_md-ref-palette.scss +107 -0
  601. package/tokens/v0_161/_md-ref-typeface.scss +21 -0
  602. package/tokens/v0_161/_md-sys-color.scss +904 -0
  603. package/tokens/v0_161/_md-sys-elevation.scss +21 -0
  604. package/tokens/v0_161/_md-sys-motion.scss +53 -0
  605. package/tokens/v0_161/_md-sys-shape.scss +30 -0
  606. package/tokens/v0_161/_md-sys-state.scss +19 -0
  607. package/tokens/v0_161/_md-sys-typescale.scss +284 -0
  608. package/tokens/v0_161/index.test.css.js +9 -0
  609. package/tokens/v0_161/index.test.css.js.map +1 -0
  610. package/tokens/v0_161/index.test.scss +584 -0
  611. package/tokens/v0_161/lib.test.css.js +9 -0
  612. package/tokens/v0_161/lib.test.css.js.map +1 -0
  613. package/tokens/v0_161/lib.test.scss +663 -0
  614. package/controller/foundation.d.ts +0 -24
  615. package/controller/foundation.js +0 -18
  616. package/controller/foundation.js.map +0 -1
  617. package/controller/observer-foundation.d.ts +0 -25
  618. package/controller/observer-foundation.js +0 -37
  619. package/controller/observer-foundation.js.map +0 -1
  620. package/controller/observer.d.ts +0 -52
  621. package/controller/observer.js +0 -149
  622. package/controller/observer.js.map +0 -1
  623. package/decorators/bound.d.ts +0 -40
  624. package/decorators/bound.js +0 -49
  625. package/decorators/bound.js.map +0 -1
  626. package/list/lib/avatar/_list-item-avatar.scss +0 -38
  627. package/list/lib/avatar/list-item-avatar-styles.css.js +0 -9
  628. package/list/lib/avatar/list-item-avatar-styles.css.js.map +0 -1
  629. package/list/lib/avatar/list-item-avatar-styles.scss +0 -8
  630. package/list/lib/avatar/list-item-avatar.d.ts +0 -21
  631. package/list/lib/avatar/list-item-avatar.js +0 -48
  632. package/list/lib/avatar/list-item-avatar.js.map +0 -1
  633. package/list/lib/icon/_list-item-icon.scss +0 -67
  634. package/list/lib/icon/list-item-icon-styles.css.js +0 -9
  635. package/list/lib/icon/list-item-icon-styles.css.js.map +0 -1
  636. package/list/lib/icon/list-item-icon-styles.scss +0 -8
  637. package/list/lib/icon/list-item-icon.d.ts +0 -9
  638. package/list/lib/icon/list-item-icon.js +0 -15
  639. package/list/lib/icon/list-item-icon.js.map +0 -1
  640. package/list/lib/image/_list-item-image.scss +0 -59
  641. package/list/lib/image/list-item-image-styles.css.js +0 -9
  642. package/list/lib/image/list-item-image-styles.css.js.map +0 -1
  643. package/list/lib/image/list-item-image-styles.scss +0 -8
  644. package/list/lib/image/list-item-image.d.ts +0 -21
  645. package/list/lib/image/list-item-image.js +0 -48
  646. package/list/lib/image/list-item-image.js.map +0 -1
  647. package/list/lib/listitem/list-item-private-styles.css.js +0 -9
  648. package/list/lib/listitem/list-item-private-styles.css.js.map +0 -1
  649. package/list/lib/video/_list-item-video.scss +0 -67
  650. package/list/lib/video/list-item-video-styles.css.d.ts +0 -1
  651. package/list/lib/video/list-item-video-styles.css.js +0 -9
  652. package/list/lib/video/list-item-video-styles.css.js.map +0 -1
  653. package/list/lib/video/list-item-video-styles.scss +0 -8
  654. package/list/lib/video/list-item-video.d.ts +0 -53
  655. package/list/lib/video/list-item-video.js +0 -115
  656. package/list/lib/video/list-item-video.js.map +0 -1
  657. package/list/list-item-avatar.d.ts +0 -20
  658. package/list/list-item-avatar.js +0 -23
  659. package/list/list-item-avatar.js.map +0 -1
  660. package/list/list-item-icon.d.ts +0 -20
  661. package/list/list-item-icon.js +0 -23
  662. package/list/list-item-icon.js.map +0 -1
  663. package/list/list-item-image.d.ts +0 -20
  664. package/list/list-item-image.js +0 -23
  665. package/list/list-item-image.js.map +0 -1
  666. package/list/list-item-video.d.ts +0 -20
  667. package/list/list-item-video.js +0 -23
  668. package/list/list-item-video.js.map +0 -1
  669. package/menu/lib/menuitem/menu-item-private-styles.css.d.ts +0 -1
  670. package/menu/lib/menuitem/menu-item-private-styles.css.js +0 -9
  671. package/menu/lib/menuitem/menu-item-private-styles.css.js.map +0 -1
  672. /package/{list/lib/avatar/list-item-avatar-styles.css.d.ts → slider/lib/forced-colors-styles.css.d.ts} +0 -0
  673. /package/{list/lib/icon/list-item-icon-styles.css.d.ts → slider/lib/slider-styles.css.d.ts} +0 -0
  674. /package/tokens/{v0_152 → v0_160}/_index.scss +0 -0
  675. /package/tokens/{v0_152 → v0_160}/index.test.css.d.ts +0 -0
  676. /package/tokens/{v0_152 → v0_160}/index.test.css.js +0 -0
  677. /package/tokens/{v0_152 → v0_160}/index.test.css.js.map +0 -0
  678. /package/tokens/{v0_152 → v0_160}/index.test.scss +0 -0
  679. /package/tokens/{v0_152 → v0_160}/lib.test.css.d.ts +0 -0
  680. /package/tokens/{v0_152 → v0_160}/lib.test.css.js +0 -0
  681. /package/tokens/{v0_152 → v0_160}/lib.test.css.js.map +0 -0
  682. /package/tokens/{v0_152 → v0_160}/lib.test.scss +0 -0
  683. /package/{list/lib/image/list-item-image-styles.css.d.ts → tokens/v0_161/index.test.css.d.ts} +0 -0
  684. /package/{list/lib/listitem/list-item-private-styles.css.d.ts → tokens/v0_161/lib.test.css.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCChipActionFocusBehavior, MDCChipActionInteractionTrigger, MDCChipActionType} from '../../action/lib/constants.js';\nimport {MDCChipActionInteractionEventDetail} from '../../action/lib/types.js';\n\nimport {MDCChipAdapter} from './adapter.js';\nimport {AnimationFrame} from './animationframe.js';\nimport {MDCChipAnimation, MDCChipAttributes, MDCChipCssClasses, MDCChipEvents} from './constants.js';\nimport {ActionInteractionEvent, ActionNavigationEvent, MDCChipAnimationEventDetail, MDCChipInteractionEventDetail, MDCChipNavigationEventDetail} from './types.js';\n\ninterface Navigation {\n from: MDCChipActionType;\n to: MDCChipActionType;\n}\n\nenum Direction {\n UNSPECIFIED, // Default\n LEFT,\n RIGHT,\n}\n\nenum AnimationKeys {\n SELECTION = 'selection',\n EXIT = 'exit',\n}\n\n/**\n * MDCChipFoundation provides a foundation for all chips.\n */\nexport class MDCChipFoundation {\n private readonly adapter: MDCChipAdapter;\n\n static get defaultAdapter(): MDCChipAdapter {\n return {\n addClass: () => undefined,\n emitEvent: () => undefined,\n getActions: () => [],\n getAttribute: () => null,\n getElementID: () => '',\n getOffsetWidth: () => 0,\n hasClass: () => false,\n isActionDisabled: () => false,\n isActionFocusable: () => false,\n isActionSelectable: () => false,\n isActionSelected: () => false,\n isRTL: () => false,\n removeClass: () => undefined,\n setActionDisabled: () => undefined,\n setActionFocus: () => undefined,\n setActionSelected: () => undefined,\n setStyleProperty: () => undefined,\n };\n }\n\n private readonly animFrame: AnimationFrame;\n\n constructor(adapter?: Partial<MDCChipAdapter>) {\n this.adapter = {...MDCChipFoundation.defaultAdapter, ...adapter};\n this.animFrame = new AnimationFrame();\n }\n\n destroy() {\n this.animFrame.cancelAll();\n }\n\n getElementID() {\n return this.adapter.getElementID();\n }\n\n setDisabled(isDisabled: boolean) {\n const actions = this.getActions();\n for (const action of actions) {\n this.adapter.setActionDisabled(action, isDisabled);\n }\n\n if (isDisabled) {\n this.adapter.addClass(MDCChipCssClasses.DISABLED);\n } else {\n this.adapter.removeClass(MDCChipCssClasses.DISABLED);\n }\n }\n\n isDisabled(): boolean {\n const actions = this.getActions();\n for (const action of actions) {\n if (this.adapter.isActionDisabled(action)) {\n return true;\n }\n }\n return false;\n }\n\n getActions(): MDCChipActionType[] {\n return this.adapter.getActions();\n }\n\n isActionFocusable(action: MDCChipActionType): boolean {\n return this.adapter.isActionFocusable(action);\n }\n\n isActionSelectable(action: MDCChipActionType): boolean {\n return this.adapter.isActionSelectable(action);\n }\n\n isActionSelected(action: MDCChipActionType): boolean {\n return this.adapter.isActionSelected(action);\n }\n\n setActionFocus(action: MDCChipActionType, focus: MDCChipActionFocusBehavior) {\n this.adapter.setActionFocus(action, focus);\n }\n\n setActionSelected(action: MDCChipActionType, isSelected: boolean) {\n this.adapter.setActionSelected(action, isSelected);\n this.animateSelection(isSelected);\n }\n\n startAnimation(animation: MDCChipAnimation) {\n if (animation === MDCChipAnimation.ENTER) {\n this.adapter.addClass(MDCChipCssClasses.ENTER);\n return;\n }\n\n if (animation === MDCChipAnimation.EXIT) {\n this.adapter.addClass(MDCChipCssClasses.EXIT);\n return;\n }\n }\n\n handleAnimationEnd(event: AnimationEvent) {\n const {animationName} = event;\n if (animationName === MDCChipAnimation.ENTER) {\n this.adapter.removeClass(MDCChipCssClasses.ENTER);\n this.adapter.emitEvent<MDCChipAnimationEventDetail>(\n MDCChipEvents.ANIMATION, {\n chipID: this.getElementID(),\n animation: MDCChipAnimation.ENTER,\n addedAnnouncement: this.getAddedAnnouncement(),\n isComplete: true,\n });\n return;\n }\n\n if (animationName === MDCChipAnimation.EXIT) {\n this.adapter.removeClass(MDCChipCssClasses.EXIT);\n this.adapter.addClass(MDCChipCssClasses.HIDDEN);\n const width = this.adapter.getOffsetWidth();\n this.adapter.setStyleProperty('width', `${width}px`);\n // Wait two frames so the width gets applied correctly.\n this.animFrame.request(AnimationKeys.EXIT, () => {\n this.animFrame.request(AnimationKeys.EXIT, () => {\n this.adapter.setStyleProperty('width', '0');\n });\n });\n }\n }\n\n handleTransitionEnd() {\n if (!this.adapter.hasClass(MDCChipCssClasses.HIDDEN)) return;\n\n this.adapter.emitEvent<MDCChipAnimationEventDetail>(\n MDCChipEvents.ANIMATION, {\n chipID: this.getElementID(),\n animation: MDCChipAnimation.EXIT,\n removedAnnouncement: this.getRemovedAnnouncement(),\n isComplete: true,\n });\n }\n\n handleActionInteraction({detail}: ActionInteractionEvent) {\n const {source, actionID} = detail;\n const isSelectable = this.adapter.isActionSelectable(source);\n const isSelected = this.adapter.isActionSelected(source);\n\n this.adapter.emitEvent<MDCChipInteractionEventDetail>(\n MDCChipEvents.INTERACTION, {\n chipID: this.getElementID(),\n shouldRemove: this.shouldRemove(detail),\n actionID,\n isSelectable,\n isSelected,\n source,\n });\n }\n\n handleActionNavigation({detail}: ActionNavigationEvent) {\n const {source, key} = detail;\n const isRTL = this.adapter.isRTL();\n const isTrailingActionFocusable =\n this.adapter.isActionFocusable(MDCChipActionType.TRAILING);\n const isPrimaryActionFocusable =\n this.adapter.isActionFocusable(MDCChipActionType.PRIMARY);\n const dir = this.directionFromKey(key, isRTL);\n\n const shouldNavigateToTrailing = source === MDCChipActionType.PRIMARY &&\n dir === Direction.RIGHT && isTrailingActionFocusable;\n\n const shouldNavigateToPrimary = source === MDCChipActionType.TRAILING &&\n dir === Direction.LEFT && isPrimaryActionFocusable;\n\n if (shouldNavigateToTrailing) {\n this.navigateActions({from: source, to: MDCChipActionType.TRAILING});\n return;\n }\n\n if (shouldNavigateToPrimary) {\n this.navigateActions({from: source, to: MDCChipActionType.PRIMARY});\n return;\n }\n\n this.adapter.emitEvent<MDCChipNavigationEventDetail>(\n MDCChipEvents.NAVIGATION, {\n chipID: this.getElementID(),\n isRTL,\n source,\n key,\n });\n }\n\n private directionFromKey(key: string, isRTL: boolean): Direction {\n const isLeftKey = key === 'ArrowLeft';\n const isRightKey = key === 'ArrowRight';\n if (!isRTL && isLeftKey || isRTL && isRightKey) {\n return Direction.LEFT;\n }\n\n if (!isRTL && isRightKey || isRTL && isLeftKey) {\n return Direction.RIGHT;\n }\n\n return Direction.UNSPECIFIED;\n }\n\n private navigateActions(nav: Navigation) {\n this.adapter.setActionFocus(\n nav.from, MDCChipActionFocusBehavior.NOT_FOCUSABLE);\n this.adapter.setActionFocus(\n nav.to, MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n }\n\n private shouldRemove({source, trigger}: MDCChipActionInteractionEventDetail):\n boolean {\n if (trigger === MDCChipActionInteractionTrigger.BACKSPACE_KEY ||\n trigger === MDCChipActionInteractionTrigger.DELETE_KEY) {\n return true;\n }\n\n return source === MDCChipActionType.TRAILING;\n }\n\n private getRemovedAnnouncement(): string|undefined {\n const msg =\n this.adapter.getAttribute(MDCChipAttributes.DATA_REMOVED_ANNOUNCEMENT);\n return msg || undefined;\n }\n\n private getAddedAnnouncement(): string|undefined {\n const msg =\n this.adapter.getAttribute(MDCChipAttributes.DATA_ADDED_ANNOUNCEMENT);\n return msg || undefined;\n }\n\n private animateSelection(isSelected: boolean) {\n this.resetAnimationStyles();\n // Wait two frames to ensure the animation classes are unset\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.updateSelectionStyles(isSelected);\n });\n });\n }\n\n private resetAnimationStyles() {\n this.adapter.removeClass(MDCChipCssClasses.SELECTING);\n this.adapter.removeClass(MDCChipCssClasses.DESELECTING);\n this.adapter.removeClass(MDCChipCssClasses.SELECTING_WITH_PRIMARY_ICON);\n this.adapter.removeClass(MDCChipCssClasses.DESELECTING_WITH_PRIMARY_ICON);\n }\n\n private updateSelectionStyles(isSelected: boolean) {\n const hasIcon = this.adapter.hasClass(MDCChipCssClasses.WITH_PRIMARY_ICON);\n if (hasIcon && isSelected) {\n this.adapter.addClass(MDCChipCssClasses.SELECTING_WITH_PRIMARY_ICON);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.addClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (hasIcon && !isSelected) {\n this.adapter.addClass(MDCChipCssClasses.DESELECTING_WITH_PRIMARY_ICON);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.removeClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (isSelected) {\n this.adapter.addClass(MDCChipCssClasses.SELECTING);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.addClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (!isSelected) {\n this.adapter.addClass(MDCChipCssClasses.DESELECTING);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.removeClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCChipActionFocusBehavior, MDCChipActionInteractionTrigger, MDCChipActionType} from '../../action/lib/constants.js';\nimport {MDCChipActionInteractionEventDetail} from '../../action/lib/types.js';\n\nimport {MDCChipAdapter} from './adapter.js';\nimport {AnimationFrame} from './animationframe.js';\nimport {MDCChipAnimation, MDCChipAttributes, MDCChipCssClasses, MDCChipEvents} from './constants.js';\nimport {ActionInteractionEvent, ActionNavigationEvent, MDCChipAnimationEventDetail, MDCChipInteractionEventDetail, MDCChipNavigationEventDetail} from './types.js';\n\ninterface Navigation {\n from: MDCChipActionType;\n to: MDCChipActionType;\n}\n\nenum Direction {\n UNSPECIFIED, // Default\n LEFT,\n RIGHT,\n}\n\nenum AnimationKeys {\n SELECTION = 'selection',\n EXIT = 'exit',\n}\n\n/**\n * MDCChipFoundation provides a foundation for all chips.\n */\nexport class MDCChipFoundation {\n private readonly adapter: MDCChipAdapter;\n\n static get defaultAdapter(): MDCChipAdapter {\n return {\n addClass: () => undefined,\n emitEvent: () => undefined,\n getActions: () => [],\n getAttribute: () => null,\n getElementID: () => '',\n getOffsetWidth: () => 0,\n hasClass: () => false,\n isActionDisabled: () => false,\n isActionFocusable: () => false,\n isActionSelectable: () => false,\n isActionSelected: () => false,\n isRTL: () => false,\n removeClass: () => undefined,\n setActionDisabled: () => undefined,\n setActionFocus: () => undefined,\n setActionSelected: () => undefined,\n setStyleProperty: () => undefined,\n };\n }\n\n private readonly animFrame: AnimationFrame;\n\n constructor(adapter?: Partial<MDCChipAdapter>) {\n this.adapter = {...MDCChipFoundation.defaultAdapter, ...adapter};\n this.animFrame = new AnimationFrame();\n }\n\n destroy() {\n this.animFrame.cancelAll();\n }\n\n getElementID() {\n return this.adapter.getElementID();\n }\n\n setDisabled(isDisabled: boolean) {\n const actions = this.getActions();\n for (const action of actions) {\n this.adapter.setActionDisabled(action, isDisabled);\n }\n\n if (isDisabled) {\n this.adapter.addClass(MDCChipCssClasses.DISABLED);\n } else {\n this.adapter.removeClass(MDCChipCssClasses.DISABLED);\n }\n }\n\n isDisabled(): boolean {\n const actions = this.getActions();\n for (const action of actions) {\n if (this.adapter.isActionDisabled(action)) {\n return true;\n }\n }\n return false;\n }\n\n getActions(): MDCChipActionType[] {\n return this.adapter.getActions();\n }\n\n isActionFocusable(action: MDCChipActionType): boolean {\n return this.adapter.isActionFocusable(action);\n }\n\n isActionSelectable(action: MDCChipActionType): boolean {\n return this.adapter.isActionSelectable(action);\n }\n\n isActionSelected(action: MDCChipActionType): boolean {\n return this.adapter.isActionSelected(action);\n }\n\n setActionFocus(action: MDCChipActionType, focus: MDCChipActionFocusBehavior) {\n this.adapter.setActionFocus(action, focus);\n }\n\n setActionSelected(action: MDCChipActionType, isSelected: boolean) {\n this.adapter.setActionSelected(action, isSelected);\n this.animateSelection(isSelected);\n }\n\n startAnimation(animation: MDCChipAnimation) {\n if (animation === MDCChipAnimation.ENTER) {\n this.adapter.addClass(MDCChipCssClasses.ENTER);\n return;\n }\n\n if (animation === MDCChipAnimation.EXIT) {\n this.adapter.addClass(MDCChipCssClasses.EXIT);\n return;\n }\n }\n\n handleAnimationEnd(event: AnimationEvent) {\n const {animationName} = event;\n if (animationName === MDCChipAnimation.ENTER) {\n this.adapter.removeClass(MDCChipCssClasses.ENTER);\n this.adapter.emitEvent<MDCChipAnimationEventDetail>(\n MDCChipEvents.ANIMATION, {\n chipID: this.getElementID(),\n animation: MDCChipAnimation.ENTER,\n addedAnnouncement: this.getAddedAnnouncement(),\n isComplete: true,\n });\n return;\n }\n\n if (animationName === MDCChipAnimation.EXIT) {\n this.adapter.removeClass(MDCChipCssClasses.EXIT);\n this.adapter.addClass(MDCChipCssClasses.HIDDEN);\n const width = this.adapter.getOffsetWidth();\n this.adapter.setStyleProperty('width', `${width}px`);\n // Wait two frames so the width gets applied correctly.\n this.animFrame.request(AnimationKeys.EXIT, () => {\n this.animFrame.request(AnimationKeys.EXIT, () => {\n this.adapter.setStyleProperty('width', '0');\n });\n });\n }\n }\n\n handleTransitionEnd() {\n if (!this.adapter.hasClass(MDCChipCssClasses.HIDDEN)) return;\n\n this.adapter.emitEvent<MDCChipAnimationEventDetail>(\n MDCChipEvents.ANIMATION, {\n chipID: this.getElementID(),\n animation: MDCChipAnimation.EXIT,\n removedAnnouncement: this.getRemovedAnnouncement(),\n isComplete: true,\n });\n }\n\n handleActionInteraction({detail}: ActionInteractionEvent) {\n const {source, actionID} = detail;\n const isSelectable = this.adapter.isActionSelectable(source);\n const isSelected = this.adapter.isActionSelected(source);\n\n this.adapter.emitEvent<MDCChipInteractionEventDetail>(\n MDCChipEvents.INTERACTION, {\n chipID: this.getElementID(),\n shouldRemove: this.shouldRemove(detail),\n actionID,\n isSelectable,\n isSelected,\n source,\n });\n }\n\n handleActionNavigation({detail}: ActionNavigationEvent) {\n const {source, key} = detail;\n const isRTL = this.adapter.isRTL();\n const isTrailingActionFocusable =\n this.adapter.isActionFocusable(MDCChipActionType.TRAILING);\n const isPrimaryActionFocusable =\n this.adapter.isActionFocusable(MDCChipActionType.PRIMARY);\n const dir = this.directionFromKey(key, isRTL);\n\n const shouldNavigateToTrailing = source === MDCChipActionType.PRIMARY &&\n dir === Direction.RIGHT && isTrailingActionFocusable;\n\n const shouldNavigateToPrimary = source === MDCChipActionType.TRAILING &&\n dir === Direction.LEFT && isPrimaryActionFocusable;\n\n if (shouldNavigateToTrailing) {\n this.navigateActions({from: source, to: MDCChipActionType.TRAILING});\n return;\n }\n\n if (shouldNavigateToPrimary) {\n this.navigateActions({from: source, to: MDCChipActionType.PRIMARY});\n return;\n }\n\n this.adapter.emitEvent<MDCChipNavigationEventDetail>(\n MDCChipEvents.NAVIGATION, {\n chipID: this.getElementID(),\n isRTL,\n source,\n key,\n });\n }\n\n private directionFromKey(key: string, isRTL: boolean): Direction {\n const isLeftKey = key === 'ArrowLeft';\n const isRightKey = key === 'ArrowRight';\n if (!isRTL && isLeftKey || isRTL && isRightKey) {\n return Direction.LEFT;\n }\n\n if (!isRTL && isRightKey || isRTL && isLeftKey) {\n return Direction.RIGHT;\n }\n\n return Direction.UNSPECIFIED;\n }\n\n private navigateActions(nav: Navigation) {\n this.adapter.setActionFocus(\n nav.from, MDCChipActionFocusBehavior.NOT_FOCUSABLE);\n this.adapter.setActionFocus(\n nav.to, MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n }\n\n private shouldRemove({source, trigger}: MDCChipActionInteractionEventDetail):\n boolean {\n if (trigger === MDCChipActionInteractionTrigger.BACKSPACE_KEY ||\n trigger === MDCChipActionInteractionTrigger.DELETE_KEY) {\n return true;\n }\n\n return source === MDCChipActionType.TRAILING;\n }\n\n private getRemovedAnnouncement(): string|undefined {\n const msg =\n this.adapter.getAttribute(MDCChipAttributes.DATA_REMOVED_ANNOUNCEMENT);\n return msg || undefined;\n }\n\n private getAddedAnnouncement(): string|undefined {\n const msg =\n this.adapter.getAttribute(MDCChipAttributes.DATA_ADDED_ANNOUNCEMENT);\n return msg || undefined;\n }\n\n private animateSelection(isSelected: boolean) {\n this.resetAnimationStyles();\n // Wait two frames to ensure the animation classes are unset\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.updateSelectionStyles(isSelected);\n });\n });\n }\n\n private resetAnimationStyles() {\n this.adapter.removeClass(MDCChipCssClasses.SELECTING);\n this.adapter.removeClass(MDCChipCssClasses.DESELECTING);\n this.adapter.removeClass(MDCChipCssClasses.SELECTING_WITH_PRIMARY_ICON);\n this.adapter.removeClass(MDCChipCssClasses.DESELECTING_WITH_PRIMARY_ICON);\n }\n\n private updateSelectionStyles(isSelected: boolean) {\n const hasIcon = this.adapter.hasClass(MDCChipCssClasses.WITH_PRIMARY_ICON);\n if (hasIcon && isSelected) {\n this.adapter.addClass(MDCChipCssClasses.SELECTING_WITH_PRIMARY_ICON);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.addClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (hasIcon && !isSelected) {\n this.adapter.addClass(MDCChipCssClasses.DESELECTING_WITH_PRIMARY_ICON);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.removeClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (isSelected) {\n this.adapter.addClass(MDCChipCssClasses.SELECTING);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.addClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n\n if (!isSelected) {\n this.adapter.addClass(MDCChipCssClasses.DESELECTING);\n this.animFrame.request(AnimationKeys.SELECTION, () => {\n this.adapter.removeClass(MDCChipCssClasses.SELECTED);\n });\n return;\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"link-chip.js","sourceRoot":"","sources":["link-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,0CAA0C;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B,qBAAqB;AACrB,MAAM,OAAO,QAAS,SAAQ,IAAI;IAKhC;;;;OAIG;IACgB,MAAM;QACvB,OAAO,IAAI,CAAA;qBACM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;UAC1C,IAAI,CAAC,aAAa,EAAE;;YAElB,IAAI,CAAC,mBAAmB,EAAE;;UAE5B,IAAI,CAAC,kBAAkB,EAAE;cACrB,CAAC;IACb,CAAC;IAED,mBAAmB;IACX,mBAAmB;QACzB,OAAO,IAAI,CAAA;;sBAEO,IAAI,CAAC,QAAQ;yBACV,IAAI,CAAC,WAAW;yBAChB,IAAI,CAAC,WAAW;kBACvB,IAAI,CAAC,IAAI;mBACR,IAAI,CAAC,KAAK;uBACN,IAAI,CAAC,SAAS;kBACnB,IAAI,CAAC,IAAI;oBACP,IAAI,CAAC,MAAM;wBACP,CAAC;IACvB,CAAC;CACF;AAlC2B;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;sCAAe;AAEd;IAAzB,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;wCAAiB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// import '@material/web/chips/action.js';\nimport '../../action/link-action.js';\n\nimport {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {Chip} from './chip.js';\n\n/** @soyCompatible */\nexport class LinkChip extends Chip {\n @property({type: String}) href!: string;\n\n @property({type: String}) target!: string;\n\n /**\n * @soyTemplate\n * @soyAttributes attributes: .md3-chip\n * @soyAttributes linkAttributes: .md3-chip__action\n */\n protected override render(): TemplateResult {\n return html`\n <span class=\"${classMap(this.getRootClasses())}\" role=\"row\">\n ${this.renderOverlay()}\n <span class=\"md3-chip__cell md3-chip__cell--primary\" role=\"gridcell\">\n ${this.renderPrimaryAction()}\n </span>\n ${this.renderDeleteAction()}\n </span>`;\n }\n\n /** @soyTemplate */\n private renderPrimaryAction(): TemplateResult {\n return html`\n <md-link-action\n ?disabled=${this.disabled}\n ?isFocusable=${this.isFocusable}\n ?isTouchable=${this.isTouchable}\n .icon=${this.icon}\n .label=${this.label}\n .ariaLabel=${this.ariaLabel}\n .href=${this.href}\n .target=${this.target}>\n </md-link-action>`;\n }\n}\n"]}
1
+ {"version":3,"file":"link-chip.js","sourceRoot":"","sources":["link-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,0CAA0C;AAC1C,OAAO,6BAA6B,CAAC;AAErC,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAC,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B,qBAAqB;AACrB,MAAM,OAAO,QAAS,SAAQ,IAAI;IAKhC;;;;OAIG;IACgB,MAAM;QACvB,OAAO,IAAI,CAAA;qBACM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;UAC1C,IAAI,CAAC,aAAa,EAAE;;YAElB,IAAI,CAAC,mBAAmB,EAAE;;UAE5B,IAAI,CAAC,kBAAkB,EAAE;cACrB,CAAC;IACb,CAAC;IAED,mBAAmB;IACX,mBAAmB;QACzB,OAAO,IAAI,CAAA;;sBAEO,IAAI,CAAC,QAAQ;yBACV,IAAI,CAAC,WAAW;yBAChB,IAAI,CAAC,WAAW;kBACvB,IAAI,CAAC,IAAI;mBACR,IAAI,CAAC,KAAK;uBACN,IAAI,CAAC,SAAS;kBACnB,IAAI,CAAC,IAAI;oBACP,IAAI,CAAC,MAAM;wBACP,CAAC;IACvB,CAAC;CACF;AAlCC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;sCAAe;AAExC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;;wCAAiB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// import '@material/web/chips/action.js';\nimport '../../action/link-action.js';\n\nimport {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {classMap} from 'lit/directives/class-map.js';\nimport {Chip} from './chip.js';\n\n/** @soyCompatible */\nexport class LinkChip extends Chip {\n @property({type: String}) href!: string;\n\n @property({type: String}) target!: string;\n\n /**\n * @soyTemplate\n * @soyAttributes attributes: .md3-chip\n * @soyAttributes linkAttributes: .md3-chip__action\n */\n protected override render(): TemplateResult {\n return html`\n <span class=\"${classMap(this.getRootClasses())}\" role=\"row\">\n ${this.renderOverlay()}\n <span class=\"md3-chip__cell md3-chip__cell--primary\" role=\"gridcell\">\n ${this.renderPrimaryAction()}\n </span>\n ${this.renderDeleteAction()}\n </span>`;\n }\n\n /** @soyTemplate */\n private renderPrimaryAction(): TemplateResult {\n return html`\n <md-link-action\n ?disabled=${this.disabled}\n ?isFocusable=${this.isFocusable}\n ?isTouchable=${this.isTouchable}\n .icon=${this.icon}\n .label=${this.label}\n .ariaLabel=${this.ariaLabel}\n .href=${this.href}\n .target=${this.target}>\n </md-link-action>`;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"selectable-chip.js","sourceRoot":"","sources":["selectable-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAY,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B,qBAAqB;AACrB,MAAM,OAAO,cAAe,SAAQ,IAAI;IAAxC;;QAC4C,aAAQ,GAAG,KAAK,CAAC;IAsC7D,CAAC;IApCC;;;OAGG;IACgB,MAAM;QACvB,OAAO,IAAI,CAAA;qBACM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;UAC1C,IAAI,CAAC,aAAa,EAAE;UACpB,IAAI,CAAC,mBAAmB,EAAE;UAC1B,IAAI,CAAC,kBAAkB,EAAE;cACrB,CAAC;IACb,CAAC;IAED,mBAAmB;IACA,cAAc;QAC/B,OAAO;YACL,GAAG,KAAK,CAAC,cAAc,EAAE;YACzB,gCAAgC,EAAE,IAAI;YACtC,sBAAsB,EAAE,IAAI;YAC5B,oBAAoB,EAAE,IAAI,CAAC,QAAQ;SACpC,CAAC;IACJ,CAAC;IAED,mBAAmB;IACX,mBAAmB;QACzB,OAAO,IAAI,CAAA;;sBAEO,IAAI,CAAC,QAAQ;sBACb,IAAI,CAAC,QAAQ;yBACV,IAAI,CAAC,WAAW;yBAChB,IAAI,CAAC,WAAW;kBACvB,IAAI,CAAC,IAAI;mBACR,IAAI,CAAC,KAAK;uBACN,IAAI,CAAC,SAAS;8BACP,CAAC;IAC7B,CAAC;CACF;AAtC2C;IAAzC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;;gDAAkB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../action/selectable-action.js';\n\nimport {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {Chip} from './chip.js';\n\n/** @soyCompatible */\nexport class SelectableChip extends Chip {\n @property({type: Boolean, reflect: true}) selected = false;\n\n /**\n * @soyTemplate\n * @soyAttributes attributes: .md3-chip\n */\n protected override render(): TemplateResult {\n return html`\n <span class=\"${classMap(this.getRootClasses())}\" role=\"presentation\">\n ${this.renderOverlay()}\n ${this.renderPrimaryAction()}\n ${this.renderDeleteAction()}\n </span>`;\n }\n\n /** @soyTemplate */\n protected override getRootClasses(): ClassInfo {\n return {\n ...super.getRootClasses(),\n 'md3-chip--with-primary-graphic': true,\n 'md3-chip--selectable': true,\n 'md3-chip--selected': this.selected,\n };\n }\n\n /** @soyTemplate */\n private renderPrimaryAction(): TemplateResult {\n return html`\n <md-selectable-action\n ?disabled=${this.disabled}\n ?selected=${this.selected}\n ?isFocusable=${this.isFocusable}\n ?isTouchable=${this.isTouchable}\n .icon=${this.icon}\n .label=${this.label}\n .ariaLabel=${this.ariaLabel}>\n </md-selectable-action>`;\n }\n}\n\n"]}
1
+ {"version":3,"file":"selectable-chip.js","sourceRoot":"","sources":["selectable-chip.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,mCAAmC,CAAC;AAE3C,OAAO,EAAC,IAAI,EAAiB,MAAM,KAAK,CAAC;AACzC,OAAO,EAAC,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAY,QAAQ,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B,qBAAqB;AACrB,MAAM,OAAO,cAAe,SAAQ,IAAI;IAAxC;;QAC4C,aAAQ,GAAG,KAAK,CAAC;IAsC7D,CAAC;IApCC;;;OAGG;IACgB,MAAM;QACvB,OAAO,IAAI,CAAA;qBACM,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;UAC1C,IAAI,CAAC,aAAa,EAAE;UACpB,IAAI,CAAC,mBAAmB,EAAE;UAC1B,IAAI,CAAC,kBAAkB,EAAE;cACrB,CAAC;IACb,CAAC;IAED,mBAAmB;IACA,cAAc;QAC/B,OAAO;YACL,GAAG,KAAK,CAAC,cAAc,EAAE;YACzB,gCAAgC,EAAE,IAAI;YACtC,sBAAsB,EAAE,IAAI;YAC5B,oBAAoB,EAAE,IAAI,CAAC,QAAQ;SACpC,CAAC;IACJ,CAAC;IAED,mBAAmB;IACX,mBAAmB;QACzB,OAAO,IAAI,CAAA;;sBAEO,IAAI,CAAC,QAAQ;sBACb,IAAI,CAAC,QAAQ;yBACV,IAAI,CAAC,WAAW;yBAChB,IAAI,CAAC,WAAW;kBACvB,IAAI,CAAC,IAAI;mBACR,IAAI,CAAC,KAAK;uBACN,IAAI,CAAC,SAAS;8BACP,CAAC;IAC7B,CAAC;CACF;AAtCC;IAAC,QAAQ,CAAC,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC;;gDAAkB","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport '../../action/selectable-action.js';\n\nimport {html, TemplateResult} from 'lit';\nimport {property} from 'lit/decorators.js';\nimport {ClassInfo, classMap} from 'lit/directives/class-map.js';\nimport {Chip} from './chip.js';\n\n/** @soyCompatible */\nexport class SelectableChip extends Chip {\n @property({type: Boolean, reflect: true}) selected = false;\n\n /**\n * @soyTemplate\n * @soyAttributes attributes: .md3-chip\n */\n protected override render(): TemplateResult {\n return html`\n <span class=\"${classMap(this.getRootClasses())}\" role=\"presentation\">\n ${this.renderOverlay()}\n ${this.renderPrimaryAction()}\n ${this.renderDeleteAction()}\n </span>`;\n }\n\n /** @soyTemplate */\n protected override getRootClasses(): ClassInfo {\n return {\n ...super.getRootClasses(),\n 'md3-chip--with-primary-graphic': true,\n 'md3-chip--selectable': true,\n 'md3-chip--selected': this.selected,\n };\n }\n\n /** @soyTemplate */\n private renderPrimaryAction(): TemplateResult {\n return html`\n <md-selectable-action\n ?disabled=${this.disabled}\n ?selected=${this.selected}\n ?isFocusable=${this.isFocusable}\n ?isTouchable=${this.isTouchable}\n .icon=${this.icon}\n .label=${this.label}\n .ariaLabel=${this.ariaLabel}>\n </md-selectable-action>`;\n }\n}\n\n"]}
@@ -35,8 +35,8 @@ export interface MDCChipAnimationEventDetail {
35
35
  /**
36
36
  * MDCChipActionInteractionEvent is the custom event for the interaction event.
37
37
  */
38
- export declare type ActionInteractionEvent = CustomEvent<MDCChipActionInteractionEventDetail>;
38
+ export type ActionInteractionEvent = CustomEvent<MDCChipActionInteractionEventDetail>;
39
39
  /**
40
40
  * MDCChipActionInteractionEvent is the custom event for the interaction event.
41
41
  */
42
- export declare type ActionNavigationEvent = CustomEvent<MDCChipActionNavigationEventDetail>;
42
+ export type ActionNavigationEvent = CustomEvent<MDCChipActionNavigationEventDetail>;
@@ -4,7 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ // go/keep-sorted start
7
8
  @use 'sass:math';
9
+ // go/keep-sorted end
8
10
 
9
11
  // stylelint-disable selector-class-pattern -- MDC internal usage.
10
12
 
@@ -4,7 +4,9 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
 
7
+ // go/keep-sorted start
7
8
  @use './chip-set-theme';
9
+ // go/keep-sorted end
8
10
 
9
11
  // stylelint-disable selector-class-pattern -- MDC internal usage.
10
12
 
@@ -15,9 +15,6 @@ var Operator;
15
15
  * MDCChipSetFoundation provides a foundation for all chips.
16
16
  */
17
17
  export class MDCChipSetFoundation {
18
- constructor(adapter) {
19
- this.adapter = { ...MDCChipSetFoundation.defaultAdapter, ...adapter };
20
- }
21
18
  static get defaultAdapter() {
22
19
  return {
23
20
  announceMessage: () => undefined,
@@ -36,6 +33,9 @@ export class MDCChipSetFoundation {
36
33
  startChipAnimationAtIndex: () => undefined,
37
34
  };
38
35
  }
36
+ constructor(adapter) {
37
+ this.adapter = { ...MDCChipSetFoundation.defaultAdapter, ...adapter };
38
+ }
39
39
  handleChipAnimation({ detail }) {
40
40
  const { chipID, animation, isComplete, addedAnnouncement, removedAnnouncement } = detail;
41
41
  const index = this.adapter.getChipIndexById(chipID);
@@ -1 +1 @@
1
- {"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCChipActionFocusBehavior, MDCChipActionType} from '../../action/lib/constants.js';\nimport {MDCChipAnimation} from '../../chip/lib/constants.js';\n\nimport {MDCChipSetAdapter} from './adapter.js';\nimport {MDCChipSetAttributes, MDCChipSetEvents} from './constants.js';\nimport {ChipAnimationEvent, ChipInteractionEvent, ChipNavigationEvent, MDCChipSetInteractionEventDetail, MDCChipSetRemovalEventDetail, MDCChipSetSelectionEventDetail} from './types.js';\n\ninterface FocusAction {\n action: MDCChipActionType;\n index: number;\n}\n\nenum Operator {\n INCREMENT,\n DECREMENT,\n}\n\n/**\n * MDCChipSetFoundation provides a foundation for all chips.\n */\nexport class MDCChipSetFoundation {\n private readonly adapter: MDCChipSetAdapter;\n\n static get defaultAdapter(): MDCChipSetAdapter {\n return {\n announceMessage: () => undefined,\n emitEvent: () => undefined,\n getAttribute: () => null,\n getChipActionsAtIndex: () => [],\n getChipCount: () => 0,\n getChipIdAtIndex: () => '',\n getChipIndexById: () => 0,\n isChipFocusableAtIndex: () => false,\n isChipSelectableAtIndex: () => false,\n isChipSelectedAtIndex: () => false,\n removeChipAtIndex: () => {},\n setChipFocusAtIndex: () => undefined,\n setChipSelectedAtIndex: () => undefined,\n startChipAnimationAtIndex: () => undefined,\n };\n }\n\n constructor(adapter?: Partial<MDCChipSetAdapter>) {\n this.adapter = {...MDCChipSetFoundation.defaultAdapter, ...adapter};\n }\n\n handleChipAnimation({detail}: ChipAnimationEvent) {\n const {\n chipID,\n animation,\n isComplete,\n addedAnnouncement,\n removedAnnouncement\n } = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n if (animation === MDCChipAnimation.EXIT && isComplete) {\n if (removedAnnouncement) {\n this.adapter.announceMessage(removedAnnouncement);\n }\n this.removeAfterAnimation(index, chipID);\n return;\n }\n\n if (animation === MDCChipAnimation.ENTER && isComplete &&\n addedAnnouncement) {\n this.adapter.announceMessage(addedAnnouncement);\n return;\n }\n }\n\n handleChipInteraction({detail}: ChipInteractionEvent) {\n const {source, chipID, isSelectable, isSelected, shouldRemove} = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n if (shouldRemove) {\n this.removeChip(index);\n return;\n }\n\n this.focusChip(index, source, MDCChipActionFocusBehavior.FOCUSABLE);\n this.adapter.emitEvent<MDCChipSetInteractionEventDetail>(\n MDCChipSetEvents.INTERACTION, {\n chipIndex: index,\n chipID,\n });\n\n if (isSelectable) {\n this.setSelection(index, source, !isSelected);\n }\n }\n\n handleChipNavigation({detail}: ChipNavigationEvent) {\n const {chipID, key, isRTL, source} = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n const toNextChip =\n (key === 'ArrowRight' && !isRTL) || (key === 'ArrowLeft' && isRTL);\n if (toNextChip) {\n // Start from the next chip so we increment the index\n this.focusNextChipFrom(index + 1);\n return;\n }\n\n const toPreviousChip =\n (key === 'ArrowLeft' && !isRTL) || (key === 'ArrowRight' && isRTL);\n if (toPreviousChip) {\n // Start from the previous chip so we decrement the index\n this.focusPrevChipFrom(index - 1);\n return;\n }\n\n if (key === 'ArrowDown') {\n // Start from the next chip so we increment the index\n this.focusNextChipFrom(index + 1, source);\n return;\n }\n\n if (key === 'ArrowUp') {\n // Start from the previous chip so we decrement the index\n this.focusPrevChipFrom(index - 1, source);\n return;\n }\n\n if (key === 'Home') {\n this.focusNextChipFrom(0, source);\n return;\n }\n\n if (key === 'End') {\n this.focusPrevChipFrom(this.adapter.getChipCount() - 1, source);\n return;\n }\n }\n\n /** Returns the unique selected indexes of the chips. */\n getSelectedChipIndexes(): ReadonlySet<number> {\n const selectedIndexes = new Set<number>();\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const action of actions) {\n if (this.adapter.isChipSelectedAtIndex(i, action)) {\n selectedIndexes.add(i);\n }\n }\n }\n return selectedIndexes;\n }\n\n /** Sets the selected state of the chip at the given index and action. */\n setChipSelected(\n index: number, action: MDCChipActionType, isSelected: boolean) {\n if (this.adapter.isChipSelectableAtIndex(index, action)) {\n this.setSelection(index, action, isSelected);\n }\n }\n\n /** Returns the selected state of the chip at the given index and action. */\n isChipSelected(index: number, action: MDCChipActionType): boolean {\n return this.adapter.isChipSelectedAtIndex(index, action);\n }\n\n /** Removes the chip at the given index. */\n removeChip(index: number) {\n // Early exit if the index is out of bounds\n if (index >= this.adapter.getChipCount() || index < 0) return;\n this.adapter.startChipAnimationAtIndex(index, MDCChipAnimation.EXIT);\n this.adapter.emitEvent<MDCChipSetRemovalEventDetail>(\n MDCChipSetEvents.REMOVAL, {\n chipID: this.adapter.getChipIdAtIndex(index),\n chipIndex: index,\n isComplete: false,\n });\n }\n\n addChip(index: number) {\n // Early exit if the index is out of bounds\n if (index >= this.adapter.getChipCount() || index < 0) return;\n this.adapter.startChipAnimationAtIndex(index, MDCChipAnimation.ENTER);\n }\n\n /**\n * Increments to find the first focusable chip.\n */\n private focusNextChipFrom(\n startIndex: number, targetAction?: MDCChipActionType) {\n const chipCount = this.adapter.getChipCount();\n for (let i = startIndex; i < chipCount; i++) {\n const focusableAction =\n this.getFocusableAction(i, Operator.INCREMENT, targetAction);\n if (focusableAction) {\n this.focusChip(\n i, focusableAction,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n }\n }\n\n /**\n * Decrements to find the first focusable chip. Takes an optional target\n * action that can be used to focus the first matching focusable action.\n */\n private focusPrevChipFrom(\n startIndex: number, targetAction?: MDCChipActionType) {\n for (let i = startIndex; i > -1; i--) {\n const focusableAction =\n this.getFocusableAction(i, Operator.DECREMENT, targetAction);\n if (focusableAction) {\n this.focusChip(\n i, focusableAction,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n }\n }\n\n /** Returns the appropriate focusable action, or null if none exist. */\n private getFocusableAction(\n index: number, op: Operator,\n targetAction?: MDCChipActionType): MDCChipActionType|null {\n const actions = this.adapter.getChipActionsAtIndex(index);\n // Reverse the actions if decrementing\n if (op === Operator.DECREMENT) actions.reverse();\n\n if (targetAction) {\n return this.getMatchingFocusableAction(index, actions, targetAction);\n }\n\n return this.getFirstFocusableAction(index, actions);\n }\n\n /**\n * Returs the first focusable action, regardless of type, or null if no\n * focusable actions exist.\n */\n private getFirstFocusableAction(index: number, actions: MDCChipActionType[]):\n MDCChipActionType|null {\n for (const action of actions) {\n if (this.adapter.isChipFocusableAtIndex(index, action)) {\n return action;\n }\n }\n return null;\n }\n\n /**\n * If the actions contain a focusable action that matches the target action,\n * return that. Otherwise, return the first focusable action, or null if no\n * focusable action exists.\n */\n private getMatchingFocusableAction(\n index: number, actions: MDCChipActionType[],\n targetAction: MDCChipActionType): MDCChipActionType|null {\n let focusableAction = null;\n for (const action of actions) {\n if (this.adapter.isChipFocusableAtIndex(index, action)) {\n focusableAction = action;\n }\n\n // Exit and return the focusable action if it matches the target\n if (focusableAction === targetAction) {\n return focusableAction;\n }\n }\n return focusableAction;\n }\n\n private focusChip(\n index: number, action: MDCChipActionType,\n focus: MDCChipActionFocusBehavior) {\n this.adapter.setChipFocusAtIndex(index, action, focus);\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const chipAction of actions) {\n // Skip the action and index provided since we set it above\n if (chipAction === action && i === index) continue;\n this.adapter.setChipFocusAtIndex(\n i, chipAction, MDCChipActionFocusBehavior.NOT_FOCUSABLE);\n }\n }\n }\n\n private supportsMultiSelect(): boolean {\n return this.adapter.getAttribute(\n MDCChipSetAttributes.ARIA_MULTISELECTABLE) === 'true';\n }\n\n private setSelection(\n index: number, action: MDCChipActionType, isSelected: boolean) {\n this.adapter.setChipSelectedAtIndex(index, action, isSelected);\n this.adapter.emitEvent<MDCChipSetSelectionEventDetail>(\n MDCChipSetEvents.SELECTION, {\n chipID: this.adapter.getChipIdAtIndex(index),\n chipIndex: index,\n isSelected,\n });\n // Early exit if we support multi-selection\n if (this.supportsMultiSelect()) {\n return;\n }\n\n // If we get here, we ony support single selection. This means we need to\n // unselect all chips\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const chipAction of actions) {\n // Skip the action and index provided since we set it above\n if (chipAction === action && i === index) continue;\n this.adapter.setChipSelectedAtIndex(i, chipAction, false);\n }\n }\n }\n\n private removeAfterAnimation(index: number, chipID: string) {\n this.adapter.removeChipAtIndex(index);\n this.adapter.emitEvent<MDCChipSetRemovalEventDetail>(\n MDCChipSetEvents.REMOVAL, {\n chipIndex: index,\n isComplete: true,\n chipID,\n });\n\n const chipCount = this.adapter.getChipCount();\n // Early exit if we have an empty chip set\n if (chipCount <= 0) return;\n this.focusNearestFocusableAction(index);\n }\n\n /**\n * Find the first focusable action by moving bidirectionally horizontally\n * from the start index.\n *\n * Given chip set [A, B, C, D, E, F, G]...\n * Let's say we remove chip \"F\". We don't know where the nearest focusable\n * action is since any of them could be disabled. The nearest focusable\n * action could be E, it could be G, it could even be A. To find it, we\n * start from the source index (5 for \"F\" in this case) and move out\n * horizontally, checking each chip at each index.\n *\n */\n private focusNearestFocusableAction(index: number) {\n const chipCount = this.adapter.getChipCount();\n let decrIndex = index;\n let incrIndex = index;\n while (decrIndex > -1 || incrIndex < chipCount) {\n const focusAction = this.getNearestFocusableAction(\n decrIndex, incrIndex, MDCChipActionType.TRAILING);\n if (focusAction) {\n this.focusChip(\n focusAction.index, focusAction.action,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n\n decrIndex--;\n incrIndex++;\n }\n }\n\n private getNearestFocusableAction(\n decrIndex: number, incrIndex: number,\n actionType?: MDCChipActionType): FocusAction|null {\n const decrAction =\n this.getFocusableAction(decrIndex, Operator.DECREMENT, actionType);\n if (decrAction) {\n return {\n index: decrIndex,\n action: decrAction,\n };\n }\n\n // Early exit if the incremented and decremented indices are identical\n if (incrIndex === decrIndex) return null;\n\n const incrAction =\n this.getFocusableAction(incrIndex, Operator.INCREMENT, actionType);\n if (incrAction) {\n return {\n index: incrIndex,\n action: incrAction,\n };\n }\n\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"foundation.js","sourceRoot":"","sources":["foundation.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {MDCChipActionFocusBehavior, MDCChipActionType} from '../../action/lib/constants.js';\nimport {MDCChipAnimation} from '../../chip/lib/constants.js';\n\nimport {MDCChipSetAdapter} from './adapter.js';\nimport {MDCChipSetAttributes, MDCChipSetEvents} from './constants.js';\nimport {ChipAnimationEvent, ChipInteractionEvent, ChipNavigationEvent, MDCChipSetInteractionEventDetail, MDCChipSetRemovalEventDetail, MDCChipSetSelectionEventDetail} from './types.js';\n\ninterface FocusAction {\n action: MDCChipActionType;\n index: number;\n}\n\nenum Operator {\n INCREMENT,\n DECREMENT,\n}\n\n/**\n * MDCChipSetFoundation provides a foundation for all chips.\n */\nexport class MDCChipSetFoundation {\n private readonly adapter: MDCChipSetAdapter;\n\n static get defaultAdapter(): MDCChipSetAdapter {\n return {\n announceMessage: () => undefined,\n emitEvent: () => undefined,\n getAttribute: () => null,\n getChipActionsAtIndex: () => [],\n getChipCount: () => 0,\n getChipIdAtIndex: () => '',\n getChipIndexById: () => 0,\n isChipFocusableAtIndex: () => false,\n isChipSelectableAtIndex: () => false,\n isChipSelectedAtIndex: () => false,\n removeChipAtIndex: () => {},\n setChipFocusAtIndex: () => undefined,\n setChipSelectedAtIndex: () => undefined,\n startChipAnimationAtIndex: () => undefined,\n };\n }\n\n constructor(adapter?: Partial<MDCChipSetAdapter>) {\n this.adapter = {...MDCChipSetFoundation.defaultAdapter, ...adapter};\n }\n\n handleChipAnimation({detail}: ChipAnimationEvent) {\n const {\n chipID,\n animation,\n isComplete,\n addedAnnouncement,\n removedAnnouncement\n } = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n if (animation === MDCChipAnimation.EXIT && isComplete) {\n if (removedAnnouncement) {\n this.adapter.announceMessage(removedAnnouncement);\n }\n this.removeAfterAnimation(index, chipID);\n return;\n }\n\n if (animation === MDCChipAnimation.ENTER && isComplete &&\n addedAnnouncement) {\n this.adapter.announceMessage(addedAnnouncement);\n return;\n }\n }\n\n handleChipInteraction({detail}: ChipInteractionEvent) {\n const {source, chipID, isSelectable, isSelected, shouldRemove} = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n if (shouldRemove) {\n this.removeChip(index);\n return;\n }\n\n this.focusChip(index, source, MDCChipActionFocusBehavior.FOCUSABLE);\n this.adapter.emitEvent<MDCChipSetInteractionEventDetail>(\n MDCChipSetEvents.INTERACTION, {\n chipIndex: index,\n chipID,\n });\n\n if (isSelectable) {\n this.setSelection(index, source, !isSelected);\n }\n }\n\n handleChipNavigation({detail}: ChipNavigationEvent) {\n const {chipID, key, isRTL, source} = detail;\n const index = this.adapter.getChipIndexById(chipID);\n\n const toNextChip =\n (key === 'ArrowRight' && !isRTL) || (key === 'ArrowLeft' && isRTL);\n if (toNextChip) {\n // Start from the next chip so we increment the index\n this.focusNextChipFrom(index + 1);\n return;\n }\n\n const toPreviousChip =\n (key === 'ArrowLeft' && !isRTL) || (key === 'ArrowRight' && isRTL);\n if (toPreviousChip) {\n // Start from the previous chip so we decrement the index\n this.focusPrevChipFrom(index - 1);\n return;\n }\n\n if (key === 'ArrowDown') {\n // Start from the next chip so we increment the index\n this.focusNextChipFrom(index + 1, source);\n return;\n }\n\n if (key === 'ArrowUp') {\n // Start from the previous chip so we decrement the index\n this.focusPrevChipFrom(index - 1, source);\n return;\n }\n\n if (key === 'Home') {\n this.focusNextChipFrom(0, source);\n return;\n }\n\n if (key === 'End') {\n this.focusPrevChipFrom(this.adapter.getChipCount() - 1, source);\n return;\n }\n }\n\n /** Returns the unique selected indexes of the chips. */\n getSelectedChipIndexes(): ReadonlySet<number> {\n const selectedIndexes = new Set<number>();\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const action of actions) {\n if (this.adapter.isChipSelectedAtIndex(i, action)) {\n selectedIndexes.add(i);\n }\n }\n }\n return selectedIndexes;\n }\n\n /** Sets the selected state of the chip at the given index and action. */\n setChipSelected(\n index: number, action: MDCChipActionType, isSelected: boolean) {\n if (this.adapter.isChipSelectableAtIndex(index, action)) {\n this.setSelection(index, action, isSelected);\n }\n }\n\n /** Returns the selected state of the chip at the given index and action. */\n isChipSelected(index: number, action: MDCChipActionType): boolean {\n return this.adapter.isChipSelectedAtIndex(index, action);\n }\n\n /** Removes the chip at the given index. */\n removeChip(index: number) {\n // Early exit if the index is out of bounds\n if (index >= this.adapter.getChipCount() || index < 0) return;\n this.adapter.startChipAnimationAtIndex(index, MDCChipAnimation.EXIT);\n this.adapter.emitEvent<MDCChipSetRemovalEventDetail>(\n MDCChipSetEvents.REMOVAL, {\n chipID: this.adapter.getChipIdAtIndex(index),\n chipIndex: index,\n isComplete: false,\n });\n }\n\n addChip(index: number) {\n // Early exit if the index is out of bounds\n if (index >= this.adapter.getChipCount() || index < 0) return;\n this.adapter.startChipAnimationAtIndex(index, MDCChipAnimation.ENTER);\n }\n\n /**\n * Increments to find the first focusable chip.\n */\n private focusNextChipFrom(\n startIndex: number, targetAction?: MDCChipActionType) {\n const chipCount = this.adapter.getChipCount();\n for (let i = startIndex; i < chipCount; i++) {\n const focusableAction =\n this.getFocusableAction(i, Operator.INCREMENT, targetAction);\n if (focusableAction) {\n this.focusChip(\n i, focusableAction,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n }\n }\n\n /**\n * Decrements to find the first focusable chip. Takes an optional target\n * action that can be used to focus the first matching focusable action.\n */\n private focusPrevChipFrom(\n startIndex: number, targetAction?: MDCChipActionType) {\n for (let i = startIndex; i > -1; i--) {\n const focusableAction =\n this.getFocusableAction(i, Operator.DECREMENT, targetAction);\n if (focusableAction) {\n this.focusChip(\n i, focusableAction,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n }\n }\n\n /** Returns the appropriate focusable action, or null if none exist. */\n private getFocusableAction(\n index: number, op: Operator,\n targetAction?: MDCChipActionType): MDCChipActionType|null {\n const actions = this.adapter.getChipActionsAtIndex(index);\n // Reverse the actions if decrementing\n if (op === Operator.DECREMENT) actions.reverse();\n\n if (targetAction) {\n return this.getMatchingFocusableAction(index, actions, targetAction);\n }\n\n return this.getFirstFocusableAction(index, actions);\n }\n\n /**\n * Returs the first focusable action, regardless of type, or null if no\n * focusable actions exist.\n */\n private getFirstFocusableAction(index: number, actions: MDCChipActionType[]):\n MDCChipActionType|null {\n for (const action of actions) {\n if (this.adapter.isChipFocusableAtIndex(index, action)) {\n return action;\n }\n }\n return null;\n }\n\n /**\n * If the actions contain a focusable action that matches the target action,\n * return that. Otherwise, return the first focusable action, or null if no\n * focusable action exists.\n */\n private getMatchingFocusableAction(\n index: number, actions: MDCChipActionType[],\n targetAction: MDCChipActionType): MDCChipActionType|null {\n let focusableAction = null;\n for (const action of actions) {\n if (this.adapter.isChipFocusableAtIndex(index, action)) {\n focusableAction = action;\n }\n\n // Exit and return the focusable action if it matches the target\n if (focusableAction === targetAction) {\n return focusableAction;\n }\n }\n return focusableAction;\n }\n\n private focusChip(\n index: number, action: MDCChipActionType,\n focus: MDCChipActionFocusBehavior) {\n this.adapter.setChipFocusAtIndex(index, action, focus);\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const chipAction of actions) {\n // Skip the action and index provided since we set it above\n if (chipAction === action && i === index) continue;\n this.adapter.setChipFocusAtIndex(\n i, chipAction, MDCChipActionFocusBehavior.NOT_FOCUSABLE);\n }\n }\n }\n\n private supportsMultiSelect(): boolean {\n return this.adapter.getAttribute(\n MDCChipSetAttributes.ARIA_MULTISELECTABLE) === 'true';\n }\n\n private setSelection(\n index: number, action: MDCChipActionType, isSelected: boolean) {\n this.adapter.setChipSelectedAtIndex(index, action, isSelected);\n this.adapter.emitEvent<MDCChipSetSelectionEventDetail>(\n MDCChipSetEvents.SELECTION, {\n chipID: this.adapter.getChipIdAtIndex(index),\n chipIndex: index,\n isSelected,\n });\n // Early exit if we support multi-selection\n if (this.supportsMultiSelect()) {\n return;\n }\n\n // If we get here, we ony support single selection. This means we need to\n // unselect all chips\n const chipCount = this.adapter.getChipCount();\n for (let i = 0; i < chipCount; i++) {\n const actions = this.adapter.getChipActionsAtIndex(i);\n for (const chipAction of actions) {\n // Skip the action and index provided since we set it above\n if (chipAction === action && i === index) continue;\n this.adapter.setChipSelectedAtIndex(i, chipAction, false);\n }\n }\n }\n\n private removeAfterAnimation(index: number, chipID: string) {\n this.adapter.removeChipAtIndex(index);\n this.adapter.emitEvent<MDCChipSetRemovalEventDetail>(\n MDCChipSetEvents.REMOVAL, {\n chipIndex: index,\n isComplete: true,\n chipID,\n });\n\n const chipCount = this.adapter.getChipCount();\n // Early exit if we have an empty chip set\n if (chipCount <= 0) return;\n this.focusNearestFocusableAction(index);\n }\n\n /**\n * Find the first focusable action by moving bidirectionally horizontally\n * from the start index.\n *\n * Given chip set [A, B, C, D, E, F, G]...\n * Let's say we remove chip \"F\". We don't know where the nearest focusable\n * action is since any of them could be disabled. The nearest focusable\n * action could be E, it could be G, it could even be A. To find it, we\n * start from the source index (5 for \"F\" in this case) and move out\n * horizontally, checking each chip at each index.\n *\n */\n private focusNearestFocusableAction(index: number) {\n const chipCount = this.adapter.getChipCount();\n let decrIndex = index;\n let incrIndex = index;\n while (decrIndex > -1 || incrIndex < chipCount) {\n const focusAction = this.getNearestFocusableAction(\n decrIndex, incrIndex, MDCChipActionType.TRAILING);\n if (focusAction) {\n this.focusChip(\n focusAction.index, focusAction.action,\n MDCChipActionFocusBehavior.FOCUSABLE_AND_FOCUSED);\n return;\n }\n\n decrIndex--;\n incrIndex++;\n }\n }\n\n private getNearestFocusableAction(\n decrIndex: number, incrIndex: number,\n actionType?: MDCChipActionType): FocusAction|null {\n const decrAction =\n this.getFocusableAction(decrIndex, Operator.DECREMENT, actionType);\n if (decrAction) {\n return {\n index: decrIndex,\n action: decrAction,\n };\n }\n\n // Early exit if the incremented and decremented indices are identical\n if (incrIndex === decrIndex) return null;\n\n const incrAction =\n this.getFocusableAction(incrIndex, Operator.INCREMENT, actionType);\n if (incrAction) {\n return {\n index: incrIndex,\n action: incrAction,\n };\n }\n\n return null;\n }\n}\n"]}
@@ -30,12 +30,12 @@ export interface MDCChipSetSelectionEventDetail {
30
30
  /**
31
31
  * ChipInteractionEvent is the custom event for the interaction event.
32
32
  */
33
- export declare type ChipInteractionEvent = CustomEvent<MDCChipInteractionEventDetail>;
33
+ export type ChipInteractionEvent = CustomEvent<MDCChipInteractionEventDetail>;
34
34
  /**
35
35
  * ChipNavigationEvent is the custom event for the navigation event.
36
36
  */
37
- export declare type ChipNavigationEvent = CustomEvent<MDCChipNavigationEventDetail>;
37
+ export type ChipNavigationEvent = CustomEvent<MDCChipNavigationEventDetail>;
38
38
  /**
39
39
  * ChipAnimationEvent is the custom event for the animation event.
40
40
  */
41
- export declare type ChipAnimationEvent = CustomEvent<MDCChipAnimationEventDetail>;
41
+ export type ChipAnimationEvent = CustomEvent<MDCChipAnimationEventDetail>;
@@ -92,6 +92,10 @@ export function dispatchActivationClick(element) {
92
92
  */
93
93
  export function isActivationClick(event) {
94
94
  // Event must start at the event target.
95
+ if (event.currentTarget !== event.target) {
96
+ return false;
97
+ }
98
+ // Event must not be retargeted from shadowRoot.
95
99
  if (event.composedPath()[0] !== event.target) {
96
100
  return false;
97
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,KAAY;IAC5D,6EAA6E;IAC7E,yBAAyB;IACzB,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QAC5D,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE;QACf,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAoB;IAC1D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACvD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,wCAAwC;IACxC,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;QAC5C,OAAO,KAAK,CAAC;KACd;IACD,0EAA0E;IAC1E,oBAAoB;IACpB,IAAK,KAAK,CAAC,MAA4C,CAAC,QAAQ,EAAE;QAChE,OAAO,KAAK,CAAC;KACd;IACD,8DAA8D;IAC9D,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,6DAA6D;AAC7D,yCAAyC;AACzC,SAAS,YAAY,CAAC,KAAY;IAChC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,IAAI,SAAS,EAAE;QACb,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;KAClC;IACD,yBAAyB,EAAE,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wCAAwC;AACxC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,KAAK,UAAU,yBAAyB;IACtC,kBAAkB,GAAG,IAAI,CAAC;IAC1B,wCAAwC;IACxC,2BAA2B;IAC3B,MAAM,IAAI,CAAC;IACX,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Re-dispatches an event from the provided element.\n *\n * This function is useful for forwarding non-composed events, such as `change`\n * events.\n *\n * @example\n * class MyInput extends LitElement {\n * render() {\n * return html`<input @change=${this.redispatchEvent}>`;\n * }\n *\n * protected redispatchEvent(event: Event) {\n * redispatchEvent(this, event);\n * }\n * }\n *\n * @param element The element to dispatch the event from.\n * @param event The event to re-dispatch.\n * @return Whether or not the event was dispatched (if cancelable).\n */\nexport function redispatchEvent(element: Element, event: Event) {\n // For bubbling events in SSR light DOM (or composed), stop their propagation\n // and dispatch the copy.\n if (event.bubbles && (!element.shadowRoot || event.composed)) {\n event.stopPropagation();\n }\n\n const copy = Reflect.construct(event.constructor, [event.type, event]);\n const dispatched = element.dispatchEvent(copy);\n if (!dispatched) {\n event.preventDefault();\n }\n\n return dispatched;\n}\n\n/**\n * Dispatches a click event to the given element that triggers a native action,\n * but is not composed and therefore is not seen outside the element.\n *\n * This is useful for responding to an external click event on the host element\n * that should trigger an internal action like a button click.\n *\n * Note, a helper is provided because setting this up correctly is a bit tricky.\n * In particular, calling `click` on an element creates a composed event, which\n * is not desirable, and a manually dispatched event must specifically be a\n * `MouseEvent` to trigger a native action.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function dispatchActivationClick(element: HTMLElement) {\n const event = new MouseEvent('click', {bubbles: true});\n element.dispatchEvent(event);\n return event;\n}\n\n/**\n * Returns true if the click event should trigger an activation behavior. The\n * behavior is defined by the element and is whatever it should do when\n * clicked.\n *\n * Typically when an element needs to handle a click, the click is generated\n * from within the element and an event listener within the element implements\n * the needed behavior; however, it's possible to fire a click directly\n * at the element that the element should handle. This method helps\n * distinguish these \"external\" clicks.\n *\n * An \"external\" click can be triggered in a number of ways: via a click\n * on an associated label for a form associated element, calling\n * `element.click()`, or calling\n * `element.dispatchEvent(new MouseEvent('click', ...))`.\n *\n * Also works around Firefox issue\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1804576 by squelching\n * events for a microtask after called.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function isActivationClick(event: Event) {\n // Event must start at the event target.\n if (event.composedPath()[0] !== event.target) {\n return false;\n }\n // Target must not be disabled; this should only occur for a synthetically\n // dispatched click.\n if ((event.target as EventTarget & {disabled: boolean}).disabled) {\n return false;\n }\n // This is an activation if the event should not be squelched.\n return !squelchEvent(event);\n}\n\n// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1804576)\n// Remove when Firefox bug is addressed.\nfunction squelchEvent(event: Event) {\n const squelched = isSquelchingEvents;\n if (squelched) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n squelchEventsForMicrotask();\n return squelched;\n}\n\n// Ignore events for one microtask only.\nlet isSquelchingEvents = false;\nasync function squelchEventsForMicrotask() {\n isSquelchingEvents = true;\n // Need to pause for just one microtask.\n // tslint:disable-next-line\n await null;\n isSquelchingEvents = false;\n}\n"]}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,KAAY;IAC5D,6EAA6E;IAC7E,yBAAyB;IACzB,IAAI,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QAC5D,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,EAAE;QACf,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAoB;IAC1D,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IACvD,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY;IAC5C,wCAAwC;IACxC,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;QACxC,OAAO,KAAK,CAAC;KACd;IACD,gDAAgD;IAChD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE;QAC5C,OAAO,KAAK,CAAC;KACd;IACD,0EAA0E;IAC1E,oBAAoB;IACpB,IAAK,KAAK,CAAC,MAA4C,CAAC,QAAQ,EAAE;QAChE,OAAO,KAAK,CAAC;KACd;IACD,8DAA8D;IAC9D,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,6DAA6D;AAC7D,yCAAyC;AACzC,SAAS,YAAY,CAAC,KAAY;IAChC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,IAAI,SAAS,EAAE;QACb,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;KAClC;IACD,yBAAyB,EAAE,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wCAAwC;AACxC,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,KAAK,UAAU,yBAAyB;IACtC,kBAAkB,GAAG,IAAI,CAAC;IAC1B,wCAAwC;IACxC,2BAA2B;IAC3B,MAAM,IAAI,CAAC;IACX,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Re-dispatches an event from the provided element.\n *\n * This function is useful for forwarding non-composed events, such as `change`\n * events.\n *\n * @example\n * class MyInput extends LitElement {\n * render() {\n * return html`<input @change=${this.redispatchEvent}>`;\n * }\n *\n * protected redispatchEvent(event: Event) {\n * redispatchEvent(this, event);\n * }\n * }\n *\n * @param element The element to dispatch the event from.\n * @param event The event to re-dispatch.\n * @return Whether or not the event was dispatched (if cancelable).\n */\nexport function redispatchEvent(element: Element, event: Event) {\n // For bubbling events in SSR light DOM (or composed), stop their propagation\n // and dispatch the copy.\n if (event.bubbles && (!element.shadowRoot || event.composed)) {\n event.stopPropagation();\n }\n\n const copy = Reflect.construct(event.constructor, [event.type, event]);\n const dispatched = element.dispatchEvent(copy);\n if (!dispatched) {\n event.preventDefault();\n }\n\n return dispatched;\n}\n\n/**\n * Dispatches a click event to the given element that triggers a native action,\n * but is not composed and therefore is not seen outside the element.\n *\n * This is useful for responding to an external click event on the host element\n * that should trigger an internal action like a button click.\n *\n * Note, a helper is provided because setting this up correctly is a bit tricky.\n * In particular, calling `click` on an element creates a composed event, which\n * is not desirable, and a manually dispatched event must specifically be a\n * `MouseEvent` to trigger a native action.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function dispatchActivationClick(element: HTMLElement) {\n const event = new MouseEvent('click', {bubbles: true});\n element.dispatchEvent(event);\n return event;\n}\n\n/**\n * Returns true if the click event should trigger an activation behavior. The\n * behavior is defined by the element and is whatever it should do when\n * clicked.\n *\n * Typically when an element needs to handle a click, the click is generated\n * from within the element and an event listener within the element implements\n * the needed behavior; however, it's possible to fire a click directly\n * at the element that the element should handle. This method helps\n * distinguish these \"external\" clicks.\n *\n * An \"external\" click can be triggered in a number of ways: via a click\n * on an associated label for a form associated element, calling\n * `element.click()`, or calling\n * `element.dispatchEvent(new MouseEvent('click', ...))`.\n *\n * Also works around Firefox issue\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1804576 by squelching\n * events for a microtask after called.\n *\n * @example\n * hostClickListener = (event: MouseEvent) {\n * if (isActivationClick(event)) {\n * this.dispatchActivationClick(this.buttonElement);\n * }\n * }\n *\n */\nexport function isActivationClick(event: Event) {\n // Event must start at the event target.\n if (event.currentTarget !== event.target) {\n return false;\n }\n // Event must not be retargeted from shadowRoot.\n if (event.composedPath()[0] !== event.target) {\n return false;\n }\n // Target must not be disabled; this should only occur for a synthetically\n // dispatched click.\n if ((event.target as EventTarget & {disabled: boolean}).disabled) {\n return false;\n }\n // This is an activation if the event should not be squelched.\n return !squelchEvent(event);\n}\n\n// TODO(https://bugzilla.mozilla.org/show_bug.cgi?id=1804576)\n// Remove when Firefox bug is addressed.\nfunction squelchEvent(event: Event) {\n const squelched = isSquelchingEvents;\n if (squelched) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n squelchEventsForMicrotask();\n return squelched;\n}\n\n// Ignore events for one microtask only.\nlet isSquelchingEvents = false;\nasync function squelchEventsForMicrotask() {\n isSquelchingEvents = true;\n // Need to pause for just one microtask.\n // tslint:disable-next-line\n await null;\n isSquelchingEvents = false;\n}\n"]}
@@ -62,5 +62,5 @@ export declare class FormController implements ReactiveController {
62
62
  constructor(element: FormElement);
63
63
  hostConnected(): void;
64
64
  hostDisconnected(): void;
65
- private formDataListener;
65
+ private readonly formDataListener;
66
66
  }
@@ -3,8 +3,6 @@
3
3
  * Copyright 2021 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { __decorate, __metadata } from "tslib";
7
- import { bound } from '../decorators/bound.js';
8
6
  import { isFormAssociated } from './form-associated.js';
9
7
  import { shimLabelSupport, SUPPORTS_FACE_LABEL } from './shim-label-activation.js';
10
8
  /**
@@ -30,6 +28,27 @@ export class FormController {
30
28
  */
31
29
  constructor(element) {
32
30
  this.element = element;
31
+ this.formDataListener = (event) => {
32
+ if (this.element.disabled) {
33
+ // Check for truthiness since some elements may not support disabling.
34
+ return;
35
+ }
36
+ const value = this.element[getFormValue]();
37
+ // If given a `FormData` instance, append all values to the form. This
38
+ // allows elements to customize what is added beyond a single name/value
39
+ // pair.
40
+ if (value instanceof FormData) {
41
+ for (const [key, dataValue] of value) {
42
+ event.formData.append(key, dataValue);
43
+ }
44
+ return;
45
+ }
46
+ // Do not associate the value with the form if there is no value or no name.
47
+ if (value === null || !this.element.name) {
48
+ return;
49
+ }
50
+ event.formData.append(this.element.name, value);
51
+ };
33
52
  }
34
53
  hostConnected() {
35
54
  // If the component internals are not in Shadow DOM, subscribing to form
@@ -51,32 +70,5 @@ export class FormController {
51
70
  hostDisconnected() {
52
71
  this.form?.removeEventListener('formdata', this.formDataListener);
53
72
  }
54
- formDataListener(event) {
55
- if (this.element.disabled) {
56
- // Check for truthiness since some elements may not support disabling.
57
- return;
58
- }
59
- const value = this.element[getFormValue]();
60
- // If given a `FormData` instance, append all values to the form. This
61
- // allows elements to customize what is added beyond a single name/value
62
- // pair.
63
- if (value instanceof FormData) {
64
- for (const [key, dataValue] of value) {
65
- event.formData.append(key, dataValue);
66
- }
67
- return;
68
- }
69
- // Do not associate the value with the form if there is no value or no name.
70
- if (value === null || !this.element.name) {
71
- return;
72
- }
73
- event.formData.append(this.element.name, value);
74
- }
75
73
  }
76
- __decorate([
77
- bound,
78
- __metadata("design:type", Function),
79
- __metadata("design:paramtypes", [FormDataEvent]),
80
- __metadata("design:returntype", void 0)
81
- ], FormController.prototype, "formDataListener", null);
82
74
  //# sourceMappingURL=form-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-controller.js","sourceRoot":"","sources":["form-controller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAIH,OAAO,EAAC,KAAK,EAAC,MAAM,wBAAwB,CAAC;AAE7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAkCjF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IAGzB;;;;OAIG;IACH,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;IAAG,CAAC;IAErD,aAAa;QACX,wEAAwE;QACxE,0EAA0E;QAC1E,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;YACtD,OAAO;SACR;QAED,wEAAwE;QACxE,iCAAiC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/D,uEAAuE;QACvE,2CAA2C;QAC3C,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1D,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAA2B,CAAC,CAAC;SACvE;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;IAGO,gBAAgB,CAAC,KAAoB;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,sEAAsE;YACtE,OAAO;SACR;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC3C,sEAAsE;QACtE,wEAAwE;QACxE,QAAQ;QACR,IAAI,KAAK,YAAY,QAAQ,EAAE;YAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE;gBACpC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;aACvC;YACD,OAAO;SACR;QAED,4EAA4E;QAC5E,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACxC,OAAO;SACR;QAED,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;CACF;AAxBC;IADC,KAAK;;qCAC0B,aAAa;;sDAuB5C","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {ReactiveController, ReactiveControllerHost} from 'lit';\n\nimport {bound} from '../decorators/bound.js';\n\nimport {isFormAssociated} from './form-associated.js';\nimport {shimLabelSupport, SUPPORTS_FACE_LABEL} from './shim-label-activation.js';\n\ndeclare global {\n interface Window {\n ShadyDOM?: {inUse: boolean;};\n }\n}\n\n/**\n * An element that `FormController` may use.\n */\nexport interface FormElement extends ReactiveControllerHost, HTMLElement {\n /**\n * The `<form>` that this element is associated with.\n */\n readonly form: HTMLFormElement|null;\n /**\n * The name of the element in the form. This property should reflect to a\n * `name` attribute.\n */\n name: string;\n /**\n * Whether or not this element is disabled. If present, this property should\n * reflect to a `disabled` attribute.\n */\n disabled?: boolean;\n /**\n * A function that retrieves the current form value for this element.\n *\n * @return The current form value, or `null` if there is no value.\n */\n [getFormValue](): string|File|FormData|null;\n}\n\n/**\n * A unique symbol key for `FormController` elements to implement their\n * `getFormValue()` function.\n */\nexport const getFormValue = Symbol('getFormValue');\n\n/**\n * A `ReactiveController` that adds `<form>` support to an element.\n *\n * Elements should also set `static formAssociated = true` which\n * provides platform support for forms. When an element is form associated,\n * it can be activated via clicks on associated label elements. It is the\n * responsibility of the element to process this click and perform any necessary\n * activation tasks, for example focusing and clicking on an internal element.\n *\n */\nexport class FormController implements ReactiveController {\n private form?: HTMLFormElement|null;\n\n /**\n * Creates a new `FormController` for the given element.\n *\n * @param element The element to add `<form>` support to.\n */\n constructor(private readonly element: FormElement) {}\n\n hostConnected() {\n // If the component internals are not in Shadow DOM, subscribing to form\n // data events could lead to duplicated data, which may not work correctly\n // on the server side.\n if (!this.element.shadowRoot || window.ShadyDOM?.inUse) {\n return;\n }\n\n // Preserve a reference to the form, since on hostDisconnected it may be\n // null if the child was removed.\n this.form = this.element.form;\n this.form?.addEventListener('formdata', this.formDataListener);\n\n // TODO(b/261871554) Label activation shim is currently only needed for\n // Safari. Remove it when no longer needed.\n if (isFormAssociated(this.element) && !SUPPORTS_FACE_LABEL) {\n shimLabelSupport(this.element.getRootNode() as Document | ShadowRoot);\n }\n }\n\n hostDisconnected() {\n this.form?.removeEventListener('formdata', this.formDataListener);\n }\n\n @bound\n private formDataListener(event: FormDataEvent) {\n if (this.element.disabled) {\n // Check for truthiness since some elements may not support disabling.\n return;\n }\n\n const value = this.element[getFormValue]();\n // If given a `FormData` instance, append all values to the form. This\n // allows elements to customize what is added beyond a single name/value\n // pair.\n if (value instanceof FormData) {\n for (const [key, dataValue] of value) {\n event.formData.append(key, dataValue);\n }\n return;\n }\n\n // Do not associate the value with the form if there is no value or no name.\n if (value === null || !this.element.name) {\n return;\n }\n\n event.formData.append(this.element.name, value);\n }\n}\n"]}
1
+ {"version":3,"file":"form-controller.js","sourceRoot":"","sources":["form-controller.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAE,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAkCjF;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,OAAO,cAAc;IAGzB;;;;OAIG;IACH,YAA6B,OAAoB;QAApB,YAAO,GAAP,OAAO,CAAa;QA0BhC,qBAAgB,GAAG,CAAC,KAAoB,EAAE,EAAE;YAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACzB,sEAAsE;gBACtE,OAAO;aACR;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,sEAAsE;YACtE,wEAAwE;YACxE,QAAQ;YACR,IAAI,KAAK,YAAY,QAAQ,EAAE;gBAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,KAAK,EAAE;oBACpC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;iBACvC;gBACD,OAAO;aACR;YAED,4EAA4E;YAC5E,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;gBACxC,OAAO;aACR;YAED,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC,CAAC;IAjDkD,CAAC;IAErD,aAAa;QACX,wEAAwE;QACxE,0EAA0E;QAC1E,sBAAsB;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE;YACtD,OAAO;SACR;QAED,wEAAwE;QACxE,iCAAiC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/D,uEAAuE;QACvE,2CAA2C;QAC3C,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC1D,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAA2B,CAAC,CAAC;SACvE;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;CA0BF","sourcesContent":["/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {ReactiveController, ReactiveControllerHost} from 'lit';\n\nimport {isFormAssociated} from './form-associated.js';\nimport {shimLabelSupport, SUPPORTS_FACE_LABEL} from './shim-label-activation.js';\n\ndeclare global {\n interface Window {\n ShadyDOM?: {inUse: boolean;};\n }\n}\n\n/**\n * An element that `FormController` may use.\n */\nexport interface FormElement extends ReactiveControllerHost, HTMLElement {\n /**\n * The `<form>` that this element is associated with.\n */\n readonly form: HTMLFormElement|null;\n /**\n * The name of the element in the form. This property should reflect to a\n * `name` attribute.\n */\n name: string;\n /**\n * Whether or not this element is disabled. If present, this property should\n * reflect to a `disabled` attribute.\n */\n disabled?: boolean;\n /**\n * A function that retrieves the current form value for this element.\n *\n * @return The current form value, or `null` if there is no value.\n */\n [getFormValue](): string|File|FormData|null;\n}\n\n/**\n * A unique symbol key for `FormController` elements to implement their\n * `getFormValue()` function.\n */\nexport const getFormValue = Symbol('getFormValue');\n\n/**\n * A `ReactiveController` that adds `<form>` support to an element.\n *\n * Elements should also set `static formAssociated = true` which\n * provides platform support for forms. When an element is form associated,\n * it can be activated via clicks on associated label elements. It is the\n * responsibility of the element to process this click and perform any necessary\n * activation tasks, for example focusing and clicking on an internal element.\n *\n */\nexport class FormController implements ReactiveController {\n private form?: HTMLFormElement|null;\n\n /**\n * Creates a new `FormController` for the given element.\n *\n * @param element The element to add `<form>` support to.\n */\n constructor(private readonly element: FormElement) {}\n\n hostConnected() {\n // If the component internals are not in Shadow DOM, subscribing to form\n // data events could lead to duplicated data, which may not work correctly\n // on the server side.\n if (!this.element.shadowRoot || window.ShadyDOM?.inUse) {\n return;\n }\n\n // Preserve a reference to the form, since on hostDisconnected it may be\n // null if the child was removed.\n this.form = this.element.form;\n this.form?.addEventListener('formdata', this.formDataListener);\n\n // TODO(b/261871554) Label activation shim is currently only needed for\n // Safari. Remove it when no longer needed.\n if (isFormAssociated(this.element) && !SUPPORTS_FACE_LABEL) {\n shimLabelSupport(this.element.getRootNode() as Document | ShadowRoot);\n }\n }\n\n hostDisconnected() {\n this.form?.removeEventListener('formdata', this.formDataListener);\n }\n\n private readonly formDataListener = (event: FormDataEvent) => {\n if (this.element.disabled) {\n // Check for truthiness since some elements may not support disabling.\n return;\n }\n\n const value = this.element[getFormValue]();\n // If given a `FormData` instance, append all values to the form. This\n // allows elements to customize what is added beyond a single name/value\n // pair.\n if (value instanceof FormData) {\n for (const [key, dataValue] of value) {\n event.formData.append(key, dataValue);\n }\n return;\n }\n\n // Do not associate the value with the form if there is no value or no name.\n if (value === null || !this.element.name) {\n return;\n }\n\n event.formData.append(this.element.name, value);\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAQlD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,MAAM;CAEnC,CAAA;AADiB,eAAM,GAAG,CAAC,MAAM,CAAE,CAAA;AADvB,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAEpB;SAFY,QAAQ","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {Dialog} from './lib/dialog.js';\nimport {styles} from './lib/dialog-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-dialog': MdDialog;\n }\n}\n\n/**\n * @summary Dialogs can require an action, communicate information, or help\n * users accomplish a task. There are two types of dialogs: basic and\n * full-screen.\n *\n * @description\n * A dialog is a modal window that appears in front of app content to provide\n * critical information or ask for a decision. Dialogs disable all app\n * functionality when they appear, and remain on screen until confirmed,\n * dismissed, or a required action has been taken.\n *\n * Dialogs are purposefully interruptive, so they should be used sparingly.\n * A less disruptive alternative is to use a menu, which provides options\n * without interrupting a user’s experience.\n *\n * On mobile devices only, complex dialogs should be displayed fullscreen.\n *\n * __Example usages:__\n * - Common use cases for basic dialogs include alerts, quick selection, and\n * confirmation.\n * - More complex dialogs may contain actions that require a series of tasks\n * to complete. One example is creating a calendar entry with the event title,\n * date, location, and time.\n */\n@customElement('md-dialog')\nexport class MdDialog extends Dialog {\n static override styles = [styles];\n}\n"]}
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,MAAM,EAAC,MAAM,4BAA4B,CAAC;AAQlD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEI,IAAM,QAAQ,GAAd,MAAM,QAAS,SAAQ,MAAM;;AAClB,eAAM,GAAG,CAAC,MAAM,CAAC,CAAC;AADvB,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CAEpB;SAFY,QAAQ","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {customElement} from 'lit/decorators.js';\n\nimport {Dialog} from './lib/dialog.js';\nimport {styles} from './lib/dialog-styles.css.js';\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'md-dialog': MdDialog;\n }\n}\n\n/**\n * @summary Dialogs can require an action, communicate information, or help\n * users accomplish a task. There are two types of dialogs: basic and\n * full-screen.\n *\n * @description\n * A dialog is a modal window that appears in front of app content to provide\n * critical information or ask for a decision. Dialogs disable all app\n * functionality when they appear, and remain on screen until confirmed,\n * dismissed, or a required action has been taken.\n *\n * Dialogs are purposefully interruptive, so they should be used sparingly.\n * A less disruptive alternative is to use a menu, which provides options\n * without interrupting a user’s experience.\n *\n * On mobile devices only, complex dialogs should be displayed fullscreen.\n *\n * __Example usages:__\n * - Common use cases for basic dialogs include alerts, quick selection, and\n * confirmation.\n * - More complex dialogs may contain actions that require a series of tasks\n * to complete. One example is creating a calendar entry with the event title,\n * date, location, and time.\n */\n@customElement('md-dialog')\nexport class MdDialog extends Dialog {\n static override styles = [styles];\n}\n"]}
@@ -10,8 +10,8 @@ import { Dialog } from './lib/dialog.js';
10
10
  */
11
11
  export declare class DialogHarness extends Harness<Dialog> {
12
12
  getInteractiveElement(): Promise<HTMLDialogElement>;
13
- isOpening(): Promise<boolean>;
14
- isClosing(): Promise<boolean>;
13
+ isOpening(): boolean;
14
+ isClosing(): boolean;
15
15
  transitionComplete(): Promise<void>;
16
16
  isDialogVisible(): Promise<boolean>;
17
17
  isScrimVisible(): Promise<boolean>;
package/dialog/harness.js CHANGED
@@ -12,25 +12,28 @@ export class DialogHarness extends Harness {
12
12
  await this.element.updateComplete;
13
13
  return this.element.renderRoot.querySelector('.dialog');
14
14
  }
15
- async isOpening() {
16
- await this.element.updateComplete;
17
- return Boolean(this.element.open && this.element.hasAttribute('opening'));
15
+ isOpening() {
16
+ // Test access to state
17
+ // tslint:disable-next-line:no-dict-access-on-struct-type
18
+ return Boolean(this.element.open && this.element['opening']);
18
19
  }
19
- async isClosing() {
20
- await this.element.updateComplete;
21
- return Boolean(!this.element.open && this.element.hasAttribute('closing'));
20
+ isClosing() {
21
+ // Test access to state
22
+ // tslint:disable-next-line:no-dict-access-on-struct-type
23
+ return Boolean(!this.element.open && this.element['closing']);
22
24
  }
23
25
  async transitionComplete() {
26
+ await this.element.updateComplete;
24
27
  let resolve = () => { };
25
28
  const doneTransitioning = new Promise(resolver => {
26
29
  resolve = () => {
27
30
  resolver();
28
31
  };
29
32
  });
30
- if (await this.isOpening()) {
33
+ if (this.isOpening()) {
31
34
  this.element.addEventListener('opened', resolve, { once: true });
32
35
  }
33
- else if (await this.isClosing()) {
36
+ else if (this.isClosing()) {
34
37
  this.element.addEventListener('closed', resolve, { once: true });
35
38
  }
36
39
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"harness.js","sourceRoot":"","sources":["harness.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,uBAAuB,CAAC;AAK9C;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAe;IACvC,KAAK,CAAC,qBAAqB;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CACjC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,IAAI,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACvB,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,QAAQ,CAAC,EAAE;YACrD,OAAO,GAAG,GAAG,EAAE;gBACb,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;SAChE;aAAM,IAAI,MAAM,IAAI,CAAC,SAAS,EAAE,EAAE;YACjC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,EAAE,CAAC;SACX;QACD,MAAM,iBAAiB,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,EAAC,OAAO,EAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAClD,OAAO,OAAO,KAAK,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,EAAC,eAAe,EAAE,OAAO,EAAC,GAC5B,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QACpC,OAAO,eAAe,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,CAAC;IAC5D,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Harness} from '../testing/harness.js';\n\nimport {Dialog} from './lib/dialog.js';\n\n\n/**\n * Test harness for dialog.\n */\nexport class DialogHarness extends Harness<Dialog> {\n override async getInteractiveElement() {\n await this.element.updateComplete;\n return this.element.renderRoot.querySelector('.dialog') as\n HTMLDialogElement;\n }\n\n async isOpening() {\n await this.element.updateComplete;\n return Boolean(this.element.open && this.element.hasAttribute('opening'));\n }\n\n async isClosing() {\n await this.element.updateComplete;\n return Boolean(!this.element.open && this.element.hasAttribute('closing'));\n }\n\n async transitionComplete() {\n let resolve = () => {};\n const doneTransitioning = new Promise<void>(resolver => {\n resolve = () => {\n resolver();\n };\n });\n if (await this.isOpening()) {\n this.element.addEventListener('opened', resolve, {once: true});\n } else if (await this.isClosing()) {\n this.element.addEventListener('closed', resolve, {once: true});\n } else {\n resolve();\n }\n await doneTransitioning;\n }\n\n async isDialogVisible() {\n await this.transitionComplete();\n const dialogElement = await this.getInteractiveElement();\n const {display} = getComputedStyle(dialogElement);\n return display !== 'none';\n }\n\n async isScrimVisible() {\n await this.transitionComplete();\n const dialogElement = await this.getInteractiveElement();\n const {backgroundColor, display} =\n getComputedStyle(dialogElement, '::before');\n const hiddenBg = `rgba(0, 0, 0, 0)`;\n return backgroundColor !== hiddenBg && display !== 'none';\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;AAK9C;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,OAAe;IACvC,KAAK,CAAC,qBAAqB;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CACjC,CAAC;IACxB,CAAC;IAED,SAAS;QACP,uBAAuB;QACvB,yDAAyD;QACzD,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,SAAS;QACP,uBAAuB;QACvB,yDAAyD;QACzD,OAAO,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClC,IAAI,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,CAAC;QACvB,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAO,QAAQ,CAAC,EAAE;YACrD,OAAO,GAAG,GAAG,EAAE;gBACb,QAAQ,EAAE,CAAC;YACb,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;SAChE;aAAM,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,EAAE,CAAC;SACX;QACD,MAAM,iBAAiB,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,EAAC,OAAO,EAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAClD,OAAO,OAAO,KAAK,MAAM,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzD,MAAM,EAAC,eAAe,EAAE,OAAO,EAAC,GAC5B,gBAAgB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC;QACpC,OAAO,eAAe,KAAK,QAAQ,IAAI,OAAO,KAAK,MAAM,CAAC;IAC5D,CAAC;CACF","sourcesContent":["/**\n * @license\n * Copyright 2023 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {Harness} from '../testing/harness.js';\n\nimport {Dialog} from './lib/dialog.js';\n\n\n/**\n * Test harness for dialog.\n */\nexport class DialogHarness extends Harness<Dialog> {\n override async getInteractiveElement() {\n await this.element.updateComplete;\n return this.element.renderRoot.querySelector('.dialog') as\n HTMLDialogElement;\n }\n\n isOpening() {\n // Test access to state\n // tslint:disable-next-line:no-dict-access-on-struct-type\n return Boolean(this.element.open && this.element['opening']);\n }\n\n isClosing() {\n // Test access to state\n // tslint:disable-next-line:no-dict-access-on-struct-type\n return Boolean(!this.element.open && this.element['closing']);\n }\n\n async transitionComplete() {\n await this.element.updateComplete;\n let resolve = () => {};\n const doneTransitioning = new Promise<void>(resolver => {\n resolve = () => {\n resolver();\n };\n });\n if (this.isOpening()) {\n this.element.addEventListener('opened', resolve, {once: true});\n } else if (this.isClosing()) {\n this.element.addEventListener('closed', resolve, {once: true});\n } else {\n resolve();\n }\n await doneTransitioning;\n }\n\n async isDialogVisible() {\n await this.transitionComplete();\n const dialogElement = await this.getInteractiveElement();\n const {display} = getComputedStyle(dialogElement);\n return display !== 'none';\n }\n\n async isScrimVisible() {\n await this.transitionComplete();\n const dialogElement = await this.getInteractiveElement();\n const {backgroundColor, display} =\n getComputedStyle(dialogElement, '::before');\n const hiddenBg = `rgba(0, 0, 0, 0)`;\n return backgroundColor !== hiddenBg && display !== 'none';\n }\n}\n"]}
@@ -5,13 +5,17 @@
5
5
 
6
6
  // PUBLIC PROPERTIES
7
7
 
8
+ // go/keep-sorted start
8
9
  @use 'sass:map';
9
- @use './tokens';
10
+ // go/keep-sorted end
11
+ // go/keep-sorted start
10
12
  @use '../../sass/color';
11
13
  @use '../../sass/resolvers';
12
14
  @use '../../sass/shape';
13
15
  @use '../../sass/theme';
14
16
  @use '../../sass/var';
17
+ @use './tokens';
18
+ // go/keep-sorted end
15
19
 
16
20
  @mixin styles() {
17
21
  $tokens: tokens.md-comp-dialog-values();
@@ -136,11 +140,7 @@
136
140
  gap: var(--_header-spacing);
137
141
  -webkit-font-smoothing: antialiased;
138
142
  color: var(--_headline-color);
139
- font-family: var(--_headline-font);
140
- line-height: var(--_headline-line-height);
141
- font-size: var(--_headline-size);
142
- letter-spacing: var(--_headline-tracking);
143
- font-weight: var(--_headline-weight);
143
+ font: var(--_headline-type);
144
144
  }
145
145
 
146
146
  .content {
@@ -150,11 +150,7 @@
150
150
  margin-block-end: var(--_content-block-end-spacing);
151
151
  -webkit-font-smoothing: antialiased;
152
152
  color: var(--_supporting-text-color);
153
- font-family: var(--_supporting-text-font);
154
- line-height: var(--_supporting-text-line-height);
155
- font-size: var(--_supporting-text-size);
156
- letter-spacing: var(--_supporting-text-tracking);
157
- font-weight: var(--_supporting-text-weight);
153
+ font: var(--_supporting-text-type);
158
154
  }
159
155
 
160
156
  .footer {