@vonage/vivid 4.13.0 → 4.14.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 (516) hide show
  1. package/custom-elements.json +4033 -2662
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +70 -136
  5. package/index.d.ts +0 -1
  6. package/index.js +60 -62
  7. package/lib/accordion/accordion.d.ts +2 -2
  8. package/lib/accordion/accordion.template.d.ts +1 -2
  9. package/lib/accordion/definition.d.ts +1 -1
  10. package/lib/accordion-item/accordion-item.d.ts +2 -2
  11. package/lib/accordion-item/accordion-item.template.d.ts +2 -3
  12. package/lib/accordion-item/definition.d.ts +1 -1
  13. package/lib/action-group/action-group.d.ts +2 -2
  14. package/lib/action-group/action-group.template.d.ts +1 -3
  15. package/lib/action-group/definition.d.ts +1 -1
  16. package/lib/alert/alert.d.ts +2 -2
  17. package/lib/alert/alert.template.d.ts +2 -3
  18. package/lib/alert/definition.d.ts +1 -1
  19. package/lib/audio-player/audio-player.d.ts +2 -2
  20. package/lib/audio-player/audio-player.template.d.ts +2 -3
  21. package/lib/audio-player/definition.d.ts +1 -3
  22. package/lib/avatar/avatar.d.ts +2 -2
  23. package/lib/avatar/avatar.template.d.ts +2 -3
  24. package/lib/avatar/definition.d.ts +1 -1
  25. package/lib/badge/badge.d.ts +2 -2
  26. package/lib/badge/badge.template.d.ts +2 -3
  27. package/lib/badge/definition.d.ts +1 -3
  28. package/lib/banner/banner.d.ts +2 -2
  29. package/lib/banner/banner.template.d.ts +2 -3
  30. package/lib/banner/definition.d.ts +1 -1
  31. package/lib/breadcrumb/breadcrumb.d.ts +2 -2
  32. package/lib/breadcrumb/breadcrumb.template.d.ts +3 -4
  33. package/lib/breadcrumb/definition.d.ts +1 -1
  34. package/lib/breadcrumb-item/breadcrumb-item.d.ts +2 -2
  35. package/lib/breadcrumb-item/breadcrumb-item.template.d.ts +2 -3
  36. package/lib/breadcrumb-item/definition.d.ts +1 -1
  37. package/lib/button/button.d.ts +2 -2
  38. package/lib/button/button.template.d.ts +2 -4
  39. package/lib/button/definition.d.ts +1 -1
  40. package/lib/calendar/calendar.d.ts +2 -2
  41. package/lib/calendar/calendar.template.d.ts +1 -3
  42. package/lib/calendar/definition.d.ts +1 -1
  43. package/lib/calendar-event/calendar-event.d.ts +2 -2
  44. package/lib/calendar-event/calendar-event.template.d.ts +1 -3
  45. package/lib/calendar-event/definition.d.ts +1 -1
  46. package/lib/card/card.d.ts +2 -2
  47. package/lib/card/card.template.d.ts +2 -3
  48. package/lib/card/definition.d.ts +1 -1
  49. package/lib/checkbox/checkbox.form-associated.d.ts +3 -2
  50. package/lib/checkbox/checkbox.template.d.ts +2 -3
  51. package/lib/checkbox/definition.d.ts +1 -1
  52. package/lib/combobox/combobox.d.ts +17 -2
  53. package/lib/combobox/combobox.options.d.ts +7 -0
  54. package/lib/combobox/combobox.template.d.ts +2 -3
  55. package/lib/combobox/definition.d.ts +1 -2
  56. package/lib/data-grid/data-grid-cell.d.ts +16 -13
  57. package/lib/data-grid/data-grid-cell.template.d.ts +2 -3
  58. package/lib/data-grid/data-grid-row.d.ts +19 -2
  59. package/lib/data-grid/data-grid-row.template.d.ts +2 -2
  60. package/lib/data-grid/data-grid.d.ts +45 -4
  61. package/lib/data-grid/data-grid.template.d.ts +2 -2
  62. package/lib/data-grid/definition.d.ts +1 -6
  63. package/lib/date-picker/definition.d.ts +1 -3
  64. package/lib/date-range-picker/definition.d.ts +1 -3
  65. package/lib/dial-pad/definition.d.ts +1 -3
  66. package/lib/dial-pad/dial-pad.d.ts +2 -2
  67. package/lib/dial-pad/dial-pad.template.d.ts +2 -3
  68. package/lib/dialog/definition.d.ts +1 -1
  69. package/lib/dialog/dialog.d.ts +2 -2
  70. package/lib/dialog/dialog.template.d.ts +2 -3
  71. package/lib/divider/definition.d.ts +1 -1
  72. package/lib/divider/divider.d.ts +2 -2
  73. package/lib/divider/divider.template.d.ts +1 -3
  74. package/lib/elevation/definition.d.ts +1 -1
  75. package/lib/elevation/elevation.d.ts +2 -2
  76. package/lib/elevation/elevation.template.d.ts +1 -3
  77. package/lib/empty-state/definition.d.ts +1 -3
  78. package/lib/empty-state/empty-state.d.ts +2 -2
  79. package/lib/empty-state/empty-state.template.d.ts +2 -3
  80. package/lib/fab/definition.d.ts +1 -3
  81. package/lib/fab/fab.template.d.ts +2 -3
  82. package/lib/file-picker/definition.d.ts +1 -3
  83. package/lib/file-picker/file-picker.form-associated.d.ts +3 -2
  84. package/lib/file-picker/file-picker.template.d.ts +2 -3
  85. package/lib/header/definition.d.ts +1 -3
  86. package/lib/header/header.d.ts +2 -2
  87. package/lib/header/header.template.d.ts +2 -3
  88. package/lib/icon/definition.d.ts +1 -3
  89. package/lib/icon/icon.d.ts +2 -2
  90. package/lib/icon/icon.template.d.ts +1 -3
  91. package/lib/layout/definition.d.ts +1 -3
  92. package/lib/layout/layout.d.ts +2 -2
  93. package/lib/layout/layout.template.d.ts +1 -3
  94. package/lib/listbox/definition.d.ts +1 -3
  95. package/lib/listbox/listbox.template.d.ts +1 -3
  96. package/lib/menu/definition.d.ts +1 -11
  97. package/lib/menu/menu.d.ts +2 -2
  98. package/lib/menu/menu.template.d.ts +3 -3
  99. package/lib/menu-item/definition.d.ts +1 -3
  100. package/lib/menu-item/menu-item.d.ts +2 -2
  101. package/lib/menu-item/menu-item.template.d.ts +2 -3
  102. package/lib/nav/definition.d.ts +1 -3
  103. package/lib/nav/nav.d.ts +2 -2
  104. package/lib/nav/nav.template.d.ts +1 -3
  105. package/lib/nav-disclosure/definition.d.ts +1 -3
  106. package/lib/nav-disclosure/nav-disclosure.d.ts +2 -2
  107. package/lib/nav-disclosure/nav-disclosure.template.d.ts +2 -3
  108. package/lib/nav-item/definition.d.ts +1 -3
  109. package/lib/nav-item/nav-item.template.d.ts +2 -3
  110. package/lib/note/definition.d.ts +1 -3
  111. package/lib/note/note.d.ts +2 -2
  112. package/lib/note/note.template.d.ts +2 -3
  113. package/lib/number-field/definition.d.ts +1 -4
  114. package/lib/number-field/number-field.form-associated.d.ts +3 -2
  115. package/lib/number-field/number-field.template.d.ts +2 -3
  116. package/lib/option/definition.d.ts +1 -3
  117. package/lib/option/option.d.ts +3 -2
  118. package/lib/option/option.template.d.ts +2 -3
  119. package/lib/pagination/definition.d.ts +1 -3
  120. package/lib/pagination/pagination.d.ts +2 -2
  121. package/lib/pagination/pagination.template.d.ts +2 -3
  122. package/lib/popup/definition.d.ts +1 -3
  123. package/lib/popup/popup.template.d.ts +2 -3
  124. package/lib/progress/definition.d.ts +1 -3
  125. package/lib/progress/progress.d.ts +1 -1
  126. package/lib/progress/progress.template.d.ts +1 -4
  127. package/lib/progress-ring/definition.d.ts +1 -3
  128. package/lib/progress-ring/progress-ring.d.ts +1 -1
  129. package/lib/progress-ring/progress-ring.template.d.ts +1 -3
  130. package/lib/radio/definition.d.ts +1 -3
  131. package/lib/radio/radio.form-associated.d.ts +3 -2
  132. package/lib/radio/radio.template.d.ts +1 -3
  133. package/lib/radio-group/definition.d.ts +1 -11
  134. package/lib/radio-group/radio-group.d.ts +2 -2
  135. package/lib/radio-group/radio-group.template.d.ts +2 -3
  136. package/lib/range-slider/definition.d.ts +1 -3
  137. package/lib/range-slider/range-slider.form-associated.d.ts +3 -2
  138. package/lib/range-slider/range-slider.template.d.ts +2 -3
  139. package/lib/searchable-select/definition.d.ts +1 -4
  140. package/lib/searchable-select/option-tag.template.d.ts +2 -3
  141. package/lib/searchable-select/searchable-select.form-associated.d.ts +3 -2
  142. package/lib/searchable-select/searchable-select.template.d.ts +2 -3
  143. package/lib/select/definition.d.ts +1 -3
  144. package/lib/select/select.d.ts +14 -4
  145. package/lib/select/select.form-associated.d.ts +11 -0
  146. package/lib/select/select.template.d.ts +2 -3
  147. package/lib/selectable-box/definition.d.ts +1 -3
  148. package/lib/selectable-box/selectable-box.d.ts +2 -2
  149. package/lib/selectable-box/selectable-box.template.d.ts +2 -3
  150. package/lib/side-drawer/definition.d.ts +1 -3
  151. package/lib/side-drawer/side-drawer.d.ts +2 -2
  152. package/lib/side-drawer/side-drawer.template.d.ts +1 -3
  153. package/lib/slider/definition.d.ts +1 -3
  154. package/lib/slider/slider.form-associated.d.ts +3 -2
  155. package/lib/slider/slider.template.d.ts +3 -4
  156. package/lib/split-button/definition.d.ts +1 -1
  157. package/lib/split-button/split-button.d.ts +2 -2
  158. package/lib/split-button/split-button.template.d.ts +2 -3
  159. package/lib/switch/definition.d.ts +1 -3
  160. package/lib/switch/switch.form-associated.d.ts +3 -2
  161. package/lib/switch/switch.template.d.ts +1 -3
  162. package/lib/tab/definition.d.ts +1 -3
  163. package/lib/tab/tab.d.ts +2 -2
  164. package/lib/tab/tab.template.d.ts +2 -2
  165. package/lib/tab-panel/definition.d.ts +1 -3
  166. package/lib/tab-panel/tab-panel.d.ts +2 -2
  167. package/lib/tab-panel/tab-panel.template.d.ts +1 -1
  168. package/lib/tabs/definition.d.ts +1 -3
  169. package/lib/tabs/tabs.d.ts +3 -2
  170. package/lib/tabs/tabs.template.d.ts +1 -1
  171. package/lib/tag/definition.d.ts +1 -4
  172. package/lib/tag/tag.d.ts +2 -2
  173. package/lib/tag/tag.template.d.ts +2 -3
  174. package/lib/tag-group/definition.d.ts +1 -3
  175. package/lib/tag-group/tag-group.d.ts +2 -2
  176. package/lib/tag-group/tag-group.template.d.ts +1 -3
  177. package/lib/text-anchor/definition.d.ts +1 -3
  178. package/lib/text-anchor/text-anchor.d.ts +4 -3
  179. package/lib/text-anchor/text-anchor.template.d.ts +2 -3
  180. package/lib/text-area/definition.d.ts +1 -3
  181. package/lib/text-area/text-area.d.ts +1 -1
  182. package/lib/text-area/{text-field.form-associated.d.ts → text-area.form-associated.d.ts} +3 -2
  183. package/lib/text-area/text-area.template.d.ts +2 -3
  184. package/lib/text-field/definition.d.ts +1 -3
  185. package/lib/text-field/text-field.form-associated.d.ts +3 -2
  186. package/lib/text-field/text-field.template.d.ts +2 -3
  187. package/lib/time-picker/definition.d.ts +1 -3
  188. package/lib/time-picker/time-picker.form-associated.d.ts +3 -2
  189. package/lib/time-picker/time-picker.template.d.ts +2 -2
  190. package/lib/toggletip/definition.d.ts +1 -3
  191. package/lib/toggletip/toggletip.d.ts +2 -2
  192. package/lib/toggletip/toggletip.template.d.ts +2 -3
  193. package/lib/tooltip/definition.d.ts +1 -3
  194. package/lib/tooltip/tooltip.d.ts +2 -2
  195. package/lib/tooltip/tooltip.template.d.ts +2 -3
  196. package/lib/tree-item/definition.d.ts +1 -3
  197. package/lib/tree-item/tree-item.d.ts +11 -2
  198. package/lib/tree-item/tree-item.template.d.ts +3 -3
  199. package/lib/tree-view/definition.d.ts +1 -3
  200. package/lib/tree-view/tree-view.d.ts +16 -2
  201. package/lib/tree-view/tree-view.template.d.ts +1 -1
  202. package/lib/video-player/definition.d.ts +1 -3
  203. package/lib/video-player/video-player.d.ts +2 -2
  204. package/lib/video-player/video-player.template.d.ts +1 -3
  205. package/listbox/index.cjs +37 -39
  206. package/listbox/index.js +37 -39
  207. package/menu/index.cjs +1 -1
  208. package/menu/index.js +1 -1
  209. package/nav/index.cjs +1 -1
  210. package/nav/index.js +1 -1
  211. package/nav-disclosure/index.cjs +1 -1
  212. package/nav-disclosure/index.js +1 -1
  213. package/nav-item/index.cjs +1 -1
  214. package/nav-item/index.js +1 -1
  215. package/note/index.cjs +1 -1
  216. package/note/index.js +1 -1
  217. package/number-field/index.cjs +1 -1
  218. package/number-field/index.js +1 -1
  219. package/option/index.cjs +1 -1
  220. package/option/index.js +1 -1
  221. package/package.json +1 -1
  222. package/pagination/index.cjs +1 -1
  223. package/pagination/index.js +1 -1
  224. package/popup/index.cjs +1 -1
  225. package/popup/index.js +1 -1
  226. package/progress/index.cjs +1 -1
  227. package/progress/index.js +1 -1
  228. package/progress-ring/index.cjs +1 -1
  229. package/progress-ring/index.js +1 -1
  230. package/radio/index.cjs +1 -1
  231. package/radio/index.js +1 -1
  232. package/radio-group/index.cjs +1 -1
  233. package/radio-group/index.js +1 -1
  234. package/range-slider/index.cjs +1 -1
  235. package/range-slider/index.js +1 -1
  236. package/searchable-select/index.cjs +1 -1
  237. package/searchable-select/index.js +1 -1
  238. package/select/index.cjs +1 -1
  239. package/select/index.js +1 -1
  240. package/selectable-box/index.cjs +1 -1
  241. package/selectable-box/index.js +1 -1
  242. package/shared/affix.cjs +10 -10
  243. package/shared/affix.js +2 -2
  244. package/shared/anchor.cjs +59 -0
  245. package/shared/anchor.js +57 -0
  246. package/shared/anchored.cjs +6 -6
  247. package/shared/anchored.js +2 -2
  248. package/shared/apply-mixins.cjs +15 -17
  249. package/shared/apply-mixins.js +15 -17
  250. package/shared/apply-mixins2.cjs +25 -0
  251. package/shared/apply-mixins2.js +23 -0
  252. package/shared/applyMixinsWithObservables.cjs +4 -4
  253. package/shared/applyMixinsWithObservables.js +2 -2
  254. package/shared/aria-global.cjs +86 -67
  255. package/shared/aria-global.js +86 -67
  256. package/shared/aria-global2.cjs +68 -86
  257. package/shared/aria-global2.js +68 -86
  258. package/shared/base-progress.cjs +70 -63
  259. package/shared/base-progress.js +69 -62
  260. package/shared/breadcrumb-item.cjs +7 -58
  261. package/shared/breadcrumb-item.js +4 -55
  262. package/shared/button.cjs +178 -0
  263. package/shared/button.js +176 -0
  264. package/shared/calendar-event.cjs +10 -9
  265. package/shared/calendar-event.js +3 -2
  266. package/shared/children.cjs +2 -2
  267. package/shared/children.js +1 -1
  268. package/shared/date-picker/date-picker-base.form-associated.d.ts +3 -2
  269. package/shared/date-picker/date-picker-base.template.d.ts +2 -3
  270. package/shared/defineVividComponent.cjs +2612 -0
  271. package/shared/defineVividComponent.js +2592 -0
  272. package/shared/definition.cjs +26 -24
  273. package/shared/definition.js +17 -14
  274. package/shared/definition10.cjs +15 -12
  275. package/shared/definition10.js +15 -11
  276. package/shared/definition11.cjs +52 -248
  277. package/shared/definition11.js +24 -218
  278. package/shared/definition12.cjs +18 -14
  279. package/shared/definition12.js +17 -12
  280. package/shared/definition13.cjs +20 -19
  281. package/shared/definition13.js +11 -9
  282. package/shared/definition14.cjs +36 -38
  283. package/shared/definition14.js +16 -17
  284. package/shared/definition15.cjs +28 -26
  285. package/shared/definition15.js +17 -14
  286. package/shared/definition16.cjs +478 -611
  287. package/shared/definition16.js +471 -603
  288. package/shared/definition17.cjs +934 -1113
  289. package/shared/definition17.js +912 -1090
  290. package/shared/definition18.cjs +16 -20
  291. package/shared/definition18.js +19 -22
  292. package/shared/definition19.cjs +26 -30
  293. package/shared/definition19.js +21 -24
  294. package/shared/definition2.cjs +20 -22
  295. package/shared/definition2.js +21 -22
  296. package/shared/definition20.cjs +51 -52
  297. package/shared/definition20.js +35 -35
  298. package/shared/definition21.cjs +42 -45
  299. package/shared/definition21.js +18 -20
  300. package/shared/definition22.cjs +16 -13
  301. package/shared/definition22.js +15 -11
  302. package/shared/definition23.cjs +22 -20
  303. package/shared/definition23.js +15 -12
  304. package/shared/definition24.cjs +20 -172
  305. package/shared/definition24.js +17 -168
  306. package/shared/definition25.cjs +27 -28
  307. package/shared/definition25.js +19 -19
  308. package/shared/definition26.cjs +17 -14
  309. package/shared/definition26.js +15 -11
  310. package/shared/definition27.cjs +265 -12
  311. package/shared/definition27.js +262 -10
  312. package/shared/definition28.cjs +19 -16
  313. package/shared/definition28.js +15 -11
  314. package/shared/definition29.cjs +143 -68
  315. package/shared/definition29.js +102 -29
  316. package/shared/definition3.cjs +21 -16
  317. package/shared/definition3.js +17 -11
  318. package/shared/definition30.cjs +99 -76
  319. package/shared/definition30.js +98 -74
  320. package/shared/definition31.cjs +24 -97
  321. package/shared/definition31.js +25 -97
  322. package/shared/definition32.cjs +10 -25
  323. package/shared/definition32.js +9 -23
  324. package/shared/definition33.cjs +53 -14
  325. package/shared/definition33.js +52 -12
  326. package/shared/definition34.cjs +641 -34
  327. package/shared/definition34.js +638 -30
  328. package/shared/definition35.cjs +204 -596
  329. package/shared/definition35.js +198 -591
  330. package/shared/definition36.cjs +198 -233
  331. package/shared/definition36.js +193 -226
  332. package/shared/definition37.cjs +79 -206
  333. package/shared/definition37.js +75 -202
  334. package/shared/definition38.cjs +50 -56
  335. package/shared/definition38.js +48 -52
  336. package/shared/definition39.cjs +260 -56
  337. package/shared/definition39.js +259 -54
  338. package/shared/definition4.cjs +33 -35
  339. package/shared/definition4.js +20 -21
  340. package/shared/definition40.cjs +112 -229
  341. package/shared/definition40.js +109 -226
  342. package/shared/definition41.cjs +627 -36
  343. package/shared/definition41.js +626 -34
  344. package/shared/definition42.cjs +975 -487
  345. package/shared/definition42.js +972 -482
  346. package/shared/definition43.cjs +725 -932
  347. package/shared/definition43.js +713 -918
  348. package/shared/definition44.cjs +116 -734
  349. package/shared/definition44.js +114 -731
  350. package/shared/definition45.cjs +93 -116
  351. package/shared/definition45.js +93 -115
  352. package/shared/definition46.cjs +469 -89
  353. package/shared/definition46.js +466 -86
  354. package/shared/definition47.cjs +119 -470
  355. package/shared/definition47.js +116 -465
  356. package/shared/definition48.cjs +114 -120
  357. package/shared/definition48.js +112 -117
  358. package/shared/definition49.cjs +17 -134
  359. package/shared/definition49.js +16 -132
  360. package/shared/definition5.cjs +48 -49
  361. package/shared/definition5.js +19 -19
  362. package/shared/definition50.cjs +112 -15
  363. package/shared/definition50.js +110 -12
  364. package/shared/definition51.cjs +847 -84
  365. package/shared/definition51.js +843 -79
  366. package/shared/definition52.cjs +31 -873
  367. package/shared/definition52.js +29 -870
  368. package/shared/definition53.cjs +126 -28
  369. package/shared/definition53.js +124 -25
  370. package/shared/definition54.cjs +268 -107
  371. package/shared/definition54.js +262 -100
  372. package/shared/definition55.cjs +63 -278
  373. package/shared/definition55.js +61 -275
  374. package/shared/definition56.cjs +868 -76
  375. package/shared/definition56.js +867 -74
  376. package/shared/definition57.cjs +108 -826
  377. package/shared/definition57.js +106 -823
  378. package/shared/definition58.cjs +74 -100
  379. package/shared/definition58.js +70 -95
  380. package/shared/definition59.cjs +181 -106
  381. package/shared/definition59.js +175 -101
  382. package/shared/definition6.cjs +23 -21
  383. package/shared/definition6.js +15 -12
  384. package/shared/definition60.cjs +273 -70
  385. package/shared/definition60.js +273 -69
  386. package/shared/definition61.cjs +66157 -271
  387. package/shared/definition61.js +66156 -269
  388. package/shared/definition62.cjs +36 -66174
  389. package/shared/definition62.js +33 -66171
  390. package/shared/definition63.cjs +2154 -27
  391. package/shared/definition63.js +2151 -25
  392. package/shared/definition7.cjs +19 -15
  393. package/shared/definition7.js +14 -10
  394. package/shared/definition8.cjs +26 -27
  395. package/shared/definition8.js +17 -17
  396. package/shared/definition9.cjs +21 -21
  397. package/shared/definition9.js +18 -17
  398. package/shared/design-system/createRegisterFunction.d.ts +2 -0
  399. package/shared/design-system/defineVividComponent.d.ts +15 -0
  400. package/shared/{localization.js → direction.js} +11 -11
  401. package/shared/dom.cjs +0 -13
  402. package/shared/dom.js +1 -13
  403. package/shared/form-associated.cjs +422 -457
  404. package/shared/form-associated.js +422 -457
  405. package/shared/form-associated2.cjs +383 -0
  406. package/shared/form-associated2.js +381 -0
  407. package/shared/form-elements.cjs +15 -42
  408. package/shared/form-elements.js +2 -29
  409. package/shared/foundation/anchor/anchor.d.ts +1 -0
  410. package/shared/foundation/button/button.d.ts +3 -2
  411. package/shared/foundation/button/button.template.d.ts +2 -4
  412. package/shared/foundation/form-associated/form-associated.d.ts +51 -0
  413. package/shared/foundation/listbox/listbox.d.ts +22 -0
  414. package/shared/foundation/progress/base-progress.d.ts +9 -0
  415. package/shared/foundation/utilities/apply-mixins.d.ts +1 -0
  416. package/shared/foundation/vivid-element/vivid-element.d.ts +3 -0
  417. package/shared/foundation-element.cjs +1417 -0
  418. package/shared/foundation-element.js +1414 -0
  419. package/shared/index.cjs +7 -5097
  420. package/shared/index.js +7 -5079
  421. package/shared/key-codes.cjs +10 -0
  422. package/shared/key-codes.js +6 -1
  423. package/shared/key-codes2.cjs +50 -6
  424. package/shared/key-codes2.js +50 -4
  425. package/shared/listbox.cjs +428 -1195
  426. package/shared/listbox.js +412 -1176
  427. package/shared/listbox2.cjs +1268 -0
  428. package/shared/listbox2.js +1265 -0
  429. package/shared/localized.cjs +2 -2
  430. package/shared/localized.js +1 -1
  431. package/shared/numbers.cjs +12 -0
  432. package/shared/numbers.js +12 -1
  433. package/shared/patterns/affix.d.ts +2 -2
  434. package/shared/patterns/chevron.d.ts +2 -2
  435. package/shared/patterns/form-elements/form-elements.d.ts +2 -2
  436. package/shared/presentationDate.cjs +50 -49
  437. package/shared/presentationDate.js +7 -6
  438. package/shared/ref.cjs +2 -2
  439. package/shared/ref.js +1 -1
  440. package/shared/repeat.cjs +22 -22
  441. package/shared/repeat.js +1 -1
  442. package/shared/slider.template.cjs +5 -5
  443. package/shared/slider.template.js +2 -2
  444. package/shared/slotted.cjs +4 -4
  445. package/shared/slotted.js +1 -1
  446. package/shared/strings.cjs +0 -26
  447. package/shared/strings.js +1 -25
  448. package/shared/strings2.cjs +37 -0
  449. package/shared/strings2.js +33 -0
  450. package/shared/text-anchor.cjs +8 -89
  451. package/shared/text-anchor.js +5 -86
  452. package/shared/text-anchor.template.cjs +2 -2
  453. package/shared/text-anchor.template.js +1 -1
  454. package/shared/text-field2.cjs +29 -28
  455. package/shared/text-field2.js +6 -5
  456. package/shared/vivid-element.cjs +8 -0
  457. package/shared/vivid-element.js +6 -0
  458. package/side-drawer/index.cjs +1 -1
  459. package/side-drawer/index.js +1 -1
  460. package/slider/index.cjs +1 -1
  461. package/slider/index.js +1 -1
  462. package/split-button/index.cjs +1 -1
  463. package/split-button/index.js +1 -1
  464. package/styles/core/all.css +1 -1
  465. package/styles/core/theme.css +1 -1
  466. package/styles/core/typography.css +1 -1
  467. package/styles/tokens/theme-dark.css +4 -4
  468. package/styles/tokens/theme-light.css +4 -4
  469. package/styles/tokens/vivid-2-compat.css +1 -1
  470. package/switch/index.cjs +1 -1
  471. package/switch/index.js +1 -1
  472. package/tab/index.cjs +1 -1
  473. package/tab/index.js +1 -1
  474. package/tab-panel/index.cjs +1 -1
  475. package/tab-panel/index.js +1 -1
  476. package/tabs/index.cjs +1 -1
  477. package/tabs/index.js +1 -1
  478. package/tag/index.cjs +1 -1
  479. package/tag/index.js +1 -1
  480. package/tag-group/index.cjs +1 -1
  481. package/tag-group/index.js +1 -1
  482. package/text-anchor/index.cjs +10 -7
  483. package/text-anchor/index.js +10 -7
  484. package/text-area/index.cjs +1 -1
  485. package/text-area/index.js +1 -1
  486. package/text-field/index.cjs +1 -1
  487. package/text-field/index.js +1 -1
  488. package/time-picker/index.cjs +1 -1
  489. package/time-picker/index.js +1 -1
  490. package/toggletip/index.cjs +1 -1
  491. package/toggletip/index.js +1 -1
  492. package/tooltip/index.cjs +1 -1
  493. package/tooltip/index.js +1 -1
  494. package/tree-item/index.cjs +1 -1
  495. package/tree-item/index.js +1 -1
  496. package/tree-view/index.cjs +1 -1
  497. package/tree-view/index.js +1 -1
  498. package/video-player/index.cjs +1 -1
  499. package/video-player/index.js +1 -1
  500. package/vivid.api.json +2846 -7860
  501. package/shared/definition64.cjs +0 -2175
  502. package/shared/definition64.js +0 -2170
  503. package/shared/design-system/index.d.ts +0 -3
  504. package/shared/icon.cjs +0 -261
  505. package/shared/icon.js +0 -258
  506. package/shared/index2.cjs +0 -11
  507. package/shared/index2.js +0 -9
  508. package/shared/radio.cjs +0 -126
  509. package/shared/radio.js +0 -124
  510. package/shared/select.options.cjs +0 -12
  511. package/shared/select.options.js +0 -10
  512. package/shared/start-end.cjs +0 -52
  513. package/shared/start-end.js +0 -50
  514. package/shared/tree-item.cjs +0 -154
  515. package/shared/tree-item.js +0 -151
  516. package/shared/{localization.cjs → direction.cjs} +9 -9
