@vonage/vivid 4.24.0 → 4.26.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 (402) hide show
  1. package/custom-elements.json +23176 -14463
  2. package/elevation/index.cjs +1 -1
  3. package/elevation/index.js +1 -1
  4. package/index.cjs +112 -150
  5. package/index.js +37 -35
  6. package/lib/accordion-item/accordion-item.d.ts +7 -1
  7. package/lib/action-group/action-group.d.ts +7 -1
  8. package/lib/alert/alert.d.ts +22 -2
  9. package/lib/audio-player/audio-player.d.ts +7 -1
  10. package/lib/badge/badge.d.ts +10 -2
  11. package/lib/banner/banner.d.ts +28 -3
  12. package/lib/breadcrumb/breadcrumb.d.ts +7 -1
  13. package/lib/breadcrumb-item/breadcrumb-item.d.ts +64 -8
  14. package/lib/button/button.d.ts +733 -8
  15. package/lib/button/locale.d.ts +3 -0
  16. package/lib/calendar/calendar.d.ts +2 -0
  17. package/lib/calendar-event/calendar-event.d.ts +7 -1
  18. package/lib/card/card.d.ts +394 -2
  19. package/lib/card/card.template.d.ts +2 -1
  20. package/lib/checkbox/checkbox.d.ts +1830 -13
  21. package/lib/combobox/combobox.d.ts +1827 -20
  22. package/lib/data-grid/data-grid-cell.d.ts +342 -2
  23. package/lib/data-grid/data-grid-row.d.ts +1 -0
  24. package/lib/data-grid/data-grid.d.ts +1 -1
  25. package/lib/data-grid/locale.d.ts +5 -0
  26. package/lib/date-picker/date-picker.d.ts +1676 -207
  27. package/lib/date-range-picker/date-range-picker.d.ts +840 -107
  28. package/lib/date-time-picker/date-time-picker.d.ts +1678 -209
  29. package/lib/dial-pad/dial-pad.d.ts +9 -1
  30. package/lib/dialog/dialog.d.ts +15 -2
  31. package/lib/divider/divider.d.ts +7 -1
  32. package/lib/fab/fab.d.ts +7 -1
  33. package/lib/file-picker/file-picker.d.ts +1509 -31
  34. package/lib/header/header.d.ts +7 -1
  35. package/lib/icon/icon.d.ts +1 -0
  36. package/lib/icon/icon.template.d.ts +2 -1
  37. package/lib/menu/menu.d.ts +17 -8
  38. package/lib/menu/name.d.ts +1 -0
  39. package/lib/menu-item/menu-item.d.ts +16 -4
  40. package/lib/nav/nav.d.ts +7 -1
  41. package/lib/nav-disclosure/nav-disclosure.d.ts +15 -2
  42. package/lib/nav-item/nav-item.d.ts +406 -4
  43. package/lib/note/note.d.ts +7 -1
  44. package/lib/number-field/locale.d.ts +3 -2
  45. package/lib/number-field/number-field.d.ts +1859 -38
  46. package/lib/option/option.d.ts +14 -2
  47. package/lib/pagination/locale.d.ts +5 -0
  48. package/lib/pagination/pagination.d.ts +341 -2
  49. package/lib/popup/popup.d.ts +1 -0
  50. package/lib/progress/progress.d.ts +7 -1
  51. package/lib/progress-ring/progress-ring.d.ts +7 -1
  52. package/lib/radio/radio.d.ts +1137 -4
  53. package/lib/radio-group/radio-group.d.ts +21 -3
  54. package/lib/range-slider/range-slider.d.ts +765 -18
  55. package/lib/rich-text-editor/definition.d.ts +2 -2
  56. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +3 -1
  57. package/lib/rich-text-editor/locale.d.ts +1 -0
  58. package/lib/rich-text-editor/menubar/menubar.d.ts +7 -1
  59. package/lib/rich-text-editor/rich-text-editor.d.ts +352 -2
  60. package/lib/searchable-select/option-tag.d.ts +7 -1
  61. package/lib/searchable-select/searchable-select.d.ts +1859 -38
  62. package/lib/select/select.d.ts +1844 -29
  63. package/lib/selectable-box/selectable-box.d.ts +7 -1
  64. package/lib/slider/slider.d.ts +386 -4
  65. package/lib/split-button/split-button.d.ts +21 -3
  66. package/lib/switch/switch.d.ts +387 -4
  67. package/lib/tab/tab.d.ts +21 -4
  68. package/lib/tab-panel/tab-panel.d.ts +7 -1
  69. package/lib/tag/tag.d.ts +14 -2
  70. package/lib/tag-group/tag-group.d.ts +7 -1
  71. package/lib/text-area/text-area.d.ts +2174 -19
  72. package/lib/text-field/text-field.d.ts +2197 -33
  73. package/lib/time-picker/time-picker.d.ts +839 -106
  74. package/lib/toggletip/toggletip.d.ts +10 -4
  75. package/lib/tooltip/tooltip.d.ts +10 -4
  76. package/lib/tree-item/tree-item.d.ts +14 -2
  77. package/lib/tree-view/tree-view.d.ts +7 -1
  78. package/lib/video-player/video-player.d.ts +7 -1
  79. package/lib/visually-hidden/definition.d.ts +4 -0
  80. package/lib/visually-hidden/visually-hidden.d.ts +3 -0
  81. package/lib/visually-hidden/visually-hidden.template.d.ts +3 -0
  82. package/locales/de-DE.cjs +54 -4
  83. package/locales/de-DE.js +54 -4
  84. package/locales/en-GB.cjs +54 -4
  85. package/locales/en-GB.js +54 -4
  86. package/locales/en-US.cjs +54 -4
  87. package/locales/en-US.js +54 -4
  88. package/locales/ja-JP.cjs +54 -4
  89. package/locales/ja-JP.js +54 -4
  90. package/locales/zh-CN.cjs +54 -4
  91. package/locales/zh-CN.js +54 -4
  92. package/menu/index.cjs +1 -1
  93. package/menu/index.js +1 -1
  94. package/nav/index.cjs +1 -1
  95. package/nav/index.js +1 -1
  96. package/nav-disclosure/index.cjs +1 -1
  97. package/nav-disclosure/index.js +1 -1
  98. package/nav-item/index.cjs +1 -1
  99. package/nav-item/index.js +1 -1
  100. package/note/index.cjs +1 -1
  101. package/note/index.js +1 -1
  102. package/number-field/index.cjs +1 -1
  103. package/number-field/index.js +1 -1
  104. package/option/index.cjs +1 -1
  105. package/option/index.js +1 -1
  106. package/package.json +1 -1
  107. package/pagination/index.cjs +1 -1
  108. package/pagination/index.js +1 -1
  109. package/popup/index.cjs +1 -1
  110. package/popup/index.js +1 -1
  111. package/progress/index.cjs +1 -1
  112. package/progress/index.js +1 -1
  113. package/progress-ring/index.cjs +1 -1
  114. package/progress-ring/index.js +1 -1
  115. package/radio/index.cjs +1 -1
  116. package/radio/index.js +1 -1
  117. package/radio-group/index.cjs +1 -1
  118. package/radio-group/index.js +1 -1
  119. package/range-slider/index.cjs +1 -1
  120. package/range-slider/index.js +1 -1
  121. package/rich-text-editor/index.cjs +1 -1
  122. package/rich-text-editor/index.js +1 -1
  123. package/searchable-select/index.cjs +1 -1
  124. package/searchable-select/index.js +1 -1
  125. package/select/index.cjs +1 -1
  126. package/select/index.js +1 -1
  127. package/selectable-box/index.cjs +1 -1
  128. package/selectable-box/index.js +1 -1
  129. package/shared/affix.cjs +13 -7
  130. package/shared/affix.js +13 -8
  131. package/shared/aria/delegates-aria.d.ts +7 -1
  132. package/shared/aria/host-semantics.d.ts +7 -1
  133. package/shared/breadcrumb-item.cjs +2 -5
  134. package/shared/breadcrumb-item.js +2 -5
  135. package/shared/button.cjs +13 -11
  136. package/shared/button.js +13 -11
  137. package/shared/calendar-picker.template.cjs +3 -3
  138. package/shared/calendar-picker.template.js +1 -1
  139. package/shared/char-count.cjs +92 -0
  140. package/shared/char-count.js +90 -0
  141. package/shared/definition.cjs +19 -3
  142. package/shared/definition.js +20 -4
  143. package/shared/definition10.js +1 -1
  144. package/shared/definition11.cjs +27 -44
  145. package/shared/definition11.js +28 -45
  146. package/shared/definition12.js +1 -1
  147. package/shared/definition13.cjs +25 -0
  148. package/shared/definition13.js +26 -1
  149. package/shared/definition14.cjs +53 -22
  150. package/shared/definition14.js +54 -23
  151. package/shared/definition15.cjs +32 -37
  152. package/shared/definition15.js +31 -37
  153. package/shared/definition16.cjs +44 -64
  154. package/shared/definition16.js +43 -64
  155. package/shared/definition17.cjs +608 -524
  156. package/shared/definition17.js +604 -520
  157. package/shared/definition18.cjs +10 -14
  158. package/shared/definition18.js +9 -14
  159. package/shared/definition19.cjs +85 -100
  160. package/shared/definition19.js +75 -91
  161. package/shared/definition2.js +1 -1
  162. package/shared/definition20.cjs +15 -20
  163. package/shared/definition20.js +14 -20
  164. package/shared/definition21.cjs +24 -5
  165. package/shared/definition21.js +25 -6
  166. package/shared/definition22.cjs +12 -6
  167. package/shared/definition22.js +13 -7
  168. package/shared/definition23.cjs +5 -38
  169. package/shared/definition23.js +5 -37
  170. package/shared/definition24.cjs +2 -7
  171. package/shared/definition24.js +3 -8
  172. package/shared/definition25.js +1 -1
  173. package/shared/definition26.cjs +157 -171
  174. package/shared/definition26.js +156 -171
  175. package/shared/definition27.cjs +1 -1
  176. package/shared/definition27.js +2 -2
  177. package/shared/definition28.cjs +33 -18
  178. package/shared/definition28.js +34 -19
  179. package/shared/definition29.js +1 -1
  180. package/shared/definition3.cjs +1 -1
  181. package/shared/definition3.js +2 -2
  182. package/shared/definition30.cjs +96 -482
  183. package/shared/definition30.js +99 -482
  184. package/shared/definition31.cjs +334 -57
  185. package/shared/definition31.js +333 -56
  186. package/shared/definition32.cjs +104 -19
  187. package/shared/definition32.js +105 -20
  188. package/shared/definition33.cjs +67 -15
  189. package/shared/definition33.js +66 -14
  190. package/shared/definition34.cjs +15 -50
  191. package/shared/definition34.js +14 -49
  192. package/shared/definition35.cjs +28 -397
  193. package/shared/definition35.js +27 -397
  194. package/shared/definition36.cjs +415 -54
  195. package/shared/definition36.js +415 -55
  196. package/shared/definition37.cjs +57 -234
  197. package/shared/definition37.js +57 -233
  198. package/shared/definition38.cjs +228 -66
  199. package/shared/definition38.js +227 -65
  200. package/shared/definition39.cjs +52 -44
  201. package/shared/definition39.js +51 -43
  202. package/shared/definition4.cjs +31 -24
  203. package/shared/definition4.js +33 -26
  204. package/shared/definition40.cjs +56 -266
  205. package/shared/definition40.js +55 -265
  206. package/shared/definition41.cjs +285 -142
  207. package/shared/definition41.js +285 -142
  208. package/shared/definition42.cjs +156 -564
  209. package/shared/definition42.js +156 -565
  210. package/shared/definition43.cjs +554 -14378
  211. package/shared/definition43.js +553 -14377
  212. package/shared/definition44.cjs +14418 -1155
  213. package/shared/definition44.js +14417 -1156
  214. package/shared/definition45.cjs +1049 -677
  215. package/shared/definition45.js +1050 -678
  216. package/shared/definition46.cjs +848 -113
  217. package/shared/definition46.js +847 -112
  218. package/shared/definition47.cjs +125 -90
  219. package/shared/definition47.js +124 -89
  220. package/shared/definition48.cjs +88 -455
  221. package/shared/definition48.js +87 -454
  222. package/shared/definition49.cjs +466 -109
  223. package/shared/definition49.js +466 -109
  224. package/shared/definition5.cjs +8 -7
  225. package/shared/definition5.js +6 -5
  226. package/shared/definition50.cjs +106 -106
  227. package/shared/definition50.js +105 -105
  228. package/shared/definition51.cjs +136 -15
  229. package/shared/definition51.js +135 -14
  230. package/shared/definition52.cjs +16 -115
  231. package/shared/definition52.js +15 -114
  232. package/shared/definition53.cjs +78 -412
  233. package/shared/definition53.js +77 -410
  234. package/shared/definition54.cjs +445 -23
  235. package/shared/definition54.js +443 -22
  236. package/shared/definition55.cjs +22 -136
  237. package/shared/definition55.js +21 -135
  238. package/shared/definition56.cjs +95 -291
  239. package/shared/definition56.js +95 -292
  240. package/shared/definition57.cjs +192 -480
  241. package/shared/definition57.js +190 -479
  242. package/shared/definition58.cjs +411 -24
  243. package/shared/definition58.js +410 -24
  244. package/shared/definition59.cjs +27 -144
  245. package/shared/definition59.js +27 -143
  246. package/shared/definition6.js +1 -1
  247. package/shared/definition60.cjs +83 -54
  248. package/shared/definition60.js +82 -53
  249. package/shared/definition61.cjs +78 -166
  250. package/shared/definition61.js +77 -164
  251. package/shared/definition62.cjs +143 -232
  252. package/shared/definition62.js +141 -231
  253. package/shared/definition63.cjs +234 -69417
  254. package/shared/definition63.js +233 -69416
  255. package/shared/definition64.cjs +69454 -28
  256. package/shared/definition64.js +69453 -27
  257. package/shared/definition65.cjs +28 -2168
  258. package/shared/definition65.js +27 -2166
  259. package/shared/definition66.cjs +27 -0
  260. package/shared/definition66.js +23 -0
  261. package/shared/definition67.cjs +2203 -0
  262. package/shared/definition67.js +2198 -0
  263. package/shared/definition7.cjs +11 -2
  264. package/shared/definition7.js +12 -3
  265. package/shared/definition8.cjs +24 -11
  266. package/shared/definition8.js +26 -13
  267. package/shared/definition9.cjs +1 -2
  268. package/shared/definition9.js +2 -3
  269. package/shared/delegates-aria.js +1 -1
  270. package/shared/deprecation/replaced-props.d.ts +20 -0
  271. package/shared/divider.cjs +41 -0
  272. package/shared/divider.js +38 -0
  273. package/shared/feedback/feedback-message.d.ts +345 -0
  274. package/shared/feedback/locale.d.ts +4 -0
  275. package/{lib/text-anchor/text-anchor.d.ts → shared/feedback/mixins.d.ts} +64 -41
  276. package/shared/form-associated.cjs +124 -100
  277. package/shared/form-associated.js +125 -101
  278. package/shared/form-element.cjs +84 -0
  279. package/shared/form-element.js +82 -0
  280. package/shared/foundation/button/button.d.ts +379 -3
  281. package/shared/foundation/form-associated/form-associated.d.ts +753 -49
  282. package/shared/foundation/listbox/listbox.d.ts +1 -1
  283. package/shared/foundation/vivid-element/vivid-element.d.ts +16 -0
  284. package/shared/host-semantics.js +1 -1
  285. package/shared/key-codes.js +1 -1
  286. package/shared/linkable.cjs +70 -0
  287. package/shared/linkable.js +68 -0
  288. package/shared/localization/Locale.d.ts +16 -0
  289. package/shared/mixins.cjs +309 -0
  290. package/shared/mixins.js +303 -0
  291. package/shared/patterns/affix.d.ts +18 -3
  292. package/shared/patterns/anchored.d.ts +20 -8
  293. package/shared/patterns/char-count/char-count.d.ts +351 -0
  294. package/shared/patterns/char-count/index.d.ts +1 -0
  295. package/shared/patterns/char-count/locale.d.ts +4 -0
  296. package/shared/patterns/form-elements/form-element.d.ts +744 -0
  297. package/shared/patterns/form-elements/index.d.ts +3 -1
  298. package/shared/patterns/form-elements/with-error-text.d.ts +1122 -0
  299. package/shared/patterns/form-elements/with-success-text.d.ts +341 -0
  300. package/shared/patterns/index.d.ts +2 -0
  301. package/shared/patterns/linkable.d.ts +394 -0
  302. package/shared/patterns/localized.d.ts +7 -1
  303. package/shared/patterns/trapped-focus.d.ts +7 -1
  304. package/shared/picker-field/mixins/calendar-picker.d.ts +420 -52
  305. package/shared/picker-field/mixins/calendar-picker.template.d.ts +420 -52
  306. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +7 -1
  307. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +843 -107
  308. package/shared/picker-field/mixins/single-date-picker.d.ts +1259 -155
  309. package/shared/picker-field/mixins/single-value-picker.d.ts +417 -49
  310. package/shared/picker-field/mixins/time-selection-picker.d.ts +842 -106
  311. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +839 -103
  312. package/shared/picker-field/picker-field.d.ts +1492 -16
  313. package/shared/picker-field.template.cjs +26 -35
  314. package/shared/picker-field.template.js +27 -36
  315. package/shared/repeat.js +1 -1
  316. package/shared/slider.template.cjs +1 -1
  317. package/shared/slider.template.js +1 -1
  318. package/shared/time-selection-picker.template.cjs +10 -15
  319. package/shared/time-selection-picker.template.js +10 -16
  320. package/shared/vivid-element.cjs +63 -4
  321. package/shared/vivid-element.js +63 -3
  322. package/shared/with-error-text.cjs +56 -0
  323. package/shared/with-error-text.js +54 -0
  324. package/shared/with-success-text.cjs +23 -0
  325. package/shared/with-success-text.js +21 -0
  326. package/side-drawer/index.cjs +1 -1
  327. package/side-drawer/index.js +1 -1
  328. package/slider/index.cjs +1 -1
  329. package/slider/index.js +1 -1
  330. package/split-button/index.cjs +1 -1
  331. package/split-button/index.js +1 -1
  332. package/styles/core/all.css +1 -1
  333. package/styles/core/theme.css +1 -1
  334. package/styles/core/typography.css +1 -1
  335. package/styles/tokens/theme-dark.css +4 -4
  336. package/styles/tokens/theme-light.css +4 -4
  337. package/styles/tokens/vivid-2-compat.css +1 -1
  338. package/switch/index.cjs +1 -1
  339. package/switch/index.js +1 -1
  340. package/tab/index.cjs +1 -1
  341. package/tab/index.js +1 -1
  342. package/tab-panel/index.cjs +1 -1
  343. package/tab-panel/index.js +1 -1
  344. package/tabs/index.cjs +1 -1
  345. package/tabs/index.js +1 -1
  346. package/tag/index.cjs +1 -1
  347. package/tag/index.js +1 -1
  348. package/tag-group/index.cjs +1 -1
  349. package/tag-group/index.js +1 -1
  350. package/text-area/index.cjs +1 -1
  351. package/text-area/index.js +1 -1
  352. package/text-field/index.cjs +1 -1
  353. package/text-field/index.js +1 -1
  354. package/time-picker/index.cjs +1 -1
  355. package/time-picker/index.js +1 -1
  356. package/toggletip/index.cjs +1 -1
  357. package/toggletip/index.js +1 -1
  358. package/tooltip/index.cjs +1 -1
  359. package/tooltip/index.js +1 -1
  360. package/tree-item/index.cjs +1 -1
  361. package/tree-item/index.js +1 -1
  362. package/tree-view/index.cjs +1 -1
  363. package/tree-view/index.js +1 -1
  364. package/video-player/index.cjs +1 -1
  365. package/video-player/index.js +1 -1
  366. package/visually-hidden/index.cjs +5 -0
  367. package/visually-hidden/index.js +3 -0
  368. package/vivid.api.json +845 -1503
  369. package/lib/checkbox/checkbox.form-associated.d.ts +0 -11
  370. package/lib/file-picker/file-picker.form-associated.d.ts +0 -11
  371. package/lib/number-field/number-field.form-associated.d.ts +0 -11
  372. package/lib/radio/radio.form-associated.d.ts +0 -13
  373. package/lib/range-slider/range-slider.form-associated.d.ts +0 -11
  374. package/lib/searchable-select/searchable-select.form-associated.d.ts +0 -11
  375. package/lib/select/select.form-associated.d.ts +0 -11
  376. package/lib/slider/slider.form-associated.d.ts +0 -11
  377. package/lib/switch/switch.form-associated.d.ts +0 -11
  378. package/lib/text-anchor/definition.d.ts +0 -2
  379. package/lib/text-anchor/text-anchor.template.d.ts +0 -3
  380. package/lib/text-area/text-area.form-associated.d.ts +0 -11
  381. package/lib/text-field/text-field.form-associated.d.ts +0 -11
  382. package/shared/anchor.cjs +0 -49
  383. package/shared/anchor.js +0 -47
  384. package/shared/apply-mixins.cjs +0 -23
  385. package/shared/apply-mixins.js +0 -21
  386. package/shared/applyMixinsWithObservables.cjs +0 -15
  387. package/shared/applyMixinsWithObservables.js +0 -13
  388. package/shared/direction.cjs +0 -17
  389. package/shared/direction.js +0 -15
  390. package/shared/form-elements.cjs +0 -209
  391. package/shared/form-elements.js +0 -202
  392. package/shared/foundation/anchor/anchor.d.ts +0 -11
  393. package/shared/foundation/utilities/apply-mixins.d.ts +0 -1
  394. package/shared/patterns/form-elements/form-elements.d.ts +0 -58
  395. package/shared/picker-field/picker-field.form-associated.d.ts +0 -11
  396. package/shared/text-anchor.cjs +0 -38
  397. package/shared/text-anchor.js +0 -36
  398. package/shared/text-anchor.template.cjs +0 -35
  399. package/shared/text-anchor.template.js +0 -33
  400. package/shared/utils/applyMixinsWithObservables.d.ts +0 -1
  401. package/text-anchor/index.cjs +0 -17
  402. package/text-anchor/index.js +0 -15
