@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,13 +1,15 @@
1
- import { D as DOM, V as VividElement, a as attr, o as observable, h as html, g as createRegisterFunction, i as defineVividComponent } from './vivid-element.js';
2
- import { T as TreeItem, i as isTreeItemElement, t as treeItemDefinition } from './definition61.js';
1
+ import { I as Icon, i as iconDefinition } from './definition28.js';
2
+ import { V as VividElement, a as attr, o as observable, h as html, d as createRegisterFunction, f as defineVividComponent } from './vivid-element.js';
3
+ import { b as AffixIcon, a as affixIconTemplateFactory, I as IconWrapper } from './affix.js';
3
4
  import { H as HostSemantics, a as applyHostSemantics } from './host-semantics.js';
4
- import { k as keyEnter, e as keyArrowUp, f as keyArrowDown, i as keyArrowRight, h as keyArrowLeft, d as keyEnd, g as keyHome } from './key-codes.js';
5
5
  import { i as isHTMLElement } from './dom.js';
6
- import { r as ref } from './ref.js';
6
+ import { e as elements, s as slotted } from './slotted.js';
7
+ import { c as children } from './children.js';
7
8
  import { c as classNames } from './class-names.js';
8
- import { s as slotted } from './slotted.js';
9
+ import { w as when } from './when.js';
10
+ import { r as ref } from './ref.js';
9
11
 
10
- const styles = ".control{position:relative;display:flex;flex-direction:column;gap:4px}";
12
+ 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)}";
11
13
 
12
14
  var __defProp = Object.defineProperty;
