@fluentui/web-components 3.0.0-rc.21 → 3.0.0-rc.23

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 (381) hide show
  1. package/CHANGELOG.md +22 -2
  2. package/custom-elements.json +1600 -242
  3. package/dist/esm/accordion/accordion.definition-async.d.ts +10 -0
  4. package/dist/esm/accordion/accordion.definition-async.js +14 -0
  5. package/dist/esm/accordion/accordion.definition-async.js.map +1 -0
  6. package/dist/esm/accordion/accordion.js +1 -1
  7. package/dist/esm/accordion/accordion.js.map +1 -1
  8. package/dist/esm/accordion/accordion.styles.css +8 -0
  9. package/dist/esm/accordion/accordion.template.html +5 -0
  10. package/dist/esm/accordion/define-async.d.ts +1 -0
  11. package/dist/esm/accordion/define-async.js +5 -0
  12. package/dist/esm/accordion/define-async.js.map +1 -0
  13. package/dist/esm/accordion-item/accordion-item.definition-async.d.ts +10 -0
  14. package/dist/esm/accordion-item/accordion-item.definition-async.js +14 -0
  15. package/dist/esm/accordion-item/accordion-item.definition-async.js.map +1 -0
  16. package/dist/esm/accordion-item/accordion-item.styles.css +170 -0
  17. package/dist/esm/accordion-item/accordion-item.template.html +47 -0
  18. package/dist/esm/accordion-item/define-async.d.ts +1 -0
  19. package/dist/esm/accordion-item/define-async.js +5 -0
  20. package/dist/esm/accordion-item/define-async.js.map +1 -0
  21. package/dist/esm/anchor-button/anchor-button.definition-async.d.ts +10 -0
  22. package/dist/esm/anchor-button/anchor-button.definition-async.js +14 -0
  23. package/dist/esm/anchor-button/anchor-button.definition-async.js.map +1 -0
  24. package/dist/esm/anchor-button/anchor-button.styles.css +225 -0
  25. package/dist/esm/anchor-button/anchor-button.template.html +13 -0
  26. package/dist/esm/anchor-button/define-async.d.ts +1 -0
  27. package/dist/esm/anchor-button/define-async.js +5 -0
  28. package/dist/esm/anchor-button/define-async.js.map +1 -0
  29. package/dist/esm/avatar/avatar.definition-async.d.ts +10 -0
  30. package/dist/esm/avatar/avatar.definition-async.js +14 -0
  31. package/dist/esm/avatar/avatar.definition-async.js.map +1 -0
  32. package/dist/esm/avatar/avatar.styles.css +475 -0
  33. package/dist/esm/avatar/avatar.template.html +17 -0
  34. package/dist/esm/avatar/define-async.d.ts +1 -0
  35. package/dist/esm/avatar/define-async.js +5 -0
  36. package/dist/esm/avatar/define-async.js.map +1 -0
  37. package/dist/esm/badge/badge.definition-async.d.ts +10 -0
  38. package/dist/esm/badge/badge.definition-async.js +14 -0
  39. package/dist/esm/badge/badge.definition-async.js.map +1 -0
  40. package/dist/esm/badge/badge.styles.css +268 -0
  41. package/dist/esm/badge/badge.template.html +5 -0
  42. package/dist/esm/badge/define-async.d.ts +1 -0
  43. package/dist/esm/badge/define-async.js +5 -0
  44. package/dist/esm/badge/define-async.js.map +1 -0
  45. package/dist/esm/button/button.definition-async.d.ts +10 -0
  46. package/dist/esm/button/button.definition-async.js +14 -0
  47. package/dist/esm/button/button.definition-async.js.map +1 -0
  48. package/dist/esm/button/button.styles.css +267 -0
  49. package/dist/esm/button/button.template.html +12 -0
  50. package/dist/esm/button/define-async.d.ts +1 -0
  51. package/dist/esm/button/define-async.js +5 -0
  52. package/dist/esm/button/define-async.js.map +1 -0
  53. package/dist/esm/checkbox/checkbox.base.js +9 -7
  54. package/dist/esm/checkbox/checkbox.base.js.map +1 -1
  55. package/dist/esm/checkbox/checkbox.definition-async.d.ts +10 -0
  56. package/dist/esm/checkbox/checkbox.definition-async.js +14 -0
  57. package/dist/esm/checkbox/checkbox.definition-async.js.map +1 -0
  58. package/dist/esm/checkbox/checkbox.styles.css +168 -0
  59. package/dist/esm/checkbox/checkbox.template.html +24 -0
  60. package/dist/esm/checkbox/define-async.d.ts +1 -0
  61. package/dist/esm/checkbox/define-async.js +5 -0
  62. package/dist/esm/checkbox/define-async.js.map +1 -0
  63. package/dist/esm/compound-button/compound-button.definition-async.d.ts +10 -0
  64. package/dist/esm/compound-button/compound-button.definition-async.js +14 -0
  65. package/dist/esm/compound-button/compound-button.definition-async.js.map +1 -0
  66. package/dist/esm/compound-button/compound-button.styles.css +372 -0
  67. package/dist/esm/compound-button/compound-button.template.html +13 -0
  68. package/dist/esm/compound-button/define-async.d.ts +1 -0
  69. package/dist/esm/compound-button/define-async.js +5 -0
  70. package/dist/esm/compound-button/define-async.js.map +1 -0
  71. package/dist/esm/counter-badge/counter-badge.definition-async.d.ts +10 -0
  72. package/dist/esm/counter-badge/counter-badge.definition-async.js +14 -0
  73. package/dist/esm/counter-badge/counter-badge.definition-async.js.map +1 -0
  74. package/dist/esm/counter-badge/counter-badge.styles.css +177 -0
  75. package/dist/esm/counter-badge/counter-badge.template.html +5 -0
  76. package/dist/esm/counter-badge/define-async.d.ts +1 -0
  77. package/dist/esm/counter-badge/define-async.js +5 -0
  78. package/dist/esm/counter-badge/define-async.js.map +1 -0
  79. package/dist/esm/dialog/define-async.d.ts +1 -0
  80. package/dist/esm/dialog/define-async.js +5 -0
  81. package/dist/esm/dialog/define-async.js.map +1 -0
  82. package/dist/esm/dialog/dialog.definition-async.d.ts +10 -0
  83. package/dist/esm/dialog/dialog.definition-async.js +14 -0
  84. package/dist/esm/dialog/dialog.definition-async.js.map +1 -0
  85. package/dist/esm/dialog/dialog.styles.css +86 -0
  86. package/dist/esm/dialog/dialog.template.html +16 -0
  87. package/dist/esm/dialog-body/define-async.d.ts +1 -0
  88. package/dist/esm/dialog-body/define-async.js +5 -0
  89. package/dist/esm/dialog-body/define-async.js.map +1 -0
  90. package/dist/esm/dialog-body/dialog-body.definition-async.d.ts +10 -0
  91. package/dist/esm/dialog-body/dialog-body.definition-async.js +14 -0
  92. package/dist/esm/dialog-body/dialog-body.definition-async.js.map +1 -0
  93. package/dist/esm/dialog-body/dialog-body.styles.css +87 -0
  94. package/dist/esm/dialog-body/dialog-body.template.html +11 -0
  95. package/dist/esm/divider/define-async.d.ts +1 -0
  96. package/dist/esm/divider/define-async.js +5 -0
  97. package/dist/esm/divider/define-async.js.map +1 -0
  98. package/dist/esm/divider/divider.definition-async.d.ts +10 -0
  99. package/dist/esm/divider/divider.definition-async.js +14 -0
  100. package/dist/esm/divider/divider.definition-async.js.map +1 -0
  101. package/dist/esm/divider/divider.styles.css +119 -0
  102. package/dist/esm/divider/divider.template.html +1 -0
  103. package/dist/esm/drawer/define-async.d.ts +1 -0
  104. package/dist/esm/drawer/define-async.js +5 -0
  105. package/dist/esm/drawer/define-async.js.map +1 -0
  106. package/dist/esm/drawer/drawer.definition-async.d.ts +10 -0
  107. package/dist/esm/drawer/drawer.definition-async.js +14 -0
  108. package/dist/esm/drawer/drawer.definition-async.js.map +1 -0
  109. package/dist/esm/drawer/drawer.styles.css +130 -0
  110. package/dist/esm/drawer/drawer.template.html +18 -0
  111. package/dist/esm/drawer-body/define-async.d.ts +1 -0
  112. package/dist/esm/drawer-body/define-async.js +5 -0
  113. package/dist/esm/drawer-body/define-async.js.map +1 -0
  114. package/dist/esm/drawer-body/drawer-body.definition-async.d.ts +10 -0
  115. package/dist/esm/drawer-body/drawer-body.definition-async.js +14 -0
  116. package/dist/esm/drawer-body/drawer-body.definition-async.js.map +1 -0
  117. package/dist/esm/drawer-body/drawer-body.styles.css +33 -0
  118. package/dist/esm/drawer-body/drawer-body.template.html +12 -0
  119. package/dist/esm/dropdown/define-async.d.ts +1 -0
  120. package/dist/esm/dropdown/define-async.js +5 -0
  121. package/dist/esm/dropdown/define-async.js.map +1 -0
  122. package/dist/esm/dropdown/dropdown.base.d.ts +25 -0
  123. package/dist/esm/dropdown/dropdown.base.js +66 -10
  124. package/dist/esm/dropdown/dropdown.base.js.map +1 -1
  125. package/dist/esm/dropdown/dropdown.definition-async.d.ts +10 -0
  126. package/dist/esm/dropdown/dropdown.definition-async.js +14 -0
  127. package/dist/esm/dropdown/dropdown.definition-async.js.map +1 -0
  128. package/dist/esm/dropdown/dropdown.styles.css +221 -0
  129. package/dist/esm/dropdown/dropdown.template.html +21 -0
  130. package/dist/esm/field/define-async.d.ts +1 -0
  131. package/dist/esm/field/define-async.js +5 -0
  132. package/dist/esm/field/define-async.js.map +1 -0
  133. package/dist/esm/field/field.definition-async.d.ts +10 -0
  134. package/dist/esm/field/field.definition-async.js +17 -0
  135. package/dist/esm/field/field.definition-async.js.map +1 -0
  136. package/dist/esm/field/field.styles.css +121 -0
  137. package/dist/esm/field/field.template.html +12 -0
  138. package/dist/esm/image/define-async.d.ts +1 -0
  139. package/dist/esm/image/define-async.js +5 -0
  140. package/dist/esm/image/define-async.js.map +1 -0
  141. package/dist/esm/image/image.definition-async.d.ts +10 -0
  142. package/dist/esm/image/image.definition-async.js +14 -0
  143. package/dist/esm/image/image.definition-async.js.map +1 -0
  144. package/dist/esm/image/image.styles.css +51 -0
  145. package/dist/esm/image/image.template.html +1 -0
  146. package/dist/esm/label/define-async.d.ts +1 -0
  147. package/dist/esm/label/define-async.js +5 -0
  148. package/dist/esm/label/define-async.js.map +1 -0
  149. package/dist/esm/label/label.definition-async.d.ts +10 -0
  150. package/dist/esm/label/label.definition-async.js +14 -0
  151. package/dist/esm/label/label.definition-async.js.map +1 -0
  152. package/dist/esm/label/label.styles.css +36 -0
  153. package/dist/esm/label/label.template.html +4 -0
  154. package/dist/esm/link/define-async.d.ts +1 -0
  155. package/dist/esm/link/define-async.js +5 -0
  156. package/dist/esm/link/define-async.js.map +1 -0
  157. package/dist/esm/link/link.definition-async.d.ts +10 -0
  158. package/dist/esm/link/link.definition-async.js +14 -0
  159. package/dist/esm/link/link.definition-async.js.map +1 -0
  160. package/dist/esm/link/link.styles.css +68 -0
  161. package/dist/esm/link/link.template.html +9 -0
  162. package/dist/esm/listbox/define-async.d.ts +1 -0
  163. package/dist/esm/listbox/define-async.js +5 -0
  164. package/dist/esm/listbox/define-async.js.map +1 -0
  165. package/dist/esm/listbox/listbox.definition-async.d.ts +10 -0
  166. package/dist/esm/listbox/listbox.definition-async.js +14 -0
  167. package/dist/esm/listbox/listbox.definition-async.js.map +1 -0
  168. package/dist/esm/listbox/listbox.styles.css +51 -0
  169. package/dist/esm/listbox/listbox.template.html +8 -0
  170. package/dist/esm/menu/define-async.d.ts +1 -0
  171. package/dist/esm/menu/define-async.js +5 -0
  172. package/dist/esm/menu/define-async.js.map +1 -0
  173. package/dist/esm/menu/menu.definition-async.d.ts +10 -0
  174. package/dist/esm/menu/menu.definition-async.js +14 -0
  175. package/dist/esm/menu/menu.definition-async.js.map +1 -0
  176. package/dist/esm/menu/menu.styles.css +53 -0
  177. package/dist/esm/menu/menu.template.html +7 -0
  178. package/dist/esm/menu/menu.template.js +1 -7
  179. package/dist/esm/menu/menu.template.js.map +1 -1
  180. package/dist/esm/menu-button/define-async.d.ts +1 -0
  181. package/dist/esm/menu-button/define-async.js +5 -0
  182. package/dist/esm/menu-button/define-async.js.map +1 -0
  183. package/dist/esm/menu-button/menu-button.definition-async.d.ts +10 -0
  184. package/dist/esm/menu-button/menu-button.definition-async.js +14 -0
  185. package/dist/esm/menu-button/menu-button.definition-async.js.map +1 -0
  186. package/dist/esm/menu-button/menu-button.definition.js +1 -1
  187. package/dist/esm/menu-button/menu-button.definition.js.map +1 -1
  188. package/dist/esm/menu-button/menu-button.styles.css +267 -0
  189. package/dist/esm/menu-button/menu-button.styles.d.ts +6 -0
  190. package/dist/esm/menu-button/menu-button.styles.js +8 -0
  191. package/dist/esm/menu-button/menu-button.styles.js.map +1 -0
  192. package/dist/esm/menu-button/menu-button.template.html +16 -0
  193. package/dist/esm/menu-item/define-async.d.ts +1 -0
  194. package/dist/esm/menu-item/define-async.js +5 -0
  195. package/dist/esm/menu-item/define-async.js.map +1 -0
  196. package/dist/esm/menu-item/menu-item.definition-async.d.ts +10 -0
  197. package/dist/esm/menu-item/menu-item.definition-async.js +14 -0
  198. package/dist/esm/menu-item/menu-item.definition-async.js.map +1 -0
  199. package/dist/esm/menu-item/menu-item.styles.css +152 -0
  200. package/dist/esm/menu-item/menu-item.template.html +19 -0
  201. package/dist/esm/menu-list/define-async.d.ts +1 -0
  202. package/dist/esm/menu-list/define-async.js +5 -0
  203. package/dist/esm/menu-list/define-async.js.map +1 -0
  204. package/dist/esm/menu-list/menu-list.base.js +3 -0
  205. package/dist/esm/menu-list/menu-list.base.js.map +1 -1
  206. package/dist/esm/menu-list/menu-list.definition-async.d.ts +10 -0
  207. package/dist/esm/menu-list/menu-list.definition-async.js +14 -0
  208. package/dist/esm/menu-list/menu-list.definition-async.js.map +1 -0
  209. package/dist/esm/menu-list/menu-list.styles.css +16 -0
  210. package/dist/esm/menu-list/menu-list.template.html +5 -0
  211. package/dist/esm/menu-list/menu-list.template.js +1 -1
  212. package/dist/esm/menu-list/menu-list.template.js.map +1 -1
  213. package/dist/esm/message-bar/define-async.d.ts +1 -0
  214. package/dist/esm/message-bar/define-async.js +5 -0
  215. package/dist/esm/message-bar/define-async.js.map +1 -0
  216. package/dist/esm/message-bar/message-bar.definition-async.d.ts +10 -0
  217. package/dist/esm/message-bar/message-bar.definition-async.js +14 -0
  218. package/dist/esm/message-bar/message-bar.definition-async.js.map +1 -0
  219. package/dist/esm/message-bar/message-bar.styles.css +98 -0
  220. package/dist/esm/message-bar/message-bar.template.html +8 -0
  221. package/dist/esm/option/define-async.d.ts +1 -0
  222. package/dist/esm/option/define-async.js +5 -0
  223. package/dist/esm/option/define-async.js.map +1 -0
  224. package/dist/esm/option/option.definition-async.d.ts +10 -0
  225. package/dist/esm/option/option.definition-async.js +14 -0
  226. package/dist/esm/option/option.definition-async.js.map +1 -0
  227. package/dist/esm/option/option.styles.css +131 -0
  228. package/dist/esm/option/option.template.html +21 -0
  229. package/dist/esm/progress-bar/define-async.d.ts +1 -0
  230. package/dist/esm/progress-bar/define-async.js +5 -0
  231. package/dist/esm/progress-bar/define-async.js.map +1 -0
  232. package/dist/esm/progress-bar/progress-bar.definition-async.d.ts +10 -0
  233. package/dist/esm/progress-bar/progress-bar.definition-async.js +14 -0
  234. package/dist/esm/progress-bar/progress-bar.definition-async.js.map +1 -0
  235. package/dist/esm/progress-bar/progress-bar.styles.css +99 -0
  236. package/dist/esm/progress-bar/progress-bar.template.html +3 -0
  237. package/dist/esm/radio/define-async.d.ts +1 -0
  238. package/dist/esm/radio/define-async.js +5 -0
  239. package/dist/esm/radio/define-async.js.map +1 -0
  240. package/dist/esm/radio/radio.definition-async.d.ts +10 -0
  241. package/dist/esm/radio/radio.definition-async.js +14 -0
  242. package/dist/esm/radio/radio.definition-async.js.map +1 -0
  243. package/dist/esm/radio/radio.styles.css +115 -0
  244. package/dist/esm/radio/radio.template.html +11 -0
  245. package/dist/esm/radio-group/define-async.d.ts +1 -0
  246. package/dist/esm/radio-group/define-async.js +5 -0
  247. package/dist/esm/radio-group/define-async.js.map +1 -0
  248. package/dist/esm/radio-group/radio-group.definition-async.d.ts +10 -0
  249. package/dist/esm/radio-group/radio-group.definition-async.js +14 -0
  250. package/dist/esm/radio-group/radio-group.definition-async.js.map +1 -0
  251. package/dist/esm/radio-group/radio-group.styles.css +41 -0
  252. package/dist/esm/radio-group/radio-group.template.html +12 -0
  253. package/dist/esm/rating-display/define-async.d.ts +1 -0
  254. package/dist/esm/rating-display/define-async.js +5 -0
  255. package/dist/esm/rating-display/define-async.js.map +1 -0
  256. package/dist/esm/rating-display/rating-display.definition-async.d.ts +10 -0
  257. package/dist/esm/rating-display/rating-display.definition-async.js +14 -0
  258. package/dist/esm/rating-display/rating-display.definition-async.js.map +1 -0
  259. package/dist/esm/rating-display/rating-display.styles.css +140 -0
  260. package/dist/esm/rating-display/rating-display.template.html +6 -0
  261. package/dist/esm/slider/define-async.d.ts +1 -0
  262. package/dist/esm/slider/define-async.js +5 -0
  263. package/dist/esm/slider/define-async.js.map +1 -0
  264. package/dist/esm/slider/slider.definition-async.d.ts +10 -0
  265. package/dist/esm/slider/slider.definition-async.js +14 -0
  266. package/dist/esm/slider/slider.definition-async.js.map +1 -0
  267. package/dist/esm/slider/slider.styles.css +189 -0
  268. package/dist/esm/slider/slider.template.html +17 -0
  269. package/dist/esm/spinner/define-async.d.ts +1 -0
  270. package/dist/esm/spinner/define-async.js +5 -0
  271. package/dist/esm/spinner/define-async.js.map +1 -0
  272. package/dist/esm/spinner/spinner.definition-async.d.ts +10 -0
  273. package/dist/esm/spinner/spinner.definition-async.js +14 -0
  274. package/dist/esm/spinner/spinner.definition-async.js.map +1 -0
  275. package/dist/esm/spinner/spinner.styles.css +155 -0
  276. package/dist/esm/spinner/spinner.template.html +13 -0
  277. package/dist/esm/switch/define-async.d.ts +1 -0
  278. package/dist/esm/switch/define-async.js +5 -0
  279. package/dist/esm/switch/define-async.js.map +1 -0
  280. package/dist/esm/switch/switch.definition-async.d.ts +10 -0
  281. package/dist/esm/switch/switch.definition-async.js +14 -0
  282. package/dist/esm/switch/switch.definition-async.js.map +1 -0
  283. package/dist/esm/switch/switch.styles.css +121 -0
  284. package/dist/esm/switch/switch.template.html +10 -0
  285. package/dist/esm/tab/define-async.d.ts +1 -0
  286. package/dist/esm/tab/define-async.js +5 -0
  287. package/dist/esm/tab/define-async.js.map +1 -0
  288. package/dist/esm/tab/tab.definition-async.d.ts +10 -0
  289. package/dist/esm/tab/tab.definition-async.js +14 -0
  290. package/dist/esm/tab/tab.definition-async.js.map +1 -0
  291. package/dist/esm/tab/tab.styles.css +118 -0
  292. package/dist/esm/tab/tab.template.html +7 -0
  293. package/dist/esm/tablist/define-async.d.ts +1 -0
  294. package/dist/esm/tablist/define-async.js +5 -0
  295. package/dist/esm/tablist/define-async.js.map +1 -0
  296. package/dist/esm/tablist/tablist.definition-async.d.ts +10 -0
  297. package/dist/esm/tablist/tablist.definition-async.js +14 -0
  298. package/dist/esm/tablist/tablist.definition-async.js.map +1 -0
  299. package/dist/esm/tablist/tablist.styles.css +203 -0
  300. package/dist/esm/tablist/tablist.template.html +9 -0
  301. package/dist/esm/text/define-async.d.ts +1 -0
  302. package/dist/esm/text/define-async.js +5 -0
  303. package/dist/esm/text/define-async.js.map +1 -0
  304. package/dist/esm/text/text.definition-async.d.ts +10 -0
  305. package/dist/esm/text/text.definition-async.js +14 -0
  306. package/dist/esm/text/text.definition-async.js.map +1 -0
  307. package/dist/esm/text/text.styles.css +104 -0
  308. package/dist/esm/text/text.template.html +1 -0
  309. package/dist/esm/text-input/define-async.d.ts +1 -0
  310. package/dist/esm/text-input/define-async.js +5 -0
  311. package/dist/esm/text-input/define-async.js.map +1 -0
  312. package/dist/esm/text-input/text-input.base.d.ts +0 -6
  313. package/dist/esm/text-input/text-input.base.js +3 -14
  314. package/dist/esm/text-input/text-input.base.js.map +1 -1
  315. package/dist/esm/text-input/text-input.definition-async.d.ts +10 -0
  316. package/dist/esm/text-input/text-input.definition-async.js +17 -0
  317. package/dist/esm/text-input/text-input.definition-async.js.map +1 -0
  318. package/dist/esm/text-input/text-input.styles.css +200 -0
  319. package/dist/esm/text-input/text-input.template.html +38 -0
  320. package/dist/esm/text-input/text-input.template.js +1 -2
  321. package/dist/esm/text-input/text-input.template.js.map +1 -1
  322. package/dist/esm/textarea/define-async.d.ts +1 -0
  323. package/dist/esm/textarea/define-async.js +5 -0
  324. package/dist/esm/textarea/define-async.js.map +1 -0
  325. package/dist/esm/textarea/textarea.base.js +12 -10
  326. package/dist/esm/textarea/textarea.base.js.map +1 -1
  327. package/dist/esm/textarea/textarea.definition-async.d.ts +10 -0
  328. package/dist/esm/textarea/textarea.definition-async.js +17 -0
  329. package/dist/esm/textarea/textarea.definition-async.js.map +1 -0
  330. package/dist/esm/textarea/textarea.styles.css +258 -0
  331. package/dist/esm/textarea/textarea.template.html +29 -0
  332. package/dist/esm/toggle-button/define-async.d.ts +1 -0
  333. package/dist/esm/toggle-button/define-async.js +5 -0
  334. package/dist/esm/toggle-button/define-async.js.map +1 -0
  335. package/dist/esm/toggle-button/toggle-button.definition-async.d.ts +10 -0
  336. package/dist/esm/toggle-button/toggle-button.definition-async.js +14 -0
  337. package/dist/esm/toggle-button/toggle-button.definition-async.js.map +1 -0
  338. package/dist/esm/toggle-button/toggle-button.js +2 -3
  339. package/dist/esm/toggle-button/toggle-button.js.map +1 -1
  340. package/dist/esm/toggle-button/toggle-button.styles.css +358 -0
  341. package/dist/esm/toggle-button/toggle-button.template.html +12 -0
  342. package/dist/esm/tooltip/define-async.d.ts +1 -0
  343. package/dist/esm/tooltip/define-async.js +5 -0
  344. package/dist/esm/tooltip/define-async.js.map +1 -0
  345. package/dist/esm/tooltip/tooltip.d.ts +9 -9
  346. package/dist/esm/tooltip/tooltip.definition-async.d.ts +10 -0
  347. package/dist/esm/tooltip/tooltip.definition-async.js +14 -0
  348. package/dist/esm/tooltip/tooltip.definition-async.js.map +1 -0
  349. package/dist/esm/tooltip/tooltip.js +38 -6
  350. package/dist/esm/tooltip/tooltip.js.map +1 -1
  351. package/dist/esm/tooltip/tooltip.styles.css +86 -0
  352. package/dist/esm/tooltip/tooltip.template.html +1 -0
  353. package/dist/esm/tree/define-async.d.ts +1 -0
  354. package/dist/esm/tree/define-async.js +5 -0
  355. package/dist/esm/tree/define-async.js.map +1 -0
  356. package/dist/esm/tree/tree.definition-async.d.ts +10 -0
  357. package/dist/esm/tree/tree.definition-async.js +14 -0
  358. package/dist/esm/tree/tree.definition-async.js.map +1 -0
  359. package/dist/esm/tree/tree.styles.css +6 -0
  360. package/dist/esm/tree/tree.template.html +12 -0
  361. package/dist/esm/tree/tree.template.js +1 -0
  362. package/dist/esm/tree/tree.template.js.map +1 -1
  363. package/dist/esm/tree-item/define-async.d.ts +1 -0
  364. package/dist/esm/tree-item/define-async.js +5 -0
  365. package/dist/esm/tree-item/define-async.js.map +1 -0
  366. package/dist/esm/tree-item/tree-item.base.d.ts +1 -0
  367. package/dist/esm/tree-item/tree-item.base.js +12 -3
  368. package/dist/esm/tree-item/tree-item.base.js.map +1 -1
  369. package/dist/esm/tree-item/tree-item.definition-async.d.ts +10 -0
  370. package/dist/esm/tree-item/tree-item.definition-async.js +14 -0
  371. package/dist/esm/tree-item/tree-item.definition-async.js.map +1 -0
  372. package/dist/esm/tree-item/tree-item.styles.css +157 -0
  373. package/dist/esm/tree-item/tree-item.template.html +26 -0
  374. package/dist/esm/tree-item/tree-item.template.js +1 -1
  375. package/dist/esm/tree-item/tree-item.template.js.map +1 -1
  376. package/dist/web-components-all.js +196 -115
  377. package/dist/web-components-all.min.js +11 -11
  378. package/dist/web-components.d.ts +35 -6
  379. package/dist/web-components.js +195 -114
  380. package/dist/web-components.min.js +11 -11
  381. package/package.json +16 -2
