@vonage/vivid 5.25.0 → 5.27.0

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 (737) hide show
  1. package/accordion/index.cjs +1 -1
  2. package/accordion/index.js +8 -8
  3. package/accordion-item/index.cjs +1 -1
  4. package/action-group/index.cjs +3 -3
  5. package/action-group/index.js +10 -5
  6. package/alert/index.cjs +7 -7
  7. package/alert/index.js +47 -35
  8. package/audio-player/index.cjs +18 -18
  9. package/audio-player/index.js +15 -11
  10. package/avatar/index.cjs +9 -9
  11. package/avatar/index.js +27 -18
  12. package/badge/index.cjs +1 -1
  13. package/banner/index.cjs +5 -5
  14. package/banner/index.js +33 -27
  15. package/breadcrumb/index.cjs +1 -1
  16. package/breadcrumb/index.js +5 -1
  17. package/breadcrumb-item/index.cjs +1 -1
  18. package/breadcrumb-item/index.js +6 -6
  19. package/bundled/affix.cjs +3 -3
  20. package/bundled/affix.js +1 -1
  21. package/bundled/anchored.cjs +2 -2
  22. package/bundled/anchored.js +13 -1
  23. package/bundled/aria-binding-directive.cjs +1 -1
  24. package/bundled/aria-binding-directive.js +2 -2
  25. package/bundled/aria.cjs +1 -1
  26. package/bundled/base-color-picker.cjs +2 -2
  27. package/bundled/base-color-picker.js +1 -1
  28. package/bundled/base-progress.cjs +1 -1
  29. package/bundled/breadcrumb-item.cjs +1 -1
  30. package/bundled/button.cjs +1 -1
  31. package/bundled/calendar-event.cjs +1 -1
  32. package/bundled/calendar-event.js +17 -4
  33. package/bundled/calendar-picker.template.cjs +5 -5
  34. package/bundled/calendar-picker.template.js +53 -55
  35. package/bundled/char-count.cjs +2 -2
  36. package/bundled/children.cjs +1 -1
  37. package/bundled/children.js +1 -1
  38. package/bundled/class-names.cjs +1 -1
  39. package/bundled/component-enum.cjs +1 -0
  40. package/bundled/component-enum.js +9 -0
  41. package/bundled/data-grid.options.cjs +1 -1
  42. package/bundled/data-grid.options.js +7 -6
  43. package/bundled/decorate.cjs +1 -1
  44. package/bundled/decorate.js +1 -1
  45. package/bundled/definition.cjs +1 -1
  46. package/bundled/definition10.cjs +10 -20
  47. package/bundled/definition10.js +23 -72
  48. package/bundled/definition11.cjs +74 -10
  49. package/bundled/definition11.js +194 -24
  50. package/bundled/definition12.cjs +18 -70
  51. package/bundled/definition12.js +48 -186
  52. package/bundled/definition13.cjs +5 -22
  53. package/bundled/definition13.js +9 -58
  54. package/bundled/definition14.cjs +1 -5
  55. package/bundled/definition14.js +9 -9
  56. package/bundled/definition15.cjs +3 -3
  57. package/bundled/definition15.js +18 -18
  58. package/bundled/definition16.cjs +3 -3
  59. package/bundled/definition16.js +23 -17
  60. package/bundled/definition17.cjs +6 -6
  61. package/bundled/definition17.js +8 -8
  62. package/bundled/definition18.cjs +2 -2
  63. package/bundled/definition19.cjs +21 -21
  64. package/bundled/definition19.js +66 -61
  65. package/bundled/definition2.cjs +13 -1
  66. package/bundled/definition2.js +22 -185
  67. package/bundled/definition20.cjs +3 -3
  68. package/bundled/definition20.js +6 -7
  69. package/bundled/definition21.cjs +7 -7
  70. package/bundled/definition21.js +22 -23
  71. package/bundled/definition22.cjs +3 -3
  72. package/bundled/definition22.js +25 -25
  73. package/bundled/definition23.cjs +3 -3
  74. package/bundled/definition23.js +26 -8
  75. package/bundled/definition24.cjs +2 -2
  76. package/bundled/definition24.js +1 -1
  77. package/bundled/definition25.cjs +5 -5
  78. package/bundled/definition25.js +16 -11
  79. package/bundled/definition3.cjs +25 -12
  80. package/bundled/definition3.js +90 -21
  81. package/bundled/definition4.cjs +29 -25
  82. package/bundled/definition4.js +50 -89
  83. package/bundled/definition5.cjs +28 -29
  84. package/bundled/definition5.js +143 -45
  85. package/bundled/definition6.cjs +6 -29
  86. package/bundled/definition6.js +20 -130
  87. package/bundled/definition7.cjs +14 -6
  88. package/bundled/definition7.js +159 -20
  89. package/bundled/definition8.cjs +22 -14
  90. package/bundled/definition8.js +88 -144
  91. package/bundled/definition9.cjs +20 -22
  92. package/bundled/definition9.js +54 -80
  93. package/bundled/delegates-aria.cjs +1 -1
  94. package/bundled/delegates-aria.js +3 -2
  95. package/bundled/dialog.cjs +1 -1
  96. package/bundled/dialog.js +1 -1
  97. package/bundled/divider.cjs +1 -1
  98. package/bundled/divider.js +9 -9
  99. package/bundled/dom.cjs +1 -1
  100. package/bundled/enums.cjs +1 -1
  101. package/bundled/extractOptions.cjs +1 -1
  102. package/bundled/feedback-message.cjs +8 -0
  103. package/bundled/feedback-message.js +41 -0
  104. package/bundled/floating-ui.dom.cjs +1 -1
  105. package/bundled/floating-ui.dom.js +163 -197
  106. package/bundled/form-associated.cjs +1 -1
  107. package/bundled/form-associated.js +3 -4
  108. package/bundled/form-element.cjs +1 -1
  109. package/bundled/host-semantics.cjs +1 -1
  110. package/bundled/icon.cjs +1 -1
  111. package/bundled/kbd-shortcut.cjs +1 -1
  112. package/bundled/key-codes.cjs +1 -1
  113. package/bundled/linkable.cjs +2 -2
  114. package/bundled/listbox.cjs +1 -1
  115. package/bundled/listbox.js +3 -5
  116. package/bundled/localized.cjs +1 -1
  117. package/bundled/localized.js +33 -32
  118. package/bundled/mixins.cjs +9 -16
  119. package/bundled/mixins.js +23 -57
  120. package/bundled/numberConverter.cjs +2 -2
  121. package/bundled/numberConverter.js +1 -1
  122. package/bundled/numbers.cjs +1 -1
  123. package/bundled/optgroup.cjs +1 -1
  124. package/bundled/option.cjs +1 -1
  125. package/bundled/option.js +9 -7
  126. package/bundled/picker-field.template.cjs +2 -2
  127. package/bundled/picker-field.template.js +8 -8
  128. package/bundled/platform.cjs +1 -1
  129. package/bundled/playbackRates.cjs +1 -1
  130. package/bundled/ref.cjs +1 -1
  131. package/bundled/ref.js +1 -1
  132. package/bundled/render-in-light-dom.cjs +1 -1
  133. package/bundled/render-in-light-dom.js +1 -1
  134. package/bundled/repeat.cjs +1 -1
  135. package/bundled/repeat.js +16 -15
  136. package/bundled/scrollIntoView.cjs +1 -1
  137. package/bundled/scrollIntoView.js +1 -3
  138. package/bundled/single-date-picker.cjs +1 -1
  139. package/bundled/single-value-picker.cjs +1 -1
  140. package/bundled/single-value-picker.js +1 -1
  141. package/bundled/slider.template.cjs +12 -12
  142. package/bundled/slider.template.js +209 -32
  143. package/bundled/slottable-request.cjs +3 -3
  144. package/bundled/slottable-request.js +26 -17
  145. package/bundled/slotted.cjs +1 -1
  146. package/bundled/slotted.js +1 -1
  147. package/bundled/text-field.cjs +1 -1
  148. package/bundled/text-field.js +1 -1
  149. package/bundled/time-selection-picker.template.cjs +4 -4
  150. package/bundled/time-selection-picker.template.js +10 -7
  151. package/bundled/trapped-focus.cjs +1 -1
  152. package/bundled/utils.cjs +1 -1
  153. package/bundled/vivid-element.cjs +3 -3
  154. package/bundled/vivid-element.js +397 -358
  155. package/bundled/when.cjs +1 -1
  156. package/bundled/when.js +1 -1
  157. package/bundled/with-contextual-help.cjs +1 -1
  158. package/bundled/with-contextual-help.js +1 -1
  159. package/bundled/with-error-text.cjs +1 -1
  160. package/bundled/with-success-text.cjs +1 -1
  161. package/button/index.cjs +1 -1
  162. package/button/index.js +1 -1
  163. package/calendar/index.cjs +1 -1
  164. package/calendar/index.js +7 -7
  165. package/calendar-event/index.cjs +2 -2
  166. package/calendar-event/index.js +10 -8
  167. package/card/index.cjs +4 -2
  168. package/card/index.js +12 -7
  169. package/checkbox/index.cjs +1 -1
  170. package/color-picker/index.cjs +17 -17
  171. package/color-picker/index.js +19 -17
  172. package/combobox/index.cjs +9 -9
  173. package/combobox/index.js +46 -44
  174. package/contextual-help/index.cjs +1 -1
  175. package/contextual-help/index.js +1 -1
  176. package/country/index.cjs +1 -1
  177. package/country-group/index.cjs +1 -1
  178. package/country-group/index.js +8 -4
  179. package/custom-elements.json +7322 -7254
  180. package/data-grid/index.cjs +6 -6
  181. package/data-grid/index.js +92 -99
  182. package/date-picker/index.cjs +1 -1
  183. package/date-picker/index.js +10 -6
  184. package/date-range-picker/index.cjs +1 -1
  185. package/date-range-picker/index.js +13 -9
  186. package/date-time-picker/index.cjs +1 -1
  187. package/date-time-picker/index.js +11 -7
  188. package/dial-pad/index.cjs +4 -3
  189. package/dial-pad/index.js +14 -9
  190. package/dialog/index.cjs +1 -1
  191. package/dialog/index.js +9 -6
  192. package/divider/index.cjs +1 -1
  193. package/elevation/definition.cjs +1 -0
  194. package/elevation/definition.js +2 -2
  195. package/elevation/index.cjs +1 -1
  196. package/elevation/index.js +1 -1
  197. package/empty-state/index.cjs +3 -3
  198. package/empty-state/index.js +18 -6
  199. package/fab/index.cjs +3 -3
  200. package/fab/index.js +14 -6
  201. package/file-picker/index.cjs +8 -10
  202. package/file-picker/index.js +25 -22
  203. package/flag/index.cjs +1 -1
  204. package/flag/index.js +7 -3
  205. package/form-field/definition.cjs +5 -0
  206. package/form-field/definition.js +2 -0
  207. package/form-field/index.cjs +29 -0
  208. package/form-field/index.js +57 -0
  209. package/header/definition.cjs +1 -1
  210. package/header/definition.js +1 -1
  211. package/header/index.cjs +1 -1
  212. package/header/index.js +9 -5
  213. package/icon/index.cjs +1 -1
  214. package/icon/index.js +1 -1
  215. package/index.cjs +159 -154
  216. package/index.js +42 -40
  217. package/kbd-key/definition.cjs +1 -1
  218. package/kbd-key/definition.js +1 -1
  219. package/kbd-key/index.cjs +3 -3
  220. package/kbd-key/index.js +22 -13
  221. package/kbd-shortcut/definition.cjs +1 -1
  222. package/kbd-shortcut/definition.js +1 -1
  223. package/kbd-shortcut/index.cjs +1 -1
  224. package/kbd-shortcut/index.js +6 -6
  225. package/layout/definition.cjs +1 -1
  226. package/layout/definition.js +1 -1
  227. package/layout/index.cjs +1 -1
  228. package/layout/index.js +7 -3
  229. package/lib/accordion-item/accordion-item.d.ts +11 -6
  230. package/lib/action-group/action-group.d.ts +10 -5
  231. package/lib/alert/alert.d.ts +15 -18
  232. package/lib/avatar/avatar.d.ts +16 -7
  233. package/lib/badge/badge.d.ts +17 -7
  234. package/lib/banner/banner.d.ts +18 -20
  235. package/lib/button/button.d.ts +25 -16
  236. package/lib/calendar-event/calendar-event.d.ts +14 -7
  237. package/lib/checkbox/checkbox.d.ts +31 -28
  238. package/lib/combobox/combobox.d.ts +37 -32
  239. package/lib/components.d.ts +1 -0
  240. package/lib/data-grid/data-grid.options.d.ts +6 -1
  241. package/lib/dial-pad/locale.d.ts +1 -0
  242. package/lib/divider/divider.d.ts +9 -6
  243. package/lib/elevation/definition.d.ts +2 -0
  244. package/lib/empty-state/empty-state.d.ts +7 -2
  245. package/lib/fab/fab.d.ts +3 -2
  246. package/lib/form-field/definition.d.ts +4 -0
  247. package/lib/form-field/form-field.d.ts +6 -0
  248. package/lib/form-field/form-field.template.d.ts +3 -0
  249. package/lib/kbd-key/kbd-key.d.ts +7 -2
  250. package/lib/listbox/listbox.d.ts +1 -0
  251. package/lib/menu-item/menu-item.d.ts +17 -14
  252. package/lib/nav-disclosure/nav-disclosure.d.ts +18 -11
  253. package/lib/nav-item/nav-item.d.ts +19 -12
  254. package/lib/note/note.d.ts +10 -6
  255. package/lib/number-field/number-field.d.ts +45 -40
  256. package/lib/option/option.d.ts +13 -10
  257. package/lib/popup/definition.d.ts +2 -0
  258. package/lib/progress/progress.d.ts +10 -5
  259. package/lib/progress-ring/progress-ring.d.ts +9 -5
  260. package/lib/radio/radio.d.ts +18 -15
  261. package/lib/range-slider/range-slider.d.ts +19 -15
  262. package/lib/rich-text-editor/rich-text-editor.d.ts +9 -5
  263. package/lib/rich-text-editor/rte/utils/ui.d.ts +2 -1
  264. package/lib/searchable-select/option-tag.d.ts +12 -7
  265. package/lib/searchable-select/searchable-select.d.ts +7 -2
  266. package/lib/select/select.d.ts +45 -40
  267. package/lib/selectable-box/selectable-box.d.ts +9 -5
  268. package/lib/slider/slider.d.ts +18 -14
  269. package/lib/split-button/split-button.d.ts +24 -15
  270. package/lib/status/status.d.ts +10 -7
  271. package/lib/switch/switch.d.ts +13 -9
  272. package/lib/tab/tab.d.ts +19 -14
  273. package/lib/tabs/tabs.d.ts +6 -3
  274. package/lib/tag/tag.d.ts +24 -15
  275. package/lib/tag-name-map.d.ts +2 -1
  276. package/lib/text-field/text-field.d.ts +46 -41
  277. package/lib/video-player/__tests__/video-fixtures.d.ts +3 -0
  278. package/listbox/definition.cjs +1 -1
  279. package/listbox/definition.js +1 -1
  280. package/listbox/index.cjs +7 -5
  281. package/listbox/index.js +24 -10
  282. package/locales/de-DE.cjs +34 -33
  283. package/locales/de-DE.js +34 -33
  284. package/locales/en-GB.cjs +34 -33
  285. package/locales/en-GB.js +34 -33
  286. package/locales/ja-JP.cjs +35 -33
  287. package/locales/ja-JP.js +35 -33
  288. package/locales/zh-CN.cjs +34 -33
  289. package/locales/zh-CN.js +34 -33
  290. package/menu/index.cjs +1 -1
  291. package/menu-item/index.cjs +1 -1
  292. package/nav/definition.cjs +1 -1
  293. package/nav/definition.js +1 -1
  294. package/nav/index.cjs +1 -1
  295. package/nav/index.js +6 -4
  296. package/nav-disclosure/definition.cjs +1 -1
  297. package/nav-disclosure/definition.js +1 -1
  298. package/nav-disclosure/index.cjs +3 -3
  299. package/nav-disclosure/index.js +13 -8
  300. package/nav-item/definition.cjs +1 -1
  301. package/nav-item/definition.js +1 -1
  302. package/nav-item/index.cjs +2 -2
  303. package/nav-item/index.js +15 -10
  304. package/note/definition.cjs +1 -1
  305. package/note/definition.js +1 -1
  306. package/note/index.cjs +6 -4
  307. package/note/index.js +22 -9
  308. package/number-field/definition.cjs +1 -1
  309. package/number-field/definition.js +1 -1
  310. package/number-field/index.cjs +11 -11
  311. package/number-field/index.js +41 -36
  312. package/optgroup/index.cjs +1 -1
  313. package/option/index.cjs +1 -1
  314. package/package.json +29 -36
  315. package/pagination/definition.cjs +1 -1
  316. package/pagination/definition.js +1 -1
  317. package/pagination/index.cjs +1 -1
  318. package/pagination/index.js +9 -9
  319. package/platform-switch/definition.cjs +1 -1
  320. package/platform-switch/definition.js +1 -1
  321. package/platform-switch/index.cjs +1 -1
  322. package/platform-switch/index.js +6 -2
  323. package/popover/definition.cjs +1 -1
  324. package/popover/definition.js +1 -1
  325. package/popover/index.cjs +2 -2
  326. package/popover/index.js +43 -35
  327. package/popup/definition.cjs +1 -0
  328. package/popup/definition.js +2 -2
  329. package/popup/index.cjs +1 -1
  330. package/popup/index.js +1 -1
  331. package/progress/definition.cjs +1 -1
  332. package/progress/definition.js +1 -1
  333. package/progress/index.cjs +7 -7
  334. package/progress/index.js +21 -11
  335. package/progress-ring/index.cjs +1 -1
  336. package/progress-ring/index.js +1 -1
  337. package/radio/definition.cjs +1 -1
  338. package/radio/definition.js +1 -1
  339. package/radio/index.cjs +1 -1
  340. package/radio-group/definition.cjs +1 -1
  341. package/radio-group/definition.js +1 -1
  342. package/radio-group/index.cjs +2 -2
  343. package/radio-group/index.js +14 -9
  344. package/range-slider/definition.cjs +1 -1
  345. package/range-slider/definition.js +1 -1
  346. package/range-slider/index.cjs +8 -8
  347. package/range-slider/index.js +31 -32
  348. package/rich-text-editor/definition.cjs +1 -1
  349. package/rich-text-editor/definition.js +1 -1
  350. package/rich-text-editor/index.cjs +13 -10
  351. package/rich-text-editor/index.js +1942 -1711
  352. package/rich-text-view/definition.cjs +1 -1
  353. package/rich-text-view/definition.js +1 -1
  354. package/rich-text-view/index.cjs +1 -1
  355. package/rich-text-view/index.js +6 -4
  356. package/searchable-select/definition.cjs +1 -1
  357. package/searchable-select/definition.js +1 -1
  358. package/searchable-select/index.cjs +22 -22
  359. package/searchable-select/index.js +97 -93
  360. package/select/definition.cjs +1 -1
  361. package/select/definition.js +1 -1
  362. package/select/index.cjs +1 -1
  363. package/selectable-box/definition.cjs +1 -1
  364. package/selectable-box/definition.js +1 -1
  365. package/selectable-box/index.cjs +8 -8
  366. package/selectable-box/index.js +24 -20
  367. package/shared/patterns/anchored.d.ts +2 -0
  368. package/shared/styles/appearance.d.ts +2 -0
  369. package/shared/styles/connotation.d.ts +2 -0
  370. package/shared/styles/connotationOverrides.d.ts +1 -0
  371. package/shared/utils/component-enum.d.ts +7 -0
  372. package/side-drawer/definition.cjs +1 -1
  373. package/side-drawer/definition.js +1 -1
  374. package/side-drawer/index.cjs +1 -1
  375. package/side-drawer/index.js +10 -7
  376. package/simple-color-picker/definition.cjs +1 -1
  377. package/simple-color-picker/definition.js +1 -1
  378. package/simple-color-picker/index.cjs +2 -2
  379. package/simple-color-picker/index.js +20 -20
  380. package/slider/definition.cjs +2 -1
  381. package/slider/definition.js +2 -1
  382. package/slider/index.cjs +1 -1
  383. package/slider/index.js +1 -1
  384. package/split-button/definition.cjs +1 -1
  385. package/split-button/definition.js +1 -1
  386. package/split-button/index.cjs +9 -7
  387. package/split-button/index.js +58 -37
  388. package/status/definition.cjs +1 -1
  389. package/status/definition.js +1 -1
  390. package/status/index.cjs +5 -5
  391. package/status/index.js +22 -13
  392. package/switch/definition.cjs +1 -1
  393. package/switch/definition.js +1 -1
  394. package/switch/index.cjs +3 -3
  395. package/switch/index.js +22 -11
  396. package/tab/definition.cjs +1 -1
  397. package/tab/definition.js +1 -1
  398. package/tab/index.cjs +1 -1
  399. package/tab/index.js +1 -1
  400. package/tab-panel/definition.cjs +1 -1
  401. package/tab-panel/definition.js +1 -1
  402. package/tab-panel/index.cjs +1 -1
  403. package/tab-panel/index.js +1 -1
  404. package/table/definition.cjs +1 -1
  405. package/table/definition.js +1 -1
  406. package/table/index.cjs +4 -2
  407. package/table/index.js +12 -10
  408. package/tabs/definition.cjs +1 -1
  409. package/tabs/definition.js +1 -1
  410. package/tabs/index.cjs +4 -4
  411. package/tabs/index.js +32 -30
  412. package/tag/definition.cjs +1 -1
  413. package/tag/definition.js +1 -1
  414. package/tag/index.cjs +6 -6
  415. package/tag/index.js +28 -12
  416. package/tag-group/definition.cjs +1 -1
  417. package/tag-group/definition.js +1 -1
  418. package/tag-group/index.cjs +1 -1
  419. package/tag-group/index.js +6 -4
  420. package/text-area/definition.cjs +1 -1
  421. package/text-area/definition.js +1 -1
  422. package/text-area/index.cjs +5 -5
  423. package/text-area/index.js +18 -15
  424. package/text-field/index.cjs +1 -1
  425. package/text-field/index.js +1 -1
  426. package/time-picker/definition.cjs +1 -1
  427. package/time-picker/definition.js +1 -1
  428. package/time-picker/index.cjs +1 -1
  429. package/time-picker/index.js +9 -6
  430. package/toggletip/index.cjs +1 -1
  431. package/toggletip/index.js +1 -1
  432. package/tooltip/index.cjs +1 -1
  433. package/tooltip/index.js +1 -1
  434. package/tree-item/definition.cjs +1 -1
  435. package/tree-item/definition.js +1 -1
  436. package/tree-item/index.cjs +1 -1
  437. package/tree-item/index.js +1 -1
  438. package/tree-view/definition.cjs +1 -1
  439. package/tree-view/definition.js +1 -1
  440. package/tree-view/index.cjs +1 -1
  441. package/tree-view/index.js +7 -5
  442. package/unbundled/affix.cjs +0 -1
  443. package/unbundled/anchored.cjs +39 -1
  444. package/unbundled/anchored.js +28 -1
  445. package/unbundled/aria-binding-directive.cjs +2 -2
  446. package/unbundled/aria-binding-directive.js +2 -1
  447. package/unbundled/base-color-picker.cjs +0 -1
  448. package/unbundled/base-progress.cjs +0 -1
  449. package/unbundled/breadcrumb-item.cjs +0 -1
  450. package/unbundled/button.cjs +0 -1
  451. package/unbundled/calendar-event.cjs +29 -1
  452. package/unbundled/calendar-event.js +18 -1
  453. package/unbundled/calendar-picker.template.cjs +109 -91
  454. package/unbundled/calendar-picker.template.js +109 -90
  455. package/unbundled/char-count.cjs +0 -1
  456. package/unbundled/component-enum.cjs +18 -0
  457. package/unbundled/component-enum.js +13 -0
  458. package/unbundled/data-grid.options.cjs +8 -0
  459. package/unbundled/data-grid.options.js +3 -1
  460. package/unbundled/decorate.cjs +1 -1
  461. package/unbundled/decorate.js +1 -1
  462. package/unbundled/definition.cjs +1 -2
  463. package/unbundled/definition.js +1 -1
  464. package/unbundled/definition10.cjs +2 -343
  465. package/unbundled/definition10.js +4 -338
  466. package/unbundled/definition11.cjs +6 -7
  467. package/unbundled/definition11.js +6 -6
  468. package/unbundled/definition12.cjs +4 -4
  469. package/unbundled/definition12.js +5 -4
  470. package/unbundled/definition13.cjs +2 -2
  471. package/unbundled/definition13.js +2 -1
  472. package/unbundled/definition14.cjs +11 -3
  473. package/unbundled/definition14.js +11 -2
  474. package/unbundled/definition15.cjs +26 -5
  475. package/unbundled/definition15.js +26 -4
  476. package/unbundled/definition16.cjs +20 -14
  477. package/unbundled/definition16.js +20 -13
  478. package/unbundled/definition17.cjs +0 -1
  479. package/unbundled/definition18.cjs +4 -3
  480. package/unbundled/definition18.js +4 -2
  481. package/unbundled/definition19.cjs +2 -3
  482. package/unbundled/definition19.js +9 -8
  483. package/unbundled/definition2.cjs +8 -3
  484. package/unbundled/definition2.js +8 -2
  485. package/unbundled/definition20.cjs +1 -2
  486. package/unbundled/definition20.js +7 -6
  487. package/unbundled/definition21.cjs +4 -3
  488. package/unbundled/definition21.js +4 -2
  489. package/unbundled/definition22.cjs +0 -1
  490. package/unbundled/definition23.cjs +12 -6
  491. package/unbundled/definition23.js +11 -4
  492. package/unbundled/definition24.cjs +4 -4
  493. package/unbundled/definition24.js +5 -4
  494. package/unbundled/definition25.cjs +2 -3
  495. package/unbundled/definition25.js +2 -2
  496. package/unbundled/definition26.cjs +6 -4
  497. package/unbundled/definition26.js +5 -2
  498. package/unbundled/definition27.cjs +2 -2
  499. package/unbundled/definition27.js +2 -1
  500. package/unbundled/definition28.cjs +3 -3
  501. package/unbundled/definition28.js +2 -1
  502. package/unbundled/definition29.cjs +2 -3
  503. package/unbundled/definition29.js +3 -3
  504. package/unbundled/definition3.cjs +5 -6
  505. package/unbundled/definition3.js +5 -5
  506. package/unbundled/definition30.cjs +0 -1
  507. package/unbundled/definition31.cjs +15 -13
  508. package/unbundled/definition31.js +14 -11
  509. package/unbundled/definition32.cjs +0 -1
  510. package/unbundled/definition33.cjs +0 -1
  511. package/unbundled/definition34.cjs +0 -1
  512. package/unbundled/definition35.cjs +39 -51
  513. package/unbundled/definition35.js +40 -51
  514. package/unbundled/definition36.cjs +2 -3
  515. package/unbundled/definition36.js +9 -8
  516. package/unbundled/definition37.cjs +0 -1
  517. package/unbundled/definition38.cjs +0 -1
  518. package/unbundled/definition39.cjs +0 -1
  519. package/unbundled/definition4.cjs +4 -3
  520. package/unbundled/definition4.js +11 -6
  521. package/unbundled/definition40.cjs +5 -4
  522. package/unbundled/definition40.js +5 -3
  523. package/unbundled/definition41.cjs +0 -1
  524. package/unbundled/definition42.cjs +11 -3
  525. package/unbundled/definition42.js +11 -2
  526. package/unbundled/definition43.cjs +7 -3
  527. package/unbundled/definition43.js +7 -2
  528. package/unbundled/definition44.cjs +12 -11
  529. package/unbundled/definition44.js +11 -9
  530. package/unbundled/definition45.cjs +73 -52
  531. package/unbundled/definition45.js +69 -47
  532. package/unbundled/definition46.cjs +53 -46
  533. package/unbundled/definition46.js +49 -41
  534. package/unbundled/definition47.cjs +40 -165
  535. package/unbundled/definition47.js +36 -160
  536. package/unbundled/definition48.cjs +177 -32
  537. package/unbundled/definition48.js +174 -22
  538. package/unbundled/definition49.cjs +32 -596
  539. package/unbundled/definition49.js +29 -591
  540. package/unbundled/definition5.cjs +9 -3
  541. package/unbundled/definition5.js +15 -7
  542. package/unbundled/definition50.cjs +609 -78
  543. package/unbundled/definition50.js +605 -75
  544. package/unbundled/definition51.cjs +74 -34
  545. package/unbundled/definition51.js +70 -29
  546. package/unbundled/definition52.cjs +59 -24
  547. package/unbundled/definition52.js +57 -18
  548. package/unbundled/definition53.cjs +23 -40
  549. package/unbundled/definition53.js +19 -35
  550. package/unbundled/definition54.cjs +40 -316
  551. package/unbundled/definition54.js +38 -313
  552. package/unbundled/definition55.cjs +305 -196
  553. package/unbundled/definition55.js +301 -191
  554. package/unbundled/definition56.cjs +210 -41
  555. package/unbundled/definition56.js +206 -36
  556. package/unbundled/definition57.cjs +42 -271
  557. package/unbundled/definition57.js +38 -266
  558. package/unbundled/definition58.cjs +286 -51
  559. package/unbundled/definition58.js +283 -46
  560. package/unbundled/definition59.cjs +58 -147
  561. package/unbundled/definition59.js +59 -144
  562. package/unbundled/definition6.cjs +20 -6
  563. package/unbundled/definition6.js +20 -5
  564. package/unbundled/definition60.cjs +129 -226
  565. package/unbundled/definition60.js +126 -222
  566. package/unbundled/definition61.cjs +200 -420
  567. package/unbundled/definition61.js +197 -416
  568. package/unbundled/definition62.cjs +442 -3743
  569. package/unbundled/definition62.js +433 -3570
  570. package/unbundled/definition63.cjs +3729 -729
  571. package/unbundled/definition63.js +3558 -721
  572. package/unbundled/definition64.cjs +784 -98
  573. package/unbundled/definition64.js +781 -94
  574. package/unbundled/definition65.cjs +100 -1003
  575. package/unbundled/definition65.js +98 -997
  576. package/unbundled/definition66.cjs +996 -94
  577. package/unbundled/definition66.js +992 -89
  578. package/unbundled/definition67.cjs +111 -74
  579. package/unbundled/definition67.js +107 -63
  580. package/unbundled/definition68.cjs +69 -157
  581. package/unbundled/definition68.js +65 -152
  582. package/unbundled/definition69.cjs +156 -120
  583. package/unbundled/definition69.js +152 -115
  584. package/unbundled/definition7.cjs +0 -1
  585. package/unbundled/definition7.js +10 -4
  586. package/unbundled/definition70.cjs +154 -50
  587. package/unbundled/definition70.js +150 -45
  588. package/unbundled/definition71.cjs +58 -86
  589. package/unbundled/definition71.js +57 -81
  590. package/unbundled/definition72.cjs +99 -20
  591. package/unbundled/definition72.js +98 -15
  592. package/unbundled/definition73.cjs +20 -89
  593. package/unbundled/definition73.js +16 -84
  594. package/unbundled/definition74.cjs +79 -296
  595. package/unbundled/definition74.js +73 -217
  596. package/unbundled/definition75.cjs +291 -312
  597. package/unbundled/definition75.js +221 -306
  598. package/unbundled/definition76.cjs +328 -27
  599. package/unbundled/definition76.js +320 -23
  600. package/unbundled/definition77.cjs +27 -125
  601. package/unbundled/definition77.js +23 -120
  602. package/unbundled/definition78.cjs +120 -233
  603. package/unbundled/definition78.js +116 -228
  604. package/unbundled/definition79.cjs +258 -26
  605. package/unbundled/definition79.js +249 -23
  606. package/unbundled/definition8.cjs +17 -10
  607. package/unbundled/definition8.js +17 -9
  608. package/unbundled/definition80.cjs +29 -149
  609. package/unbundled/definition80.js +27 -134
  610. package/unbundled/definition81.cjs +118 -174
  611. package/unbundled/definition81.js +109 -169
  612. package/unbundled/definition82.cjs +180 -477
  613. package/unbundled/definition82.js +178 -472
  614. package/unbundled/definition83.cjs +517 -0
  615. package/unbundled/definition83.js +498 -0
  616. package/unbundled/definition9.cjs +4 -3
  617. package/unbundled/definition9.js +4 -2
  618. package/unbundled/delegates-aria.cjs +4 -2
  619. package/unbundled/delegates-aria.js +4 -2
  620. package/unbundled/divider.cjs +8 -3
  621. package/unbundled/divider.js +3 -3
  622. package/unbundled/en-US.cjs +34 -33
  623. package/unbundled/en-US.js +34 -33
  624. package/unbundled/feedback-message.cjs +59 -0
  625. package/unbundled/feedback-message.js +48 -0
  626. package/unbundled/form-associated.cjs +1 -4
  627. package/unbundled/form-associated.js +1 -3
  628. package/unbundled/form-element.cjs +0 -1
  629. package/unbundled/icon.cjs +0 -1
  630. package/unbundled/kbd-shortcut.cjs +0 -1
  631. package/unbundled/linkable.cjs +0 -1
  632. package/unbundled/listbox.cjs +0 -2
  633. package/unbundled/listbox.js +0 -1
  634. package/unbundled/localized.cjs +0 -1
  635. package/unbundled/mixins.cjs +3 -54
  636. package/unbundled/mixins.js +3 -47
  637. package/unbundled/numberConverter.cjs +8 -3
  638. package/unbundled/numberConverter.js +8 -3
  639. package/unbundled/optgroup.cjs +0 -1
  640. package/unbundled/option.cjs +8 -1
  641. package/unbundled/option.js +3 -1
  642. package/unbundled/picker-field.template.cjs +1 -2
  643. package/unbundled/picker-field.template.js +1 -1
  644. package/unbundled/randomId.cjs +0 -1
  645. package/unbundled/{chunk.cjs → rolldown-runtime.cjs} +1 -1
  646. package/unbundled/scrollIntoView.cjs +0 -1
  647. package/unbundled/scrollIntoView.js +0 -1
  648. package/unbundled/slider.template.cjs +340 -2
  649. package/unbundled/slider.template.js +338 -5
  650. package/unbundled/text-field.cjs +1 -1
  651. package/unbundled/text-field.js +1 -1
  652. package/unbundled/time-selection-picker.template.cjs +2 -3
  653. package/unbundled/time-selection-picker.template.js +2 -2
  654. package/unbundled/vivid-element.cjs +63 -4
  655. package/unbundled/vivid-element.js +63 -3
  656. package/unbundled/with-contextual-help.cjs +0 -1
  657. package/unbundled/with-error-text.cjs +0 -1
  658. package/unbundled/with-success-text.cjs +0 -1
  659. package/video-player/definition.cjs +1 -1
  660. package/video-player/definition.js +1 -1
  661. package/video-player/index.cjs +31 -31
  662. package/video-player/index.js +2094 -2085
  663. package/visually-hidden/index.cjs +1 -1
  664. package/vivid.api.json +488 -1165
  665. package/lib/accordion/variations.browser-spec.d.ts +0 -1
  666. package/lib/action-group/variations.browser-spec.d.ts +0 -1
  667. package/lib/alert/variations.browser-spec.d.ts +0 -1
  668. package/lib/audio-player/variations.browser-spec.d.ts +0 -1
  669. package/lib/avatar/variations.browser-spec.d.ts +0 -1
  670. package/lib/badge/variations.browser-spec.d.ts +0 -1
  671. package/lib/banner/variations.browser-spec.d.ts +0 -1
  672. package/lib/breadcrumb-item/variations.browser-spec.d.ts +0 -1
  673. package/lib/button/variations.browser-spec.d.ts +0 -1
  674. package/lib/calendar/variations.browser-spec.d.ts +0 -1
  675. package/lib/calendar-event/variations.browser-spec.d.ts +0 -1
  676. package/lib/card/variations.browser-spec.d.ts +0 -1
  677. package/lib/checkbox/variations.browser-spec.d.ts +0 -1
  678. package/lib/color-picker/variations.browser-spec.d.ts +0 -1
  679. package/lib/combobox/variations.browser-spec.d.ts +0 -1
  680. package/lib/contextual-help/variations.browser-spec.d.ts +0 -1
  681. package/lib/country/variations.browser-spec.d.ts +0 -1
  682. package/lib/data-grid/variations.browser-spec.d.ts +0 -1
  683. package/lib/date-picker/variations.browser-spec.d.ts +0 -1
  684. package/lib/date-range-picker/variations.browser-spec.d.ts +0 -1
  685. package/lib/date-time-picker/variations.browser-spec.d.ts +0 -1
  686. package/lib/dial-pad/variations.browser-spec.d.ts +0 -1
  687. package/lib/dialog/variations.browser-spec.d.ts +0 -1
  688. package/lib/divider/variations.browser-spec.d.ts +0 -1
  689. package/lib/empty-state/variations.browser-spec.d.ts +0 -1
  690. package/lib/fab/variations.browser-spec.d.ts +0 -1
  691. package/lib/file-picker/variations.browser-spec.d.ts +0 -1
  692. package/lib/flag/variations.browser-spec.d.ts +0 -1
  693. package/lib/header/variations.browser-spec.d.ts +0 -1
  694. package/lib/icon/variations.browser-spec.d.ts +0 -1
  695. package/lib/kbd-key/variations.browser-spec.d.ts +0 -1
  696. package/lib/kbd-shortcut/variations.browser-spec.d.ts +0 -1
  697. package/lib/layout/variations.browser-spec.d.ts +0 -1
  698. package/lib/listbox/variations.browser-spec.d.ts +0 -1
  699. package/lib/menu/variations.browser-spec.d.ts +0 -1
  700. package/lib/menu-item/variations.browser-spec.d.ts +0 -1
  701. package/lib/nav/variations.browser-spec.d.ts +0 -1
  702. package/lib/nav-disclosure/variations.browser-spec.d.ts +0 -1
  703. package/lib/nav-item/variations.browser-spec.d.ts +0 -1
  704. package/lib/note/variations.browser-spec.d.ts +0 -1
  705. package/lib/number-field/variations.browser-spec.d.ts +0 -1
  706. package/lib/optgroup/variations.browser-spec.d.ts +0 -1
  707. package/lib/option/variations.browser-spec.d.ts +0 -1
  708. package/lib/pagination/variations.browser-spec.d.ts +0 -1
  709. package/lib/popover/variations.browser-spec.d.ts +0 -1
  710. package/lib/progress/variations.browser-spec.d.ts +0 -1
  711. package/lib/progress-ring/variations.browser-spec.d.ts +0 -1
  712. package/lib/radio/variations.browser-spec.d.ts +0 -1
  713. package/lib/radio-group/variations.browser-spec.d.ts +0 -1
  714. package/lib/range-slider/variations.browser-spec.d.ts +0 -1
  715. package/lib/rich-text-editor/variations.browser-spec.d.ts +0 -1
  716. package/lib/rich-text-view/variations.browser-spec.d.ts +0 -1
  717. package/lib/searchable-select/variations.browser-spec.d.ts +0 -1
  718. package/lib/select/variations.browser-spec.d.ts +0 -1
  719. package/lib/selectable-box/variations.browser-spec.d.ts +0 -1
  720. package/lib/side-drawer/variations.browser-spec.d.ts +0 -1
  721. package/lib/simple-color-picker/variations.browser-spec.d.ts +0 -1
  722. package/lib/slider/variations.browser-spec.d.ts +0 -1
  723. package/lib/split-button/variations.browser-spec.d.ts +0 -1
  724. package/lib/status/variations.browser-spec.d.ts +0 -1
  725. package/lib/switch/variations.browser-spec.d.ts +0 -1
  726. package/lib/table/variations.browser-spec.d.ts +0 -1
  727. package/lib/tabs/variations.browser-spec.d.ts +0 -1
  728. package/lib/tag/variations.browser-spec.d.ts +0 -1
  729. package/lib/text-area/variations.browser-spec.d.ts +0 -1
  730. package/lib/text-field/variations.browser-spec.d.ts +0 -1
  731. package/lib/time-picker/variations.browser-spec.d.ts +0 -1
  732. package/lib/toggletip/variations.browser-spec.d.ts +0 -1
  733. package/lib/tooltip/variations.browser-spec.d.ts +0 -1
  734. package/lib/tree-item/variations.browser-spec.d.ts +0 -1
  735. package/lib/video-player/variations.browser-spec.d.ts +0 -1
  736. /package/lib/{accordion-item/variations.browser-spec.d.ts → form-field/index.d.ts} +0 -0
  737. /package/unbundled/{chunk.js → rolldown-runtime.js} +0 -0