13
15
  var __decorateClass = (decorators, target, key, kind) => {
@@ -18,279 +20,187 @@ var __decorateClass = (decorators, target, key, kind) => {
18
20
  if (result) __defProp(target, key, result);
19
21
  return result;
20
22
  };
21
- function getDisplayedNodes(rootNode, selector) {
22
- if (isHTMLElement(rootNode)) {
23
- const nodes = Array.from(
24
- rootNode.querySelectorAll(selector)
25
- );
26
- const visibleNodes = nodes.filter((node) => {
27
- if (node.parentElement instanceof TreeItem) {
28
- if (node.parentElement.getAttribute("aria-expanded") === "true")
29
- return true;
30
- } else {
31
- return true;
32
- }
33
- return false;
34
- });
35
- return visibleNodes;
36
- }
37
- return [];
23
+ function isTreeItemElement(el) {
24
+ return isHTMLElement(el) && el.getAttribute("role") === "treeitem";
38
25
  }
39
- class TreeView extends HostSemantics(VividElement) {
26
+ class TreeItem extends HostSemantics(AffixIcon(VividElement)) {
40
27
  constructor() {
41
28
  super(...arguments);
29
+ this.expanded = false;
30
+ this.selected = false;
31
+ this.disabled = false;
32
+ this.focusable = false;
42
33
  /**
43
- * The tree item that is designated to be in the tab queue.
34
+ * Whether the tree is nested
44
35
  *
45
- * @internal
36
+ * @public
46
37
  */
47
- this.currentFocused = null;
38
+ this.isNestedItem = () => {
39
+ return isTreeItemElement(this.parentElement);
40
+ };
48
41
  /**
49
- * Handle focus events
42
+ * Handle expand button click
50
43
  *
51
44
  * @internal
52
45
  */
53
- this.handleFocus = (e) => {
54
- if (this.slottedTreeItems.length > 0) {
55
- if (e.target === this) {
56
- if (this.currentFocused !== null) {
57
- TreeItem.focusItem(this.currentFocused);
58
- }
59
- return;
60
- }
61
- if (this.contains(e.target)) {
62
- this.setAttribute("tabindex", "-1");
63
- this.currentFocused = e.target;
64
- }
46
+ this.handleExpandCollapseButtonClick = (e) => {
47
+ if (!this.disabled && !e.defaultPrevented) {
48
+ this.expanded = !this.expanded;
65
49
  }
66
50
  };
67
51
  /**
68
- * Handle blur events
52
+ * Handle focus events
69
53
  *
70
54
  * @internal
71
55
  */
72
- this.handleBlur = (e) => {
73
- if (e.target instanceof HTMLElement && (e.relatedTarget === null || !this.contains(e.relatedTarget))) {
74
- this.setAttribute("tabindex", "0");
75
- }
56
+ this.handleFocus = (_e) => {
57
+ this.setAttribute("tabindex", "0");
76
58
  };
77
59
  /**
78
- * KeyDown handler
79
- *
80
- * @internal
81
- */
82
- this.handleKeyDown = (e) => {
83
- if (this.slottedTreeItems.length < 1) {
84
- return true;
85
- }
86
- if (!e.defaultPrevented) {
87
- const treeItems = this.getVisibleNodes();
88
- switch (e.key) {
89
- case keyHome:
90
- if (treeItems.length) {
91
- TreeItem.focusItem(treeItems[0]);
92
- }
93
- return;
94
- case keyEnd:
95
- if (treeItems.length) {
96
- TreeItem.focusItem(treeItems[treeItems.length - 1]);
97
- }
98
- return;
99
- case keyArrowLeft:
100
- if (e.target && this.isFocusableElement(e.target)) {
101
- const item = e.target;
102
- if (item instanceof TreeItem && item.childItemLength() > 0 && item.expanded) {
103
- item.expanded = false;
104
- } else if (item instanceof TreeItem && item.parentElement instanceof TreeItem) {
105
- TreeItem.focusItem(item.parentElement);
106
- }
107
- }
108
- return false;
109
- case keyArrowRight:
110
- if (e.target && this.isFocusableElement(e.target)) {
111
- const item = e.target;
112
- if (item instanceof TreeItem && item.childItemLength() > 0 && !item.expanded) {
113
- item.expanded = true;
114
- } else if (item instanceof TreeItem && item.childItemLength() > 0) {
115
- this.focusNextNode(1, e.target);
116
- }
117
- }
118
- return;
119
- case keyArrowDown:
120
- if (e.target && this.isFocusableElement(e.target)) {
121
- this.focusNextNode(1, e.target);
122
- }
123
- return;
124
- case keyArrowUp:
125
- if (e.target && this.isFocusableElement(e.target)) {
126
- this.focusNextNode(-1, e.target);
127
- }
128
- return;
129
- case keyEnter:
130
- this.handleClick(e);
131
- return;
132
- }
133
- }
134
- return true;
135
- };
136
- /**
137
- * Handles the selected-changed events bubbling up
138
- * from child tree items
60
+ * Handle blur events
139
61
  *
140
- * @internal
141
- */
142
- this.handleSelectedChange = (e) => {
143
- if (!e.defaultPrevented) {
144
- if (!(e.target instanceof Element) || !isTreeItemElement(e.target)) {
145
- return true;
146
- }
147
- const item = e.target;
148
- if (item.selected) {
149
- if (this.currentSelected && this.currentSelected !== item) {
150
- this.currentSelected.selected = false;
151
- }
152
- this.currentSelected = item;
153
- } else if (!item.selected && this.currentSelected === item) {
154
- this.currentSelected = null;
155
- }
156
- return;
157
- }
158
- };
159
- /**
160
- * Updates the tree view when slottedTreeItems changes
161
- */
162
- this.setItems = () => {
163
- const selectedItem = this.treeView.querySelector(
164
- "[aria-selected='true']"
165
- );
166
- this.currentSelected = selectedItem;
167
- if (this.currentFocused === null || !this.contains(this.currentFocused)) {
168
- this.currentFocused = this.getValidFocusableItem();
169
- }
170
- this.nested = this.checkForNestedItems();
171
- const treeItems = this.getVisibleNodes();
172
- treeItems.forEach((node) => {
173
- if (isTreeItemElement(node)) {
174
- node.nested = this.nested;
175
- }
176
- });
177
- };
178
- /**
179
- * check if the item is focusable
62
+ * @internal
180
63
  */
181
- this.isFocusableElement = (el) => {
182
- return isTreeItemElement(el);
183
- };
184
- this.isSelectedElement = (el) => {
185
- return el.selected;
64
+ this.handleBlur = (_e) => {
65
+ this.setAttribute("tabindex", "-1");
186
66
  };
187
67
  }
188
- slottedTreeItemsChanged() {
68
+ expandedChanged() {
189
69
  if (this.$fastController.isConnected) {
190
- this.setItems();
70
+ this.$emit("expanded-change", this);
191
71
  }
192
72
  }
193
- connectedCallback() {
194
- super.connectedCallback();
195
- this.setAttribute("tabindex", "0");
196
- DOM.queueUpdate(() => {
197
- this.setItems();
198
- });
199
- }
200
- /**
201
- * Handles click events bubbling up
202
- *
203
- * @internal
204
- */
205
- handleClick(e) {
206
- if (!e.defaultPrevented) {
207
- if (!(e.target instanceof Element) || !isTreeItemElement(e.target)) {
208
- return true;
209
- }
210
- const item = e.target;
211
- if (!item.disabled) {
212
- item.selected = !item.selected;
213
- }
214
- return;
73
+ selectedChanged() {
74
+ if (this.$fastController.isConnected) {
75
+ this.$emit("selected-change", this);
215
76
  }
216
77
  }
217
- /**
218
- * Move focus to a tree item based on its offset from the provided item
219
- */
220
- focusNextNode(delta, item) {
221
- const visibleNodes = this.getVisibleNodes();
222
- if (visibleNodes) {
223
- const focusItem = visibleNodes[visibleNodes.indexOf(item) + delta];
224
- if (isHTMLElement(focusItem)) {
225
- TreeItem.focusItem(focusItem);
226
- }
78
+ itemsChanged() {
79
+ if (this.$fastController.isConnected) {
80
+ this.items.forEach((node) => {
81
+ if (isTreeItemElement(node)) {
82
+ node.nested = true;
83
+ }
84
+ });
227
85
  }
228
86
  }
229
87
  /**
230
- * checks if there are any nested tree items
88
+ * Places document focus on a tree item
89
+ *
90
+ * @public
91
+ * @param el - the element to focus
231
92
  */
232
- getValidFocusableItem() {
233
- const treeItems = this.getVisibleNodes();
234
- let focusIndex = treeItems.findIndex(this.isSelectedElement);
235
- if (focusIndex === -1) {
236
- focusIndex = treeItems.findIndex(this.isFocusableElement);
237
- }
238
- if (focusIndex !== -1) {
239
- return treeItems[focusIndex];
240
- }
241
- return null;
93
+ static focusItem(el) {
94
+ el.focusable = true;
95
+ el.focus();
242
96
  }
243
97
  /**
244
- * checks if there are any nested tree items
98
+ * Gets number of children
99
+ *
100
+ * @internal
245
101
  */
246
- checkForNestedItems() {
247
- return this.slottedTreeItems.some((node) => {
248
- return isTreeItemElement(node) && node.querySelector("[role='treeitem']");
249
- });
250
- }
251
- getVisibleNodes() {
252
- return getDisplayedNodes(this, "[role='treeitem']");
102
+ childItemLength() {
103
+ const treeChildren = this.childItems.filter(
104
+ (item) => {
105
+ return isTreeItemElement(item);
106
+ }
107
+ );
108
+ return treeChildren.length;
253
109
  }
254
110
  }
111
+ __decorateClass([
112
+ attr
113
+ ], TreeItem.prototype, "text");
114
+ __decorateClass([
115
+ attr({ mode: "boolean" })
116
+ ], TreeItem.prototype, "expanded");
117
+ __decorateClass([
118
+ attr({
119
+ mode: "boolean"
120
+ })
121
+ ], TreeItem.prototype, "selected");
122
+ __decorateClass([
123
+ attr({ mode: "boolean" })
124
+ ], TreeItem.prototype, "disabled");
125
+ __decorateClass([
126
+ observable
127
+ ], TreeItem.prototype, "focusable");
255
128
  // @ts-expect-error Type is incorrectly non-optional
256
129
  __decorateClass([
257
- attr({ attribute: "render-collapsed-nodes" })
258
- ], TreeView.prototype, "renderCollapsedNodes");
130
+ observable
131
+ ], TreeItem.prototype, "childItems");
132
+ __decorateClass([
133
+ observable
134
+ ], TreeItem.prototype, "items");
259
135
  // @ts-expect-error Type is incorrectly non-optional
260
136
  __decorateClass([
261
137
  observable
262
- ], TreeView.prototype, "currentSelected");
138
+ ], TreeItem.prototype, "nested");
263
139
  // @ts-expect-error Type is incorrectly non-optional
264
140
  __decorateClass([
265
141
  observable
266
- ], TreeView.prototype, "slottedTreeItems");
142
+ ], TreeItem.prototype, "renderCollapsedChildren");
267
143
 
268
- const getClasses = (_) => classNames("control");
269
- const TreeViewTemplate = html` <template
270
- ${ref("treeView")}
271
- ${applyHostSemantics({
272
- role: "tree"
273
- })}
274
- @keydown="${(x, c) => x.handleKeyDown(c.event)}"
275
- @focusin="${(x, c) => x.handleFocus(c.event)}"
276
- @focusout="${(x, c) => x.handleBlur(c.event)}"
277
- @click="${(x, c) => x.handleClick(c.event)}"
278
- @selected-change="${(x, c) => x.handleSelectedChange(c.event)}"
279
- >
280
- <div class="${getClasses}">
281
- <slot ${slotted("slottedTreeItems")}></slot>
282
- </div>
283
- </template>`;
144
+ const getClasses = ({ disabled, selected }) => classNames(
145
+ "control",
146
+ ["disabled", disabled],
147
+ ["selected", Boolean(selected)]
148
+ );
149
+ const expandCollapseButton = (context) => {
150
+ const iconTag = context.tagFor(Icon);
151
+ return html`
152
+ <div aria-hidden="true"
153
+ class="expandCollapseButton"
154
+ @click="${(x, c) => x.handleExpandCollapseButtonClick(c.event)}"
155
+ ${ref("expandCollapseButton")}
156
+ >
157
+ <${iconTag} class="expandCollapseIcon" name="${(x) => x.expanded ? "chevron-down-line" : "chevron-right-line"}"></${iconTag}>
158
+ </div>`;
159
+ };
160
+ const TreeItemTemplate = (context) => {
161
+ const affixIconTemplate = affixIconTemplateFactory(context);
162
+ return html` <template
163
+ slot="${(x) => x.isNestedItem() ? "item" : void 0}"
164
+ tabindex="-1"
165
+ ${applyHostSemantics({
166
+ role: "treeitem",
167
+ ariaExpanded: (x) => x.childItems && x.childItems.length > 0 ? x.expanded : void 0,
168
+ ariaSelected: (x) => x.selected,
169
+ ariaDisabled: (x) => x.disabled
170
+ })}
171
+ @focusin="${(x, c) => x.handleFocus(c.event)}"
172
+ @focusout="${(x, c) => x.handleBlur(c.event)}"
173
+ ${children({
174
+ property: "childItems",
175
+ filter: elements(context.tagFor(TreeItem))
176
+ })}
177
+ >
178
+ <div class="${getClasses}">
179
+ ${when(
180
+ (x) => x.childItems && x.childItems.length > 0,
181
+ expandCollapseButton(context)
182
+ )}
183
+ ${(x) => affixIconTemplate(x.icon, IconWrapper.Slot)}
184
+ ${(x) => x.text}
185
+ </div>
186
+ ${when(
187
+ (x) => x.childItems && x.childItems.length > 0 && x.expanded,
188
+ html` <div role="group" class="items">
189
+ <slot name="item" ${slotted("items")}></slot>
190
+ </div>`
191
+ )}
192
+ </template>`;
193
+ };
284
194
 
285
- const treeViewDefinition = defineVividComponent(
286
- "tree-view",
287
- TreeView,
288
- TreeViewTemplate,
289
- [treeItemDefinition],
195
+ const treeItemDefinition = defineVividComponent(
196
+ "tree-item",
197
+ TreeItem,
198
+ TreeItemTemplate,
199
+ [iconDefinition],
290
200
  {
291
201
  styles
292
202
  }
293
203
  );
294
- const registerTreeView = createRegisterFunction(treeViewDefinition);
204
+ const registerTreeItem = createRegisterFunction(treeItemDefinition);
295
205
 
296
- export { TreeView as T, registerTreeView as r, treeViewDefinition as t };
206
+ export { TreeItem as T, isTreeItemElement as i, registerTreeItem as r, treeItemDefinition as t };