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