@@ -1,141 +1,827 @@
1
- require("./chunk.cjs");
2
1
  const require_vivid_element = require("./vivid-element.cjs");
2
+ const require_definition = require("./definition.cjs");
3
3
  const require_decorate = require("./decorate.cjs");
4
- const require_slottable_request = require("./slottable-request.cjs");
4
+ const require_affix = require("./affix.cjs");
5
+ const require_component_enum = require("./component-enum.cjs");
6
+ const require_form_associated = require("./form-associated.cjs");
7
+ const require_localized = require("./localized.cjs");
8
+ const require_definition$1 = require("./definition6.cjs");
9
+ const require_dialog = require("./dialog.cjs");
10
+ const require_definition$2 = require("./definition9.cjs");
11
+ const require_host_semantics = require("./host-semantics.cjs");
12
+ const require_feedback_message = require("./feedback-message.cjs");
13
+ const require_form_element = require("./form-element.cjs");
14
+ const require_with_error_text = require("./with-error-text.cjs");
15
+ const require_with_success_text = require("./with-success-text.cjs");
16
+ const require_mixins = require("./mixins.cjs");
17
+ const require_with_contextual_help = require("./with-contextual-help.cjs");
18
+ const require_option = require("./option.cjs");
19
+ const require_definition$3 = require("./definition29.cjs");
20
+ const require_definition$4 = require("./definition30.cjs");
21
+ const require_listbox = require("./listbox.cjs");
5
22
  let _microsoft_fast_element = require("@microsoft/fast-element");
