@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,123 +1,810 @@
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 { t as componentEnum } from "./component-enum.js";
6
+ import { n as FormAssociated } from "./form-associated.js";
7
+ import { t as Localized } from "./localized.js";
8
+ import { i as Button, r as chevronTemplateFactory, t as buttonDefinition } from "./definition6.js";
9
+ import { t as handleEscapeKeyAndStopPropogation } from "./dialog.js";
10
+ import { i as Popup, t as popupDefinition } from "./definition9.js";
11
+ import { n as applyHostSemantics, t as HostSemantics } from "./host-semantics.js";
12
+ import { n as feedbackMessageDefinition } from "./feedback-message.js";
13
+ import { t as FormElement } from "./form-element.js";
14
+ import { t as WithErrorText } from "./with-error-text.js";
15
+ import { t as WithSuccessText } from "./with-success-text.js";
16
+ import { n as WithLightDOMFeedback } from "./mixins.js";
17
+ import { t as WithContextualHelp } from "./with-contextual-help.js";
18
+ import { t as ListboxOption } from "./option.js";
19
+ import { t as listboxOptionDefinition } from "./definition29.js";
20
+ import { t as optgroupDefinition } from "./definition30.js";
21
+ import { t as Listbox } from "./listbox.js";
22
+ import { Observable, Updates, attr, html, observable, ref, slotted, volatile, when } from "@microsoft/fast-element";
23
+ import { classNames, inRange, keyArrowDown, keyArrowUp, keyEnd, keyEnter, keyEscape, keyHome, keySpace, keyTab, uniqueId } from "@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))}";
8
26
  //#endregion
9
- //#region src/lib/rich-text-view/rich-text-view.ts
27
+ //#region src/lib/select/select.ts
28
+ var selectAppearance = componentEnum(["fieldset", "ghost"], "fieldset");
10
29
  /**
11
30
  * @public
12
- * @component rich-text-view
13
- * @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
14
41
  */
15
- var RichTextView = class extends VividElement {
42
+ var Select = class extends WithLightDOMFeedback(WithContextualHelp(WithErrorText(WithSuccessText(Localized(FormElement(HostSemantics(AffixIconWithTrailing(FormAssociated(Listbox))))))))) {
16
43
  constructor(..._args) {
17
44
  super(..._args);
18
- this._slotCounter = 0;
19
- this._slottedChildren = /* @__PURE__ */ new Set();
20
- this._slotRequests = /* @__PURE__ */ new Set();
21
- this._contentElement = null;
45
+ this.proxy = document.createElement("select");
46
+ this.activeIndex = -1;
47
+ this.rangeStartIndex = -1;
48
+ this.open = false;
49
+ this.listboxId = 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 = 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 = 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 = 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 = 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
+ 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;
22
303
  }
23
304
  /** @internal */
24
- viewChanged(oldView, newView) {
25
- if (oldView) this._removeStyles();
26
- if (newView) this._addStyles(newView);
27
- this._updateView();
28
- }
29
- _addStyles(view) {
30
- const config = view[impl].config[impl];
31
- this._styles = new ElementStyles(sortedContributions(config.features.flatMap((f) => f.getStyles())));
32
- this._styles.addStylesTo(this.shadowRoot);
33
- }
34
- _removeStyles() {
35
- if (this._styles) {
36
- this._styles.removeStylesFrom(this.shadowRoot);
37
- 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
+ });
38
329
  }
39
330
  }
40
- _cleanupLightDom() {
41
- for (const el of this._slottedChildren) this.removeChild(el);
42
- for (const slotName of this._slotRequests) dispatchSlottableRequest(this, "child", slotName, removeSymbol);
43
- this._slottedChildren.clear();
44
- this._slotRequests.clear();
45
- this._slotCounter = 0;
46
- }
47
- _updateView() {
48
- if (!this._contentElement) return;
49
- this._contentElement.innerHTML = "";
50
- this._cleanupLightDom();
51
- if (this.view) this._contentElement.appendChild(this._renderView(this.view));
52
- }
53
- _renderView(rteView) {
54
- const ctx = rteView[impl];
55
- if (rteView.type === "node" && rteView.node.type === "doc") rteView = rteView.children;
56
- if (rteView.type === "fragment") {
57
- const frag = document.createDocumentFragment();
58
- for (const child of rteView.content) frag.appendChild(this._renderView(child));
59
- 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;
60
375
  }
61
- const customRenderedView = ctx.options.renderChildView?.(rteView) ?? false;
62
- if (customRenderedView) return this._handleCustomRender(rteView, customRenderedView);
63
- else return this._renderDefault(rteView);
64
- }
65
- _handleCustomRender(rteView, customResult) {
66
- const slotName = `child-view-${this._slotCounter++}`;
67
- const slot = document.createElement("slot");
68
- slot.setAttribute("name", slotName);
69
- if (customResult === true) {
70
- this._slotRequests.add(slotName);
71
- dispatchSlottableRequest(this, "child", slotName, { view: rteView });
72
- } else {
73
- const { dom, contentDom = dom } = customResult;
74
- const nestedView = document.createElement(this.tagName);
75
- nestedView.view = rteView.children;
76
- contentDom.appendChild(nestedView);
77
- dom.setAttribute("slot", slotName);
78
- this.appendChild(dom);
79
- 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);
80
380
  }