@@ -1,15 +1,17 @@
1
1
  'use strict';
2
2
 
3
+ const definition = require('./definition28.cjs');
3
4
  const vividElement = require('./vivid-element.cjs');
4
- const definition = require('./definition61.cjs');
5
+ const affix = require('./affix.cjs');
5
6
  const hostSemantics = require('./host-semantics.cjs');
6
- const keyCodes = require('./key-codes.cjs');
7
7
  const dom = require('./dom.cjs');
8
- const ref = require('./ref.cjs');
9
- const classNames = require('./class-names.cjs');
10
8
  const slotted = require('./slotted.cjs');
9
+ const children = require('./children.cjs');
10
+ const classNames = require('./class-names.cjs');
11
+ const when = require('./when.cjs');
12
+ const ref = require('./ref.cjs');
11
13
 
12
- const styles = ".control{position:relative;display:flex;flex-direction:column;gap:4px}";
14
+ const styles = ":host(:focus-visible){outline:none}:host([disabled]){cursor:not-allowed}.control{--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.disabled,:disabled){--_appearance-color-text: var(--vvd-color-neutral-300);--_appearance-color-fill: transparent;--_appearance-color-outline: transparent}.control:where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-faint);--_appearance-color-outline: transparent}.control:where(.active,:active):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-firm);--_appearance-color-fill: var(--_connotation-color-soft);--_appearance-color-outline: transparent}.control:where(.selected):where(:not(.disabled,:disabled)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary);--_appearance-color-outline: transparent}.control:where(.selected):where(.hover,:hover):where(:not(.disabled,:disabled,.readonly)){--_appearance-color-text: var(--_connotation-color-primary-text);--_appearance-color-fill: var(--_connotation-color-primary-increment);--_appearance-color-outline: transparent}.control{--_connotation-color-primary: var(--vvd-tree-item-accent-primary, var(--vvd-color-canvas-text));--_connotation-color-primary-text: var(--vvd-tree-item-accent-primary-text, var(--vvd-color-canvas));--_connotation-color-primary-increment: var(--vvd-tree-item-accent-primary-increment, var(--vvd-color-neutral-800));--_connotation-color-faint: var(--vvd-tree-item-accent-faint, var(--vvd-color-neutral-50));--_connotation-color-soft: var(--vvd-tree-item-accent-soft, var(--vvd-color-neutral-100));--_connotation-color-firm: var(--vvd-tree-item-accent-firm, var(--vvd-color-canvas-text))}.control{position:relative;display:inline-flex;box-sizing:border-box;align-items:center;border-radius:8px;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);gap:12px;hyphens:auto;inline-size:100%;min-block-size:calc(1px*(40 + 4*clamp(-1,var(--vvd-size-density, 0),2)));padding-inline:16px;text-decoration:none;vertical-align:middle;word-break:break-word}@supports (user-select: none){.control{user-select:none}}.control:not(.disabled){cursor:pointer}.control.disabled{pointer-events:none}:host(:focus-visible) .control{box-shadow:0 0 0 4px color-mix(in srgb,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(:focus-visible) .control:not(.selected){--focus-stroke-gap-color: transparent}.control .text{font:var(--vvd-typography-base)}.expandCollapseButton{display:flex;align-items:center;border-radius:8px;font-size:20px}.expandCollapseButton .expandCollapseIcon{margin:4px}.expandCollapseButton:hover{background-color:var(--vvd-color-neutral-100)}.selected .expandCollapseButton:hover{background-color:var(--vvd-color-neutral-700)}.items{display:flex;flex-direction:column;gap:4px;margin-block-start:4px;padding-inline-start:48px}slot[name=icon]{font-size:20px;line-height:1}.control:not(.disabled,.selected) slot[name=icon]{color:var(--vvd-color-neutral-600)}";
13
15
 