6
- let prosemirror_model = require("prosemirror-model");
7
- //#region src/lib/rich-text-view/rich-text-view.scss?inline
8
- var rich_text_view_default = ":host{display:contents}.content{overflow-wrap:break-word;white-space:break-spaces;display:contents}";
23
+ let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
24
+ //#region src/lib/select/select.scss?inline
25
+ var select_default = ".label-wrapper{align-items:center;gap:var(--label-wrapper-gap,4px);flex-direction:row;display:flex}.label-wrapper[hidden]{display:none}.label:not(slot),.label::slotted(label){flex:0 auto}.chevron{font:var(--vvd-typography-base-extended);flex-shrink:0;display:flex;transform:rotate(0)}@media (prefers-reduced-motion:no-preference){.chevron{transition:transform .2s}}:host([data-expanded=true]) .chevron,:host([open]) .chevron{transform:rotate(180deg)}:host(:focus-visible){outline:none}:host{--_low-ink-color:var(--vvd-color-neutral-600);--focus-stroke-gap-color:transparent;flex-direction:column;gap:4px;display:inline-flex}:host([disabled]){--_low-ink-color:var(--vvd-color-neutral-600);cursor:not-allowed}.label{color:var(--vvd-color-canvas-text);font:var(--vvd-typography-base)}.control{border-radius:var(--_select-control-border-radius);block-size:var(--_select-block-size);padding-inline:var(--_select-padding-inline);--_select-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2);--_select-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));--_select-padding-inline:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);background-color:var(--_appearance-color-fill);box-shadow:inset 0 0 0 1px var(--_appearance-color-outline);color:var(--_appearance-color-text);font:var(--vvd-typography-base);justify-content:space-between;align-items:center;gap:8px;transition:box-shadow .2s,background-color .2s;display:flex}.control.size-condensed{--_select-icon-size:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2))) / 2.5);--_select-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 8));--_select-padding-inline:calc(calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16)) / 2)}.control.size-condensed:not(.shape-pill){--_select-control-border-radius:4px}.control-wrapper{position:relative}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}.control:not(.shape-pill){--_select-control-border-radius:8px}.control.shape-pill{--_select-control-border-radius:24px}.listbox{max-height:var(--select-height,408px);flex-direction:column;gap:2px;padding:4px;display:flex;overflow-y:auto}:host([multiple]:focus-visible) .listbox{box-shadow:0 0 0 4px color-mix(in sRGB, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px));border-radius:8px}.selected-value{white-space:nowrap;flex-grow:1;align-items:center;column-gap:12px;display:flex;overflow:hidden}.selected-value .text{text-overflow:ellipsis;max-inline-size:100%;overflow:hidden}.control.shows-placeholder .selected-value .text{color:var(--vvd-color-neutral-600)}.selected-value slot[name=icon]{flex:0 0 var(--_select-icon-size);font-size:var(--_select-icon-size);line-height:1}.control.has-meta .selected-value{padding-inline-end:8px}.feedback-wrapper{display:contents}::part(popup-base){inline-size:max-content;min-inline-size:var(--_select-fixed-width,100%)}:host([multiple]) ::part(popup-base){position:static}@supports selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant,:has(.clear-button:focus)){--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in sRGB, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px))}}@supports not selector(:has(*)){:host(:focus-within) .control:not(.has-activedescendant){--focus-stroke-gap-color:transparent;box-shadow:0 0 0 4px color-mix(in sRGB, var(--focus-stroke-color,var(--vvd-color-cta-500)), transparent 85%), inset 0 0 0 3px var(--focus-stroke-gap-color,currentColor);outline:1px solid var(--focus-stroke-color,var(--vvd-color-cta-500));outline-offset:calc(-1px - var(--focus-inset,0px))}}:host(:not(:focus-visible)){--_suppressable-focus-shadow:none;--_suppressable-focus-outline:none;--_suppressable-focus-outline-offset:0}:host([multiple]) .clear-button{margin-inline-start:auto}:host([multiple][clearable]) .label-wrapper{min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2) - 16))}";
9
26
  //#endregion