81
- return slot;
82
- }
83
- _renderDefault(view) {
84
- const schema = view[impl].config[impl].schema;
85
- if (view.type === "node" && view.node.type === "text") return document.createTextNode(view.node.text);
86
- const item = view.type === "node" ? view.node : view.mark;
87
- const pmItem = view.type === "node" ? Node.fromJSON(schema, item) : Mark.fromJSON(schema, item);
88
- const spec = pmItem instanceof Node ? pmItem.type.spec.toDOM(pmItem) : pmItem.type.spec.toDOM(pmItem, true);
89
- const { dom, contentDOM = dom } = DOMSerializer.renderSpec(document, spec);
90
- const childrenRendered = this._renderView(view.children);
91
- contentDOM.appendChild(childrenRendered);
92
- 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;
93
404
  }
94
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 keyHome:
455
+ this.checkFirstOption(shiftKey);
456
+ return;
457
+ case keyArrowDown:
458
+ this.checkNextOption(shiftKey);
459
+ return;
460
+ case keyArrowUp:
461
+ this.checkPreviousOption(shiftKey);
462
+ return;
463
+ case keyEnd:
464
+ this.checkLastOption(shiftKey);
465
+ return;
466
+ case keyTab:
467
+ this.focusAndScrollOptionIntoView();
468
+ return;
469
+ case keyEscape:
470
+ this.uncheckAllOptions();
471
+ this.checkActiveIndex();
472
+ return;
473
+ case 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 keySpace:
498
+ e.preventDefault();
499
+ if (this.collapsible && this.typeaheadExpired) this.open = !this.open;
500
+ break;
501
+ case keyHome:
502
+ case keyEnd:
503
+ e.preventDefault();
504
+ break;
505
+ case keyEnter:
506
+ e.preventDefault();
507
+ this.open = !this.open;
508
+ break;
509
+ case keyEscape:
510
+ if (this.collapsible && this.open) {
511
+ e.preventDefault();
512
+ this.open = false;
513
+ }
514
+ break;
515
+ case 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 === keyArrowDown || e.key === keyArrowUp);
521
+ }
95
522
  connectedCallback() {
96
523
  super.connectedCallback();
97
- this._updateView();
524
+ this.addEventListener("focusout", this.focusoutHandler);
525
+ this.addEventListener("contentchange", this.updateDisplayValue);
98
526
  }
99
- /** @internal */
100
527
  disconnectedCallback() {
528
+ this.removeEventListener("focusout", this.focusoutHandler);
529
+ this.removeEventListener("contentchange", this.updateDisplayValue);
101
530
  super.disconnectedCallback();
102
- this._removeStyles();
103
- this._cleanupLightDom();
531
+ }
532
+ /** @internal */
533
+ updateDisplayValue() {
534
+ if (this.collapsible) Observable.notify(this, "displayValue");
535
+ }
536
+ get displayValue() {
537
+ 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
+ Observable.getNotifier(o).unsubscribe(this, "value");
554
+ });
555
+ super.slottedOptionsChanged(prev, next);
556
+ this.options.forEach((o) => {
557
+ 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);
104
605
  }
105
606
  };