14
16
  var __defProp = Object.defineProperty;
15
17
  var __decorateClass = (decorators, target, key, kind) => {
@@ -20,281 +22,190 @@ var __decorateClass = (decorators, target, key, kind) => {
20
22
  if (result) __defProp(target, key, result);
21
23
  return result;
22
24
  };
23
- function getDisplayedNodes(rootNode, selector) {
24
- if (dom.isHTMLElement(rootNode)) {
25
- const nodes = Array.from(
26
- rootNode.querySelectorAll(selector)
27
- );
28
- const visibleNodes = nodes.filter((node) => {
29
- if (node.parentElement instanceof definition.TreeItem) {
30
- if (node.parentElement.getAttribute("aria-expanded") === "true")
31
- return true;
32
- } else {
33
- return true;
34
- }
35
- return false;
36
- });
37
- return visibleNodes;
38
- }
39
- return [];
25
+ function isTreeItemElement(el) {
26
+ return dom.isHTMLElement(el) && el.getAttribute("role") === "treeitem";
40
27
  }
41
- class TreeView extends hostSemantics.HostSemantics(vividElement.VividElement) {
28
+ class TreeItem extends hostSemantics.HostSemantics(affix.AffixIcon(vividElement.VividElement)) {
42
29
  constructor() {
43
30
  super(...arguments);
31
+ this.expanded = false;
32
+ this.selected = false;
33
+ this.disabled = false;
34
+ this.focusable = false;
44
35
  /**
45
- * The tree item that is designated to be in the tab queue.
46
- *
47
- * @internal
48
- */
49
- this.currentFocused = null;
50
- /**
51
- * Handle focus events
36
+ * Whether the tree is nested
52
37
  *
53
- * @internal
38
+ * @public
54
39
  */
55
- this.handleFocus = (e) => {
56
- if (this.slottedTreeItems.length > 0) {
57
- if (e.target === this) {
58
- if (this.currentFocused !== null) {
59
- definition.TreeItem.focusItem(this.currentFocused);
60
- }
61
- return;
62
- }
63
- if (this.contains(e.target)) {
64
- this.setAttribute("tabindex", "-1");
65
- this.currentFocused = e.target;
66
- }
67
- }
40
+ this.isNestedItem = () => {
41
+ return isTreeItemElement(this.parentElement);
68
42
  };
69
43
  /**
70
- * Handle blur events
44
+ * Handle expand button click
71
45
  *
72
46
  * @internal
73
47
  */
74
- this.handleBlur = (e) => {
75
- if (e.target instanceof HTMLElement && (e.relatedTarget === null || !this.contains(e.relatedTarget))) {
76
- this.setAttribute("tabindex", "0");
48
+ this.handleExpandCollapseButtonClick = (e) => {
49
+ if (!this.disabled && !e.defaultPrevented) {
50
+ this.expanded = !this.expanded;
77
51
  }
78
52
  };
79
53
  /**
80
- * KeyDown handler
54
+ * Handle focus events
81
55
  *
82
- * @internal
56
+ * @internal
83
57
  */
84
- this.handleKeyDown = (e) => {
85
- if (this.slottedTreeItems.length < 1) {
86
- return true;
87
- }
88
- if (!e.defaultPrevented) {
89
- const treeItems = this.getVisibleNodes();
90
- switch (e.key) {
91
- case keyCodes.keyHome:
92
- if (treeItems.length) {
93
- definition.TreeItem.focusItem(treeItems[0]);
94
- }
95
- return;
96
- case keyCodes.keyEnd:
97
- if (treeItems.length) {
98
- definition.TreeItem.focusItem(treeItems[treeItems.length - 1]);
99
- }
100
- return;
101
- case keyCodes.keyArrowLeft:
102
- if (e.target && this.isFocusableElement(e.target)) {
103
- const item = e.target;
104
- if (item instanceof definition.TreeItem && item.childItemLength() > 0 && item.expanded) {
105
- item.expanded = false;
106
- } else if (item instanceof definition.TreeItem && item.parentElement instanceof definition.TreeItem) {
107
- definition.TreeItem.focusItem(item.parentElement);
108
- }
109
- }
110
- return false;
111
- case keyCodes.keyArrowRight:
112
- if (e.target && this.isFocusableElement(e.target)) {
113
- const item = e.target;
114
- if (item instanceof definition.TreeItem && item.childItemLength() > 0 && !item.expanded) {
115
- item.expanded = true;
116
- } else if (item instanceof definition.TreeItem && item.childItemLength() > 0) {
117
- this.focusNextNode(1, e.target);
118
- }
119
- }
120
- return;
121
- case keyCodes.keyArrowDown:
122
- if (e.target && this.isFocusableElement(e.target)) {
123
- this.focusNextNode(1, e.target);
124
- }
125
- return;
126
- case keyCodes.keyArrowUp:
127
- if (e.target && this.isFocusableElement(e.target)) {
128
- this.focusNextNode(-1, e.target);
129
- }
130
- return;
131
- case keyCodes.keyEnter:
132
- this.handleClick(e);
133
- return;
134
- }
135
- }
136
- return true;
58
+ this.handleFocus = (_e) => {
59
+ this.setAttribute("tabindex", "0");
137
60
  };
138
61
  /**
139
- * Handles the selected-changed events bubbling up
140
- * from child tree items
62
+ * Handle blur events
141
63
  *
142
- * @internal
143
- */
144
- this.handleSelectedChange = (e) => {
145
- if (!e.defaultPrevented) {
146
- if (!(e.target instanceof Element) || !definition.isTreeItemElement(e.target)) {
147
- return true;
148
- }
149
- const item = e.target;
150
- if (item.selected) {
151
- if (this.currentSelected && this.currentSelected !== item) {
152
- this.currentSelected.selected = false;
153
- }
154
- this.currentSelected = item;
155
- } else if (!item.selected && this.currentSelected === item) {
156
- this.currentSelected = null;
157
- }
158
- return;
159
- }
160
- };
161
- /**
162
- * Updates the tree view when slottedTreeItems changes
163
- */
164
- this.setItems = () => {
165
- const selectedItem = this.treeView.querySelector(
166
- "[aria-selected='true']"
167
- );
168
- this.currentSelected = selectedItem;
169
- if (this.currentFocused === null || !this.contains(this.currentFocused)) {
170
- this.currentFocused = this.getValidFocusableItem();
171
- }
172
- this.nested = this.checkForNestedItems();
173
- const treeItems = this.getVisibleNodes();
174
- treeItems.forEach((node) => {
175
- if (definition.isTreeItemElement(node)) {
176
- node.nested = this.nested;
177
- }
178
- });
179
- };
180
- /**
181
- * check if the item is focusable
64
+ * @internal
182
65
  */
183
- this.isFocusableElement = (el) => {
184
- return definition.isTreeItemElement(el);
185
- };
186
- this.isSelectedElement = (el) => {
187
- return el.selected;
66
+ this.handleBlur = (_e) => {
67
+ this.setAttribute("tabindex", "-1");
188
68
  };
189
69
  }
190
- slottedTreeItemsChanged() {
70
+ expandedChanged() {
191
71
  if (this.$fastController.isConnected) {
192
- this.setItems();
72
+ this.$emit("expanded-change", this);
193
73
  }
194
74
  }
195
- connectedCallback() {
196
- super.connectedCallback();
197
- this.setAttribute("tabindex", "0");
198
- vividElement.DOM.queueUpdate(() => {
199
- this.setItems();
200
- });
201
- }
202
- /**
203
- * Handles click events bubbling up
204
- *
205
- * @internal
206
- */
207
- handleClick(e) {
208
- if (!e.defaultPrevented) {
209
- if (!(e.target instanceof Element) || !definition.isTreeItemElement(e.target)) {
210
- return true;
211
- }
212
- const item = e.target;
213
- if (!item.disabled) {
214
- item.selected = !item.selected;
215
- }
216
- return;
75
+ selectedChanged() {
76
+ if (this.$fastController.isConnected) {
77
+ this.$emit("selected-change", this);
217
78
  }
218
79
  }
219
- /**
220
- * Move focus to a tree item based on its offset from the provided item
221
- */
222
- focusNextNode(delta, item) {
223
- const visibleNodes = this.getVisibleNodes();
224
- if (visibleNodes) {
225
- const focusItem = visibleNodes[visibleNodes.indexOf(item) + delta];
226
- if (dom.isHTMLElement(focusItem)) {
227
- definition.TreeItem.focusItem(focusItem);
228
- }
80
+ itemsChanged() {
81
+ if (this.$fastController.isConnected) {
82
+ this.items.forEach((node) => {
83
+ if (isTreeItemElement(node)) {
84
+ node.nested = true;
85
+ }
86
+ });
229
87
  }
230
88
  }
231
89
  /**
232
- * checks if there are any nested tree items
90
+ * Places document focus on a tree item
91
+ *
92
+ * @public
93
+ * @param el - the element to focus
233
94
  */
234
- getValidFocusableItem() {
235
- const treeItems = this.getVisibleNodes();
236
- let focusIndex = treeItems.findIndex(this.isSelectedElement);
237
- if (focusIndex === -1) {
238
- focusIndex = treeItems.findIndex(this.isFocusableElement);
239
- }
240
- if (focusIndex !== -1) {
241
- return treeItems[focusIndex];
242
- }
243
- return null;
95
+ static focusItem(el) {
96
+ el.focusable = true;
97
+ el.focus();
244
98
  }
245
99
  /**
246
- * checks if there are any nested tree items
100
+ * Gets number of children
101
+ *
102
+ * @internal
247
103
  */
248
- checkForNestedItems() {
249
- return this.slottedTreeItems.some((node) => {
250
- return definition.isTreeItemElement(node) && node.querySelector("[role='treeitem']");
251
- });
252
- }
253
- getVisibleNodes() {
254
- return getDisplayedNodes(this, "[role='treeitem']");
104
+ childItemLength() {
105
+ const treeChildren = this.childItems.filter(
106
+ (item) => {
107
+ return isTreeItemElement(item);
108
+ }
109
+ );
110
+ return treeChildren.length;
255
111
  }
256
112
  }
113
+ __decorateClass([
114
+ vividElement.attr
115
+ ], TreeItem.prototype, "text");
116
+ __decorateClass([
117
+ vividElement.attr({ mode: "boolean" })
118
+ ], TreeItem.prototype, "expanded");
119
+ __decorateClass([
120
+ vividElement.attr({
121
+ mode: "boolean"
122
+ })
123
+ ], TreeItem.prototype, "selected");
124
+ __decorateClass([
125
+ vividElement.attr({ mode: "boolean" })
126
+ ], TreeItem.prototype, "disabled");
127
+ __decorateClass([
128
+ vividElement.observable
129
+ ], TreeItem.prototype, "focusable");
257
130
  // @ts-expect-error Type is incorrectly non-optional
258
131
  __decorateClass([
259
- vividElement.attr({ attribute: "render-collapsed-nodes" })
260
- ], TreeView.prototype, "renderCollapsedNodes");
132
+ vividElement.observable
133
+ ], TreeItem.prototype, "childItems");
134
+ __decorateClass([
135
+ vividElement.observable
136
+ ], TreeItem.prototype, "items");
261
137
  // @ts-expect-error Type is incorrectly non-optional
262
138
  __decorateClass([
263
139
  vividElement.observable
264
- ], TreeView.prototype, "currentSelected");
140
+ ], TreeItem.prototype, "nested");
265
141
  // @ts-expect-error Type is incorrectly non-optional
266
142
  __decorateClass([
267
143
  vividElement.observable
268
- ], TreeView.prototype, "slottedTreeItems");
144
+ ], TreeItem.prototype, "renderCollapsedChildren");
269
145
 
270
- const getClasses = (_) => classNames.classNames("control");
271
- const TreeViewTemplate = vividElement.html` <template
272
- ${ref.ref("treeView")}
273
- ${hostSemantics.applyHostSemantics({
274
- role: "tree"
275
- })}
276
- @keydown="${(x, c) => x.handleKeyDown(c.event)}"
277
- @focusin="${(x, c) => x.handleFocus(c.event)}"
278
- @focusout="${(x, c) => x.handleBlur(c.event)}"
279
- @click="${(x, c) => x.handleClick(c.event)}"
280
- @selected-change="${(x, c) => x.handleSelectedChange(c.event)}"
281
- >
282
- <div class="${getClasses}">
283
- <slot ${slotted.slotted("slottedTreeItems")}></slot>
284
- </div>
285
- </template>`;
146
+ const getClasses = ({ disabled, selected }) => classNames.classNames(
147
+ "control",
148
+ ["disabled", disabled],
149
+ ["selected", Boolean(selected)]
150
+ );
151
+ const expandCollapseButton = (context) => {
152
+ const iconTag = context.tagFor(definition.Icon);
153
+ return vividElement.html`
154
+ <div aria-hidden="true"
155
+ class="expandCollapseButton"
156
+ @click="${(x, c) => x.handleExpandCollapseButtonClick(c.event)}"
157
+ ${ref.ref("expandCollapseButton")}
158
+ >
159
+ <${iconTag} class="expandCollapseIcon" name="${(x) => x.expanded ? "chevron-down-line" : "chevron-right-line"}"></${iconTag}>
160
+ </div>`;
161
+ };
162
+ const TreeItemTemplate = (context) => {
163
+ const affixIconTemplate = affix.affixIconTemplateFactory(context);
164
+ return vividElement.html` <template
165
+ slot="${(x) => x.isNestedItem() ? "item" : void 0}"
166
+ tabindex="-1"
167
+ ${hostSemantics.applyHostSemantics({
168
+ role: "treeitem",
169
+ ariaExpanded: (x) => x.childItems && x.childItems.length > 0 ? x.expanded : void 0,
170
+ ariaSelected: (x) => x.selected,
171
+ ariaDisabled: (x) => x.disabled
172
+ })}
173
+ @focusin="${(x, c) => x.handleFocus(c.event)}"
174
+ @focusout="${(x, c) => x.handleBlur(c.event)}"
175
+ ${children.children({
176
+ property: "childItems",
177
+ filter: slotted.elements(context.tagFor(TreeItem))
178
+ })}
179
+ >
180
+ <div class="${getClasses}">
181
+ ${when.when(
182
+ (x) => x.childItems && x.childItems.length > 0,
183
+ expandCollapseButton(context)
184
+ )}
185
+ ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)}
186
+ ${(x) => x.text}
187
+ </div>
188
+ ${when.when(
189
+ (x) => x.childItems && x.childItems.length > 0 && x.expanded,
190
+ vividElement.html` <div role="group" class="items">
191
+ <slot name="item" ${slotted.slotted("items")}></slot>
192
+ </div>`
193
+ )}
194
+ </template>`;
195
+ };
286
196
 
287
- const treeViewDefinition = vividElement.defineVividComponent(
288
- "tree-view",
289
- TreeView,
290
- TreeViewTemplate,
291
- [definition.treeItemDefinition],
197
+ const treeItemDefinition = vividElement.defineVividComponent(
198
+ "tree-item",
199
+ TreeItem,
200
+ TreeItemTemplate,
201
+ [definition.iconDefinition],
292
202
  {
293
203
  styles
294
204
  }
295
205
  );
296
- const registerTreeView = vividElement.createRegisterFunction(treeViewDefinition);
206
+ const registerTreeItem = vividElement.createRegisterFunction(treeItemDefinition);
297
207
 
298
- exports.TreeView = TreeView;
299
- exports.registerTreeView = registerTreeView;
300
- exports.treeViewDefinition = treeViewDefinition;
208
+ exports.TreeItem = TreeItem;
209
+ exports.isTreeItemElement = isTreeItemElement;
210
+ exports.registerTreeItem = registerTreeItem;
211
+ exports.treeItemDefinition = treeItemDefinition;