10
- //#region src/lib/rich-text-view/rich-text-view.ts
27
+ //#region src/lib/select/select.ts
28
+ var selectAppearance = require_component_enum.componentEnum(["fieldset", "ghost"], "fieldset");
11
29
  /**
12
30
  * @public
13
- * @component rich-text-view
14
- * @dynamicSlot `@vonage/vivid#RteChildSlotProps` child - Used for custom rendered children.
31
+ * @component select
32
+ * @slot - Default slot.
33
+ * @slot icon - The preferred way to add an icon to the select control.
34
+ * @slot meta - Slot to add meta content to the select control.
35
+ * @slot helper-text - Describes how to use the select. Alternative to the `helper-text` attribute.
36
+ * @event {CustomEvent<undefined>} input - Fires a custom 'input' event when the value updates
37
+ * @event {CustomEvent<HTMLElement>} change - Fires a custom 'change' event when the value updates
38
+ * @vueModel modelValue value input,@lazy:change `event.currentTarget.value`
39
+ * @testAction selectOptionByValue selectOptionByValue
40
+ * @testAction selectOptionByText selectOptionByText
15
41
  */
16
- var RichTextView = class extends require_vivid_element.VividElement {
42
+ var Select = class extends require_mixins.WithLightDOMFeedback(require_with_contextual_help.WithContextualHelp(require_with_error_text.WithErrorText(require_with_success_text.WithSuccessText(require_localized.Localized(require_form_element.FormElement(require_host_semantics.HostSemantics(require_affix.AffixIconWithTrailing(require_form_associated.FormAssociated(require_listbox.Listbox))))))))) {
17
43
  constructor(..._args) {
18
44
  super(..._args);
19
- this._slotCounter = 0;
20
- this._slottedChildren = /* @__PURE__ */ new Set();
21
- this._slotRequests = /* @__PURE__ */ new Set();
22
- this._contentElement = null;
45
+ this.proxy = document.createElement("select");
46
+ this.activeIndex = -1;
47
+ this.rangeStartIndex = -1;
48
+ this.open = false;
49
+ this.listboxId = (0, _microsoft_fast_web_utilities.uniqueId)("listbox-");
50
+ this.maxHeight = 0;
51
+ this.fixedDropdown = false;
52
+ this._feedbackWrapper = null;
53
+ this._isResetting = false;
54
+ this.clearable = false;
55
+ this._isClearButtonFocused = false;
56
+ }
57
+ /**
58
+ * Returns the last checked option.
59
+ *
60
+ * @internal
61
+ */
62
+ get activeOption() {
63
+ return this.options[this.activeIndex];
64
+ }
65
+ /**
66
+ * Returns the list of checked options.
67
+ *
68
+ * @internal
69
+ */
70
+ get checkedOptions() {
71
+ return this.options.filter((o) => o.checked);
72
+ }
73
+ /**
74
+ * Returns the index of the first selected option.
75
+ *
76
+ * @internal
77
+ */
78
+ get firstSelectedOptionIndex() {
79
+ return this.options.indexOf(this.firstSelectedOption);
80
+ }
81
+ /**
82
+ * Updates the `ariaActiveDescendant` property when the active index changes.
83
+ *
84
+ * @internal
85
+ */
86
+ activeIndexChanged(_, next) {
87
+ this._activeDescendant = this.options[next]?.id ?? "";
88
+ this.focusAndScrollOptionIntoView();
89
+ }
90
+ /**
91
+ * Toggles the checked state for the currently active option.
92
+ *
93
+ * @remarks
94
+ * Multiple-selection mode only.
95
+ *
96
+ * @internal
97
+ */
98
+ checkActiveIndex() {
99
+ const activeItem = this.activeOption;
100
+ /* v8 ignore else -- @preserve */
101
+ if (activeItem) activeItem.checked = true;
102
+ }
103
+ /**
104
+ * Sets the active index to the first option and marks it as checked.
105
+ *
106
+ * @remarks
107
+ * Multi-selection mode only.
108
+ *
109
+ * @param preserveChecked - mark all options unchecked before changing the active index
110
+ *
111
+ * @internal
112
+ */
113
+ checkFirstOption(preserveChecked) {
114
+ const firstSelectableIndex = this.getNextSelectableIndex(0);
115
+ if (firstSelectableIndex === -1) return;
116
+ if (preserveChecked) {
117
+ if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
118
+ this.options.forEach((o, i) => {
119
+ o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, firstSelectableIndex, this.rangeStartIndex + 1) && !o.disabled;
120
+ });
121
+ } else this.uncheckAllOptions();
122
+ this.activeIndex = firstSelectableIndex;
123
+ this.checkActiveIndex();
124
+ }
125
+ /**
126
+ * Decrements the active index and sets the matching option as checked.
127
+ *
128
+ * @remarks
129
+ * Multi-selection mode only.
130
+ *
131
+ * @param preserveChecked - mark all options unchecked before changing the active index
132
+ *
133
+ * @internal
134
+ */
135
+ checkLastOption(preserveChecked) {
136
+ const lastSelectableIndex = this.getPreviousSelectableIndex(this.length - 1);
137
+ if (lastSelectableIndex === -1) return;
138
+ if (preserveChecked) {
139
+ if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
140
+ this.options.forEach((o, i) => {
141
+ o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, lastSelectableIndex + 1) && !o.disabled;
142
+ });
143
+ } else this.uncheckAllOptions();
144
+ this.activeIndex = lastSelectableIndex;
145
+ this.checkActiveIndex();
146
+ }
147
+ /**
148
+ * Increments the active index and marks the matching option as checked.
149
+ *
150
+ * @remarks
151
+ * Multiple-selection mode only.
152
+ *
153
+ * @param preserveChecked - mark all options unchecked before changing the active index
154
+ *
155
+ * @internal
156
+ */
157
+ checkNextOption(preserveChecked) {
158
+ const nextIndex = this.getNextSelectableIndex(this.activeIndex + 1);
159
+ if (nextIndex === -1) return;
160
+ if (preserveChecked) {
161
+ if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
162
+ this.options.forEach((o, i) => {
163
+ o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, this.rangeStartIndex, nextIndex + 1) && !o.disabled;
164
+ });
165
+ } else this.uncheckAllOptions();
166
+ this.activeIndex = nextIndex;
167
+ this.checkActiveIndex();
168
+ }
169
+ /**
170
+ * Decrements the active index and marks the matching option as checked.
171
+ *
172
+ * @remarks
173
+ * Multiple-selection mode only.
174
+ *
175
+ * @param preserveChecked - mark all options unchecked before changing the active index
176
+ *
177
+ * @internal
178
+ */
179
+ checkPreviousOption(preserveChecked) {
180
+ const previousIndex = this.getPreviousSelectableIndex(this.activeIndex - 1);
181
+ if (previousIndex === -1) return;
182
+ if (preserveChecked) {
183
+ if (this.rangeStartIndex === -1) this.rangeStartIndex = this.activeIndex;
184
+ if (this.checkedOptions.length === 1) this.rangeStartIndex += 1;
185
+ this.options.forEach((o, i) => {
186
+ o.checked = (0, _microsoft_fast_web_utilities.inRange)(i, previousIndex, this.rangeStartIndex + 1) && !o.disabled;
187
+ });
188
+ } else this.uncheckAllOptions();
189
+ this.activeIndex = previousIndex;
190
+ this.checkActiveIndex();
191
+ }
192
+ /** @internal */
193
+ focusAndScrollOptionIntoView() {
194
+ super.focusAndScrollOptionIntoView(this.activeOption);
195
+ }
196
+ /**
197
+ * In multiple-selection mode:
198
+ * If any options are selected, the first selected option is checked when
199
+ * the listbox receives focus. If no options are selected, the first
200
+ * selectable option is checked.
201
+ *
202
+ * @internal
203
+ */
204
+ focusinHandler(e) {
205
+ if (!this.multiple) {
206
+ super.focusinHandler(e);
207
+ return;
208
+ }
209
+ /* v8 ignore else -- @preserve */
210
+ if (!this.shouldSkipFocus && e.target === e.currentTarget) {
211
+ this.uncheckAllOptions();
212
+ if (this.activeIndex === -1) this.activeIndex = this.firstSelectedOptionIndex !== -1 ? this.firstSelectedOptionIndex : 0;
213
+ this.checkActiveIndex();
214
+ this.setSelectedOptions();
215
+ this.focusAndScrollOptionIntoView();
216
+ }
217
+ this.shouldSkipFocus = false;
218
+ }
219
+ /** Sets an option as selected and gives it focus. */
220
+ setSelectedOptions() {
221
+ if (!this.multiple) {
222
+ super.setSelectedOptions();
223
+ return;
224
+ }
225
+ /* v8 ignore else -- @preserve */
226
+ if (this.$fastController.isConnected && this.options) {
227
+ this.selectedOptions = this.options.filter((o) => o.selected);
228
+ this.focusAndScrollOptionIntoView();
229
+ }
230
+ }
231
+ /**
232
+ * Toggles the selected state of the provided options. If any provided items
233
+ * are in an unselected state, all items are set to selected. If every
234
+ * provided item is selected, they are all unselected.
235
+ *
236
+ * @internal
237
+ */
238
+ toggleSelectedForAllCheckedOptions() {
239
+ const enabledCheckedOptions = this.checkedOptions.filter((o) => !o.disabled);
240
+ const force = !enabledCheckedOptions.every((o) => o.selected);
241
+ enabledCheckedOptions.forEach((o) => o.selected = force);
242
+ this.selectedIndex = this.options.indexOf(enabledCheckedOptions[enabledCheckedOptions.length - 1]);
243
+ this.setSelectedOptions();
244
+ this.updateValue(true);
245
+ }
246
+ /** @internal */
247
+ typeaheadBufferChanged(prev, next) {
248
+ if (!this.multiple) {
249
+ super.typeaheadBufferChanged(prev, next);
250
+ return;
251
+ }
252
+ /* v8 ignore if -- @preserve */
253
+ if (this.$fastController.isConnected) {
254
+ const typeaheadMatches = this.getTypeaheadMatches();
255
+ const activeIndex = this.options.indexOf(typeaheadMatches[0]);
256
+ if (activeIndex > -1) {
257
+ this.activeIndex = activeIndex;
258
+ this.uncheckAllOptions();
259
+ this.checkActiveIndex();
260
+ }
261
+ this.typeaheadExpired = false;
262
+ }
263
+ }
264
+ /**
265
+ * Unchecks all options.
266
+ *
267
+ * @remarks
268
+ * Multiple-selection mode only.
269
+ *
270
+ * @param preserveChecked - reset the rangeStartIndex
271
+ *
272
+ * @internal
273
+ */
274
+ uncheckAllOptions(preserveChecked = false) {
275
+ this.options.forEach((o) => o.checked = false);
276
+ /* v8 ignore else -- @preserve */
277
+ if (!preserveChecked) this.rangeStartIndex = -1;
278
+ }
279
+ /**
280
+ * Sets focus when the open property changes.
281
+ *
282
+ * @internal
283
+ */
284
+ openChanged(prev, next) {
285
+ if (!this.collapsible) return;
286
+ if (this.open) {
287
+ this.focusAndScrollOptionIntoView();
288
+ this.indexWhenOpened = this.selectedIndex;
289
+ _microsoft_fast_element.Updates.enqueue(() => this.focus());
290
+ return;
291
+ }
292
+ const didClose = prev && !next;
293
+ const selectionChangedWhileOpen = this.indexWhenOpened !== this.selectedIndex;
294
+ if (didClose && selectionChangedWhileOpen) this.updateValue(true);
295
+ }
296
+ /**
297
+ * The component is collapsible when in single-selection mode.
298
+ *
299
+ * @internal
300
+ */
301
+ get collapsible() {
302
+ return !this.multiple;
23
303
  }
