@fluentui/web-components 3.0.0-beta.3 → 3.0.0-beta.31

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 (669) hide show
  1. package/CHANGELOG.md +430 -103
  2. package/README.md +46 -15
  3. package/dist/dts/accordion/accordion.bench.d.ts +3 -0
  4. package/dist/dts/accordion/accordion.d.ts +47 -3
  5. package/dist/dts/accordion/accordion.definition.d.ts +0 -4
  6. package/dist/dts/accordion/accordion.options.d.ts +14 -0
  7. package/dist/dts/accordion/accordion.template.d.ts +4 -0
  8. package/dist/dts/accordion/index.d.ts +2 -1
  9. package/dist/dts/accordion-item/accordion-item.bench.d.ts +3 -0
  10. package/dist/dts/accordion-item/accordion-item.d.ts +78 -6
  11. package/dist/dts/accordion-item/accordion-item.definition.d.ts +0 -3
  12. package/dist/dts/accordion-item/accordion-item.options.d.ts +3 -3
  13. package/dist/dts/accordion-item/accordion-item.template.d.ts +2 -1
  14. package/dist/dts/accordion-item/index.d.ts +3 -2
  15. package/dist/dts/anchor-button/anchor-button.bench.d.ts +3 -0
  16. package/dist/dts/anchor-button/anchor-button.d.ts +179 -26
  17. package/dist/dts/anchor-button/anchor-button.definition.d.ts +0 -3
  18. package/dist/dts/anchor-button/anchor-button.options.d.ts +43 -6
  19. package/dist/dts/anchor-button/anchor-button.template.d.ts +7 -2
  20. package/dist/dts/anchor-button/index.d.ts +4 -3
  21. package/dist/dts/avatar/avatar.bench.d.ts +3 -0
  22. package/dist/dts/avatar/avatar.d.ts +22 -2
  23. package/dist/dts/avatar/avatar.options.d.ts +7 -7
  24. package/dist/dts/avatar/index.d.ts +2 -2
  25. package/dist/dts/badge/badge.bench.d.ts +3 -0
  26. package/dist/dts/badge/badge.d.ts +31 -1
  27. package/dist/dts/badge/badge.definition.d.ts +0 -3
  28. package/dist/dts/badge/badge.options.d.ts +7 -7
  29. package/dist/dts/badge/index.d.ts +2 -2
  30. package/dist/dts/button/button.bench.d.ts +3 -0
  31. package/dist/dts/button/button.d.ts +267 -22
  32. package/dist/dts/button/button.definition.d.ts +2 -3
  33. package/dist/dts/button/button.options.d.ts +42 -7
  34. package/dist/dts/button/button.styles.d.ts +9 -0
  35. package/dist/dts/button/button.template.d.ts +8 -0
  36. package/dist/dts/button/index.d.ts +5 -4
  37. package/dist/dts/checkbox/checkbox.bench.d.ts +3 -0
  38. package/dist/dts/checkbox/checkbox.d.ts +282 -16
  39. package/dist/dts/checkbox/checkbox.options.d.ts +15 -12
  40. package/dist/dts/checkbox/checkbox.template.d.ts +7 -1
  41. package/dist/dts/checkbox/index.d.ts +4 -3
  42. package/dist/dts/compound-button/compound-button.bench.d.ts +3 -0
  43. package/dist/dts/compound-button/compound-button.definition.d.ts +0 -3
  44. package/dist/dts/compound-button/compound-button.options.d.ts +5 -10
  45. package/dist/dts/compound-button/index.d.ts +2 -2
  46. package/dist/dts/counter-badge/counter-badge.bench.d.ts +3 -0
  47. package/dist/dts/counter-badge/counter-badge.d.ts +37 -1
  48. package/dist/dts/counter-badge/counter-badge.definition.d.ts +0 -4
  49. package/dist/dts/counter-badge/counter-badge.options.d.ts +6 -6
  50. package/dist/dts/counter-badge/index.d.ts +2 -2
  51. package/dist/dts/dialog/define.d.ts +1 -0
  52. package/dist/dts/dialog/dialog.bench.d.ts +3 -0
  53. package/dist/dts/dialog/dialog.d.ts +58 -0
  54. package/dist/dts/dialog/dialog.definition.d.ts +9 -0
  55. package/dist/dts/dialog/dialog.options.d.ts +11 -0
  56. package/dist/dts/dialog/dialog.styles.d.ts +4 -0
  57. package/dist/dts/dialog/dialog.template.d.ts +7 -0
  58. package/dist/dts/dialog/index.d.ts +5 -0
  59. package/dist/dts/dialog-body/define.d.ts +1 -0
  60. package/dist/dts/dialog-body/dialog-body.bench.d.ts +3 -0
  61. package/dist/dts/dialog-body/dialog-body.d.ts +14 -0
  62. package/dist/dts/dialog-body/dialog-body.definition.d.ts +9 -0
  63. package/dist/dts/dialog-body/dialog-body.styles.d.ts +4 -0
  64. package/dist/dts/dialog-body/dialog-body.template.d.ts +6 -0
  65. package/dist/dts/dialog-body/index.d.ts +4 -0
  66. package/dist/dts/divider/divider.bench.d.ts +3 -0
  67. package/dist/dts/divider/divider.d.ts +47 -11
  68. package/dist/dts/divider/divider.options.d.ts +32 -8
  69. package/dist/dts/divider/divider.template.d.ts +1 -0
  70. package/dist/dts/divider/index.d.ts +2 -2
  71. package/dist/dts/field/define.d.ts +1 -0
  72. package/dist/dts/field/field.bench.d.ts +3 -0
  73. package/dist/dts/field/field.d.ts +99 -0
  74. package/dist/dts/field/field.definition.d.ts +9 -0
  75. package/dist/dts/field/field.options.d.ts +41 -0
  76. package/dist/dts/field/field.styles.d.ts +6 -0
  77. package/dist/dts/field/field.template.d.ts +6 -0
  78. package/dist/dts/field/index.d.ts +6 -0
  79. package/dist/dts/form-associated/form-associated.d.ts +104 -0
  80. package/dist/dts/image/image.bench.d.ts +3 -0
  81. package/dist/dts/image/image.options.d.ts +3 -3
  82. package/dist/dts/image/index.d.ts +2 -2
  83. package/dist/dts/index-rollup.d.ts +32 -1
  84. package/dist/dts/index.d.ts +53 -30
  85. package/dist/dts/label/index.d.ts +2 -1
  86. package/dist/dts/label/label.bench.d.ts +3 -0
  87. package/dist/dts/label/label.d.ts +0 -2
  88. package/dist/dts/label/label.options.d.ts +3 -3
  89. package/dist/dts/link/define.d.ts +1 -0
  90. package/dist/dts/link/index.d.ts +4 -0
  91. package/dist/dts/link/link.bench.d.ts +3 -0
  92. package/dist/dts/link/link.d.ts +33 -0
  93. package/dist/dts/link/link.definition.d.ts +7 -0
  94. package/dist/dts/link/link.options.d.ts +52 -0
  95. package/dist/dts/link/link.styles.d.ts +1 -0
  96. package/dist/dts/link/link.template.d.ts +12 -0
  97. package/dist/dts/menu/index.d.ts +1 -1
  98. package/dist/dts/menu/menu.bench.d.ts +3 -0
  99. package/dist/dts/menu/menu.d.ts +27 -25
  100. package/dist/dts/menu-button/index.d.ts +4 -3
  101. package/dist/dts/menu-button/menu-button.bench.d.ts +3 -0
  102. package/dist/dts/menu-button/menu-button.definition.d.ts +0 -3
  103. package/dist/dts/menu-button/menu-button.options.d.ts +6 -7
  104. package/dist/dts/menu-item/index.d.ts +5 -3
  105. package/dist/dts/menu-item/menu-item.bench.d.ts +3 -0
  106. package/dist/dts/menu-item/menu-item.d.ts +162 -5
  107. package/dist/dts/menu-item/menu-item.definition.d.ts +0 -4
  108. package/dist/dts/menu-item/menu-item.options.d.ts +30 -0
  109. package/dist/dts/menu-item/menu-item.template.d.ts +2 -1
  110. package/dist/dts/menu-list/index.d.ts +1 -1
  111. package/dist/dts/menu-list/menu-list.bench.d.ts +3 -0
  112. package/dist/dts/menu-list/menu-list.d.ts +71 -4
  113. package/dist/dts/menu-list/menu-list.definition.d.ts +0 -4
  114. package/dist/dts/menu-list/menu-list.template.d.ts +1 -0
  115. package/dist/dts/patterns/aria-globals.d.ts +189 -0
  116. package/dist/dts/patterns/index.d.ts +2 -0
  117. package/dist/dts/patterns/start-end.d.ts +44 -0
  118. package/dist/dts/progress-bar/index.d.ts +2 -2
  119. package/dist/dts/progress-bar/progress-bar.bench.d.ts +3 -0
  120. package/dist/dts/progress-bar/progress-bar.d.ts +60 -10
  121. package/dist/dts/progress-bar/progress-bar.options.d.ts +4 -4
  122. package/dist/dts/progress-bar/progress-bar.template.d.ts +1 -0
  123. package/dist/dts/radio/index.d.ts +2 -1
  124. package/dist/dts/radio/radio.bench.d.ts +3 -0
  125. package/dist/dts/radio/radio.d.ts +54 -3
  126. package/dist/dts/radio/radio.form-associated.d.ts +14 -0
  127. package/dist/dts/radio/radio.template.d.ts +2 -1
  128. package/dist/dts/radio-group/index.d.ts +2 -2
  129. package/dist/dts/radio-group/radio-group.bench.d.ts +3 -0
  130. package/dist/dts/radio-group/radio-group.d.ts +91 -2
  131. package/dist/dts/radio-group/radio-group.options.d.ts +17 -0
  132. package/dist/dts/radio-group/radio-group.template.d.ts +1 -0
  133. package/dist/dts/slider/index.d.ts +3 -2
  134. package/dist/dts/slider/slider-utilities.d.ts +5 -0
  135. package/dist/dts/slider/slider.bench.d.ts +3 -0
  136. package/dist/dts/slider/slider.d.ts +195 -5
  137. package/dist/dts/slider/slider.form-associated.d.ts +14 -0
  138. package/dist/dts/slider/slider.options.d.ts +44 -3
  139. package/dist/dts/slider/slider.template.d.ts +4 -2
  140. package/dist/dts/spinner/index.d.ts +2 -2
  141. package/dist/dts/spinner/spinner.bench.d.ts +3 -0
  142. package/dist/dts/spinner/spinner.d.ts +9 -4
  143. package/dist/dts/spinner/spinner.definition.d.ts +0 -4
  144. package/dist/dts/spinner/spinner.options.d.ts +3 -3
  145. package/dist/dts/spinner/spinner.template.d.ts +1 -2
  146. package/dist/dts/styles/partials/index.d.ts +1 -0
  147. package/dist/dts/styles/partials/typography.partials.d.ts +18 -0
  148. package/dist/dts/styles/states/index.d.ts +110 -0
  149. package/dist/dts/switch/index.d.ts +3 -2
  150. package/dist/dts/switch/switch.bench.d.ts +3 -0
  151. package/dist/dts/switch/switch.d.ts +6 -12
  152. package/dist/dts/switch/switch.form-associated.d.ts +14 -0
  153. package/dist/dts/switch/switch.options.d.ts +2 -2
  154. package/dist/dts/switch/switch.template.d.ts +2 -1
  155. package/dist/dts/tab/index.d.ts +4 -3
  156. package/dist/dts/tab/tab.bench.d.ts +3 -0
  157. package/dist/dts/tab/tab.d.ts +17 -2
  158. package/dist/dts/tab/tab.template.d.ts +3 -3
  159. package/dist/dts/tab-panel/index.d.ts +1 -1
  160. package/dist/dts/tab-panel/tab-panel.bench.d.ts +3 -0
  161. package/dist/dts/tab-panel/tab-panel.d.ts +2 -2
  162. package/dist/dts/tab-panel/tab-panel.template.d.ts +4 -1
  163. package/dist/dts/tabs/index.d.ts +5 -4
  164. package/dist/dts/tabs/tabs.bench.d.ts +3 -0
  165. package/dist/dts/tabs/tabs.d.ts +102 -13
  166. package/dist/dts/tabs/tabs.options.d.ts +23 -5
  167. package/dist/dts/tabs/tabs.template.d.ts +5 -1
  168. package/dist/dts/text/index.d.ts +2 -2
  169. package/dist/dts/text/text.bench.d.ts +3 -0
  170. package/dist/dts/text/text.options.d.ts +5 -5
  171. package/dist/dts/text-input/index.d.ts +5 -5
  172. package/dist/dts/text-input/text-input.bench.d.ts +3 -0
  173. package/dist/dts/text-input/text-input.d.ts +395 -11
  174. package/dist/dts/text-input/text-input.definition.d.ts +2 -3
  175. package/dist/dts/text-input/text-input.options.d.ts +31 -10
  176. package/dist/dts/text-input/text-input.styles.d.ts +5 -2
  177. package/dist/dts/text-input/text-input.template.d.ts +8 -1
  178. package/dist/dts/theme/design-tokens.d.ts +2180 -384
  179. package/dist/dts/theme/set-theme.d.ts +6 -3
  180. package/dist/dts/toggle-button/index.d.ts +5 -4
  181. package/dist/dts/toggle-button/toggle-button.bench.d.ts +3 -0
  182. package/dist/dts/toggle-button/toggle-button.d.ts +29 -26
  183. package/dist/dts/toggle-button/toggle-button.definition.d.ts +0 -2
  184. package/dist/dts/toggle-button/toggle-button.options.d.ts +6 -7
  185. package/dist/dts/toggle-button/toggle-button.styles.d.ts +7 -0
  186. package/dist/dts/utils/behaviors/match-media-stylesheet-behavior.d.ts +124 -0
  187. package/dist/dts/utils/benchmark-dependencies/tokens.d.ts +1 -0
  188. package/dist/dts/utils/benchmark-wrapper.d.ts +2 -0
  189. package/dist/dts/utils/direction.d.ts +10 -0
  190. package/dist/dts/utils/display.d.ts +17 -0
  191. package/dist/dts/utils/element-internals.d.ts +20 -0
  192. package/dist/dts/utils/index.d.ts +6 -0
  193. package/dist/dts/utils/template-helpers.d.ts +16 -0
  194. package/dist/dts/utils/typings.d.ts +6 -0
  195. package/dist/dts/utils/whitespace-filter.d.ts +12 -0
  196. package/dist/esm/accordion/accordion.bench.js +30 -0
  197. package/dist/esm/accordion/accordion.bench.js.map +1 -0
  198. package/dist/esm/accordion/accordion.definition.js +0 -4
  199. package/dist/esm/accordion/accordion.definition.js.map +1 -1
  200. package/dist/esm/accordion/accordion.js +211 -3
  201. package/dist/esm/accordion/accordion.js.map +1 -1
  202. package/dist/esm/accordion/accordion.options.js +9 -0
  203. package/dist/esm/accordion/accordion.options.js.map +1 -0
  204. package/dist/esm/accordion/accordion.styles.js +1 -1
  205. package/dist/esm/accordion/accordion.styles.js.map +1 -1
  206. package/dist/esm/accordion/accordion.template.js +11 -1
  207. package/dist/esm/accordion/accordion.template.js.map +1 -1
  208. package/dist/esm/accordion/index.js +2 -1
  209. package/dist/esm/accordion/index.js.map +1 -1
  210. package/dist/esm/accordion-item/accordion-item.bench.js +14 -0
  211. package/dist/esm/accordion-item/accordion-item.bench.js.map +1 -0
  212. package/dist/esm/accordion-item/accordion-item.definition.js +0 -3
  213. package/dist/esm/accordion-item/accordion-item.definition.js.map +1 -1
  214. package/dist/esm/accordion-item/accordion-item.js +80 -10
  215. package/dist/esm/accordion-item/accordion-item.js.map +1 -1
  216. package/dist/esm/accordion-item/accordion-item.styles.js +1 -1
  217. package/dist/esm/accordion-item/accordion-item.styles.js.map +1 -1
  218. package/dist/esm/accordion-item/accordion-item.template.js +47 -2
  219. package/dist/esm/accordion-item/accordion-item.template.js.map +1 -1
  220. package/dist/esm/accordion-item/index.js +2 -2
  221. package/dist/esm/accordion-item/index.js.map +1 -1
  222. package/dist/esm/anchor-button/anchor-button.bench.js +11 -0
  223. package/dist/esm/anchor-button/anchor-button.bench.js.map +1 -0
  224. package/dist/esm/anchor-button/anchor-button.definition.js +0 -6
  225. package/dist/esm/anchor-button/anchor-button.definition.js.map +1 -1
  226. package/dist/esm/anchor-button/anchor-button.js +187 -60
  227. package/dist/esm/anchor-button/anchor-button.js.map +1 -1
  228. package/dist/esm/anchor-button/anchor-button.options.js +26 -0
  229. package/dist/esm/anchor-button/anchor-button.options.js.map +1 -1
  230. package/dist/esm/anchor-button/anchor-button.styles.js +12 -5
  231. package/dist/esm/anchor-button/anchor-button.styles.js.map +1 -1
  232. package/dist/esm/anchor-button/anchor-button.template.js +21 -1
  233. package/dist/esm/anchor-button/anchor-button.template.js.map +1 -1
  234. package/dist/esm/anchor-button/index.js +3 -3
  235. package/dist/esm/anchor-button/index.js.map +1 -1
  236. package/dist/esm/avatar/avatar.bench.js +10 -0
  237. package/dist/esm/avatar/avatar.bench.js.map +1 -0
  238. package/dist/esm/avatar/avatar.js +43 -23
  239. package/dist/esm/avatar/avatar.js.map +1 -1
  240. package/dist/esm/avatar/avatar.styles.js +36 -36
  241. package/dist/esm/avatar/avatar.styles.js.map +1 -1
  242. package/dist/esm/avatar/avatar.template.js +2 -4
  243. package/dist/esm/avatar/avatar.template.js.map +1 -1
  244. package/dist/esm/avatar/index.js +2 -2
  245. package/dist/esm/avatar/index.js.map +1 -1
  246. package/dist/esm/badge/badge.bench.js +11 -0
  247. package/dist/esm/badge/badge.bench.js.map +1 -0
  248. package/dist/esm/badge/badge.definition.js +0 -3
  249. package/dist/esm/badge/badge.definition.js.map +1 -1
  250. package/dist/esm/badge/badge.js +61 -7
  251. package/dist/esm/badge/badge.js.map +1 -1
  252. package/dist/esm/badge/badge.styles.js +14 -6
  253. package/dist/esm/badge/badge.styles.js.map +1 -1
  254. package/dist/esm/badge/badge.template.js +2 -2
  255. package/dist/esm/badge/badge.template.js.map +1 -1
  256. package/dist/esm/badge/index.js +2 -2
  257. package/dist/esm/badge/index.js.map +1 -1
  258. package/dist/esm/button/button.bench.js +11 -0
  259. package/dist/esm/button/button.bench.js.map +1 -0
  260. package/dist/esm/button/button.definition.js +2 -6
  261. package/dist/esm/button/button.definition.js.map +1 -1
  262. package/dist/esm/button/button.js +312 -42
  263. package/dist/esm/button/button.js.map +1 -1
  264. package/dist/esm/button/button.options.js +20 -1
  265. package/dist/esm/button/button.options.js.map +1 -1
  266. package/dist/esm/button/button.styles.js +78 -78
  267. package/dist/esm/button/button.styles.js.map +1 -1
  268. package/dist/esm/button/button.template.js +23 -1
  269. package/dist/esm/button/button.template.js.map +1 -1
  270. package/dist/esm/button/index.js +4 -4
  271. package/dist/esm/button/index.js.map +1 -1
  272. package/dist/esm/checkbox/checkbox.bench.js +11 -0
  273. package/dist/esm/checkbox/checkbox.bench.js.map +1 -0
  274. package/dist/esm/checkbox/checkbox.definition.js +1 -1
  275. package/dist/esm/checkbox/checkbox.definition.js.map +1 -1
  276. package/dist/esm/checkbox/checkbox.js +371 -13
  277. package/dist/esm/checkbox/checkbox.js.map +1 -1
  278. package/dist/esm/checkbox/checkbox.options.js +0 -8
  279. package/dist/esm/checkbox/checkbox.options.js.map +1 -1
  280. package/dist/esm/checkbox/checkbox.styles.js +145 -123
  281. package/dist/esm/checkbox/checkbox.styles.js.map +1 -1
  282. package/dist/esm/checkbox/checkbox.template.js +34 -17
  283. package/dist/esm/checkbox/checkbox.template.js.map +1 -1
  284. package/dist/esm/checkbox/index.js +3 -3
  285. package/dist/esm/checkbox/index.js.map +1 -1
  286. package/dist/esm/compound-button/compound-button.bench.js +15 -0
  287. package/dist/esm/compound-button/compound-button.bench.js.map +1 -0
  288. package/dist/esm/compound-button/compound-button.definition.js +0 -6
  289. package/dist/esm/compound-button/compound-button.definition.js.map +1 -1
  290. package/dist/esm/compound-button/compound-button.options.js.map +1 -1
  291. package/dist/esm/compound-button/compound-button.styles.js +16 -17
  292. package/dist/esm/compound-button/compound-button.styles.js.map +1 -1
  293. package/dist/esm/compound-button/compound-button.template.js +4 -40
  294. package/dist/esm/compound-button/compound-button.template.js.map +1 -1
  295. package/dist/esm/compound-button/index.js +2 -2
  296. package/dist/esm/compound-button/index.js.map +1 -1
  297. package/dist/esm/counter-badge/counter-badge.bench.js +11 -0
  298. package/dist/esm/counter-badge/counter-badge.bench.js.map +1 -0
  299. package/dist/esm/counter-badge/counter-badge.definition.js +0 -4
  300. package/dist/esm/counter-badge/counter-badge.definition.js.map +1 -1
  301. package/dist/esm/counter-badge/counter-badge.js +69 -7
  302. package/dist/esm/counter-badge/counter-badge.js.map +1 -1
  303. package/dist/esm/counter-badge/counter-badge.styles.js +12 -6
  304. package/dist/esm/counter-badge/counter-badge.styles.js.map +1 -1
  305. package/dist/esm/counter-badge/index.js +2 -2
  306. package/dist/esm/counter-badge/index.js.map +1 -1
  307. package/dist/esm/dialog/define.js +4 -0
  308. package/dist/esm/dialog/define.js.map +1 -0
  309. package/dist/esm/dialog/dialog.bench.js +11 -0
  310. package/dist/esm/dialog/dialog.bench.js.map +1 -0
  311. package/dist/esm/dialog/dialog.definition.js +17 -0
  312. package/dist/esm/dialog/dialog.definition.js.map +1 -0
  313. package/dist/esm/dialog/dialog.js +91 -0
  314. package/dist/esm/dialog/dialog.js.map +1 -0
  315. package/dist/esm/dialog/dialog.options.js +10 -0
  316. package/dist/esm/dialog/dialog.options.js.map +1 -0
  317. package/dist/esm/dialog/dialog.styles.js +86 -0
  318. package/dist/esm/dialog/dialog.styles.js.map +1 -0
  319. package/dist/esm/dialog/dialog.template.js +24 -0
  320. package/dist/esm/dialog/dialog.template.js.map +1 -0
  321. package/dist/esm/dialog/index.js +6 -0
  322. package/dist/esm/dialog/index.js.map +1 -0
  323. package/dist/esm/dialog-body/define.js +4 -0
  324. package/dist/esm/dialog-body/define.js.map +1 -0
  325. package/dist/esm/dialog-body/dialog-body.bench.js +11 -0
  326. package/dist/esm/dialog-body/dialog-body.bench.js.map +1 -0
  327. package/dist/esm/dialog-body/dialog-body.definition.js +17 -0
  328. package/dist/esm/dialog-body/dialog-body.definition.js.map +1 -0
  329. package/dist/esm/dialog-body/dialog-body.js +22 -0
  330. package/dist/esm/dialog-body/dialog-body.js.map +1 -0
  331. package/dist/esm/dialog-body/dialog-body.styles.js +79 -0
  332. package/dist/esm/dialog-body/dialog-body.styles.js.map +1 -0
  333. package/dist/esm/dialog-body/dialog-body.template.js +42 -0
  334. package/dist/esm/dialog-body/dialog-body.template.js.map +1 -0
  335. package/dist/esm/dialog-body/index.js +5 -0
  336. package/dist/esm/dialog-body/index.js.map +1 -0
  337. package/dist/esm/divider/divider.bench.js +10 -0
  338. package/dist/esm/divider/divider.bench.js.map +1 -0
  339. package/dist/esm/divider/divider.js +56 -11
  340. package/dist/esm/divider/divider.js.map +1 -1
  341. package/dist/esm/divider/divider.options.js +14 -5
  342. package/dist/esm/divider/divider.options.js.map +1 -1
  343. package/dist/esm/divider/divider.styles.js +1 -1
  344. package/dist/esm/divider/divider.styles.js.map +1 -1
  345. package/dist/esm/divider/divider.template.js +4 -1
  346. package/dist/esm/divider/divider.template.js.map +1 -1
  347. package/dist/esm/divider/index.js +2 -2
  348. package/dist/esm/divider/index.js.map +1 -1
  349. package/dist/esm/field/define.js +4 -0
  350. package/dist/esm/field/define.js.map +1 -0
  351. package/dist/esm/field/field.bench.js +10 -0
  352. package/dist/esm/field/field.bench.js.map +1 -0
  353. package/dist/esm/field/field.definition.js +20 -0
  354. package/dist/esm/field/field.definition.js.map +1 -0
  355. package/dist/esm/field/field.js +139 -0
  356. package/dist/esm/field/field.js.map +1 -0
  357. package/dist/esm/field/field.options.js +27 -0
  358. package/dist/esm/field/field.options.js.map +1 -0
  359. package/dist/esm/field/field.styles.js +186 -0
  360. package/dist/esm/field/field.styles.js.map +1 -0
  361. package/dist/esm/field/field.template.js +26 -0
  362. package/dist/esm/field/field.template.js.map +1 -0
  363. package/dist/esm/field/index.js +6 -0
  364. package/dist/esm/field/index.js.map +1 -0
  365. package/dist/esm/form-associated/form-associated.js +458 -0
  366. package/dist/esm/form-associated/form-associated.js.map +1 -0
  367. package/dist/esm/image/image.bench.js +14 -0
  368. package/dist/esm/image/image.bench.js.map +1 -0
  369. package/dist/esm/image/image.js +1 -6
  370. package/dist/esm/image/image.js.map +1 -1
  371. package/dist/esm/image/index.js +2 -2
  372. package/dist/esm/image/index.js.map +1 -1
  373. package/dist/esm/index-rollup.js +32 -1
  374. package/dist/esm/index-rollup.js.map +1 -1
  375. package/dist/esm/index.js +39 -30
  376. package/dist/esm/index.js.map +1 -1
  377. package/dist/esm/label/index.js +2 -1
  378. package/dist/esm/label/index.js.map +1 -1
  379. package/dist/esm/label/label.bench.js +11 -0
  380. package/dist/esm/label/label.bench.js.map +1 -0
  381. package/dist/esm/label/label.js +1 -6
  382. package/dist/esm/label/label.js.map +1 -1
  383. package/dist/esm/label/label.styles.js +13 -6
  384. package/dist/esm/label/label.styles.js.map +1 -1
  385. package/dist/esm/link/define.js +4 -0
  386. package/dist/esm/link/define.js.map +1 -0
  387. package/dist/esm/link/index.js +5 -0
  388. package/dist/esm/link/index.js.map +1 -0
  389. package/dist/esm/link/link.bench.js +11 -0
  390. package/dist/esm/link/link.bench.js.map +1 -0
  391. package/dist/esm/link/link.definition.js +15 -0
  392. package/dist/esm/link/link.definition.js.map +1 -0
  393. package/dist/esm/link/link.js +36 -0
  394. package/dist/esm/link/link.js.map +1 -0
  395. package/dist/esm/link/link.options.js +21 -0
  396. package/dist/esm/link/link.options.js.map +1 -0
  397. package/dist/esm/link/link.styles.js +73 -0
  398. package/dist/esm/link/link.styles.js.map +1 -0
  399. package/dist/esm/link/link.template.js +22 -0
  400. package/dist/esm/link/link.template.js.map +1 -0
  401. package/dist/esm/menu/index.js +1 -1
  402. package/dist/esm/menu/index.js.map +1 -1
  403. package/dist/esm/menu/menu.bench.js +31 -0
  404. package/dist/esm/menu/menu.bench.js.map +1 -0
  405. package/dist/esm/menu/menu.js +26 -29
  406. package/dist/esm/menu/menu.js.map +1 -1
  407. package/dist/esm/menu-button/index.js +3 -3
  408. package/dist/esm/menu-button/index.js.map +1 -1
  409. package/dist/esm/menu-button/menu-button.bench.js +11 -0
  410. package/dist/esm/menu-button/menu-button.bench.js.map +1 -0
  411. package/dist/esm/menu-button/menu-button.definition.js +0 -6
  412. package/dist/esm/menu-button/menu-button.definition.js.map +1 -1
  413. package/dist/esm/menu-button/menu-button.options.js.map +1 -1
  414. package/dist/esm/menu-button/menu-button.template.js +6 -2
  415. package/dist/esm/menu-button/menu-button.template.js.map +1 -1
  416. package/dist/esm/menu-item/index.js +4 -3
  417. package/dist/esm/menu-item/index.js.map +1 -1
  418. package/dist/esm/menu-item/menu-item.bench.js +11 -0
  419. package/dist/esm/menu-item/menu-item.bench.js.map +1 -0
  420. package/dist/esm/menu-item/menu-item.definition.js +0 -4
  421. package/dist/esm/menu-item/menu-item.definition.js.map +1 -1
  422. package/dist/esm/menu-item/menu-item.js +265 -4
  423. package/dist/esm/menu-item/menu-item.js.map +1 -1
  424. package/dist/esm/menu-item/menu-item.options.js +27 -0
  425. package/dist/esm/menu-item/menu-item.options.js.map +1 -0
  426. package/dist/esm/menu-item/menu-item.styles.js +1 -1
  427. package/dist/esm/menu-item/menu-item.styles.js.map +1 -1
  428. package/dist/esm/menu-item/menu-item.template.js +57 -2
  429. package/dist/esm/menu-item/menu-item.template.js.map +1 -1
  430. package/dist/esm/menu-list/index.js +1 -1
  431. package/dist/esm/menu-list/index.js.map +1 -1
  432. package/dist/esm/menu-list/menu-list.bench.js +21 -0
  433. package/dist/esm/menu-list/menu-list.bench.js.map +1 -0
  434. package/dist/esm/menu-list/menu-list.definition.js +0 -4
  435. package/dist/esm/menu-list/menu-list.definition.js.map +1 -1
  436. package/dist/esm/menu-list/menu-list.js +262 -11
  437. package/dist/esm/menu-list/menu-list.js.map +1 -1
  438. package/dist/esm/menu-list/menu-list.styles.js +1 -1
  439. package/dist/esm/menu-list/menu-list.styles.js.map +1 -1
  440. package/dist/esm/menu-list/menu-list.template.js +13 -1
  441. package/dist/esm/menu-list/menu-list.template.js.map +1 -1
  442. package/dist/esm/patterns/aria-globals.js +72 -0
  443. package/dist/esm/patterns/aria-globals.js.map +1 -0
  444. package/dist/esm/patterns/index.js +3 -0
  445. package/dist/esm/patterns/index.js.map +1 -0
  446. package/dist/esm/patterns/start-end.js +29 -0
  447. package/dist/esm/patterns/start-end.js.map +1 -0
  448. package/dist/esm/progress-bar/index.js +2 -2
  449. package/dist/esm/progress-bar/index.js.map +1 -1
  450. package/dist/esm/progress-bar/progress-bar.bench.js +10 -0
  451. package/dist/esm/progress-bar/progress-bar.bench.js.map +1 -0
  452. package/dist/esm/progress-bar/progress-bar.js +66 -13
  453. package/dist/esm/progress-bar/progress-bar.js.map +1 -1
  454. package/dist/esm/progress-bar/progress-bar.options.js.map +1 -1
  455. package/dist/esm/progress-bar/progress-bar.styles.js +49 -128
  456. package/dist/esm/progress-bar/progress-bar.styles.js.map +1 -1
  457. package/dist/esm/progress-bar/progress-bar.template.js +11 -5
  458. package/dist/esm/progress-bar/progress-bar.template.js.map +1 -1
  459. package/dist/esm/radio/index.js +1 -1
  460. package/dist/esm/radio/index.js.map +1 -1
  461. package/dist/esm/radio/radio.bench.js +11 -0
  462. package/dist/esm/radio/radio.bench.js.map +1 -0
  463. package/dist/esm/radio/radio.form-associated.js +14 -0
  464. package/dist/esm/radio/radio.form-associated.js.map +1 -0
  465. package/dist/esm/radio/radio.js +91 -3
  466. package/dist/esm/radio/radio.js.map +1 -1
  467. package/dist/esm/radio/radio.styles.js +1 -1
  468. package/dist/esm/radio/radio.styles.js.map +1 -1
  469. package/dist/esm/radio/radio.template.js +28 -2
  470. package/dist/esm/radio/radio.template.js.map +1 -1
  471. package/dist/esm/radio-group/index.js +2 -2
  472. package/dist/esm/radio-group/index.js.map +1 -1
  473. package/dist/esm/radio-group/radio-group.bench.js +21 -0
  474. package/dist/esm/radio-group/radio-group.bench.js.map +1 -0
  475. package/dist/esm/radio-group/radio-group.js +347 -9
  476. package/dist/esm/radio-group/radio-group.js.map +1 -1
  477. package/dist/esm/radio-group/radio-group.options.js +7 -0
  478. package/dist/esm/radio-group/radio-group.options.js.map +1 -0
  479. package/dist/esm/radio-group/radio-group.styles.js +1 -1
  480. package/dist/esm/radio-group/radio-group.styles.js.map +1 -1
  481. package/dist/esm/radio-group/radio-group.template.js +30 -1
  482. package/dist/esm/radio-group/radio-group.template.js.map +1 -1
  483. package/dist/esm/slider/index.js +2 -2
  484. package/dist/esm/slider/index.js.map +1 -1
  485. package/dist/esm/slider/slider-utilities.js +12 -0
  486. package/dist/esm/slider/slider-utilities.js.map +1 -0
  487. package/dist/esm/slider/slider.bench.js +10 -0
  488. package/dist/esm/slider/slider.bench.js.map +1 -0
  489. package/dist/esm/slider/slider.form-associated.js +14 -0
  490. package/dist/esm/slider/slider.form-associated.js.map +1 -0
  491. package/dist/esm/slider/slider.js +433 -22
  492. package/dist/esm/slider/slider.js.map +1 -1
  493. package/dist/esm/slider/slider.options.js +11 -1
  494. package/dist/esm/slider/slider.options.js.map +1 -1
  495. package/dist/esm/slider/slider.styles.js +1 -1
  496. package/dist/esm/slider/slider.styles.js.map +1 -1
  497. package/dist/esm/slider/slider.template.js +39 -2
  498. package/dist/esm/slider/slider.template.js.map +1 -1
  499. package/dist/esm/spinner/index.js +2 -2
  500. package/dist/esm/spinner/index.js.map +1 -1
  501. package/dist/esm/spinner/spinner.bench.js +10 -0
  502. package/dist/esm/spinner/spinner.bench.js.map +1 -0
  503. package/dist/esm/spinner/spinner.definition.js +0 -4
  504. package/dist/esm/spinner/spinner.definition.js.map +1 -1
  505. package/dist/esm/spinner/spinner.js +13 -9
  506. package/dist/esm/spinner/spinner.js.map +1 -1
  507. package/dist/esm/spinner/spinner.styles.js +3 -17
  508. package/dist/esm/spinner/spinner.styles.js.map +1 -1
  509. package/dist/esm/spinner/spinner.template.js +8 -21
  510. package/dist/esm/spinner/spinner.template.js.map +1 -1
  511. package/dist/esm/styles/partials/badge.partials.js +44 -43
  512. package/dist/esm/styles/partials/badge.partials.js.map +1 -1
  513. package/dist/esm/styles/partials/index.js +1 -0
  514. package/dist/esm/styles/partials/index.js.map +1 -1
  515. package/dist/esm/styles/partials/typography.partials.js +105 -0
  516. package/dist/esm/styles/partials/typography.partials.js.map +1 -0
  517. package/dist/esm/styles/states/index.js +112 -0
  518. package/dist/esm/styles/states/index.js.map +1 -0
  519. package/dist/esm/switch/index.js +2 -2
  520. package/dist/esm/switch/index.js.map +1 -1
  521. package/dist/esm/switch/switch.bench.js +11 -0
  522. package/dist/esm/switch/switch.bench.js.map +1 -0
  523. package/dist/esm/switch/switch.form-associated.js +14 -0
  524. package/dist/esm/switch/switch.form-associated.js.map +1 -0
  525. package/dist/esm/switch/switch.js +2 -12
  526. package/dist/esm/switch/switch.js.map +1 -1
  527. package/dist/esm/switch/switch.styles.js +38 -58
  528. package/dist/esm/switch/switch.styles.js.map +1 -1
  529. package/dist/esm/switch/switch.template.js +15 -1
  530. package/dist/esm/switch/switch.template.js.map +1 -1
  531. package/dist/esm/tab/index.js +3 -3
  532. package/dist/esm/tab/index.js.map +1 -1
  533. package/dist/esm/tab/tab.bench.js +11 -0
  534. package/dist/esm/tab/tab.bench.js.map +1 -0
  535. package/dist/esm/tab/tab.js +9 -3
  536. package/dist/esm/tab/tab.js.map +1 -1
  537. package/dist/esm/tab/tab.styles.js +1 -1
  538. package/dist/esm/tab/tab.styles.js.map +1 -1
  539. package/dist/esm/tab/tab.template.js +1 -1
  540. package/dist/esm/tab/tab.template.js.map +1 -1
  541. package/dist/esm/tab-panel/index.js +1 -1
  542. package/dist/esm/tab-panel/index.js.map +1 -1
  543. package/dist/esm/tab-panel/tab-panel.bench.js +13 -0
  544. package/dist/esm/tab-panel/tab-panel.bench.js.map +1 -0
  545. package/dist/esm/tab-panel/tab-panel.js +2 -2
  546. package/dist/esm/tab-panel/tab-panel.js.map +1 -1
  547. package/dist/esm/tab-panel/tab-panel.styles.js +1 -1
  548. package/dist/esm/tab-panel/tab-panel.styles.js.map +1 -1
  549. package/dist/esm/tab-panel/tab-panel.template.js +8 -1
  550. package/dist/esm/tab-panel/tab-panel.template.js.map +1 -1
  551. package/dist/esm/tabs/index.js +4 -4
  552. package/dist/esm/tabs/index.js.map +1 -1
  553. package/dist/esm/tabs/tabs.bench.js +32 -0
  554. package/dist/esm/tabs/tabs.bench.js.map +1 -0
  555. package/dist/esm/tabs/tabs.js +292 -20
  556. package/dist/esm/tabs/tabs.js.map +1 -1
  557. package/dist/esm/tabs/tabs.options.js +6 -2
  558. package/dist/esm/tabs/tabs.options.js.map +1 -1
  559. package/dist/esm/tabs/tabs.styles.js +1 -1
  560. package/dist/esm/tabs/tabs.styles.js.map +1 -1
  561. package/dist/esm/tabs/tabs.template.js +14 -1
  562. package/dist/esm/tabs/tabs.template.js.map +1 -1
  563. package/dist/esm/text/index.js +2 -2
  564. package/dist/esm/text/index.js.map +1 -1
  565. package/dist/esm/text/text.bench.js +13 -0
  566. package/dist/esm/text/text.bench.js.map +1 -0
  567. package/dist/esm/text/text.js +1 -6
  568. package/dist/esm/text/text.js.map +1 -1
  569. package/dist/esm/text/text.styles.js +49 -25
  570. package/dist/esm/text/text.styles.js.map +1 -1
  571. package/dist/esm/text-input/index.js +4 -5
  572. package/dist/esm/text-input/index.js.map +1 -1
  573. package/dist/esm/text-input/text-input.bench.js +10 -0
  574. package/dist/esm/text-input/text-input.bench.js.map +1 -0
  575. package/dist/esm/text-input/text-input.definition.js +5 -3
  576. package/dist/esm/text-input/text-input.definition.js.map +1 -1
  577. package/dist/esm/text-input/text-input.js +398 -11
  578. package/dist/esm/text-input/text-input.js.map +1 -1
  579. package/dist/esm/text-input/text-input.options.js +35 -2
  580. package/dist/esm/text-input/text-input.options.js.map +1 -1
  581. package/dist/esm/text-input/text-input.styles.js +22 -12
  582. package/dist/esm/text-input/text-input.styles.js.map +1 -1
  583. package/dist/esm/text-input/text-input.template.js +55 -2
  584. package/dist/esm/text-input/text-input.template.js.map +1 -1
  585. package/dist/esm/theme/design-tokens.js +2181 -386
  586. package/dist/esm/theme/design-tokens.js.map +1 -1
  587. package/dist/esm/theme/set-theme.js +26 -3
  588. package/dist/esm/theme/set-theme.js.map +1 -1
  589. package/dist/esm/toggle-button/index.js +4 -4
  590. package/dist/esm/toggle-button/index.js.map +1 -1
  591. package/dist/esm/toggle-button/toggle-button.bench.js +11 -0
  592. package/dist/esm/toggle-button/toggle-button.bench.js.map +1 -0
  593. package/dist/esm/toggle-button/toggle-button.definition.js +0 -5
  594. package/dist/esm/toggle-button/toggle-button.definition.js.map +1 -1
  595. package/dist/esm/toggle-button/toggle-button.js +44 -91
  596. package/dist/esm/toggle-button/toggle-button.js.map +1 -1
  597. package/dist/esm/toggle-button/toggle-button.options.js.map +1 -1
  598. package/dist/esm/toggle-button/toggle-button.styles.js +32 -26
  599. package/dist/esm/toggle-button/toggle-button.styles.js.map +1 -1
  600. package/dist/esm/toggle-button/toggle-button.template.js +1 -1
  601. package/dist/esm/toggle-button/toggle-button.template.js.map +1 -1
  602. package/dist/esm/utils/behaviors/match-media-stylesheet-behavior.js +142 -0
  603. package/dist/esm/utils/behaviors/match-media-stylesheet-behavior.js.map +1 -0
  604. package/dist/esm/utils/benchmark-dependencies/tokens.js +2 -0
  605. package/dist/esm/utils/benchmark-dependencies/tokens.js.map +1 -0
  606. package/dist/esm/utils/benchmark-wrapper.js +18 -0
  607. package/dist/esm/utils/benchmark-wrapper.js.map +1 -0
  608. package/dist/esm/utils/direction.js +15 -0
  609. package/dist/esm/utils/direction.js.map +1 -0
  610. package/dist/esm/utils/display.js +15 -0
  611. package/dist/esm/utils/display.js.map +1 -0
  612. package/dist/esm/utils/element-internals.js +32 -0
  613. package/dist/esm/utils/element-internals.js.map +1 -0
  614. package/dist/esm/utils/get-initials.js.map +1 -1
  615. package/dist/esm/utils/index.js +7 -0
  616. package/dist/esm/utils/index.js.map +1 -0
  617. package/dist/esm/utils/template-helpers.js +19 -0
  618. package/dist/esm/utils/template-helpers.js.map +1 -0
  619. package/dist/esm/utils/typings.js +3 -0
  620. package/dist/esm/utils/typings.js.map +1 -0
  621. package/dist/esm/utils/whitespace-filter.js +13 -0
  622. package/dist/esm/utils/whitespace-filter.js.map +1 -0
  623. package/dist/web-components.d.ts +6312 -1611
  624. package/dist/web-components.js +5593 -6543
  625. package/dist/web-components.min.js +398 -251
  626. package/package.json +41 -13
  627. package/dist/fluent-web-components.api.json +0 -19686
  628. package/dist/storybook/108.78b731e00015540915a8.manager.bundle.js +0 -1
  629. package/dist/storybook/108.b31ec3a1.iframe.bundle.js +0 -1
  630. package/dist/storybook/316.bc4aabd3.iframe.bundle.js +0 -2
  631. package/dist/storybook/316.bc4aabd3.iframe.bundle.js.LICENSE.txt +0 -17
  632. package/dist/storybook/401.7edec720.iframe.bundle.js +0 -2
  633. package/dist/storybook/401.7edec720.iframe.bundle.js.LICENSE.txt +0 -12
  634. package/dist/storybook/401.c9bdfaf0dda8b194127f.manager.bundle.js +0 -2
  635. package/dist/storybook/401.c9bdfaf0dda8b194127f.manager.bundle.js.LICENSE.txt +0 -12
  636. package/dist/storybook/491.77b24750.iframe.bundle.js +0 -1
  637. package/dist/storybook/591.f5bf0d78d2f203de19f5.manager.bundle.js +0 -2
  638. package/dist/storybook/591.f5bf0d78d2f203de19f5.manager.bundle.js.LICENSE.txt +0 -94
  639. package/dist/storybook/677.939f187f.iframe.bundle.js +0 -462
  640. package/dist/storybook/677.939f187f.iframe.bundle.js.LICENSE.txt +0 -46
  641. package/dist/storybook/677.939f187f.iframe.bundle.js.map +0 -1
  642. package/dist/storybook/709.22096ad4.iframe.bundle.js +0 -2
  643. package/dist/storybook/709.22096ad4.iframe.bundle.js.LICENSE.txt +0 -8
  644. package/dist/storybook/709.b131e33993a6b94d7ad8.manager.bundle.js +0 -2
  645. package/dist/storybook/709.b131e33993a6b94d7ad8.manager.bundle.js.LICENSE.txt +0 -8
  646. package/dist/storybook/721.46fa9f53.iframe.bundle.js +0 -2
  647. package/dist/storybook/721.46fa9f53.iframe.bundle.js.LICENSE.txt +0 -31
  648. package/dist/storybook/721.c225c101a0a55a8f98eb.manager.bundle.js +0 -2
  649. package/dist/storybook/721.c225c101a0a55a8f98eb.manager.bundle.js.LICENSE.txt +0 -31
  650. package/dist/storybook/858.da40ed98.iframe.bundle.js +0 -1
  651. package/dist/storybook/858.e08e25a6901d2e21e9d8.manager.bundle.js +0 -1
  652. package/dist/storybook/950.674e7934b4a26a022608.manager.bundle.js +0 -1
  653. package/dist/storybook/954.630c5748.iframe.bundle.js +0 -1
  654. package/dist/storybook/954.7f985e2fdf9f15a7748b.manager.bundle.js +0 -1
  655. package/dist/storybook/SegoeUI-VF.ttf +0 -0
  656. package/dist/storybook/favicon.ico +0 -0
  657. package/dist/storybook/favicon.png +0 -0
  658. package/dist/storybook/iframe.html +0 -364
  659. package/dist/storybook/index.html +0 -165
  660. package/dist/storybook/main.5d7b916dc1e37293b1d8.manager.bundle.js +0 -1
  661. package/dist/storybook/main.b782e9fb.iframe.bundle.js +0 -2
  662. package/dist/storybook/main.b782e9fb.iframe.bundle.js.LICENSE.txt +0 -1
  663. package/dist/storybook/project.json +0 -1
  664. package/dist/storybook/runtime~main.5d918fe7.iframe.bundle.js +0 -1
  665. package/dist/storybook/runtime~main.dbf00b470fe610082919.manager.bundle.js +0 -1
  666. package/dist/storybook/shell.css +0 -83
  667. package/dist/storybook/theme-switch.ts +0 -13
  668. package/docs/api-report.md +0 -2427
  669. package/playwright.config.ts +0 -25