@@ -0,0 +1,1268 @@
1
+ 'use strict';
2
+
3
+ const keyCodes$1 = require('./key-codes.cjs');
4
+ const foundationElement = require('./foundation-element.cjs');
5
+ const ariaGlobal = require('./aria-global2.cjs');
6
+ const keyCodes = require('./key-codes2.cjs');
7
+ const applyMixins = require('./apply-mixins2.cjs');
8
+ const defineVividComponent = require('./defineVividComponent.cjs');
9
+ const strings = require('./strings2.cjs');
10
+
11
+ /**
12
+ * Returns the index of the last element in the array where predicate is true, and -1 otherwise.
13
+ *
14
+ * @param array - the array to test
15
+ * @param predicate - find calls predicate once for each element of the array, in descending order, until it finds one where predicate returns true. If such an element is found, findLastIndex immediately returns that element index. Otherwise, findIndex returns -1.
16
+ */
17
+ function findLastIndex(array, predicate) {
18
+ let k = array.length;
19
+ while (k--) {
20
+ if (predicate(array[k], k, array)) {
21
+ return k;
22
+ }
23
+ }
24
+ return -1;
25
+ }
26
+
27
+ /**
28
+ * A test that ensures that all arguments are HTML Elements
29
+ */
30
+ function isHTMLElement(...args) {
31
+ return args.every((arg) => arg instanceof HTMLElement);
32
+ }
33
+
34
+ /**
35
+ * Determines if the element is a {@link (ListboxOption:class)}
36
+ *
37
+ * @param element - the element to test.
38
+ * @public
39
+ */
40
+ function isListboxOption(el) {
41
+ return (isHTMLElement(el) &&
42
+ (el.getAttribute("role") === "option" ||
43
+ el instanceof HTMLOptionElement));
44
+ }
45
+ /**
46
+ * An Option Custom HTML Element.
47
+ * Implements {@link https://www.w3.org/TR/wai-aria-1.1/#option | ARIA option }.
48
+ *
49
+ * @slot start - Content which can be provided before the listbox option content
50
+ * @slot end - Content which can be provided after the listbox option content
51
+ * @slot - The default slot for listbox option content
52
+ * @csspart content - Wraps the listbox option content
53
+ *
54
+ * @public
55
+ */
56
+ class ListboxOption extends foundationElement.FoundationElement {
57
+ constructor(text, value, defaultSelected, selected) {
58
+ super();
59
+ /**
60
+ * The defaultSelected state of the option.
61
+ * @public
62
+ */
63
+ this.defaultSelected = false;
64
+ /**
65
+ * Tracks whether the "selected" property has been changed.
66
+ * @internal
67
+ */
68
+ this.dirtySelected = false;
69
+ /**
70
+ * The checked state of the control.
71
+ *
72
+ * @public
73
+ */
74
+ this.selected = this.defaultSelected;
75
+ /**
76
+ * Track whether the value has been changed from the initial value
77
+ */
78
+ this.dirtyValue = false;
79
+ if (text) {
80
+ this.textContent = text;
81
+ }
82
+ if (value) {
83
+ this.initialValue = value;
84
+ }
85
+ if (defaultSelected) {
86
+ this.defaultSelected = defaultSelected;
87
+ }
88
+ if (selected) {
89
+ this.selected = selected;
90
+ }
91
+ this.proxy = new Option(`${this.textContent}`, this.initialValue, this.defaultSelected, this.selected);
92
+ this.proxy.disabled = this.disabled;
93
+ }
94
+ /**
95
+ * Updates the ariaChecked property when the checked property changes.
96
+ *
97
+ * @param prev - the previous checked value
98
+ * @param next - the current checked value
99
+ *
100
+ * @public
101
+ */
102
+ checkedChanged(prev, next) {
103
+ if (typeof next === "boolean") {
104
+ this.ariaChecked = next ? "true" : "false";
105
+ return;
106
+ }
107
+ this.ariaChecked = null;
108
+ }
109
+ /**
110
+ * Updates the proxy's text content when the default slot changes.
111
+ * @param prev - the previous content value
112
+ * @param next - the current content value
113
+ *
114
+ * @internal
115
+ */
116
+ contentChanged(prev, next) {
117
+ if (this.proxy instanceof HTMLOptionElement) {
118
+ this.proxy.textContent = this.textContent;
119
+ }
120
+ this.$emit("contentchange", null, { bubbles: true });
121
+ }
122
+ defaultSelectedChanged() {
123
+ if (!this.dirtySelected) {
124
+ this.selected = this.defaultSelected;
125
+ if (this.proxy instanceof HTMLOptionElement) {
126
+ this.proxy.selected = this.defaultSelected;
127
+ }
128
+ }
129
+ }
130
+ disabledChanged(prev, next) {
131
+ this.ariaDisabled = this.disabled ? "true" : "false";
132
+ if (this.proxy instanceof HTMLOptionElement) {
133
+ this.proxy.disabled = this.disabled;
134
+ }
135
+ }
136
+ selectedAttributeChanged() {
137
+ this.defaultSelected = this.selectedAttribute;
138
+ if (this.proxy instanceof HTMLOptionElement) {
139
+ this.proxy.defaultSelected = this.defaultSelected;
140
+ }
141
+ }
142
+ selectedChanged() {
143
+ this.ariaSelected = this.selected ? "true" : "false";
144
+ if (!this.dirtySelected) {
145
+ this.dirtySelected = true;
146
+ }
147
+ if (this.proxy instanceof HTMLOptionElement) {
148
+ this.proxy.selected = this.selected;
149
+ }
150
+ }
151
+ initialValueChanged(previous, next) {
152
+ // If the value is clean and the component is connected to the DOM
153
+ // then set value equal to the attribute value.
154
+ if (!this.dirtyValue) {
155
+ this.value = this.initialValue;
156
+ this.dirtyValue = false;
157
+ }
158
+ }
159
+ get label() {
160
+ var _a;
161
+ return (_a = this.value) !== null && _a !== void 0 ? _a : this.text;
162
+ }
163
+ get text() {
164
+ var _a, _b;
165
+ return (_b = (_a = this.textContent) === null || _a === void 0 ? void 0 : _a.replace(/\s+/g, " ").trim()) !== null && _b !== void 0 ? _b : "";
166
+ }
167
+ set value(next) {
168
+ const newValue = `${next !== null && next !== void 0 ? next : ""}`;
169
+ this._value = newValue;
170
+ this.dirtyValue = true;
171
+ if (this.proxy instanceof HTMLOptionElement) {
172
+ this.proxy.value = newValue;
173
+ }
174
+ defineVividComponent.Observable.notify(this, "value");
175
+ }
176
+ get value() {
177
+ var _a;
178
+ defineVividComponent.Observable.track(this, "value");
179
+ return (_a = this._value) !== null && _a !== void 0 ? _a : this.text;
180
+ }
181
+ get form() {
182
+ return this.proxy ? this.proxy.form : null;
183
+ }
184
+ }
185
+ foundationElement.__decorate([
186
+ defineVividComponent.observable
187
+ ], ListboxOption.prototype, "checked", void 0);
188
+ foundationElement.__decorate([
189
+ defineVividComponent.observable
190
+ ], ListboxOption.prototype, "content", void 0);
191
+ foundationElement.__decorate([
192
+ defineVividComponent.observable
193
+ ], ListboxOption.prototype, "defaultSelected", void 0);
194
+ foundationElement.__decorate([
195
+ defineVividComponent.attr({ mode: "boolean" })
196
+ ], ListboxOption.prototype, "disabled", void 0);
197
+ foundationElement.__decorate([
198
+ defineVividComponent.attr({ attribute: "selected", mode: "boolean" })
199
+ ], ListboxOption.prototype, "selectedAttribute", void 0);
200
+ foundationElement.__decorate([
201
+ defineVividComponent.observable
202
+ ], ListboxOption.prototype, "selected", void 0);
203
+ foundationElement.__decorate([
204
+ defineVividComponent.attr({ attribute: "value", mode: "fromView" })
205
+ ], ListboxOption.prototype, "initialValue", void 0);
206
+ /**
207
+ * States and properties relating to the ARIA `option` role.
208
+ *
209
+ * @public
210
+ */
211
+ class DelegatesARIAListboxOption {
212
+ }
213
+ foundationElement.__decorate([
214
+ defineVividComponent.observable
215
+ ], DelegatesARIAListboxOption.prototype, "ariaChecked", void 0);
216
+ foundationElement.__decorate([
217
+ defineVividComponent.observable
218
+ ], DelegatesARIAListboxOption.prototype, "ariaPosInSet", void 0);
219
+ foundationElement.__decorate([
220
+ defineVividComponent.observable
221
+ ], DelegatesARIAListboxOption.prototype, "ariaSelected", void 0);
222
+ foundationElement.__decorate([
223
+ defineVividComponent.observable
224
+ ], DelegatesARIAListboxOption.prototype, "ariaSetSize", void 0);
225
+ applyMixins.applyMixins(DelegatesARIAListboxOption, ariaGlobal.ARIAGlobalStatesAndProperties);
226
+ applyMixins.applyMixins(ListboxOption, keyCodes.StartEnd, DelegatesARIAListboxOption);
227
+
228
+ /**
229
+ * A Listbox Custom HTML Element.
230
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#listbox | ARIA listbox }.
231
+ *
232
+ * @slot - The default slot for the listbox options
233
+ *
234
+ * @public
235
+ */
236
+ let Listbox$1 = class Listbox extends foundationElement.FoundationElement {
237
+ constructor() {
238
+ super(...arguments);
239
+ /**
240
+ * The internal unfiltered list of selectable options.
241
+ *
242
+ * @internal
243
+ */
244
+ this._options = [];
245
+ /**
246
+ * The index of the selected option.
247
+ *
248
+ * @public
249
+ */
250
+ this.selectedIndex = -1;
251
+ /**
252
+ * A collection of the selected options.
253
+ *
254
+ * @public
255
+ */
256
+ this.selectedOptions = [];
257
+ /**
258
+ * A standard `click` event creates a `focus` event before firing, so a
259
+ * `mousedown` event is used to skip that initial focus.
260
+ *
261
+ * @internal
262
+ */
263
+ this.shouldSkipFocus = false;
264
+ /**
265
+ * The current typeahead buffer string.
266
+ *
267
+ * @internal
268
+ */
269
+ this.typeaheadBuffer = "";
270
+ /**
271
+ * Flag for the typeahead timeout expiration.
272
+ *
273
+ * @internal
274
+ */
275
+ this.typeaheadExpired = true;
276
+ /**
277
+ * The timeout ID for the typeahead handler.
278
+ *
279
+ * @internal
280
+ */
281
+ this.typeaheadTimeout = -1;
282
+ }
283
+ /**
284
+ * The first selected option.
285
+ *
286
+ * @internal
287
+ */
288
+ get firstSelectedOption() {
289
+ var _a;
290
+ return (_a = this.selectedOptions[0]) !== null && _a !== void 0 ? _a : null;
291
+ }
292
+ /**
293
+ * Returns true if there is one or more selectable option.
294
+ *
295
+ * @internal
296
+ */
297
+ get hasSelectableOptions() {
298
+ return this.options.length > 0 && !this.options.every(o => o.disabled);
299
+ }
300
+ /**
301
+ * The number of options.
302
+ *
303
+ * @public
304
+ */
305
+ get length() {
306
+ var _a, _b;
307
+ return (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
308
+ }
309
+ /**
310
+ * The list of options.
311
+ *
312
+ * @public
313
+ */
314
+ get options() {
315
+ defineVividComponent.Observable.track(this, "options");
316
+ return this._options;
317
+ }
318
+ set options(value) {
319
+ this._options = value;
320
+ defineVividComponent.Observable.notify(this, "options");
321
+ }
322
+ /**
323
+ * Flag for the typeahead timeout expiration.
324
+ *
325
+ * @deprecated use `Listbox.typeaheadExpired`
326
+ * @internal
327
+ */
328
+ get typeAheadExpired() {
329
+ return this.typeaheadExpired;
330
+ }
331
+ set typeAheadExpired(value) {
332
+ this.typeaheadExpired = value;
333
+ }
334
+ /**
335
+ * Handle click events for listbox options.
336
+ *
337
+ * @internal
338
+ */
339
+ clickHandler(e) {
340
+ const captured = e.target.closest(`option,[role=option]`);
341
+ if (captured && !captured.disabled) {
342
+ this.selectedIndex = this.options.indexOf(captured);
343
+ return true;
344
+ }
345
+ }
346
+ /**
347
+ * Ensures that the provided option is focused and scrolled into view.
348
+ *
349
+ * @param optionToFocus - The option to focus
350
+ * @internal
351
+ */
352
+ focusAndScrollOptionIntoView(optionToFocus = this.firstSelectedOption) {
353
+ // To ensure that the browser handles both `focus()` and `scrollIntoView()`, the
354
+ // timing here needs to guarantee that they happen on different frames. Since this
355
+ // function is typically called from the `openChanged` observer, `DOM.queueUpdate`
356
+ // causes the calls to be grouped into the same frame. To prevent this,
357
+ // `requestAnimationFrame` is used instead of `DOM.queueUpdate`.
358
+ if (this.contains(document.activeElement) && optionToFocus !== null) {
359
+ optionToFocus.focus();
360
+ requestAnimationFrame(() => {
361
+ optionToFocus.scrollIntoView({ block: "nearest" });
362
+ });
363
+ }
364
+ }
365
+ /**
366
+ * Handles `focusin` actions for the component. When the component receives focus,
367
+ * the list of selected options is refreshed and the first selected option is scrolled
368
+ * into view.
369
+ *
370
+ * @internal
371
+ */
372
+ focusinHandler(e) {
373
+ if (!this.shouldSkipFocus && e.target === e.currentTarget) {
374
+ this.setSelectedOptions();
375
+ this.focusAndScrollOptionIntoView();
376
+ }
377
+ this.shouldSkipFocus = false;
378
+ }
379
+ /**
380
+ * Returns the options which match the current typeahead buffer.
381
+ *
382
+ * @internal
383
+ */
384
+ getTypeaheadMatches() {
385
+ const pattern = this.typeaheadBuffer.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&");
386
+ const re = new RegExp(`^${pattern}`, "gi");
387
+ return this.options.filter((o) => o.text.trim().match(re));
388
+ }
389
+ /**
390
+ * Determines the index of the next option which is selectable, if any.
391
+ *
392
+ * @param prev - the previous selected index
393
+ * @param next - the next index to select
394
+ *
395
+ * @internal
396
+ */
397
+ getSelectableIndex(prev = this.selectedIndex, next) {
398
+ const direction = prev > next ? -1 : prev < next ? 1 : 0;
399
+ const potentialDirection = prev + direction;
400
+ let nextSelectableOption = null;
401
+ switch (direction) {
402
+ case -1: {
403
+ nextSelectableOption = this.options.reduceRight((nextSelectableOption, thisOption, index) => !nextSelectableOption &&
404
+ !thisOption.disabled &&
405
+ index < potentialDirection
406
+ ? thisOption
407
+ : nextSelectableOption, nextSelectableOption);
408
+ break;
409
+ }
410
+ case 1: {
411
+ nextSelectableOption = this.options.reduce((nextSelectableOption, thisOption, index) => !nextSelectableOption &&
412
+ !thisOption.disabled &&
413
+ index > potentialDirection
414
+ ? thisOption
415
+ : nextSelectableOption, nextSelectableOption);
416
+ break;
417
+ }
418
+ }
419
+ return this.options.indexOf(nextSelectableOption);
420
+ }
421
+ /**
422
+ * Handles external changes to child options.
423
+ *
424
+ * @param source - the source object
425
+ * @param propertyName - the property
426
+ *
427
+ * @internal
428
+ */
429
+ handleChange(source, propertyName) {
430
+ switch (propertyName) {
431
+ case "selected": {
432
+ if (Listbox.slottedOptionFilter(source)) {
433
+ this.selectedIndex = this.options.indexOf(source);
434
+ }
435
+ this.setSelectedOptions();
436
+ break;
437
+ }
438
+ }
439
+ }
440
+ /**
441
+ * Moves focus to an option whose label matches characters typed by the user.
442
+ * Consecutive keystrokes are batched into a buffer of search text used
443
+ * to match against the set of options. If `TYPE_AHEAD_TIMEOUT_MS` passes
444
+ * between consecutive keystrokes, the search restarts.
445
+ *
446
+ * @param key - the key to be evaluated
447
+ *
448
+ * @internal
449
+ */
450
+ handleTypeAhead(key) {
451
+ if (this.typeaheadTimeout) {
452
+ window.clearTimeout(this.typeaheadTimeout);
453
+ }
454
+ this.typeaheadTimeout = window.setTimeout(() => (this.typeaheadExpired = true), Listbox.TYPE_AHEAD_TIMEOUT_MS);
455
+ if (key.length > 1) {
456
+ return;
457
+ }
458
+ this.typeaheadBuffer = `${this.typeaheadExpired ? "" : this.typeaheadBuffer}${key}`;
459
+ }
460
+ /**
461
+ * Handles `keydown` actions for listbox navigation and typeahead.
462
+ *
463
+ * @internal
464
+ */
465
+ keydownHandler(e) {
466
+ if (this.disabled) {
467
+ return true;
468
+ }
469
+ this.shouldSkipFocus = false;
470
+ const key = e.key;
471
+ switch (key) {
472
+ // Select the first available option
473
+ case keyCodes.keyHome: {
474
+ if (!e.shiftKey) {
475
+ e.preventDefault();
476
+ this.selectFirstOption();
477
+ }
478
+ break;
479
+ }
480
+ // Select the next selectable option
481
+ case keyCodes.keyArrowDown: {
482
+ if (!e.shiftKey) {
483
+ e.preventDefault();
484
+ this.selectNextOption();
485
+ }
486
+ break;
487
+ }
488
+ // Select the previous selectable option
489
+ case keyCodes.keyArrowUp: {
490
+ if (!e.shiftKey) {
491
+ e.preventDefault();
492
+ this.selectPreviousOption();
493
+ }
494
+ break;
495
+ }
496
+ // Select the last available option
497
+ case keyCodes.keyEnd: {
498
+ e.preventDefault();
499
+ this.selectLastOption();
500
+ break;
501
+ }
502
+ case keyCodes.keyTab: {
503
+ this.focusAndScrollOptionIntoView();
504
+ return true;
505
+ }
506
+ case keyCodes.keyEnter:
507
+ case keyCodes.keyEscape: {
508
+ return true;
509
+ }
510
+ case keyCodes.keySpace: {
511
+ if (this.typeaheadExpired) {
512
+ return true;
513
+ }
514
+ }
515
+ // Send key to Typeahead handler
516
+ default: {
517
+ if (key.length === 1) {
518
+ this.handleTypeAhead(`${key}`);
519
+ }
520
+ return true;
521
+ }
522
+ }
523
+ }
524
+ /**
525
+ * Prevents `focusin` events from firing before `click` events when the
526
+ * element is unfocused.
527
+ *
528
+ * @internal
529
+ */
530
+ mousedownHandler(e) {
531
+ this.shouldSkipFocus = !this.contains(document.activeElement);
532
+ return true;
533
+ }
534
+ /**
535
+ * Switches between single-selection and multi-selection mode.
536
+ *
537
+ * @param prev - the previous value of the `multiple` attribute
538
+ * @param next - the next value of the `multiple` attribute
539
+ *
540
+ * @internal
541
+ */
542
+ multipleChanged(prev, next) {
543
+ this.ariaMultiSelectable = next ? "true" : null;
544
+ }
545
+ /**
546
+ * Updates the list of selected options when the `selectedIndex` changes.
547
+ *
548
+ * @param prev - the previous selected index value
549
+ * @param next - the current selected index value
550
+ *
551
+ * @internal
552
+ */
553
+ selectedIndexChanged(prev, next) {
554
+ var _a;
555
+ if (!this.hasSelectableOptions) {
556
+ this.selectedIndex = -1;
557
+ return;
558
+ }
559
+ if (((_a = this.options[this.selectedIndex]) === null || _a === void 0 ? void 0 : _a.disabled) && typeof prev === "number") {
560
+ const selectableIndex = this.getSelectableIndex(prev, next);
561
+ const newNext = selectableIndex > -1 ? selectableIndex : prev;
562
+ this.selectedIndex = newNext;
563
+ if (next === newNext) {
564
+ this.selectedIndexChanged(next, newNext);
565
+ }
566
+ return;
567
+ }
568
+ this.setSelectedOptions();
569
+ }
570
+ /**
571
+ * Updates the selectedness of each option when the list of selected options changes.
572
+ *
573
+ * @param prev - the previous list of selected options
574
+ * @param next - the current list of selected options
575
+ *
576
+ * @internal
577
+ */
578
+ selectedOptionsChanged(prev, next) {
579
+ var _a;
580
+ const filteredNext = next.filter(Listbox.slottedOptionFilter);
581
+ (_a = this.options) === null || _a === void 0 ? void 0 : _a.forEach(o => {
582
+ const notifier = defineVividComponent.Observable.getNotifier(o);
583
+ notifier.unsubscribe(this, "selected");
584
+ o.selected = filteredNext.includes(o);
585
+ notifier.subscribe(this, "selected");
586
+ });
587
+ }
588
+ /**
589
+ * Moves focus to the first selectable option.
590
+ *
591
+ * @public
592
+ */
593
+ selectFirstOption() {
594
+ var _a, _b;
595
+ if (!this.disabled) {
596
+ this.selectedIndex = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.findIndex(o => !o.disabled)) !== null && _b !== void 0 ? _b : -1;
597
+ }
598
+ }
599
+ /**
600
+ * Moves focus to the last selectable option.
601
+ *
602
+ * @internal
603
+ */
604
+ selectLastOption() {
605
+ if (!this.disabled) {
606
+ this.selectedIndex = findLastIndex(this.options, o => !o.disabled);
607
+ }
608
+ }
609
+ /**
610
+ * Moves focus to the next selectable option.
611
+ *
612
+ * @internal
613
+ */
614
+ selectNextOption() {
615
+ if (!this.disabled && this.selectedIndex < this.options.length - 1) {
616
+ this.selectedIndex += 1;
617
+ }
618
+ }
619
+ /**
620
+ * Moves focus to the previous selectable option.
621
+ *
622
+ * @internal
623
+ */
624
+ selectPreviousOption() {
625
+ if (!this.disabled && this.selectedIndex > 0) {
626
+ this.selectedIndex = this.selectedIndex - 1;
627
+ }
628
+ }
629
+ /**
630
+ * Updates the selected index to match the first selected option.
631
+ *
632
+ * @internal
633
+ */
634
+ setDefaultSelectedOption() {
635
+ var _a, _b;
636
+ this.selectedIndex = (_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.findIndex(el => el.defaultSelected)) !== null && _b !== void 0 ? _b : -1;
637
+ }
638
+ /**
639
+ * Sets an option as selected and gives it focus.
640
+ *
641
+ * @public
642
+ */
643
+ setSelectedOptions() {
644
+ var _a, _b, _c;
645
+ if ((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) {
646
+ this.selectedOptions = [this.options[this.selectedIndex]];
647
+ this.ariaActiveDescendant = (_c = (_b = this.firstSelectedOption) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : "";
648
+ this.focusAndScrollOptionIntoView();
649
+ }
650
+ }
651
+ /**
652
+ * Updates the list of options and resets the selected option when the slotted option content changes.
653
+ *
654
+ * @param prev - the previous list of slotted options
655
+ * @param next - the current list of slotted options
656
+ *
657
+ * @internal
658
+ */
659
+ slottedOptionsChanged(prev, next) {
660
+ this.options = next.reduce((options, item) => {
661
+ if (isListboxOption(item)) {
662
+ options.push(item);
663
+ }
664
+ return options;
665
+ }, []);
666
+ const setSize = `${this.options.length}`;
667
+ this.options.forEach((option, index) => {
668
+ if (!option.id) {
669
+ option.id = strings.uniqueId("option-");
670
+ }
671
+ option.ariaPosInSet = `${index + 1}`;
672
+ option.ariaSetSize = setSize;
673
+ });
674
+ if (this.$fastController.isConnected) {
675
+ this.setSelectedOptions();
676
+ this.setDefaultSelectedOption();
677
+ }
678
+ }
679
+ /**
680
+ * Updates the filtered list of options when the typeahead buffer changes.
681
+ *
682
+ * @param prev - the previous typeahead buffer value
683
+ * @param next - the current typeahead buffer value
684
+ *
685
+ * @internal
686
+ */
687
+ typeaheadBufferChanged(prev, next) {
688
+ if (this.$fastController.isConnected) {
689
+ const typeaheadMatches = this.getTypeaheadMatches();
690
+ if (typeaheadMatches.length) {
691
+ const selectedIndex = this.options.indexOf(typeaheadMatches[0]);
692
+ if (selectedIndex > -1) {
693
+ this.selectedIndex = selectedIndex;
694
+ }
695
+ }
696
+ this.typeaheadExpired = false;
697
+ }
698
+ }
699
+ };
700
+ /**
701
+ * A static filter to include only selectable options.
702
+ *
703
+ * @param n - element to filter
704
+ * @public
705
+ */
706
+ Listbox$1.slottedOptionFilter = (n) => isListboxOption(n) && !n.hidden;
707
+ /**
708
+ * Typeahead timeout in milliseconds.
709
+ *
710
+ * @internal
711
+ */
712
+ Listbox$1.TYPE_AHEAD_TIMEOUT_MS = 1000;
713
+ foundationElement.__decorate([
714
+ defineVividComponent.attr({ mode: "boolean" })
715
+ ], Listbox$1.prototype, "disabled", void 0);
716
+ foundationElement.__decorate([
717
+ defineVividComponent.observable
718
+ ], Listbox$1.prototype, "selectedIndex", void 0);
719
+ foundationElement.__decorate([
720
+ defineVividComponent.observable
721
+ ], Listbox$1.prototype, "selectedOptions", void 0);
722
+ foundationElement.__decorate([
723
+ defineVividComponent.observable
724
+ ], Listbox$1.prototype, "slottedOptions", void 0);
725
+ foundationElement.__decorate([
726
+ defineVividComponent.observable
727
+ ], Listbox$1.prototype, "typeaheadBuffer", void 0);
728
+ /**
729
+ * Includes ARIA states and properties relating to the ARIA listbox role
730
+ *
731
+ * @public
732
+ */
733
+ class DelegatesARIAListbox {
734
+ }
735
+ foundationElement.__decorate([
736
+ defineVividComponent.observable
737
+ ], DelegatesARIAListbox.prototype, "ariaActiveDescendant", void 0);
738
+ foundationElement.__decorate([
739
+ defineVividComponent.observable
740
+ ], DelegatesARIAListbox.prototype, "ariaDisabled", void 0);
741
+ foundationElement.__decorate([
742
+ defineVividComponent.observable
743
+ ], DelegatesARIAListbox.prototype, "ariaExpanded", void 0);
744
+ foundationElement.__decorate([
745
+ defineVividComponent.observable
746
+ ], DelegatesARIAListbox.prototype, "ariaMultiSelectable", void 0);
747
+ applyMixins.applyMixins(DelegatesARIAListbox, ariaGlobal.ARIAGlobalStatesAndProperties);
748
+ applyMixins.applyMixins(Listbox$1, DelegatesARIAListbox);
749
+
750
+ /**
751
+ * A Listbox Custom HTML Element.
752
+ * Implements the {@link https://w3c.github.io/aria/#listbox | ARIA listbox }.
753
+ *
754
+ * @public
755
+ */
756
+ class ListboxElement extends Listbox$1 {
757
+ constructor() {
758
+ super(...arguments);
759
+ /**
760
+ * The index of the most recently checked option.
761
+ *
762
+ * @internal
763
+ * @remarks
764
+ * Multiple-selection mode only.
765
+ */
766
+ this.activeIndex = -1;
767
+ /**
768
+ * The start index when checking a range of options.
769
+ *
770
+ * @internal
771
+ */
772
+ this.rangeStartIndex = -1;
773
+ }
774
+ /**
775
+ * Returns the last checked option.
776
+ *
777
+ * @internal
778
+ */
779
+ get activeOption() {
780
+ return this.options[this.activeIndex];
781
+ }
782
+ /**
783
+ * Returns the list of checked options.
784
+ *
785
+ * @internal
786
+ */
787
+ get checkedOptions() {
788
+ var _a;
789
+ return (_a = this.options) === null || _a === void 0 ? void 0 : _a.filter(o => o.checked);
790
+ }
791
+ /**
792
+ * Returns the index of the first selected option.
793
+ *
794
+ * @internal
795
+ */
796
+ get firstSelectedOptionIndex() {
797
+ return this.options.indexOf(this.firstSelectedOption);
798
+ }
799
+ /**
800
+ * Updates the `ariaActiveDescendant` property when the active index changes.
801
+ *
802
+ * @param prev - the previous active index
803
+ * @param next - the next active index
804
+ *
805
+ * @internal
806
+ */
807
+ activeIndexChanged(prev, next) {
808
+ var _a, _b;
809
+ this.ariaActiveDescendant = (_b = (_a = this.options[next]) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : "";
810
+ this.focusAndScrollOptionIntoView();
811
+ }
812
+ /**
813
+ * Toggles the checked state for the currently active option.
814
+ *
815
+ * @remarks
816
+ * Multiple-selection mode only.
817
+ *
818
+ * @internal
819
+ */
820
+ checkActiveIndex() {
821
+ if (!this.multiple) {
822
+ return;
823
+ }
824
+ const activeItem = this.activeOption;
825
+ if (activeItem) {
826
+ activeItem.checked = true;
827
+ }
828
+ }
829
+ /**
830
+ * Sets the active index to the first option and marks it as checked.
831
+ *
832
+ * @remarks
833
+ * Multi-selection mode only.
834
+ *
835
+ * @param preserveChecked - mark all options unchecked before changing the active index
836
+ *
837
+ * @internal
838
+ */
839
+ checkFirstOption(preserveChecked = false) {
840
+ if (preserveChecked) {
841
+ if (this.rangeStartIndex === -1) {
842
+ this.rangeStartIndex = this.activeIndex + 1;
843
+ }
844
+ this.options.forEach((o, i) => {
845
+ o.checked = strings.inRange(i, this.rangeStartIndex);
846
+ });
847
+ }
848
+ else {
849
+ this.uncheckAllOptions();
850
+ }
851
+ this.activeIndex = 0;
852
+ this.checkActiveIndex();
853
+ }
854
+ /**
855
+ * Decrements the active index and sets the matching option as checked.
856
+ *
857
+ * @remarks
858
+ * Multi-selection mode only.
859
+ *
860
+ * @param preserveChecked - mark all options unchecked before changing the active index
861
+ *
862
+ * @internal
863
+ */
864
+ checkLastOption(preserveChecked = false) {
865
+ if (preserveChecked) {
866
+ if (this.rangeStartIndex === -1) {
867
+ this.rangeStartIndex = this.activeIndex;
868
+ }
869
+ this.options.forEach((o, i) => {
870
+ o.checked = strings.inRange(i, this.rangeStartIndex, this.options.length);
871
+ });
872
+ }
873
+ else {
874
+ this.uncheckAllOptions();
875
+ }
876
+ this.activeIndex = this.options.length - 1;
877
+ this.checkActiveIndex();
878
+ }
879
+ /**
880
+ * @override
881
+ * @internal
882
+ */
883
+ connectedCallback() {
884
+ super.connectedCallback();
885
+ this.addEventListener("focusout", this.focusoutHandler);
886
+ }
887
+ /**
888
+ * @override
889
+ * @internal
890
+ */
891
+ disconnectedCallback() {
892
+ this.removeEventListener("focusout", this.focusoutHandler);
893
+ super.disconnectedCallback();
894
+ }
895
+ /**
896
+ * Increments the active index and marks the matching option as checked.
897
+ *
898
+ * @remarks
899
+ * Multiple-selection mode only.
900
+ *
901
+ * @param preserveChecked - mark all options unchecked before changing the active index
902
+ *
903
+ * @internal
904
+ */
905
+ checkNextOption(preserveChecked = false) {
906
+ if (preserveChecked) {
907
+ if (this.rangeStartIndex === -1) {
908
+ this.rangeStartIndex = this.activeIndex;
909
+ }
910
+ this.options.forEach((o, i) => {
911
+ o.checked = strings.inRange(i, this.rangeStartIndex, this.activeIndex + 1);
912
+ });
913
+ }
914
+ else {
915
+ this.uncheckAllOptions();
916
+ }
917
+ this.activeIndex += this.activeIndex < this.options.length - 1 ? 1 : 0;
918
+ this.checkActiveIndex();
919
+ }
920
+ /**
921
+ * Decrements the active index and marks the matching option as checked.
922
+ *
923
+ * @remarks
924
+ * Multiple-selection mode only.
925
+ *
926
+ * @param preserveChecked - mark all options unchecked before changing the active index
927
+ *
928
+ * @internal
929
+ */
930
+ checkPreviousOption(preserveChecked = false) {
931
+ if (preserveChecked) {
932
+ if (this.rangeStartIndex === -1) {
933
+ this.rangeStartIndex = this.activeIndex;
934
+ }
935
+ if (this.checkedOptions.length === 1) {
936
+ this.rangeStartIndex += 1;
937
+ }
938
+ this.options.forEach((o, i) => {
939
+ o.checked = strings.inRange(i, this.activeIndex, this.rangeStartIndex);
940
+ });
941
+ }
942
+ else {
943
+ this.uncheckAllOptions();
944
+ }
945
+ this.activeIndex -= this.activeIndex > 0 ? 1 : 0;
946
+ this.checkActiveIndex();
947
+ }
948
+ /**
949
+ * Handles click events for listbox options.
950
+ *
951
+ * @param e - the event object
952
+ *
953
+ * @override
954
+ * @internal
955
+ */
956
+ clickHandler(e) {
957
+ var _a;
958
+ if (!this.multiple) {
959
+ return super.clickHandler(e);
960
+ }
961
+ const captured = (_a = e.target) === null || _a === void 0 ? void 0 : _a.closest(`[role=option]`);
962
+ if (!captured || captured.disabled) {
963
+ return;
964
+ }
965
+ this.uncheckAllOptions();
966
+ this.activeIndex = this.options.indexOf(captured);
967
+ this.checkActiveIndex();
968
+ this.toggleSelectedForAllCheckedOptions();
969
+ return true;
970
+ }
971
+ /**
972
+ * @override
973
+ * @internal
974
+ */
975
+ focusAndScrollOptionIntoView() {
976
+ super.focusAndScrollOptionIntoView(this.activeOption);
977
+ }
978
+ /**
979
+ * In multiple-selection mode:
980
+ * If any options are selected, the first selected option is checked when
981
+ * the listbox receives focus. If no options are selected, the first
982
+ * selectable option is checked.
983
+ *
984
+ * @override
985
+ * @internal
986
+ */
987
+ focusinHandler(e) {
988
+ if (!this.multiple) {
989
+ return super.focusinHandler(e);
990
+ }
991
+ if (!this.shouldSkipFocus && e.target === e.currentTarget) {
992
+ this.uncheckAllOptions();
993
+ if (this.activeIndex === -1) {
994
+ this.activeIndex =
995
+ this.firstSelectedOptionIndex !== -1
996
+ ? this.firstSelectedOptionIndex
997
+ : 0;
998
+ }
999
+ this.checkActiveIndex();
1000
+ this.setSelectedOptions();
1001
+ this.focusAndScrollOptionIntoView();
1002
+ }
1003
+ this.shouldSkipFocus = false;
1004
+ }
1005
+ /**
1006
+ * Unchecks all options when the listbox loses focus.
1007
+ *
1008
+ * @internal
1009
+ */
1010
+ focusoutHandler(e) {
1011
+ if (this.multiple) {
1012
+ this.uncheckAllOptions();
1013
+ }
1014
+ }
1015
+ /**
1016
+ * Handles keydown actions for listbox navigation and typeahead
1017
+ *
1018
+ * @override
1019
+ * @internal
1020
+ */
1021
+ keydownHandler(e) {
1022
+ if (!this.multiple) {
1023
+ return super.keydownHandler(e);
1024
+ }
1025
+ if (this.disabled) {
1026
+ return true;
1027
+ }
1028
+ const { key, shiftKey } = e;
1029
+ this.shouldSkipFocus = false;
1030
+ switch (key) {
1031
+ // Select the first available option
1032
+ case keyCodes.keyHome: {
1033
+ this.checkFirstOption(shiftKey);
1034
+ return;
1035
+ }
1036
+ // Select the next selectable option
1037
+ case keyCodes.keyArrowDown: {
1038
+ this.checkNextOption(shiftKey);
1039
+ return;
1040
+ }
1041
+ // Select the previous selectable option
1042
+ case keyCodes.keyArrowUp: {
1043
+ this.checkPreviousOption(shiftKey);
1044
+ return;
1045
+ }
1046
+ // Select the last available option
1047
+ case keyCodes.keyEnd: {
1048
+ this.checkLastOption(shiftKey);
1049
+ return;
1050
+ }
1051
+ case keyCodes.keyTab: {
1052
+ this.focusAndScrollOptionIntoView();
1053
+ return true;
1054
+ }
1055
+ case keyCodes.keyEscape: {
1056
+ this.uncheckAllOptions();
1057
+ this.checkActiveIndex();
1058
+ return true;
1059
+ }
1060
+ case keyCodes.keySpace: {
1061
+ e.preventDefault();
1062
+ if (this.typeAheadExpired) {
1063
+ this.toggleSelectedForAllCheckedOptions();
1064
+ return;
1065
+ }
1066
+ }
1067
+ // Send key to Typeahead handler
1068
+ default: {
1069
+ if (key.length === 1) {
1070
+ this.handleTypeAhead(`${key}`);
1071
+ }
1072
+ return true;
1073
+ }
1074
+ }
1075
+ }
1076
+ /**
1077
+ * Prevents `focusin` events from firing before `click` events when the
1078
+ * element is unfocused.
1079
+ *
1080
+ * @override
1081
+ * @internal
1082
+ */
1083
+ mousedownHandler(e) {
1084
+ if (e.offsetX >= 0 && e.offsetX <= this.scrollWidth) {
1085
+ return super.mousedownHandler(e);
1086
+ }
1087
+ }
1088
+ /**
1089
+ * Switches between single-selection and multi-selection mode.
1090
+ *
1091
+ * @internal
1092
+ */
1093
+ multipleChanged(prev, next) {
1094
+ var _a;
1095
+ this.ariaMultiSelectable = next ? "true" : null;
1096
+ (_a = this.options) === null || _a === void 0 ? void 0 : _a.forEach(o => {
1097
+ o.checked = next ? false : undefined;
1098
+ });
1099
+ this.setSelectedOptions();
1100
+ }
1101
+ /**
1102
+ * Sets an option as selected and gives it focus.
1103
+ *
1104
+ * @override
1105
+ * @public
1106
+ */
1107
+ setSelectedOptions() {
1108
+ if (!this.multiple) {
1109
+ super.setSelectedOptions();
1110
+ return;
1111
+ }
1112
+ if (this.$fastController.isConnected && this.options) {
1113
+ this.selectedOptions = this.options.filter(o => o.selected);
1114
+ this.focusAndScrollOptionIntoView();
1115
+ }
1116
+ }
1117
+ /**
1118
+ * Ensures the size is a positive integer when the property is updated.
1119
+ *
1120
+ * @param prev - the previous size value
1121
+ * @param next - the current size value
1122
+ *
1123
+ * @internal
1124
+ */
1125
+ sizeChanged(prev, next) {
1126
+ var _a;
1127
+ const size = Math.max(0, parseInt((_a = next === null || next === void 0 ? void 0 : next.toFixed()) !== null && _a !== void 0 ? _a : "", 10));
1128
+ if (size !== next) {
1129
+ defineVividComponent.DOM.queueUpdate(() => {
1130
+ this.size = size;
1131
+ });
1132
+ }
1133
+ }
1134
+ /**
1135
+ * Toggles the selected state of the provided options. If any provided items
1136
+ * are in an unselected state, all items are set to selected. If every
1137
+ * provided item is selected, they are all unselected.
1138
+ *
1139
+ * @internal
1140
+ */
1141
+ toggleSelectedForAllCheckedOptions() {
1142
+ const enabledCheckedOptions = this.checkedOptions.filter(o => !o.disabled);
1143
+ const force = !enabledCheckedOptions.every(o => o.selected);
1144
+ enabledCheckedOptions.forEach(o => (o.selected = force));
1145
+ this.selectedIndex = this.options.indexOf(enabledCheckedOptions[enabledCheckedOptions.length - 1]);
1146
+ this.setSelectedOptions();
1147
+ }
1148
+ /**
1149
+ * @override
1150
+ * @internal
1151
+ */
1152
+ typeaheadBufferChanged(prev, next) {
1153
+ if (!this.multiple) {
1154
+ super.typeaheadBufferChanged(prev, next);
1155
+ return;
1156
+ }
1157
+ if (this.$fastController.isConnected) {
1158
+ const typeaheadMatches = this.getTypeaheadMatches();
1159
+ const activeIndex = this.options.indexOf(typeaheadMatches[0]);
1160
+ if (activeIndex > -1) {
1161
+ this.activeIndex = activeIndex;
1162
+ this.uncheckAllOptions();
1163
+ this.checkActiveIndex();
1164
+ }
1165
+ this.typeAheadExpired = false;
1166
+ }
1167
+ }
1168
+ /**
1169
+ * Unchecks all options.
1170
+ *
1171
+ * @remarks
1172
+ * Multiple-selection mode only.
1173
+ *
1174
+ * @param preserveChecked - reset the rangeStartIndex
1175
+ *
1176
+ * @internal
1177
+ */
1178
+ uncheckAllOptions(preserveChecked = false) {
1179
+ this.options.forEach(o => (o.checked = this.multiple ? false : undefined));
1180
+ if (!preserveChecked) {
1181
+ this.rangeStartIndex = -1;
1182
+ }
1183
+ }
1184
+ }
1185
+ foundationElement.__decorate([
1186
+ defineVividComponent.observable
1187
+ ], ListboxElement.prototype, "activeIndex", void 0);
1188
+ foundationElement.__decorate([
1189
+ defineVividComponent.attr({ mode: "boolean" })
1190
+ ], ListboxElement.prototype, "multiple", void 0);
1191
+ foundationElement.__decorate([
1192
+ defineVividComponent.attr({ converter: defineVividComponent.nullableNumberConverter })
1193
+ ], ListboxElement.prototype, "size", void 0);
1194
+
1195
+ var __defProp = Object.defineProperty;
1196
+ var __decorateClass = (decorators, target, key, kind) => {
1197
+ var result = void 0 ;
1198
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
1199
+ if (decorator = decorators[i])
1200
+ result = (decorator(target, key, result) ) || result;
1201
+ if (result) __defProp(target, key, result);
1202
+ return result;
1203
+ };
1204
+ class Listbox extends ListboxElement {
1205
+ orientationChanged() {
1206
+ if (this.orientation === "horizontal") {
1207
+ this.addEventListener("keydown", this.#horizontalKeydownHandler);
1208
+ } else {
1209
+ this.removeEventListener("keydown", this.#horizontalKeydownHandler);
1210
+ }
1211
+ }
1212
+ /**
1213
+ * Handles `keydown` actions for horizontal listbox navigation and typeahead.
1214
+ *
1215
+ * @internal
1216
+ */
1217
+ #horizontalKeydownHandler(e) {
1218
+ if (this.disabled) {
1219
+ return true;
1220
+ }
1221
+ const key = e.key;
1222
+ switch (key) {
1223
+ case keyCodes$1.keyArrowRight: {
1224
+ if (!e.shiftKey) {
1225
+ e.preventDefault();
1226
+ this.selectNextOption();
1227
+ }
1228
+ break;
1229
+ }
1230
+ case keyCodes$1.keyArrowLeft: {
1231
+ if (!e.shiftKey) {
1232
+ e.preventDefault();
1233
+ this.selectPreviousOption();
1234
+ }
1235
+ break;
1236
+ }
1237
+ }
1238
+ }
1239
+ slottedOptionsChanged(prev, next) {
1240
+ super.slottedOptionsChanged(prev, next);
1241
+ this.#disableSlottedChildren();
1242
+ }
1243
+ attributeChangedCallback(name, oldValue, newValue) {
1244
+ super.attributeChangedCallback(name, oldValue, newValue);
1245
+ if (name === "disabled") {
1246
+ this.#disableSlottedChildren();
1247
+ }
1248
+ }
1249
+ #disableSlottedChildren() {
1250
+ this.options.forEach((optionElement) => {
1251
+ if (!optionElement.disabled) {
1252
+ optionElement.disabled = this.disabled;
1253
+ }
1254
+ });
1255
+ }
1256
+ }
1257
+ __decorateClass([
1258
+ defineVividComponent.attr
1259
+ ], Listbox.prototype, "appearance");
1260
+ __decorateClass([
1261
+ defineVividComponent.attr
1262
+ ], Listbox.prototype, "orientation");
1263
+ __decorateClass([
1264
+ defineVividComponent.attr
1265
+ ], Listbox.prototype, "shape");
1266
+
1267
+ exports.Listbox = Listbox;
1268
+ exports.ListboxElement = ListboxElement;