24
304
  /** @internal */
25
- viewChanged(oldView, newView) {
26
- if (oldView) this._removeStyles();
27
- if (newView) this._addStyles(newView);
28
- this._updateView();
29
- }
30
- _addStyles(view) {
31
- const config = view[require_slottable_request.impl].config[require_slottable_request.impl];
32
- this._styles = new _microsoft_fast_element.ElementStyles(require_slottable_request.sortedContributions(config.features.flatMap((f) => f.getStyles())));
33
- this._styles.addStylesTo(this.shadowRoot);
34
- }
35
- _removeStyles() {
36
- if (this._styles) {
37
- this._styles.removeStylesFrom(this.shadowRoot);
38
- this._styles = void 0;
305
+ valueChanged(prev, next) {
306
+ const nextSelectedIndex = this.options.findIndex((el) => el.value === next);
307
+ const validNextSelectedIndex = this._validSelectedIndex(nextSelectedIndex);
308
+ const nextValue = this.options[validNextSelectedIndex]?.value ?? "";
309
+ if (this.selectedIndex !== validNextSelectedIndex) this.selectedIndex = validNextSelectedIndex;
310
+ if (next !== nextValue) return;
311
+ super.valueChanged(prev, next);
312
+ this.updateDisplayValue();
313
+ }
314
+ /**
315
+ * Sets the value and display value to match the first selected option.
316
+ *
317
+ * @param shouldEmit - if true, the input and change events will be emitted
318
+ *
319
+ * @internal
320
+ */
321
+ updateValue(shouldEmit) {
322
+ if (this.$fastController.isConnected) this.value = this.firstSelectedOption?.value ?? "";
323
+ if (shouldEmit) {
324
+ this.$emit("input");
325
+ this.$emit("change", this, {
326
+ bubbles: true,
327
+ composed: void 0
328
+ });
39
329
  }
40
330
  }
41
- _cleanupLightDom() {
42
- for (const el of this._slottedChildren) this.removeChild(el);
43
- for (const slotName of this._slotRequests) require_slottable_request.dispatchSlottableRequest(this, "child", slotName, require_slottable_request.removeSymbol);
44
- this._slottedChildren.clear();
45
- this._slotRequests.clear();
46
- this._slotCounter = 0;
47
- }
48
- _updateView() {
49
- if (!this._contentElement) return;
50
- this._contentElement.innerHTML = "";
51
- this._cleanupLightDom();
52
- if (this.view) this._contentElement.appendChild(this._renderView(this.view));
53
- }
54
- _renderView(rteView) {
55
- const ctx = rteView[require_slottable_request.impl];
56
- if (rteView.type === "node" && rteView.node.type === "doc") rteView = rteView.children;
57
- if (rteView.type === "fragment") {
58
- const frag = document.createDocumentFragment();
59
- for (const child of rteView.content) frag.appendChild(this._renderView(child));
60
- return frag;
331
+ /**
332
+ * Updates the proxy value when the selected index changes.
333
+ *
334
+ * @param prev - the previous selected index
335
+ * @param next - the next selected index
336
+ *
337
+ * @internal
338
+ */
339
+ selectedIndexChanged(prev, next) {
340
+ super.selectedIndexChanged(prev, next);
341
+ this.updateValue();
342
+ }
343
+ /**
344
+ * Handle opening and closing the listbox when the select is clicked.
345
+ *
346
+ * @param e - the mouse event
347
+ * @internal
348
+ */
349
+ clickHandler(e) {
350
+ if (this.disabled || this._isFromContextualHelp(e)) return;
351
+ const clickedOption = e.target.closest(`option,[role=option],[data-vvd-component=option]`);
352
+ if (clickedOption && clickedOption.disabled) return;
353
+ if (this.multiple) {
354
+ this.uncheckAllOptions();
355
+ this.activeIndex = this.options.indexOf(clickedOption);
356
+ this.checkActiveIndex();
357
+ this.toggleSelectedForAllCheckedOptions();
358
+ } else super.clickHandler(e);
359
+ if (this.collapsible) this.open = !this.open;
360
+ return true;
361
+ }
362
+ /**
363
+ * Handles focus state when the element or its children lose focus.
364
+ *
365
+ * @param e - The focus event
366
+ * @internal
367
+ */
368
+ focusoutHandler(e) {
369
+ if (this.multiple) this.uncheckAllOptions();
370
+ if (!this.open) return true;
371
+ const focusTarget = e.relatedTarget;
372
+ if (this.isSameNode(focusTarget)) {
373
+ this.focus();
374
+ return;
61
375
  }
62
- const customRenderedView = ctx.options.renderChildView?.(rteView) ?? false;
63
- if (customRenderedView) return this._handleCustomRender(rteView, customRenderedView);
64
- else return this._renderDefault(rteView);
65
- }
66
- _handleCustomRender(rteView, customResult) {
67
- const slotName = `child-view-${this._slotCounter++}`;
68
- const slot = document.createElement("slot");
69
- slot.setAttribute("name", slotName);
70
- if (customResult === true) {
71
- this._slotRequests.add(slotName);
72
- require_slottable_request.dispatchSlottableRequest(this, "child", slotName, { view: rteView });
73
- } else {
74
- const { dom, contentDom = dom } = customResult;
75
- const nestedView = document.createElement(this.tagName);
76
- nestedView.view = rteView.children;
77
- contentDom.appendChild(nestedView);
78
- dom.setAttribute("slot", slotName);
79
- this.appendChild(dom);
80
- this._slottedChildren.add(dom);
376
+ /* v8 ignore else -- @preserve */
377
+ if (!this.options.includes(focusTarget)) {
378
+ this.open = false;
379
+ if (this.indexWhenOpened !== this.selectedIndex) this.updateValue(true);
81
380
  }
82
- return slot;
83
- }
84
- _renderDefault(view) {
85
- const schema = view[require_slottable_request.impl].config[require_slottable_request.impl].schema;
86
- if (view.type === "node" && view.node.type === "text") return document.createTextNode(view.node.text);
87
- const item = view.type === "node" ? view.node : view.mark;
88
- const pmItem = view.type === "node" ? prosemirror_model.Node.fromJSON(schema, item) : prosemirror_model.Mark.fromJSON(schema, item);
89
- const spec = pmItem instanceof prosemirror_model.Node ? pmItem.type.spec.toDOM(pmItem) : pmItem.type.spec.toDOM(pmItem, true);
90
- const { dom, contentDOM = dom } = prosemirror_model.DOMSerializer.renderSpec(document, spec);
91
- const childrenRendered = this._renderView(view.children);
92
- contentDOM.appendChild(childrenRendered);
93
- return dom;
381
+ }
382
+ /**
383
+ * Updates the value when an option's value changes.
384
+ *
385
+ * @param source - the source object
386
+ * @param propertyName - the property to evaluate
387
+ *
388
+ * @internal
389
+ */
390
+ handleChange(source, propertyName) {
391
+ super.handleChange(source, propertyName);
392
+ if (propertyName === "value") this.updateValue();
393
+ }
394
+ /**
395
+ * Prevents focus when a scrollbar is clicked.
396
+ *
397
+ * @param e - the mouse event object
398
+ *
399
+ * @internal
400
+ */
401
+ mousedownHandler(e) {
402
+ if (e.offsetX >= 0 && e.offsetX <= this.listbox.scrollWidth) return super.mousedownHandler(e);
403
+ return this.collapsible;
94
404
  }
95
405
  /** @internal */
406
+ multipleChanged(_, next) {
407
+ this.options.forEach((o) => {
408
+ o.checked = next ? false : void 0;
409
+ });
410
+ this.setSelectedOptions();
411
+ /* v8 ignore if -- @preserve */
412
+ if (this.proxy) this.proxy.multiple = next;
413
+ }
414
+ /**
415
+ * Updates the selectedness of each option when the list of selected options changes.
416
+ *
417
+ * @param prev - the previous list of selected options
418
+ * @param next - the current list of selected options
419
+ *
420
+ * @internal
421
+ */
422
+ selectedOptionsChanged(prev, next) {
423
+ super.selectedOptionsChanged(prev, next);
424
+ this.options.forEach((o, i) => {
425
+ const proxyOption = this.proxy.options.item(i);
426
+ if (proxyOption) proxyOption.selected = o.selected;
427
+ });
428
+ }
429
+ /**
430
+ * Resets and fills the proxy to match the component's options.
431
+ *
432
+ * @internal
433
+ */
434
+ setProxyOptions() {
435
+ /* v8 ignore else -- @preserve */
436
+ if (this.proxy instanceof HTMLSelectElement && this.options) {
437
+ this.proxy.length = 0;
438
+ this.options.forEach((option) => {
439
+ const proxyOption = option.proxy || (option instanceof HTMLOptionElement ? option.cloneNode() : null);
440
+ if (proxyOption) this.proxy.options.add(proxyOption);
441
+ });
442
+ }
443
+ }
444
+ /**
445
+ * Handles keydown actions when the select is in multiple selection mode.
446
+ *
447
+ * @internal
448
+ */
449
+ multipleKeydownHandler(e) {
450
+ if (this.disabled) return;
451
+ const { key, shiftKey } = e;
452
+ this.shouldSkipFocus = false;
453
+ switch (key) {
454
+ case _microsoft_fast_web_utilities.keyHome:
455
+ this.checkFirstOption(shiftKey);
456
+ return;
457
+ case _microsoft_fast_web_utilities.keyArrowDown:
458
+ this.checkNextOption(shiftKey);
459
+ return;
460
+ case _microsoft_fast_web_utilities.keyArrowUp:
461
+ this.checkPreviousOption(shiftKey);
462
+ return;
463
+ case _microsoft_fast_web_utilities.keyEnd:
464
+ this.checkLastOption(shiftKey);
465
+ return;
466
+ case _microsoft_fast_web_utilities.keyTab:
467
+ this.focusAndScrollOptionIntoView();
468
+ return;
469
+ case _microsoft_fast_web_utilities.keyEscape:
470
+ this.uncheckAllOptions();
471
+ this.checkActiveIndex();
472
+ return;
473
+ case _microsoft_fast_web_utilities.keySpace:
474
+ e.preventDefault();
475
+ /* v8 ignore else -- @preserve */
476
+ if (this.typeaheadExpired) {
477
+ this.toggleSelectedForAllCheckedOptions();
478
+ return;
479
+ }
480
+ default:
481
+ /* v8 ignore else -- @preserve */
482
+ if (key.length === 1) this.handleTypeAhead(key);
483
+ return;
484
+ }
485
+ }
486
+ /**
487
+ * Handle keyboard interaction for the select.
488
+ *
489
+ * @param e - the keyboard event
490
+ * @internal
491
+ */
492
+ keydownHandler(e) {
493
+ const selectedIndexBefore = this.selectedIndex;
494
+ if (this.multiple) this.multipleKeydownHandler(e);
495
+ else super.keydownHandler(e);
496
+ switch (e.key) {
497
+ case _microsoft_fast_web_utilities.keySpace:
498
+ e.preventDefault();
499
+ if (this.collapsible && this.typeaheadExpired) this.open = !this.open;
500
+ break;
501
+ case _microsoft_fast_web_utilities.keyHome:
502
+ case _microsoft_fast_web_utilities.keyEnd:
503
+ e.preventDefault();
504
+ break;
505
+ case _microsoft_fast_web_utilities.keyEnter:
506
+ e.preventDefault();
507
+ this.open = !this.open;
508
+ break;
509
+ case _microsoft_fast_web_utilities.keyEscape:
510
+ if (this.collapsible && this.open) {
511
+ e.preventDefault();
512
+ this.open = false;
513
+ }
514
+ break;
515
+ case _microsoft_fast_web_utilities.keyTab:
516
+ if (this.collapsible && this.open) this.open = false;
517
+ return true;
518
+ }
519
+ if (this.collapsible && !this.open && this.selectedIndex !== selectedIndexBefore) this.updateValue(true);
520
+ return !(e.key === _microsoft_fast_web_utilities.keyArrowDown || e.key === _microsoft_fast_web_utilities.keyArrowUp);
521
+ }
96
522
  connectedCallback() {
97
523
  super.connectedCallback();
98
- this._updateView();
524
+ this.addEventListener("focusout", this.focusoutHandler);
525
+ this.addEventListener("contentchange", this.updateDisplayValue);
99
526
  }
100
- /** @internal */
101
527
  disconnectedCallback() {
528
+ this.removeEventListener("focusout", this.focusoutHandler);
529
+ this.removeEventListener("contentchange", this.updateDisplayValue);
102
530
  super.disconnectedCallback();
103
- this._removeStyles();
104
- this._cleanupLightDom();
531
+ }
532
+ /** @internal */
533
+ updateDisplayValue() {
534
+ if (this.collapsible) _microsoft_fast_element.Observable.notify(this, "displayValue");
535
+ }
536
+ get displayValue() {
537
+ _microsoft_fast_element.Observable.track(this, "displayValue");
538
+ return this.firstSelectedOption?.getAttribute("label") ?? this.firstSelectedOption?.text ?? this.placeholder ?? "";
539
+ }
540
+ _newDefaultSelectedIndex(prev, next, currentSelectIndex) {
541
+ const defaultSelectedIndex = super._newDefaultSelectedIndex(prev, next, currentSelectIndex);
542
+ if (defaultSelectedIndex === null && currentSelectIndex === -1 && !this.placeholder) {
543
+ const firstSelectableIndex = this.getNextSelectableIndex(0);
544
+ if (firstSelectableIndex !== -1) return firstSelectableIndex;
545
+ }
546
+ return defaultSelectedIndex;
547
+ }
548
+ _isDefaultSelected(option) {
549
+ return super._isDefaultSelected(option) || option.value === this.initialValue || !this._isResetting && option.value === this.value;
550
+ }
551
+ slottedOptionsChanged(prev, next) {
552
+ this.options.forEach((o) => {
553
+ _microsoft_fast_element.Observable.getNotifier(o).unsubscribe(this, "value");
554
+ });
555
+ super.slottedOptionsChanged(prev, next);
556
+ this.options.forEach((o) => {
557
+ _microsoft_fast_element.Observable.getNotifier(o).subscribe(this, "value");
558
+ });
559
+ this.setProxyOptions();
560
+ this.updateValue();
561
+ const scale = this.getAttribute("scale") || this.scale;
562
+ next.forEach((element) => {
563
+ if (scale) {
564
+ element.setAttribute("scale", scale);
565
+ element.scale = scale;
566
+ }
567
+ });
568
+ this.proxy.value = this.value;
569
+ this.validate();
570
+ }
571
+ formResetCallback() {
572
+ this.setProxyOptions();
573
+ this._isResetting = true;
574
+ this.selectedIndex = this._newDefaultSelectedIndex([], this.options, -1) ?? -1;
575
+ this._isResetting = false;
576
+ }
577
+ /** @internal */
578
+ get _shouldShowClearButton() {
579
+ if (!this.clearable) return false;
580
+ if (this.multiple) return this.selectedOptions?.length > 0;
581
+ return this.value !== "";
582
+ }
583
+ /** @internal */
584
+ _onClearButtonFocus() {
585
+ this._isClearButtonFocused = true;
586
+ this.activeIndex = -1;
587
+ this.uncheckAllOptions();
588
+ }
589
+ /** @internal */
590
+ _onClearButtonBlur() {
591
+ this._isClearButtonFocused = false;
592
+ }
593
+ /** @internal */
594
+ get _shouldShowLabelWrapper() {
595
+ return Boolean(this.label || this._hasContextualHelp || this.multiple && this._shouldShowClearButton);
596
+ }
597
+ /** @internal */
598
+ _onClearButtonClick() {
599
+ if (this.multiple) this.selectedOptions.forEach((o) => {
600
+ /* v8 ignore else -- @preserve */
601
+ if (!o.disabled) o.selected = false;
602
+ });
603
+ else this.selectedIndex = -1;
604
+ this.updateValue(true);
105
605
  }
106
606
  };
107
- require_decorate.__decorate([_microsoft_fast_element.observable], RichTextView.prototype, "view", void 0);
607
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "activeIndex", void 0);
608
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "multiple", void 0);
609
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
610
+ attribute: "open",
611
+ mode: "boolean"
612
+ })], Select.prototype, "open", void 0);
613
+ require_decorate.__decorate([_microsoft_fast_element.volatile], Select.prototype, "collapsible", null);
614
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "control", void 0);
615
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "maxHeight", void 0);
616
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_anchor", void 0);
617
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)()], Select.prototype, "scale", void 0);
618
+ require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "appearance", void 0);
619
+ require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "shape", void 0);
620
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({
621
+ mode: "boolean",
622
+ attribute: "fixed-dropdown"
623
+ })], Select.prototype, "fixedDropdown", void 0);
624
+ require_decorate.__decorate([_microsoft_fast_element.attr], Select.prototype, "placeholder", void 0);
625
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_feedbackWrapper", void 0);
626
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "metaSlottedContent", void 0);
627
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], Select.prototype, "clearable", void 0);
628
+ require_decorate.__decorate([_microsoft_fast_element.observable], Select.prototype, "_isClearButtonFocused", void 0);
108
629
  //#endregion