106
- __decorate([observable], RichTextView.prototype, "view", void 0);
607
+ __decorate([observable], Select.prototype, "activeIndex", void 0);
608
+ __decorate([attr({ mode: "boolean" })], Select.prototype, "multiple", void 0);
609
+ __decorate([attr({
610
+ attribute: "open",
611
+ mode: "boolean"
612
+ })], Select.prototype, "open", void 0);
613
+ __decorate([volatile], Select.prototype, "collapsible", null);
614
+ __decorate([observable], Select.prototype, "control", void 0);
615
+ __decorate([observable], Select.prototype, "maxHeight", void 0);
616
+ __decorate([observable], Select.prototype, "_anchor", void 0);
617
+ __decorate([attr()], Select.prototype, "scale", void 0);
618
+ __decorate([attr], Select.prototype, "appearance", void 0);
619
+ __decorate([attr], Select.prototype, "shape", void 0);
620
+ __decorate([attr({
621
+ mode: "boolean",
622
+ attribute: "fixed-dropdown"
623
+ })], Select.prototype, "fixedDropdown", void 0);
624
+ __decorate([attr], Select.prototype, "placeholder", void 0);
625
+ __decorate([observable], Select.prototype, "_feedbackWrapper", void 0);
626
+ __decorate([observable], Select.prototype, "metaSlottedContent", void 0);
627
+ __decorate([attr({ mode: "boolean" })], Select.prototype, "clearable", void 0);
628
+ __decorate([observable], Select.prototype, "_isClearButtonFocused", void 0);
107
629
  //#endregion
108
- //#region src/lib/rich-text-view/rich-text-view.template.ts
109
- var RichTextViewTemplate = () => html`<div class="content rich-text" ${ref("_contentElement")}></div>`;
630
+ //#region src/lib/select/select.template.ts
631
+ function renderLabel() {
632
+ return 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(ListboxOption);
642
+ return html`
643
+ <${optionTag} text="${(x) => x.placeholder}" hidden disabled>
644
+ </${optionTag}>`;
645
+ }
646
+ function renderClearButton(context) {
647
+ const buttonTag = context.tagFor(Button);
648
+ return 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 = affixIconTemplateFactory(context);
680
+ const chevronTemplate = chevronTemplateFactory(context);
681
+ return html` <div
682
+ class="control ${(x) => 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
+ ${ref("_anchor")}
684
+ id="control"
685
+ ?disabled="${(x) => x.disabled}"
686
+ >
687
+ <div class="selected-value">
688
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
689
+ <span class="text">${(x) => x.displayValue}</span>
690
+ <slot name="meta" ${slotted("metaSlottedContent")}></slot>
691
+ </div>
692
+ ${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(Popup);
702
+ return html`
703
+ <div class="label-wrapper" ?hidden=${(x) => !x._shouldShowLabelWrapper}>
704
+ ${when((x) => x.label, renderLabel())}
705
+ ${when((x) => x.multiple && x._shouldShowClearButton, renderClearButton(context))}
706
+ <slot name="contextual-help" ${slotted("_contextualHelpSlottedContent")}></slot>
707
+ </div>
708
+ <div class="control-wrapper">
709
+ ${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
+ ${ref("listbox")}>
725
+ ${when((x) => x.placeholder, renderPlaceholder(context))}
726
+ <slot
727
+ ${slotted({
728
+ filter: 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 html`
764
+ <template
765
+ ${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) 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" ${ref("_feedbackWrapper")}>
787
+ ${(x) => x._getFeedbackTemplate(context)}
788
+ </div>
789
+ </template>
790
+ `;
791
+ };
110
792
  //#endregion
111
- //#region src/lib/rich-text-view/definition.ts
112
- var richTextViewDefinition = defineVividComponent("rich-text-view", RichTextView, RichTextViewTemplate, [], {
113
- styles: rich_text_view_default,
114
- shadowOptions: { delegatesFocus: true }
115
- });
793
+ //#region src/lib/select/definition.ts
794
+ /** @internal */
795
+ var selectDefinition = defineVividComponent("select", Select, SelectTemplate, [
796
+ popupDefinition,
797
+ iconDefinition,
798
+ listboxOptionDefinition,
799
+ optgroupDefinition,
800
+ buttonDefinition,
801
+ feedbackMessageDefinition
802
+ ], { styles: select_default });
116
803
  /**
117
- * Registers the rich-text-view element with the design system.
804
+ * Registers the select elements with the design system.
118
805
  *
119
806
  * @param prefix - the prefix to use for the component name
120
807
  */
121
- var registerRichTextView = createRegisterFunction(richTextViewDefinition);
808
+ var registerSelect = createRegisterFunction(selectDefinition);
122
809
  //#endregion
123
- export { richTextViewDefinition as n, RichTextView as r, registerRichTextView as t };
810
+ export { selectDefinition as n, Select as r, registerSelect as t };