@@ -0,0 +1,119 @@
1
+
2
+ :host([hidden]){display:none}:host{display:flex}
3
+
4
+ :host {
5
+ contain: content;
6
+ }
7
+
8
+ :host::after,
9
+ :host::before {
10
+ align-self: center;
11
+ background: var(--colorNeutralStroke2);
12
+ box-sizing: border-box;
13
+ content: '';
14
+ display: flex;
15
+ flex-grow: 1;
16
+ height: var(--strokeWidthThin);
17
+ }
18
+
19
+ :host([inset]) {
20
+ padding: 0 12px;
21
+ }
22
+
23
+ :host ::slotted(*) {
24
+ color: var(--colorNeutralForeground2);
25
+ font-family: var(--fontFamilyBase);
26
+ font-size: var(--fontSizeBase200);
27
+ font-weight: var(--fontWeightRegular);
28
+ margin: 0;
29
+ padding: 0 12px;
30
+ }
31
+
32
+ :host([align-content='start'])::before,
33
+ :host([align-content='end'])::after {
34
+ flex-basis: 12px;
35
+ flex-grow: 0;
36
+ flex-shrink: 0;
37
+ }
38
+
39
+ :host([orientation='vertical']) {
40
+ align-items: center;
41
+ flex-direction: column;
42
+ height: 100%;
43
+ min-height: 84px;
44
+ }
45
+
46
+ :host([orientation='vertical']):empty {
47
+ min-height: 20px;
48
+ }
49
+
50
+ :host([orientation='vertical'][inset])::before {
51
+ margin-top: 12px;
52
+ }
53
+ :host([orientation='vertical'][inset])::after {
54
+ margin-bottom: 12px;
55
+ }
56
+
57
+ :host([orientation='vertical']):empty::before,
58
+ :host([orientation='vertical']):empty::after {
59
+ height: 10px;
60
+ min-height: 10px;
61
+ flex-grow: 0;
62
+ }
63
+
64
+ :host([orientation='vertical'])::before,
65
+ :host([orientation='vertical'])::after {
66
+ width: var(--strokeWidthThin);
67
+ min-height: 20px;
68
+ height: 100%;
69
+ }
70
+
71
+ :host([orientation='vertical']) ::slotted(*) {
72
+ display: flex;
73
+ flex-direction: column;
74
+ padding: 12px 0;
75
+ line-height: 20px;
76
+ }
77
+
78
+ :host([orientation='vertical'][align-content='start'])::before {
79
+ min-height: 8px;
80
+ }
81
+ :host([orientation='vertical'][align-content='end'])::after {
82
+ min-height: 8px;
83
+ }
84
+
85
+ :host([appearance='strong'])::before,
86
+ :host([appearance='strong'])::after {
87
+ background: var(--colorNeutralStroke1);
88
+ }
89
+ :host([appearance='strong']) ::slotted(*) {
90
+ color: var(--colorNeutralForeground1);
91
+ }
92
+ :host([appearance='brand'])::before,
93
+ :host([appearance='brand'])::after {
94
+ background: var(--colorBrandStroke1);
95
+ }
96
+ :host([appearance='brand']) ::slotted(*) {
97
+ color: var(--colorBrandForeground1);
98
+ }
99
+ :host([appearance='subtle'])::before,
100
+ :host([appearance='subtle'])::after {
101
+ background: var(--colorNeutralStroke3);
102
+ }
103
+ :host([appearance='subtle']) ::slotted(*) {
104
+ color: var(--colorNeutralForeground3);
105
+ }
106
+
107
+ @media (forced-colors: active) {
108
+ :host([appearance='strong'])::before,
109
+ :host([appearance='strong'])::after,
110
+ :host([appearance='brand'])::before,
111
+ :host([appearance='brand'])::after,
112
+ :host([appearance='subtle'])::before,
113
+ :host([appearance='subtle'])::after,
114
+ :host::after,
115
+ :host::before {
116
+ background: WindowText;
117
+ color: WindowText;
118
+ }
119
+ }
@@ -0,0 +1 @@
1
+ <f-template name="fluent-divider" shadowrootmode="open"><template>{{styles}}<slot></slot></template></f-template>
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { RenderableFASTElement } from '@microsoft/fast-html';
2
+ import { definition } from './drawer.definition-async.js';
3
+ import { Drawer } from './drawer.js';
4
+ RenderableFASTElement(Drawer).defineAsync(definition);
5
+ //# sourceMappingURL=define-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-async.js","sourceRoot":"","sources":["../../../src/drawer/define-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,qBAAqB,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PartialFASTElementDefinition } from '@microsoft/fast-element';
2
+ /**
3
+ * The async definition configuration for the fluent-drawer element.
4
+ *
5
+ * @public
6
+ * @remarks
7
+ * This is used in server-side rendering (SSR) scenarios where the template
8
+ * is provided as a deferred option to be hydrated later.
9
+ */
10
+ export declare const definition: PartialFASTElementDefinition;
@@ -0,0 +1,14 @@
1
+ import { tagName } from './drawer.options.js';
2
+ /**
3
+ * The async definition configuration for the fluent-drawer element.
4
+ *
5
+ * @public
6
+ * @remarks
7
+ * This is used in server-side rendering (SSR) scenarios where the template
8
+ * is provided as a deferred option to be hydrated later.
9
+ */
10
+ export const definition = {
11
+ name: tagName,
12
+ templateOptions: 'defer-and-hydrate',
13
+ };
14
+ //# sourceMappingURL=drawer.definition-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.definition-async.js","sourceRoot":"","sources":["../../../src/drawer/drawer.definition-async.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiC;IACtD,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,mBAAmB;CACrC,CAAC"}
@@ -0,0 +1,130 @@
1
+
2
+ :host([hidden]){display:none}:host{display:block}
3
+
4
+ :host {
5
+ --dialog-backdrop: var(--colorBackgroundOverlay);
6
+ }
7
+
8
+ :host([type='non-modal']) dialog[open]::backdrop {
9
+ display: none;
10
+ }
11
+
12
+ :host([type='non-modal']) dialog {
13
+ position: fixed;
14
+ top: 0;
15
+ bottom: 0;
16
+ }
17
+
18
+ :host([type='inline']) {
19
+ height: 100%;
20
+ width: fit-content;
21
+ }
22
+
23
+ :host([type='inline']) dialog[open] {
24
+ box-shadow: none;
25
+ position: relative;
26
+ }
27
+
28
+ :host([size='small']) dialog {
29
+ width: 320px;
30
+ max-width: 320px;
31
+ }
32
+
33
+ :host([size='large']) dialog {
34
+ width: 940px;
35
+ max-width: 940px;
36
+ }
37
+
38
+ :host([size='full']) dialog {
39
+ width: 100%;
40
+ max-width: 100%;
41
+ }
42
+
43
+ :host([position='end']) dialog {
44
+ margin-inline-start: auto;
45
+ margin-inline-end: 0;
46
+ }
47
+
48
+ dialog {
49
+ box-sizing: border-box;
50
+ z-index: var(--drawer-elevation, 1000);
51
+ font-size: var(--fontSizeBase300);
52
+ line-height: var(--lineHeightBase300);
53
+ font-family: var(--fontFamilyBase);
54
+ font-weight: var(--fontWeightRegular);
55
+ color: var(--colorNeutralForeground1);
56
+ max-width: var(--drawer-width, 592px);
57
+ max-height: 100vh;
58
+ height: 100%;
59
+ margin-inline-start: 0;
60
+ margin-inline-end: auto;
61
+ border-inline-end-color: var(--colorTransparentStroke);
62
+ border-inline-start-color: var(--drawer-separator, var(--colorTransparentStroke));
63
+ outline: none;
64
+ top: 0;
65
+ bottom: 0;
66
+ width: var(--drawer-width, 592px);
67
+ border-radius: 0;
68
+ padding: 0;
69
+ max-width: var(--drawer-width, 592px);
70
+ box-shadow: var(--shadow64);
71
+ border: var(--strokeWidthThin) solid var(--colorTransparentStroke);
72
+ background: var(--colorNeutralBackground1);
73
+ }
74
+
75
+ dialog::backdrop {
76
+ background: var(--dialog-backdrop);
77
+ }
78
+
79
+ @layer animations {
80
+ /* Disable animations for reduced motion */
81
+ @media (prefers-reduced-motion: no-preference) {
82
+ dialog {
83
+ transition: display allow-discrete, opacity, overlay allow-discrete, transform;
84
+ transition-duration: var(--durationGentle);
85
+ transition-timing-function: var(--curveDecelerateMid);
86
+ }
87
+
88
+ /* Exit styles for dialog */
89
+ :host dialog:not([open]) {
90
+ transform: translateX(-100%);
91
+ transition-timing-function: var(--curveAccelerateMid);
92
+ }
93
+ :host([position='end']) dialog:not([open]) {
94
+ transform: translateX(100%);
95
+ transition-timing-function: var(--curveAccelerateMid);
96
+ }
97
+
98
+ dialog[open] {
99
+ transform: translateX(0);
100
+ }
101
+
102
+ dialog::backdrop {
103
+ transition: display allow-discrete, opacity, overlay allow-discrete, scale;
104
+ transition-duration: var(--durationGentle);
105
+ transition-timing-function: var(--curveDecelerateMid);
106
+ background: var(--dialog-backdrop, var(--colorBackgroundOverlay));
107
+ opacity: 0;
108
+ }
109
+
110
+ dialog[open]::backdrop {
111
+ opacity: 1;
112
+ }
113
+
114
+ dialog::backdrop {
115
+ transition-timing-function: var(--curveLinear);
116
+ }
117
+ }
118
+
119
+ @starting-style {
120
+ dialog[open] {
121
+ transform: translateX(-100%);
122
+ }
123
+ :host([position='end']) dialog[open] {
124
+ transform: translateX(100%);
125
+ }
126
+ dialog[open]::backdrop {
127
+ opacity: 0;
128
+ }
129
+ }
130
+ }
@@ -0,0 +1,18 @@
1
+ <f-template name="fluent-drawer" shadowrootmode="open">
2
+ <template>{{styles}}<dialog
3
+ class="dialog"
4
+ part="dialog"
5
+ aria-describedby="{{dialogDescribedby}}"
6
+ aria-labelledby="{{dialogLabelledby}}"
7
+ aria-label="{{dialogLabel}}"
8
+ aria-modal="{{dialogModal}}"
9
+ role="{{dialogRole}}"
10
+ size="{{size}}"
11
+ position="{{position}}"
12
+ @click="{clickHandler($e)}"
13
+ @cancel="{cancelHandler()}"
14
+ f-ref="{dialog}"
15
+ >
16
+ <slot></slot>
17
+ </dialog></template>
18
+ </f-template>
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { RenderableFASTElement } from '@microsoft/fast-html';
2
+ import { definition } from './drawer-body.definition-async.js';
3
+ import { DrawerBody } from './drawer-body.js';
4
+ RenderableFASTElement(DrawerBody).defineAsync(definition);
5
+ //# sourceMappingURL=define-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-async.js","sourceRoot":"","sources":["../../../src/drawer-body/define-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,qBAAqB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PartialFASTElementDefinition } from '@microsoft/fast-element';
2
+ /**
3
+ * The async definition configuration for the fluent-drawer-body element.
4
+ *
5
+ * @public
6
+ * @remarks
7
+ * This is used in server-side rendering (SSR) scenarios where the template
8
+ * is provided as a deferred option to be hydrated later.
9
+ */
10
+ export declare const definition: PartialFASTElementDefinition;
@@ -0,0 +1,14 @@
1
+ import { tagName } from './drawer-body.options.js';
2
+ /**
3
+ * The async definition configuration for the fluent-drawer-body element.
4
+ *
5
+ * @public
6
+ * @remarks
7
+ * This is used in server-side rendering (SSR) scenarios where the template
8
+ * is provided as a deferred option to be hydrated later.
9
+ */
10
+ export const definition = {
11
+ name: tagName,
12
+ templateOptions: 'defer-and-hydrate',
13
+ };
14
+ //# sourceMappingURL=drawer-body.definition-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer-body.definition-async.js","sourceRoot":"","sources":["../../../src/drawer-body/drawer-body.definition-async.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAiC;IACtD,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,mBAAmB;CACrC,CAAC"}
@@ -0,0 +1,33 @@
1
+
2
+ :host([hidden]){display:none}:host{display:grid}
3
+ :host {
4
+ box-sizing: border-box;
5
+ grid-template-rows: min-content auto min-content;
6
+ position: relative;
7
+ height: 100%;
8
+ padding: var(--spacingHorizontalXL);
9
+ max-height: 100svh;
10
+ }
11
+ .header {
12
+ display: flex;
13
+ justify-content: space-between;
14
+ align-items: center;
15
+
16
+ font-family: var(--fontFamilyBase);
17
+ font-size: var(--fontSizeBase500);
18
+ line-height: var(--lineHeightBase500);
19
+ font-weight: var(--fontWeightSemibold);
20
+
21
+ }
22
+
23
+ .footer {
24
+ display: flex;
25
+ justify-content: flex-start;
26
+ gap: var(--spacingHorizontalM);
27
+ }
28
+
29
+ ::slotted([slot='title']) {
30
+ font: inherit;
31
+ padding: 0;
32
+ margin: 0;
33
+ }
@@ -0,0 +1,12 @@
1
+ <f-template name="fluent-drawer-body" shadowrootmode="open">
2
+ <template>{{styles}}<div class="header" part="header">
3
+ <slot name="title"></slot>
4
+ <slot name="close" @click="{clickHandler($e)}"></slot>
5
+ </div>
6
+ <div class="content" part="content">
7
+ <slot></slot>
8
+ </div>
9
+ <div class="footer" part="footer">
10
+ <slot name="footer"></slot>
11
+ </div></template>
12
+ </f-template>
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import { RenderableFASTElement } from '@microsoft/fast-html';
2
+ import { definition } from './dropdown.definition-async.js';
3
+ import { Dropdown } from './dropdown.js';
4
+ RenderableFASTElement(Dropdown).defineAsync(definition);
5
+ //# sourceMappingURL=define-async.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-async.js","sourceRoot":"","sources":["../../../src/dropdown/define-async.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC"}
@@ -431,6 +431,31 @@ export declare class BaseDropdown extends FASTElement {
431
431
  * This method can be overridden in derived classes to provide custom control elements, though this is not recommended.
432
432
  */
433
433
  protected insertControl(): void;
434
+ /**
435
+ * The duration in milliseconds after the last character search keystroke before the search string is cleared.
436
+ */
437
+ protected searchTimeoutMs: number;
438
+ /**
439
+ * The accumulated search string used to match option labels by prefix when printable characters are typed.
440
+ *
441
+ * @internal
442
+ */
443
+ private searchString;
444
+ /**
445
+ * The timeout id used to reset the search string.
446
+ *
447
+ * @internal
448
+ */
449
+ private searchTimeout?;
450
+ /**
451
+ * Handles printable character input by moving {@link activeIndex} to the next option whose label matches the
452
+ * accumulated search string. When the string is a single character (or the same character repeated), matching
453
+ * options are cycled through; otherwise the string is treated as a prefix match.
454
+ *
455
+ * @param char - the printable character that was pressed
456
+ * @internal
457
+ */
458
+ private handleSearchCharacter;
434
459
  /**
435
460
  * Handles the keydown events for the dropdown.
436
461
  *
@@ -129,7 +129,7 @@ export class BaseDropdown extends FASTElement {
129
129
  const notifier = Observable.getNotifier(this);
130
130
  notifier.subscribe(next);
131
131
  notifier.notify('multiple');
132
- waitForConnectedDescendants(next, () => {
132
+ Updates.enqueue(() => {
133
133
  this.options.forEach(option => {
134
134
  option.disabled = option.disabledAttribute || this.disabled;
135
135
  option.name = this.name;
@@ -140,7 +140,7 @@ export class BaseDropdown extends FASTElement {
140
140
  x.selected = this.multiple || i === 0;
141
141
  });
142
142
  this.setValidity();
143
- }, { idleCallback: true });
143
+ });
144
144
  if (AnchorPositioningCSSSupported) {
145
145
  // The `anchor-name` property seems to not be isolated between instances in Safari Technology Preview 220 (18.4).
146
146
  // It's unclear if the spec requires the `anchor-name` to be unique when styled on the `:host`.
@@ -210,7 +210,8 @@ export class BaseDropdown extends FASTElement {
210
210
  * @public
211
211
  */
212
212
  get enabledOptions() {
213
- return this.listbox?.enabledOptions ?? [];
213
+ return (this.listbox?.enabledOptions ??
214
+ Array.from(this.querySelectorAll('*')).filter((o) => isDropdownOption(o) && !o.disabled));
214
215
  }
215
216
  /**
216
217
  * The form-associated flag.
@@ -249,7 +250,7 @@ export class BaseDropdown extends FASTElement {
249
250
  * @public
250
251
  */
251
252
  get options() {
252
- return this.listbox?.options ?? [];
253
+ return (this.listbox?.options ?? Array.from(this.querySelectorAll('*')).filter(o => isDropdownOption(o)));
253
254
  }
254
255
  /**
255
256
  * The index of the first selected option, scoped to the enabled options.
@@ -473,6 +474,16 @@ export class BaseDropdown extends FASTElement {
473
474
  * @internal
474
475
  */
475
476
  this._insertingControl = false;
477
+ /**
478
+ * The duration in milliseconds after the last character search keystroke before the search string is cleared.
479
+ */
480
+ this.searchTimeoutMs = 500;
481
+ /**
482
+ * The accumulated search string used to match option labels by prefix when printable characters are typed.
483
+ *
484
+ * @internal
485
+ */
486
+ this.searchString = '';
476
487
  this.elementInternals.role = 'presentation';
477
488
  }