@@ -0,0 +1,186 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { borderRadiusMedium, colorNeutralForeground1, colorStrokeFocus2, fontFamilyBase, fontSizeBase200, fontSizeBase300, fontSizeBase400, fontWeightRegular, fontWeightSemibold, lineHeightBase200, lineHeightBase300, lineHeightBase400, spacingHorizontalM, spacingVerticalS, spacingVerticalXXS, strokeWidthThick, } from '../theme/design-tokens.js';
3
+ import { display } from '../utils/display.js';
4
+ import { ValidationFlags } from './field.options.js';
5
+ /**
6
+ * Selector for the `disabled` state.
7
+ * @public
8
+ */
9
+ const disabledState = css.partial `:is([state--disabled], :state(disabled))`;
10
+ /**
11
+ * Selector for the `focus-visible` state.
12
+ * @public
13
+ */
14
+ const focusVisibleState = css.partial `:is([state--focus-visible], :state(focus-visible))`;
15
+ /**
16
+ * Selector for the `bad-input` state.
17
+ * @public
18
+ */
19
+ const badInputState = css.partial `:is([state--${ValidationFlags.badInput}], :state(${ValidationFlags.badInput}))`;
20
+ /**
21
+ * Selector for the `custom-error` state.
22
+ * @public
23
+ */
24
+ const customErrorState = css.partial `:is([state--${ValidationFlags.customError}], :state(${ValidationFlags.customError}))`;
25
+ /**
26
+ * Selector for the `pattern-mismatch` state.
27
+ * @public
28
+ */
29
+ const patternMismatchState = css.partial `:is([state--${ValidationFlags.patternMismatch}], :state(${ValidationFlags.patternMismatch}))`;
30
+ /**
31
+ * Selector for the `range-overflow` state.
32
+ * @public
33
+ */
34
+ const rangeOverflowState = css.partial `:is([state--${ValidationFlags.rangeOverflow}], :state(${ValidationFlags.rangeOverflow}))`;
35
+ /**
36
+ * Selector for the `range-underflow` state.
37
+ * @public
38
+ */
39
+ const rangeUnderflowState = css.partial `:is([state--${ValidationFlags.rangeUnderflow}], :state(${ValidationFlags.rangeUnderflow}))`;
40
+ /**
41
+ * Selector for the `step-mismatch` state.
42
+ * @public
43
+ */
44
+ const stepMismatchState = css.partial `:is([state--${ValidationFlags.stepMismatch}], :state(${ValidationFlags.stepMismatch}))`;
45
+ /**
46
+ * Selector for the `too-long` state.
47
+ * @public
48
+ */
49
+ const tooLongState = css.partial `:is([state--${ValidationFlags.tooLong}], :state(${ValidationFlags.tooLong}))`;
50
+ /**
51
+ * Selector for the `too-short` state.
52
+ * @public
53
+ */
54
+ const tooShortState = css.partial `:is([state--${ValidationFlags.tooShort}], :state(${ValidationFlags.tooShort}))`;
55
+ /**
56
+ * Selector for the `type-mismatch` state.
57
+ * @public
58
+ */
59
+ const typeMismatchState = css.partial `:is([state--${ValidationFlags.typeMismatch}], :state(${ValidationFlags.typeMismatch}))`;
60
+ /**
61
+ * Selector for the `valid` state.
62
+ * @public
63
+ */
64
+ const validState = css.partial `:is([state-${ValidationFlags.valid}], :state(${ValidationFlags.valid}))`;
65
+ /**
66
+ * Selector for the `value-missing` state.
67
+ * @public
68
+ */
69
+ const valueMissingState = css.partial `:is([state--${ValidationFlags.valueMissing}], :state(${ValidationFlags.valueMissing}))`;
70
+ /**
71
+ * The styles for the {@link Field} component.
72
+ *
73
+ * @public
74
+ */
75
+ export const styles = css `
76
+ ${display('inline-grid')}
77
+
78
+ :host {
79
+ align-items: center;
80
+ cursor: pointer;
81
+ gap: 0 ${spacingHorizontalM};
82
+ justify-items: start;
83
+ padding: ${spacingVerticalS};
84
+ }
85
+
86
+ :has([slot='message']) {
87
+ color: ${colorNeutralForeground1};
88
+ row-gap: ${spacingVerticalS};
89
+ }
90
+
91
+ :not(::slotted([slot='label'])) {
92
+ gap: 0;
93
+ }
94
+
95
+ :host([label-position='before']) {
96
+ grid-template-areas: 'label input' 'label message';
97
+ }
98
+
99
+ :host([label-position='after']) {
100
+ gap: 0;
101
+ grid-template-areas: 'input label' 'message message';
102
+ grid-template-columns: auto 1fr;
103
+ }
104
+
105
+ :host([label-position='after']) ::slotted([slot='input']) {
106
+ margin-inline-end: ${spacingHorizontalM};
107
+ }
108
+
109
+ :host([label-position='above']) {
110
+ grid-template-areas: 'label' 'input' 'message';
111
+ row-gap: ${spacingVerticalXXS};
112
+ }
113
+
114
+ :host([label-position='below']) {
115
+ grid-template-areas: 'input' 'label' 'message';
116
+ }
117
+
118
+ ::slotted([slot='label']) {
119
+ cursor: pointer;
120
+ grid-area: label;
121
+ }
122
+
123
+ ::slotted([slot='input']) {
124
+ grid-area: input;
125
+ }
126
+
127
+ ::slotted([slot='message']) {
128
+ margin-block-start: ${spacingVerticalXXS};
129
+ grid-area: message;
130
+ }
131
+
132
+ :host(${focusVisibleState}:focus-within) {
133
+ border-radius: ${borderRadiusMedium};
134
+ outline: ${strokeWidthThick} solid ${colorStrokeFocus2};
135
+ }
136
+
137
+ ::slotted(label) {
138
+ display: inline-flex;
139
+ color: ${colorNeutralForeground1};
140
+ cursor: pointer;
141
+ font-family: ${fontFamilyBase};
142
+ font-size: ${fontSizeBase300};
143
+ font-weight: ${fontWeightRegular};
144
+ line-height: ${lineHeightBase300};
145
+ user-select: none;
146
+ }
147
+
148
+ :host([size='small']) ::slotted(label) {
149
+ font-size: ${fontSizeBase200};
150
+ line-height: ${lineHeightBase200};
151
+ }
152
+
153
+ :host([size='large']) ::slotted(label) {
154
+ font-size: ${fontSizeBase400};
155
+ line-height: ${lineHeightBase400};
156
+ }
157
+
158
+ :host([size='large']) ::slotted(label),
159
+ :host([weight='semibold']) ::slotted(label) {
160
+ font-weight: ${fontWeightSemibold};
161
+ }
162
+
163
+ :host(${disabledState}) ::slotted(label) {
164
+ color: ${colorNeutralForeground1};
165
+ cursor: default;
166
+ }
167
+
168
+ ::slotted([flag]) {
169
+ display: none;
170
+ }
171
+
172
+ :host(${badInputState}) ::slotted([flag='${ValidationFlags.badInput}']),
173
+ :host(${customErrorState}) ::slotted([flag='${ValidationFlags.customError}']),
174
+ :host(${patternMismatchState}) ::slotted([flag='${ValidationFlags.patternMismatch}']),
175
+ :host(${rangeOverflowState}) ::slotted([flag='${ValidationFlags.rangeOverflow}']),
176
+ :host(${rangeUnderflowState}) ::slotted([flag='${ValidationFlags.rangeUnderflow}']),
177
+ :host(${stepMismatchState}) ::slotted([flag='${ValidationFlags.stepMismatch}']),
178
+ :host(${tooLongState}) ::slotted([flag='${ValidationFlags.tooLong}']),
179
+ :host(${tooShortState}) ::slotted([flag='${ValidationFlags.tooShort}']),
180
+ :host(${typeMismatchState}) ::slotted([flag='${ValidationFlags.typeMismatch}']),
181
+ :host(${valueMissingState}) ::slotted([flag='${ValidationFlags.valueMissing}']),
182
+ :host(${validState}) ::slotted([flag='${ValidationFlags.valid}']) {
183
+ display: block;
184
+ }
185
+ `;
186
+ //# sourceMappingURL=field.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.styles.js","sourceRoot":"","sources":["../../../src/field/field.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;GAGG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAA,0CAA0C,CAAC;AAE5E;;;GAGG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAA,oDAAoD,CAAC;AAE1F;;;GAGG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,QAAQ,aAAa,eAAe,CAAC,QAAQ,IAAI,CAAC;AAElH;;;GAGG;AACH,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,WAAW,aAAa,eAAe,CAAC,WAAW,IAAI,CAAC;AAE3H;;;GAGG;AACH,MAAM,oBAAoB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,eAAe,aAAa,eAAe,CAAC,eAAe,IAAI,CAAC;AAEvI;;;GAGG;AACH,MAAM,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,aAAa,aAAa,eAAe,CAAC,aAAa,IAAI,CAAC;AAEjI;;;GAGG;AACH,MAAM,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,cAAc,aAAa,eAAe,CAAC,cAAc,IAAI,CAAC;AAEpI;;;GAGG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,YAAY,aAAa,eAAe,CAAC,YAAY,IAAI,CAAC;AAE9H;;;GAGG;AACH,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,OAAO,aAAa,eAAe,CAAC,OAAO,IAAI,CAAC;AAE/G;;;GAGG;AACH,MAAM,aAAa,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,QAAQ,aAAa,eAAe,CAAC,QAAQ,IAAI,CAAC;AAElH;;;GAGG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,YAAY,aAAa,eAAe,CAAC,YAAY,IAAI,CAAC;AAE9H;;;GAGG;AACH,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAA,cAAc,eAAe,CAAC,KAAK,aAAa,eAAe,CAAC,KAAK,IAAI,CAAC;AAExG;;;GAGG;AACH,MAAM,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAA,eAAe,eAAe,CAAC,YAAY,aAAa,eAAe,CAAC,YAAY,IAAI,CAAC;AAE9H;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;IACrB,OAAO,CAAC,aAAa,CAAC;;;;;aAKb,kBAAkB;;eAEhB,gBAAgB;;;;aAIlB,uBAAuB;eACrB,gBAAgB;;;;;;;;;;;;;;;;;;yBAkBN,kBAAkB;;;;;eAK5B,kBAAkB;;;;;;;;;;;;;;;;;0BAiBP,kBAAkB;;;;UAIlC,iBAAiB;qBACN,kBAAkB;eACxB,gBAAgB,UAAU,iBAAiB;;;;;aAK7C,uBAAuB;;mBAEjB,cAAc;iBAChB,eAAe;mBACb,iBAAiB;mBACjB,iBAAiB;;;;;iBAKnB,eAAe;mBACb,iBAAiB;;;;iBAInB,eAAe;mBACb,iBAAiB;;;;;mBAKjB,kBAAkB;;;UAG3B,aAAa;aACV,uBAAuB;;;;;;;;UAQ1B,aAAa,sBAAsB,eAAe,CAAC,QAAQ;UAC3D,gBAAgB,sBAAsB,eAAe,CAAC,WAAW;UACjE,oBAAoB,sBAAsB,eAAe,CAAC,eAAe;UACzE,kBAAkB,sBAAsB,eAAe,CAAC,aAAa;UACrE,mBAAmB,sBAAsB,eAAe,CAAC,cAAc;UACvE,iBAAiB,sBAAsB,eAAe,CAAC,YAAY;UACnE,YAAY,sBAAsB,eAAe,CAAC,OAAO;UACzD,aAAa,sBAAsB,eAAe,CAAC,QAAQ;UAC3D,iBAAiB,sBAAsB,eAAe,CAAC,YAAY;UACnE,iBAAiB,sBAAsB,eAAe,CAAC,YAAY;UACnE,UAAU,sBAAsB,eAAe,CAAC,KAAK;;;CAG9D,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { children, elements, html, slotted } from '@microsoft/fast-element';
2
+ /**
3
+ * Template for the Field component
4
+ * @public
5
+ */
6
+ export const template = html `
7
+ <template
8
+ @click="${(x, c) => x.clickHandler(c.event)}"
9
+ @change="${(x, c) => x.changeHandler(c.event)}"
10
+ @focusin="${(x, c) => x.focusinHandler(c.event)}"
11
+ @focusout="${(x, c) => x.focusoutHandler(c.event)}"
12
+ ${children({
13
+ property: 'slottedInputs',
14
+ attributes: true,
15
+ attributeFilter: ['disabled', 'required', 'readonly'],
16
+ subtree: true,
17
+ selector: '[slot="input"]',
18
+ filter: elements(),
19
+ })}
20
+ >
21
+ <slot name="label" part="label"></slot>
22
+ <slot name="input" part="input"></slot>
23
+ <slot name="message" part="message" ${slotted({ property: 'messageSlot', filter: elements('[flag]') })}></slot>
24
+ </template>
25
+ `;
26
+ //# sourceMappingURL=field.template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.template.js","sourceRoot":"","sources":["../../../src/field/field.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAuB,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAGjG;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwB,IAAI,CAAO;;cAE1C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAmB,CAAC;eAC9C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAmB,CAAC;gBAC/C,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,KAAmB,CAAC;iBAChD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,KAAmB,CAAC;MAC7D,QAAQ,CAAC;IACT,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,IAAI;IAChB,eAAe,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACrD,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE,gBAAgB;IAC1B,MAAM,EAAE,QAAQ,EAAE;CACnB,CAAC;;;;0CAIoC,OAAO,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;;CAEzG,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { Field } from './field.js';
2
+ export { LabelPosition as FieldLabelPosition, ValidationFlags } from './field.options.js';
3
+ export { definition as FieldDefinition } from './field.definition.js';
4
+ export { styles as FieldStyles } from './field.styles.js';
5
+ export { template as FieldTemplate } from './field.template.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/field/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1F,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,458 @@
1
+ import { attr, booleanConverter, emptyArray, observable, Updates } from '@microsoft/fast-element';
2
+ import { keyEnter } from '@microsoft/fast-web-utilities';
3
+ const proxySlotName = 'form-associated-proxy';
4
+ const ElementInternalsKey = 'ElementInternals';
5
+ /**
6
+ * @alpha
7
+ */
8
+ export const supportsElementInternals = ElementInternalsKey in window && 'setFormValue' in window[ElementInternalsKey].prototype;
9
+ const InternalsMap = new WeakMap();
10
+ /**
11
+ * Base function for providing Custom Element Form Association.
12
+ *
13
+ * @beta
14
+ */
15
+ export function FormAssociated(BaseCtor) {
16
+ const C = class extends BaseCtor {
17
+ /**
18
+ * Must evaluate to true to enable elementInternals.
19
+ * Feature detects API support and resolve respectively
20
+ *
21
+ * @internal
22
+ */
23
+ static get formAssociated() {
24
+ return supportsElementInternals;
25
+ }
26
+ /**
27
+ * Returns the validity state of the element
28
+ *
29
+ * @beta
30
+ */
31
+ get validity() {
32
+ return this.elementInternals ? this.elementInternals.validity : this.proxy.validity;
33
+ }
34
+ /**
35
+ * Retrieve a reference to the associated form.
36
+ * Returns null if not associated to any form.
37
+ *
38
+ * @beta
39
+ */
40
+ get form() {
41
+ return this.elementInternals ? this.elementInternals.form : this.proxy.form;
42
+ }
43
+ /**
44
+ * Retrieve the localized validation message,
45
+ * or custom validation message if set.
46
+ *
47
+ * @beta
48
+ */
49
+ get validationMessage() {
50
+ return this.elementInternals ? this.elementInternals.validationMessage : this.proxy.validationMessage;
51
+ }
52
+ /**
53
+ * Whether the element will be validated when the
54
+ * form is submitted
55
+ */
56
+ get willValidate() {
57
+ return this.elementInternals ? this.elementInternals.willValidate : this.proxy.willValidate;
58
+ }
59
+ /**
60
+ * A reference to all associated label elements
61
+ */
62
+ get labels() {
63
+ if (this.elementInternals) {
64
+ return Object.freeze(Array.from(this.elementInternals.labels));
65
+ }
66
+ else if (this.proxy instanceof HTMLElement && this.proxy.ownerDocument && this.id) {
67
+ // Labels associated by wrapping the element: <label><custom-element></custom-element></label>
68
+ const parentLabels = this.proxy.labels;
69
+ // Labels associated using the `for` attribute
70
+ const forLabels = Array.from(this.proxy.getRootNode().querySelectorAll(`[for='${this.id}']`));
71
+ const labels = parentLabels ? forLabels.concat(Array.from(parentLabels)) : forLabels;
72
+ return Object.freeze(labels);
73
+ }
74
+ else {
75
+ return emptyArray;
76
+ }
77
+ }
78
+ /**
79
+ * Invoked when the `value` property changes
80
+ * @param previous - the previous value
81
+ * @param next - the new value
82
+ *
83
+ * @remarks
84
+ * If elements extending `FormAssociated` implement a `valueChanged` method
85
+ * They must be sure to invoke `super.valueChanged(previous, next)` to ensure
86
+ * proper functioning of `FormAssociated`
87
+ */
88
+ valueChanged(previous, next) {
89
+ this.dirtyValue = true;
90
+ if (this.proxy instanceof HTMLElement) {
91
+ this.proxy.value = this.value;
92
+ }
93
+ this.currentValue = this.value;
94
+ this.setFormValue(this.value);
95
+ this.validate();
96
+ }
97
+ currentValueChanged() {
98
+ this.value = this.currentValue;
99
+ }
100
+ /**
101
+ * Invoked when the `initialValue` property changes
102
+ *
103
+ * @param previous - the previous value
104
+ * @param next - the new value
105
+ *
106
+ * @remarks
107
+ * If elements extending `FormAssociated` implement a `initialValueChanged` method
108
+ * They must be sure to invoke `super.initialValueChanged(previous, next)` to ensure
109
+ * proper functioning of `FormAssociated`
110
+ */
111
+ initialValueChanged(previous, next) {
112
+ // If the value is clean and the component is connected to the DOM
113
+ // then set value equal to the attribute value.
114
+ if (!this.dirtyValue) {
115
+ this.value = this.initialValue;
116
+ this.dirtyValue = false;
117
+ }
118
+ }
119
+ /**
120
+ * Invoked when the `disabled` property changes
121
+ *
122
+ * @param previous - the previous value
123
+ * @param next - the new value
124
+ *
125
+ * @remarks
126
+ * If elements extending `FormAssociated` implement a `disabledChanged` method
127
+ * They must be sure to invoke `super.disabledChanged(previous, next)` to ensure
128
+ * proper functioning of `FormAssociated`
129
+ */
130
+ disabledChanged(previous, next) {
131
+ if (this.proxy instanceof HTMLElement) {
132
+ this.proxy.disabled = this.disabled;
133
+ }
134
+ Updates.enqueue(() => this.classList.toggle('disabled', this.disabled));
135
+ }
136
+ /**
137
+ * Invoked when the `name` property changes
138
+ *
139
+ * @param previous - the previous value
140
+ * @param next - the new value
141
+ *
142
+ * @remarks
143
+ * If elements extending `FormAssociated` implement a `nameChanged` method
144
+ * They must be sure to invoke `super.nameChanged(previous, next)` to ensure
145
+ * proper functioning of `FormAssociated`
146
+ */
147
+ nameChanged(previous, next) {
148
+ if (this.proxy instanceof HTMLElement) {
149
+ this.proxy.name = this.name;
150
+ }
151
+ }
152
+ /**
153
+ * Invoked when the `required` property changes
154
+ *
155
+ * @param previous - the previous value
156
+ * @param next - the new value
157
+ *
158
+ * @remarks
159
+ * If elements extending `FormAssociated` implement a `requiredChanged` method
160
+ * They must be sure to invoke `super.requiredChanged(previous, next)` to ensure
161
+ * proper functioning of `FormAssociated`
162
+ */
163
+ requiredChanged(prev, next) {
164
+ if (this.proxy instanceof HTMLElement) {
165
+ this.proxy.required = this.required;
166
+ }
167
+ Updates.enqueue(() => this.classList.toggle('required', this.required));
168
+ this.validate();
169
+ }
170
+ /**
171
+ * The element internals object. Will only exist
172
+ * in browsers supporting the attachInternals API
173
+ */
174
+ get elementInternals() {
175
+ if (!supportsElementInternals) {
176
+ return null;
177
+ }
178
+ let internals = InternalsMap.get(this);
179
+ if (!internals) {
180
+ internals = this.attachInternals();
181
+ InternalsMap.set(this, internals);
182
+ }
183
+ return internals;
184
+ }
185
+ constructor(...args) {
186
+ super(...args);
187
+ /**
188
+ * Track whether the value has been changed from the initial value
189
+ */
190
+ this.dirtyValue = false;
191
+ /**
192
+ * The initial value of the form. This value sets the `value` property
193
+ * only when the `value` property has not been explicitly set.
194
+ *
195
+ * @remarks
196
+ * HTML Attribute: value
197
+ */
198
+ this.initialValue = '';
199
+ /**
200
+ * Sets the element's disabled state. A disabled element will not be included during form submission.
201
+ *
202
+ * @remarks
203
+ * HTML Attribute: disabled
204
+ */
205
+ this.disabled = false;
206
+ /**
207
+ * These are events that are still fired by the proxy
208
+ * element based on user / programmatic interaction.
209
+ *
210
+ * The proxy implementation should be transparent to
211
+ * the app author, so block these events from emitting.
212
+ */
213
+ this.proxyEventsToBlock = ['change', 'click'];
214
+ this.proxyInitialized = false;
215
+ this.required = false;
216
+ this.initialValue = this.initialValue || '';
217
+ if (!this.elementInternals) {
218
+ // When elementInternals is not supported, formResetCallback is
219
+ // bound to an event listener, so ensure the handler's `this`
220
+ // context is correct.
221
+ this.formResetCallback = this.formResetCallback.bind(this);
222
+ }
223
+ }
224
+ /**
225
+ * @internal
226
+ */
227
+ connectedCallback() {
228
+ super.connectedCallback();
229
+ this.addEventListener('keypress', this._keypressHandler);
230
+ if (!this.value) {
231
+ this.value = this.initialValue;
232
+ this.dirtyValue = false;
233
+ }
234
+ if (!this.elementInternals) {
235
+ this.attachProxy();
236
+ if (this.form) {
237
+ this.form.addEventListener('reset', this.formResetCallback);
238
+ }
239
+ }
240
+ }
241
+ /**
242
+ * @internal
243
+ */
244
+ disconnectedCallback() {
245
+ this.proxyEventsToBlock.forEach(name => this.proxy.removeEventListener(name, this.stopPropagation));
246
+ if (!this.elementInternals && this.form) {
247
+ this.form.removeEventListener('reset', this.formResetCallback);
248
+ }
249
+ }
250
+ /**
251
+ * Return the current validity of the element.
252
+ */
253
+ checkValidity() {
254
+ return this.elementInternals ? this.elementInternals.checkValidity() : this.proxy.checkValidity();
255
+ }
256
+ /**
257
+ * Return the current validity of the element.
258
+ * If false, fires an invalid event at the element.
259
+ */
260
+ reportValidity() {
261
+ return this.elementInternals ? this.elementInternals.reportValidity() : this.proxy.reportValidity();
262
+ }
263
+ /**
264
+ * Set the validity of the control. In cases when the elementInternals object is not
265
+ * available (and the proxy element is used to report validity), this function will
266
+ * do nothing unless a message is provided, at which point the setCustomValidity method
267
+ * of the proxy element will be invoked with the provided message.
268
+ * @param flags - Validity flags
269
+ * @param message - Optional message to supply
270
+ * @param anchor - Optional element used by UA to display an interactive validation UI
271
+ */
272
+ setValidity(flags, message, anchor) {
273
+ if (this.elementInternals) {
274
+ this.elementInternals.setValidity(flags, message, anchor);
275
+ }
276
+ else if (typeof message === 'string') {
277
+ this.proxy.setCustomValidity(message);
278
+ }
279
+ }
280
+ /**
281
+ * Invoked when a connected component's form or fieldset has its disabled
282
+ * state changed.
283
+ * @param disabled - the disabled value of the form / fieldset
284
+ */
285
+ formDisabledCallback(disabled) {
286
+ this.disabled = disabled;
287
+ }
288
+ formResetCallback() {
289
+ this.value = this.initialValue;
290
+ this.dirtyValue = false;
291
+ }
292
+ /**
293
+ * Attach the proxy element to the DOM
294
+ */
295
+ attachProxy() {
296
+ var _a;
297
+ if (!this.proxyInitialized) {
298
+ this.proxyInitialized = true;
299
+ this.proxy.style.display = 'none';
300
+ this.proxyEventsToBlock.forEach(name => this.proxy.addEventListener(name, this.stopPropagation));
301
+ // These are typically mapped to the proxy during
302
+ // property change callbacks, but during initialization
303
+ // on the initial call of the callback, the proxy is
304
+ // still undefined. We should find a better way to address this.
305
+ this.proxy.disabled = this.disabled;
306
+ this.proxy.required = this.required;
307
+ if (typeof this.name === 'string') {
308
+ this.proxy.name = this.name;
309
+ }
310
+ if (typeof this.value === 'string') {
311
+ this.proxy.value = this.value;
312
+ }
313
+ this.proxy.setAttribute('slot', proxySlotName);
314
+ this.proxySlot = document.createElement('slot');
315
+ this.proxySlot.setAttribute('name', proxySlotName);
316
+ }
317
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.appendChild(this.proxySlot);
318
+ this.appendChild(this.proxy);
319
+ }
320
+ /**
321
+ * Detach the proxy element from the DOM
322
+ */
323
+ detachProxy() {
324
+ var _a;
325
+ this.removeChild(this.proxy);
326
+ (_a = this.shadowRoot) === null || _a === void 0 ? void 0 : _a.removeChild(this.proxySlot);
327
+ }
328
+ /** {@inheritDoc (FormAssociated:interface).validate} */
329
+ validate(anchor) {
330
+ if (this.proxy instanceof HTMLElement) {
331
+ this.setValidity(this.proxy.validity, this.proxy.validationMessage, anchor);
332
+ }
333
+ }
334
+ /**
335
+ * Associates the provided value (and optional state) with the parent form.
336
+ * @param value - The value to set
337
+ * @param state - The state object provided to during session restores and when autofilling.
338
+ */
339
+ setFormValue(value, state) {
340
+ if (this.elementInternals) {
341
+ this.elementInternals.setFormValue(value, state || value);
342
+ }
343
+ }
344
+ _keypressHandler(e) {
345
+ switch (e.key) {
346
+ case keyEnter:
347
+ if (this.form instanceof HTMLFormElement) {
348
+ // Implicit submission
349
+ const defaultButton = this.form.querySelector('[type=submit]');
350
+ defaultButton === null || defaultButton === void 0 ? void 0 : defaultButton.click();
351
+ }
352
+ break;
353
+ }
354
+ }
355
+ /**
356
+ * Used to stop propagation of proxy element events
357
+ * @param e - Event object
358
+ */
359
+ stopPropagation(e) {
360
+ e.stopPropagation();
361
+ }
362
+ };
363
+ attr({ mode: 'boolean' })(C.prototype, 'disabled');
364
+ attr({ mode: 'fromView', attribute: 'value' })(C.prototype, 'initialValue');
365
+ attr({ attribute: 'current-value' })(C.prototype, 'currentValue');
366
+ attr(C.prototype, 'name');
367
+ attr({ mode: 'boolean' })(C.prototype, 'required');
368
+ observable(C.prototype, 'value');
369
+ return C;
370
+ }
371
+ /**
372
+ * Creates a checkable form associated component.
373
+ * @beta
374
+ */
375
+ export function CheckableFormAssociated(BaseCtor) {
376
+ class C extends FormAssociated(BaseCtor) {
377
+ }
378
+ class D extends C {
379
+ checkedAttributeChanged() {
380
+ this.defaultChecked = this.checkedAttribute;
381
+ }
382
+ /**
383
+ * @internal
384
+ */
385
+ defaultCheckedChanged() {
386
+ if (!this.dirtyChecked) {
387
+ // Setting this.checked will cause us to enter a dirty state,
388
+ // but if we are clean when defaultChecked is changed, we want to stay
389
+ // in a clean state, so reset this.dirtyChecked
390
+ this.checked = this.defaultChecked;
391
+ this.dirtyChecked = false;
392
+ }
393
+ }
394
+ checkedChanged(prev, next) {
395
+ if (!this.dirtyChecked) {
396
+ this.dirtyChecked = true;
397
+ }
398
+ this.currentChecked = this.checked;
399
+ this.updateForm();
400
+ if (this.proxy instanceof HTMLInputElement) {
401
+ this.proxy.checked = this.checked;
402
+ }
403
+ if (prev !== undefined) {
404
+ this.$emit('change');
405
+ }
406
+ this.validate();
407
+ }
408
+ currentCheckedChanged(prev, next) {
409
+ this.checked = this.currentChecked;
410
+ }
411
+ constructor(...args) {
412
+ super(args);
413
+ /**
414
+ * Tracks whether the "checked" property has been changed.
415
+ * This is necessary to provide consistent behavior with
416
+ * normal input checkboxes
417
+ */
418
+ this.dirtyChecked = false;
419
+ /**
420
+ * Provides the default checkedness of the input element
421
+ * Passed down to proxy
422
+ *
423
+ * @public
424
+ * @remarks
425
+ * HTML Attribute: checked
426
+ */
427
+ this.checkedAttribute = false;
428
+ /**
429
+ * The checked state of the control.
430
+ *
431
+ * @public
432
+ */
433
+ this.checked = false;
434
+ // Re-initialize dirtyChecked because initialization of other values
435
+ // causes it to become true
436
+ this.dirtyChecked = false;
437
+ }
438
+ updateForm() {
439
+ const value = this.checked ? this.value : null;
440
+ this.setFormValue(value, value);
441
+ }
442
+ connectedCallback() {
443
+ super.connectedCallback();
444
+ this.updateForm();
445
+ }
446
+ formResetCallback() {
447
+ super.formResetCallback();
448
+ this.checked = !!this.checkedAttribute;
449
+ this.dirtyChecked = false;
450
+ }
451
+ }
452
+ attr({ attribute: 'checked', mode: 'boolean' })(D.prototype, 'checkedAttribute');
453
+ attr({ attribute: 'current-checked', converter: booleanConverter })(D.prototype, 'currentChecked');
454
+ observable(D.prototype, 'defaultChecked');
455
+ observable(D.prototype, 'checked');
456
+ return D;
457
+ }
458
+ //# sourceMappingURL=form-associated.js.map