109
- //#region src/lib/rich-text-view/rich-text-view.template.ts
110
- var RichTextViewTemplate = () => _microsoft_fast_element.html`<div class="content rich-text" ${(0, _microsoft_fast_element.ref)("_contentElement")}></div>`;
630
+ //#region src/lib/select/select.template.ts
631
+ function renderLabel() {
632
+ return _microsoft_fast_element.html` <label
633
+ for="${(x) => x.multiple ? null : "control"}"
634
+ class="label"
635
+ id="label"
636
+ >
637
+ ${(x) => x.label}
638
+ </label>`;
639
+ }
640
+ function renderPlaceholder(context) {
641
+ const optionTag = context.tagFor(require_option.ListboxOption);
642
+ return _microsoft_fast_element.html`
643
+ <${optionTag} text="${(x) => x.placeholder}" hidden disabled>
644
+ </${optionTag}>`;
645
+ }
646
+ function renderClearButton(context) {
647
+ const buttonTag = context.tagFor(require_definition$1.Button);
648
+ return _microsoft_fast_element.html`
649
+ <${buttonTag}
650
+ aria-label="${(x) => x.locale.select.clearButtonLabel}"
651
+ aria-hidden="${(x) => x._isClearButtonFocused ? "false" : "true"}"
652
+ @click="${(x, c) => {
653
+ x._onClearButtonClick();
654
+ c.event.stopPropagation();
655
+ }}"
656
+ @mousedown="${() => false}"
657
+ @keydown="${(x, c) => {
658
+ /* v8 ignore next -- @preserve */
659
+ if (c.event.key === "Tab") x._onClearButtonBlur();
660
+ c.event.stopPropagation();
661
+ return true;
662
+ }}"
663
+ @focusin="${(x, c) => {
664
+ c.event.stopPropagation();
665
+ x._onClearButtonFocus();
666
+ }}"
667
+ @focusout="${(x) => x._onClearButtonBlur()}"
668
+ ?disabled="${(x) => x.disabled}"
669
+ :shape="${(x) => x.shape}"
670
+ size="super-condensed"
671
+ icon="close-line"
672
+ appearance="ghost-light"
673
+ class="clear-button"
674
+ tabindex="0"
675
+ ></${buttonTag}>
676
+ `;
677
+ }
678
+ function selectValue(context) {
679
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
680
+ const chevronTemplate = require_definition$1.chevronTemplateFactory(context);
681
+ return _microsoft_fast_element.html` <div
682
+ class="control ${(x) => (0, _microsoft_fast_web_utilities.classNames)(["has-activedescendant", Boolean(x._activeDescendant) && x.open], ["disabled", x.disabled], "connotation-accent", `appearance-${selectAppearance.parse(x.appearance)}`, "with-idle", "with-hover", "with-disabled", "with-readonly", "with-error", "with-success", [`shape-${x.shape}`, Boolean(x.shape)], ["has-meta", Boolean(x.metaSlottedContent?.length)], ["error", Boolean(x.errorValidationMessage)], ["success", !!x.successText], ["shows-placeholder", Boolean(x.placeholder) && !x.value], [`size-${x.scale}`, Boolean(x.scale)])}"
683
+ ${(0, _microsoft_fast_element.ref)("_anchor")}
684
+ id="control"
685
+ ?disabled="${(x) => x.disabled}"
686
+ >
687
+ <div class="selected-value">
688
+ ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)}
689
+ <span class="text">${(x) => x.displayValue}</span>
690
+ <slot name="meta" ${(0, _microsoft_fast_element.slotted)("metaSlottedContent")}></slot>
691
+ </div>
692
+ ${(0, _microsoft_fast_element.when)((x) => x._shouldShowClearButton, renderClearButton(context))}
693
+ ${chevronTemplate}
694
+ </div>`;
695
+ }
696
+ function setFixedDropdownVarWidth(x) {
697
+ return x.open && x.fixedDropdown ? `--_select-fixed-width: ${Math.round(x.getBoundingClientRect().width)}px` : null;
698
+ }
699
+ /** @param context - element definition context */
700
+ function renderControl(context) {
701
+ const popupTag = context.tagFor(require_definition$2.Popup);
702
+ return _microsoft_fast_element.html`
703
+ <div class="label-wrapper" ?hidden=${(x) => !x._shouldShowLabelWrapper}>
704
+ ${(0, _microsoft_fast_element.when)((x) => x.label, renderLabel())}
705
+ ${(0, _microsoft_fast_element.when)((x) => x.multiple && x._shouldShowClearButton, renderClearButton(context))}
706
+ <slot name="contextual-help" ${(0, _microsoft_fast_element.slotted)("_contextualHelpSlottedContent")}></slot>
707
+ </div>
708
+ <div class="control-wrapper">
709
+ ${(0, _microsoft_fast_element.when)((x) => !x.multiple, selectValue(context))}
710
+ <${popupTag} class="popup"
711
+ style="${setFixedDropdownVarWidth}"
712
+ ?open="${(x) => x.collapsible ? x.open : true}"
713
+ :anchor="${(x) => x._anchor}"
714
+ placement="bottom-start"
715
+ strategy="${(x) => x.fixedDropdown ? null : "absolute"}">
716
+ <div class="listbox"
717
+ id="${(x) => x.listboxId}"
718
+ role="listbox"
719
+ aria-multiselectable="${(x) => x.multiple}"
720
+ aria-label="${(x) => x.multiple && !x.label && x.ariaLabel ? x.ariaLabel : null}"
721
+ aria-labelledby="${(x) => x.multiple && x.label ? "label" : null}"
722
+ ?disabled="${(x) => x.disabled}"
723
+ ?hidden="${(x) => x.collapsible ? !x.open : false}"
724
+ ${(0, _microsoft_fast_element.ref)("listbox")}>
725
+ ${(0, _microsoft_fast_element.when)((x) => x.placeholder, renderPlaceholder(context))}
726
+ <slot
727
+ ${(0, _microsoft_fast_element.slotted)({
728
+ filter: require_listbox.Listbox.slottedOptionFilter,
729
+ flatten: true,
730
+ property: "slottedOptions"
731
+ })}>
732
+ </slot>
733
+ </div>
734
+ </${popupTag}>
735
+ </div>
736
+ `;
737
+ }
738
+ /** Ignore events that originate from feedback, e.g. a click on link */
739
+ function ifNotFromFeedback(handler) {
740
+ return (x, c) => {
741
+ if (!c.event.composedPath().includes(x._feedbackWrapper)) {
742
+ handler(x, c.event);
743
+ return;
744
+ }
745
+ return true;
746
+ };
747
+ }
748
+ /**
749
+ * As `ifNotFromFeedback`, but forwards the handler's return value.
750
+ *
751
+ * FAST prevents an event's default action unless the binding returns exactly
752
+ * `true`, so handlers that need to opt out of that — e.g. keydown, where
753
+ * preventing the default action on Tab would trap focus on the select — must
754
+ * have their result passed through rather than discarded.
755
+ */
756
+ function ifNotFromFeedbackPreservingDefault(handler) {
757
+ return (x, c) => {
758
+ if (!c.event.composedPath().includes(x._feedbackWrapper)) return handler(x, c.event);
759
+ return true;
760
+ };
761
+ }
762
+ var SelectTemplate = (context) => {
763
+ return _microsoft_fast_element.html`
764
+ <template
765
+ ${require_host_semantics.applyHostSemantics({
766
+ role: "combobox",
767
+ ariaLabel: (x) => x.ariaLabel ?? x.label,
768
+ ariaHasPopup: (x) => x.collapsible ? "listbox" : "false",
769
+ ariaExpanded: (x) => x.open,
770
+ ariaDisabled: (x) => x.disabled
771
+ })}
772
+ aria-controls="${(x) => x.listboxId}"
773
+ aria-activedescendant="${(x) => x.open ? x._activeDescendant : null}"
774
+ aria-describedby="${(x) => x._feedbackDescribedBy}"
775
+ tabindex="${(x) => !x.disabled ? "0" : null}"
776
+ @click="${ifNotFromFeedback((x, e) => x.clickHandler(e))}"
777
+ @focusin="${ifNotFromFeedback((x, e) => x.focusinHandler(e))}"
778
+ @focusout="${ifNotFromFeedback((x, e) => x.focusoutHandler(e))}"
779
+ @keydown="${ifNotFromFeedbackPreservingDefault((x, e) => {
780
+ if (x.open) require_dialog.handleEscapeKeyAndStopPropogation(e);
781
+ return x.keydownHandler(e);
782
+ })}"
783
+ @mousedown="${ifNotFromFeedback((x, e) => x.mousedownHandler(e))}"
784
+ >
785
+ ${renderControl(context)}
786
+ <div class="feedback-wrapper" ${(0, _microsoft_fast_element.ref)("_feedbackWrapper")}>
787
+ ${(x) => x._getFeedbackTemplate(context)}
788
+ </div>
789
+ </template>
790
+ `;
791
+ };
111
792
  //#endregion