478
489
  /**
@@ -585,6 +596,39 @@ export class BaseDropdown extends FASTElement {
585
596
  dropdownButtonTemplate.render(this, this);
586
597
  this._insertingControl = false;
587
598
  }
599
+ /**
600
+ * Handles printable character input by moving {@link activeIndex} to the next option whose label matches the
601
+ * accumulated search string. When the string is a single character (or the same character repeated), matching
602
+ * options are cycled through; otherwise the string is treated as a prefix match.
603
+ *
604
+ * @param char - the printable character that was pressed
605
+ * @internal
606
+ */
607
+ handleSearchCharacter(char) {
608
+ const isRepeating = this.searchString === char.repeat(this.searchString.length);
609
+ this.searchString += char;
610
+ let candidates = this.searchString.length > 1 ? this.filterOptions(this.searchString) : [];
611
+ let isCycling = false;
612
+ if (!candidates.length && isRepeating) {
613
+ candidates = this.filterOptions(char);
614
+ isCycling = true;
615
+ }
616
+ if (candidates.length) {
617
+ const activeOption = this.enabledOptions[this.activeIndex];
618
+ const currentPos = candidates.indexOf(activeOption);
619
+ const nextMatch = isCycling
620
+ ? candidates[this.getEnabledIndexInBounds(currentPos + 1, candidates.length)]
621
+ : currentPos >= 0
622
+ ? activeOption
623
+ : candidates[0];
624
+ this.activeIndex = this.enabledOptions.indexOf(nextMatch);
625
+ }
626
+ clearTimeout(this.searchTimeout);
627
+ this.searchTimeout = setTimeout(() => {
628
+ this.searchString = '';
629
+ this.searchTimeout = undefined;
630
+ }, this.searchTimeoutMs);
631
+ }
588
632
  /**
589
633
  * Handles the keydown events for the dropdown.
590
634
  *
@@ -604,14 +648,15 @@ export class BaseDropdown extends FASTElement {
604
648
  increment = 1;
605
649
  break;
606
650
  }
607
- case ' ': {
608
- if (this.isCombobox) {
609
- break;
610
- }
611
- e.preventDefault();
612
- }
651
+ case ' ':
613
652
  case 'Enter':
614
653
  case 'Tab': {
654
+ if (e.key === ' ') {
655
+ if (this.isCombobox) {
656
+ break;
657
+ }
658
+ e.preventDefault();
659
+ }
615
660
  if (this.open) {
616
661
  this.selectOption(this.activeIndex, true);
617
662
  if (this.multiple) {
@@ -630,6 +675,12 @@ export class BaseDropdown extends FASTElement {
630
675
  }
631
676
  }
632
677
  if (!increment) {
678
+ if (!this.isCombobox && e.key.length === 1 && e.key !== ' ' && !e.ctrlKey && !e.metaKey && !e.altKey) {
679
+ if (!this.open) {
680
+ this.listbox.showPopover();
681
+ }
682
+ this.handleSearchCharacter(e.key);
683
+ }
633
684
  return true;
634
685
  }
635
686
  if (!this.open) {
@@ -751,6 +802,11 @@ export class BaseDropdown extends FASTElement {
751
802
  disconnectedCallback() {
752
803
  BaseDropdown.AnchorPositionFallbackObserver?.disconnect();
753
804
  this.debounceController?.abort();
805
+ if (this.searchTimeout) {
806
+ clearTimeout(this.searchTimeout);
807
+ this.searchTimeout = undefined;
808
+ this.searchString = '';
809
+ }
754
810
  super.disconnectedCallback();
755
811
  }
756
812
  /**