112
- //#region src/lib/rich-text-view/definition.ts
113
- var richTextViewDefinition = require_vivid_element.defineVividComponent("rich-text-view", RichTextView, RichTextViewTemplate, [], {
114
- styles: rich_text_view_default,
115
- shadowOptions: { delegatesFocus: true }
116
- });
793
+ //#region src/lib/select/definition.ts
794
+ /** @internal */
795
+ var selectDefinition = require_vivid_element.defineVividComponent("select", Select, SelectTemplate, [
796
+ require_definition$2.popupDefinition,
797
+ require_definition.iconDefinition,
798
+ require_definition$3.listboxOptionDefinition,
799
+ require_definition$4.optgroupDefinition,
800
+ require_definition$1.buttonDefinition,
801
+ require_feedback_message.feedbackMessageDefinition
802
+ ], { styles: select_default });
117
803
  /**
118
- * Registers the rich-text-view element with the design system.
804
+ * Registers the select elements with the design system.
119
805
  *
120
806
  * @param prefix - the prefix to use for the component name
121
807
  */
122
- var registerRichTextView = require_vivid_element.createRegisterFunction(richTextViewDefinition);
808
+ var registerSelect = require_vivid_element.createRegisterFunction(selectDefinition);
123
809
  //#endregion
124
- Object.defineProperty(exports, "RichTextView", {
810
+ Object.defineProperty(exports, "Select", {
125
811
  enumerable: true,
126
812
  get: function() {
127
- return RichTextView;
813
+ return Select;
128
814
  }
129
815
  });
130
- Object.defineProperty(exports, "registerRichTextView", {
816
+ Object.defineProperty(exports, "registerSelect", {
131
817
  enumerable: true,
132
818
  get: function() {
133
- return registerRichTextView;
819
+ return registerSelect;
134
820
  }
135
821
  });
136
- Object.defineProperty(exports, "richTextViewDefinition", {
822
+ Object.defineProperty(exports, "selectDefinition", {
137
823
  enumerable: true,
138
824
  get: function() {
139
- return richTextViewDefinition;
825
+ return selectDefinition;
140
826
  }
141
827
  });