@vonage/vivid 4.23.0 → 4.25.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 (396) hide show
  1. package/custom-elements.json +21830 -14295
  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 +6 -0
  7. package/lib/action-group/action-group.d.ts +6 -0
  8. package/lib/alert/alert.d.ts +20 -0
  9. package/lib/audio-player/audio-player.d.ts +6 -0
  10. package/lib/badge/badge.d.ts +9 -1
  11. package/lib/banner/banner.d.ts +25 -0
  12. package/lib/breadcrumb/breadcrumb.d.ts +6 -0
  13. package/lib/breadcrumb-item/breadcrumb-item.d.ts +63 -7
  14. package/lib/button/button.d.ts +732 -7
  15. package/lib/button/locale.d.ts +3 -0
  16. package/lib/calendar-event/calendar-event.d.ts +6 -0
  17. package/lib/card/card.d.ts +394 -2
  18. package/lib/card/card.template.d.ts +2 -1
  19. package/lib/checkbox/checkbox.d.ts +1822 -5
  20. package/lib/combobox/combobox.d.ts +1827 -20
  21. package/lib/data-grid/data-grid-cell.d.ts +339 -1
  22. package/lib/data-grid/locale.d.ts +5 -0
  23. package/lib/date-picker/date-picker.d.ts +1676 -207
  24. package/lib/date-range-picker/date-range-picker.d.ts +840 -107
  25. package/lib/date-time-picker/date-time-picker.d.ts +1678 -209
  26. package/lib/dial-pad/dial-pad.d.ts +8 -0
  27. package/lib/dialog/dialog.d.ts +12 -0
  28. package/lib/divider/divider.d.ts +6 -0
  29. package/lib/fab/fab.d.ts +6 -0
  30. package/lib/file-picker/file-picker.d.ts +1510 -32
  31. package/lib/file-picker/locale.d.ts +1 -0
  32. package/lib/header/header.d.ts +6 -0
  33. package/lib/icon/icon.d.ts +1 -0
  34. package/lib/icon/icon.template.d.ts +2 -1
  35. package/lib/menu/menu.d.ts +16 -7
  36. package/lib/menu/name.d.ts +1 -0
  37. package/lib/menu-item/menu-item.d.ts +14 -2
  38. package/lib/nav/nav.d.ts +6 -0
  39. package/lib/nav-disclosure/nav-disclosure.d.ts +13 -0
  40. package/lib/nav-item/nav-item.d.ts +405 -3
  41. package/lib/note/note.d.ts +6 -0
  42. package/lib/number-field/number-field.d.ts +1857 -36
  43. package/lib/option/option.d.ts +12 -0
  44. package/lib/progress/progress.d.ts +6 -0
  45. package/lib/progress-ring/progress-ring.d.ts +6 -0
  46. package/lib/radio/radio.d.ts +1137 -4
  47. package/lib/radio-group/radio-group.d.ts +20 -2
  48. package/lib/range-slider/range-slider.d.ts +752 -5
  49. package/lib/rich-text-editor/definition.d.ts +2 -2
  50. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +3 -1
  51. package/lib/rich-text-editor/locale.d.ts +10 -0
  52. package/lib/rich-text-editor/menubar/menubar.d.ts +340 -1
  53. package/lib/rich-text-editor/rich-text-editor.d.ts +352 -2
  54. package/lib/searchable-select/locale.d.ts +1 -0
  55. package/lib/searchable-select/option-tag.d.ts +6 -0
  56. package/lib/searchable-select/searchable-select.d.ts +1857 -35
  57. package/lib/select/select.d.ts +1843 -28
  58. package/lib/selectable-box/selectable-box.d.ts +6 -0
  59. package/lib/slider/slider.d.ts +384 -2
  60. package/lib/split-button/split-button.d.ts +18 -0
  61. package/lib/switch/switch.d.ts +386 -3
  62. package/lib/tab/tab.d.ts +18 -1
  63. package/lib/tab-panel/tab-panel.d.ts +6 -0
  64. package/lib/tabs/tabs.d.ts +5 -21
  65. package/lib/tag/tag.d.ts +12 -0
  66. package/lib/tag-group/tag-group.d.ts +6 -0
  67. package/lib/text-area/text-area.d.ts +2174 -19
  68. package/lib/text-field/text-field.d.ts +2195 -31
  69. package/lib/time-picker/time-picker.d.ts +839 -106
  70. package/lib/toggletip/toggletip.d.ts +10 -4
  71. package/lib/tooltip/tooltip.d.ts +10 -4
  72. package/lib/tree-item/tree-item.d.ts +12 -0
  73. package/lib/tree-view/tree-view.d.ts +6 -0
  74. package/lib/video-player/video-player.d.ts +6 -0
  75. package/lib/visually-hidden/definition.d.ts +4 -0
  76. package/lib/visually-hidden/visually-hidden.d.ts +3 -0
  77. package/lib/visually-hidden/visually-hidden.template.d.ts +3 -0
  78. package/locales/de-DE.cjs +47 -1
  79. package/locales/de-DE.js +47 -1
  80. package/locales/en-GB.cjs +47 -1
  81. package/locales/en-GB.js +47 -1
  82. package/locales/en-US.cjs +47 -1
  83. package/locales/en-US.js +47 -1
  84. package/locales/ja-JP.cjs +47 -1
  85. package/locales/ja-JP.js +47 -1
  86. package/locales/zh-CN.cjs +47 -1
  87. package/locales/zh-CN.js +47 -1
  88. package/menu/index.cjs +1 -1
  89. package/menu/index.js +1 -1
  90. package/nav/index.cjs +1 -1
  91. package/nav/index.js +1 -1
  92. package/nav-disclosure/index.cjs +1 -1
  93. package/nav-disclosure/index.js +1 -1
  94. package/nav-item/index.cjs +1 -1
  95. package/nav-item/index.js +1 -1
  96. package/note/index.cjs +1 -1
  97. package/note/index.js +1 -1
  98. package/number-field/index.cjs +1 -1
  99. package/number-field/index.js +1 -1
  100. package/option/index.cjs +1 -1
  101. package/option/index.js +1 -1
  102. package/package.json +1 -1
  103. package/pagination/index.cjs +1 -1
  104. package/pagination/index.js +1 -1
  105. package/popup/index.cjs +1 -1
  106. package/popup/index.js +1 -1
  107. package/progress/index.cjs +1 -1
  108. package/progress/index.js +1 -1
  109. package/progress-ring/index.cjs +1 -1
  110. package/progress-ring/index.js +1 -1
  111. package/radio/index.cjs +1 -1
  112. package/radio/index.js +1 -1
  113. package/radio-group/index.cjs +1 -1
  114. package/radio-group/index.js +1 -1
  115. package/range-slider/index.cjs +1 -1
  116. package/range-slider/index.js +1 -1
  117. package/rich-text-editor/index.cjs +1 -1
  118. package/rich-text-editor/index.js +1 -1
  119. package/searchable-select/index.cjs +1 -1
  120. package/searchable-select/index.js +1 -1
  121. package/select/index.cjs +1 -1
  122. package/select/index.js +1 -1
  123. package/selectable-box/index.cjs +1 -1
  124. package/selectable-box/index.js +1 -1
  125. package/shared/affix.cjs +13 -7
  126. package/shared/affix.js +13 -8
  127. package/shared/aria/delegates-aria.d.ts +6 -0
  128. package/shared/aria/host-semantics.d.ts +6 -0
  129. package/shared/breadcrumb-item.cjs +2 -5
  130. package/shared/breadcrumb-item.js +2 -5
  131. package/shared/button.cjs +19 -14
  132. package/shared/button.js +19 -14
  133. package/shared/calendar-picker.template.cjs +3 -3
  134. package/shared/calendar-picker.template.js +1 -1
  135. package/shared/char-count.cjs +92 -0
  136. package/shared/char-count.js +90 -0
  137. package/shared/definition.js +1 -1
  138. package/shared/definition10.js +1 -1
  139. package/shared/definition11.cjs +27 -44
  140. package/shared/definition11.js +28 -45
  141. package/shared/definition12.cjs +1 -1
  142. package/shared/definition12.js +2 -2
  143. package/shared/definition13.js +1 -1
  144. package/shared/definition14.cjs +53 -22
  145. package/shared/definition14.js +54 -23
  146. package/shared/definition15.cjs +31 -36
  147. package/shared/definition15.js +30 -36
  148. package/shared/definition16.cjs +43 -63
  149. package/shared/definition16.js +42 -63
  150. package/shared/definition17.cjs +12 -5
  151. package/shared/definition17.js +12 -5
  152. package/shared/definition18.cjs +10 -14
  153. package/shared/definition18.js +9 -14
  154. package/shared/definition19.cjs +85 -100
  155. package/shared/definition19.js +75 -91
  156. package/shared/definition2.js +1 -1
  157. package/shared/definition20.cjs +15 -20
  158. package/shared/definition20.js +14 -20
  159. package/shared/definition21.cjs +22 -3
  160. package/shared/definition21.js +23 -4
  161. package/shared/definition22.cjs +12 -6
  162. package/shared/definition22.js +13 -7
  163. package/shared/definition23.cjs +5 -38
  164. package/shared/definition23.js +5 -37
  165. package/shared/definition24.cjs +2 -7
  166. package/shared/definition24.js +3 -8
  167. package/shared/definition25.js +1 -1
  168. package/shared/definition26.cjs +160 -163
  169. package/shared/definition26.js +159 -163
  170. package/shared/definition27.cjs +1 -1
  171. package/shared/definition27.js +2 -2
  172. package/shared/definition28.cjs +32 -17
  173. package/shared/definition28.js +33 -18
  174. package/shared/definition29.js +1 -1
  175. package/shared/definition3.js +1 -1
  176. package/shared/definition30.cjs +96 -482
  177. package/shared/definition30.js +99 -482
  178. package/shared/definition31.cjs +334 -57
  179. package/shared/definition31.js +333 -56
  180. package/shared/definition32.cjs +104 -19
  181. package/shared/definition32.js +105 -20
  182. package/shared/definition33.cjs +67 -15
  183. package/shared/definition33.js +66 -14
  184. package/shared/definition34.cjs +15 -50
  185. package/shared/definition34.js +14 -49
  186. package/shared/definition35.cjs +28 -397
  187. package/shared/definition35.js +27 -397
  188. package/shared/definition36.cjs +404 -54
  189. package/shared/definition36.js +404 -55
  190. package/shared/definition37.cjs +57 -234
  191. package/shared/definition37.js +57 -233
  192. package/shared/definition38.cjs +221 -66
  193. package/shared/definition38.js +220 -65
  194. package/shared/definition39.cjs +52 -44
  195. package/shared/definition39.js +51 -43
  196. package/shared/definition4.cjs +31 -24
  197. package/shared/definition4.js +33 -26
  198. package/shared/definition40.cjs +56 -266
  199. package/shared/definition40.js +55 -265
  200. package/shared/definition41.cjs +285 -142
  201. package/shared/definition41.js +285 -142
  202. package/shared/definition42.cjs +156 -564
  203. package/shared/definition42.js +156 -565
  204. package/shared/definition43.cjs +557 -14317
  205. package/shared/definition43.js +556 -14316
  206. package/shared/definition44.cjs +14418 -1085
  207. package/shared/definition44.js +14416 -1085
  208. package/shared/definition45.cjs +1049 -671
  209. package/shared/definition45.js +1050 -672
  210. package/shared/definition46.cjs +848 -113
  211. package/shared/definition46.js +847 -112
  212. package/shared/definition47.cjs +125 -90
  213. package/shared/definition47.js +124 -89
  214. package/shared/definition48.cjs +88 -455
  215. package/shared/definition48.js +87 -454
  216. package/shared/definition49.cjs +466 -109
  217. package/shared/definition49.js +466 -109
  218. package/shared/definition5.cjs +8 -7
  219. package/shared/definition5.js +6 -5
  220. package/shared/definition50.cjs +106 -106
  221. package/shared/definition50.js +105 -105
  222. package/shared/definition51.cjs +136 -15
  223. package/shared/definition51.js +135 -14
  224. package/shared/definition52.cjs +16 -115
  225. package/shared/definition52.js +15 -114
  226. package/shared/definition53.cjs +78 -490
  227. package/shared/definition53.js +77 -488
  228. package/shared/definition54.cjs +445 -23
  229. package/shared/definition54.js +443 -22
  230. package/shared/definition55.cjs +22 -136
  231. package/shared/definition55.js +21 -135
  232. package/shared/definition56.cjs +95 -291
  233. package/shared/definition56.js +95 -292
  234. package/shared/definition57.cjs +192 -480
  235. package/shared/definition57.js +190 -479
  236. package/shared/definition58.cjs +411 -24
  237. package/shared/definition58.js +410 -24
  238. package/shared/definition59.cjs +27 -144
  239. package/shared/definition59.js +27 -143
  240. package/shared/definition6.js +1 -1
  241. package/shared/definition60.cjs +83 -54
  242. package/shared/definition60.js +82 -53
  243. package/shared/definition61.cjs +78 -166
  244. package/shared/definition61.js +77 -164
  245. package/shared/definition62.cjs +143 -232
  246. package/shared/definition62.js +141 -231
  247. package/shared/definition63.cjs +234 -69417
  248. package/shared/definition63.js +233 -69416
  249. package/shared/definition64.cjs +69454 -28
  250. package/shared/definition64.js +69453 -27
  251. package/shared/definition65.cjs +28 -2168
  252. package/shared/definition65.js +27 -2166
  253. package/shared/definition66.cjs +27 -0
  254. package/shared/definition66.js +23 -0
  255. package/shared/definition67.cjs +2195 -0
  256. package/shared/definition67.js +2190 -0
  257. package/shared/definition7.cjs +11 -2
  258. package/shared/definition7.js +12 -3
  259. package/shared/definition8.cjs +24 -11
  260. package/shared/definition8.js +26 -13
  261. package/shared/definition9.cjs +1 -2
  262. package/shared/definition9.js +2 -3
  263. package/shared/delegates-aria.js +1 -1
  264. package/shared/deprecation/replaced-props.d.ts +20 -0
  265. package/shared/divider.cjs +41 -0
  266. package/shared/divider.js +38 -0
  267. package/shared/feedback/feedback-message.d.ts +345 -0
  268. package/shared/feedback/locale.d.ts +4 -0
  269. package/{lib/text-anchor/text-anchor.d.ts → shared/feedback/mixins.d.ts} +62 -39
  270. package/shared/form-associated.cjs +124 -100
  271. package/shared/form-associated.js +125 -101
  272. package/shared/form-element.cjs +84 -0
  273. package/shared/form-element.js +82 -0
  274. package/shared/foundation/button/button.d.ts +378 -2
  275. package/shared/foundation/form-associated/form-associated.d.ts +753 -49
  276. package/shared/foundation/listbox/listbox.d.ts +1 -1
  277. package/shared/foundation/vivid-element/vivid-element.d.ts +14 -0
  278. package/shared/host-semantics.js +1 -1
  279. package/shared/key-codes.js +1 -1
  280. package/shared/linkable.cjs +70 -0
  281. package/shared/linkable.js +68 -0
  282. package/shared/localization/Locale.d.ts +16 -0
  283. package/shared/mixins.cjs +306 -0
  284. package/shared/mixins.js +300 -0
  285. package/shared/patterns/affix.d.ts +16 -1
  286. package/shared/patterns/anchored.d.ts +20 -8
  287. package/shared/patterns/char-count/char-count.d.ts +351 -0
  288. package/shared/patterns/char-count/index.d.ts +1 -0
  289. package/shared/patterns/char-count/locale.d.ts +4 -0
  290. package/shared/patterns/form-elements/form-element.d.ts +744 -0
  291. package/shared/patterns/form-elements/index.d.ts +3 -1
  292. package/shared/patterns/form-elements/with-error-text.d.ts +1122 -0
  293. package/shared/patterns/form-elements/with-success-text.d.ts +341 -0
  294. package/shared/patterns/index.d.ts +2 -0
  295. package/shared/patterns/linkable.d.ts +394 -0
  296. package/shared/patterns/localized.d.ts +6 -0
  297. package/shared/patterns/trapped-focus.d.ts +6 -0
  298. package/shared/picker-field/mixins/calendar-picker.d.ts +420 -52
  299. package/shared/picker-field/mixins/calendar-picker.template.d.ts +420 -52
  300. package/shared/picker-field/mixins/inline-time-picker/inline-time-picker.d.ts +6 -0
  301. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +843 -107
  302. package/shared/picker-field/mixins/single-date-picker.d.ts +1259 -155
  303. package/shared/picker-field/mixins/single-value-picker.d.ts +417 -49
  304. package/shared/picker-field/mixins/time-selection-picker.d.ts +842 -106
  305. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +839 -103
  306. package/shared/picker-field/picker-field.d.ts +1491 -15
  307. package/shared/picker-field.template.cjs +13 -22
  308. package/shared/picker-field.template.js +14 -23
  309. package/shared/repeat.js +1 -1
  310. package/shared/slider.template.cjs +1 -1
  311. package/shared/slider.template.js +1 -1
  312. package/shared/time-selection-picker.template.cjs +10 -15
  313. package/shared/time-selection-picker.template.js +10 -16
  314. package/shared/vivid-element.cjs +53 -4
  315. package/shared/vivid-element.js +53 -3
  316. package/shared/with-error-text.cjs +56 -0
  317. package/shared/with-error-text.js +54 -0
  318. package/shared/with-success-text.cjs +23 -0
  319. package/shared/with-success-text.js +21 -0
  320. package/side-drawer/index.cjs +1 -1
  321. package/side-drawer/index.js +1 -1
  322. package/slider/index.cjs +1 -1
  323. package/slider/index.js +1 -1
  324. package/split-button/index.cjs +1 -1
  325. package/split-button/index.js +1 -1
  326. package/styles/core/all.css +1 -1
  327. package/styles/core/theme.css +1 -1
  328. package/styles/core/typography.css +1 -1
  329. package/styles/tokens/theme-dark.css +4 -4
  330. package/styles/tokens/theme-light.css +4 -4
  331. package/styles/tokens/vivid-2-compat.css +1 -1
  332. package/switch/index.cjs +1 -1
  333. package/switch/index.js +1 -1
  334. package/tab/index.cjs +1 -1
  335. package/tab/index.js +1 -1
  336. package/tab-panel/index.cjs +1 -1
  337. package/tab-panel/index.js +1 -1
  338. package/tabs/index.cjs +1 -1
  339. package/tabs/index.js +1 -1
  340. package/tag/index.cjs +1 -1
  341. package/tag/index.js +1 -1
  342. package/tag-group/index.cjs +1 -1
  343. package/tag-group/index.js +1 -1
  344. package/text-area/index.cjs +1 -1
  345. package/text-area/index.js +1 -1
  346. package/text-field/index.cjs +1 -1
  347. package/text-field/index.js +1 -1
  348. package/time-picker/index.cjs +1 -1
  349. package/time-picker/index.js +1 -1
  350. package/toggletip/index.cjs +1 -1
  351. package/toggletip/index.js +1 -1
  352. package/tooltip/index.cjs +1 -1
  353. package/tooltip/index.js +1 -1
  354. package/tree-item/index.cjs +1 -1
  355. package/tree-item/index.js +1 -1
  356. package/tree-view/index.cjs +1 -1
  357. package/tree-view/index.js +1 -1
  358. package/video-player/index.cjs +1 -1
  359. package/video-player/index.js +1 -1
  360. package/visually-hidden/index.cjs +5 -0
  361. package/visually-hidden/index.js +3 -0
  362. package/vivid.api.json +762 -1478
  363. package/lib/checkbox/checkbox.form-associated.d.ts +0 -11
  364. package/lib/file-picker/file-picker.form-associated.d.ts +0 -11
  365. package/lib/number-field/number-field.form-associated.d.ts +0 -11
  366. package/lib/radio/radio.form-associated.d.ts +0 -13
  367. package/lib/range-slider/range-slider.form-associated.d.ts +0 -11
  368. package/lib/searchable-select/searchable-select.form-associated.d.ts +0 -11
  369. package/lib/select/select.form-associated.d.ts +0 -11
  370. package/lib/slider/slider.form-associated.d.ts +0 -11
  371. package/lib/switch/switch.form-associated.d.ts +0 -11
  372. package/lib/text-anchor/definition.d.ts +0 -2
  373. package/lib/text-anchor/text-anchor.template.d.ts +0 -3
  374. package/lib/text-area/text-area.form-associated.d.ts +0 -11
  375. package/lib/text-field/text-field.form-associated.d.ts +0 -11
  376. package/shared/anchor.cjs +0 -49
  377. package/shared/anchor.js +0 -47
  378. package/shared/apply-mixins.cjs +0 -23
  379. package/shared/apply-mixins.js +0 -21
  380. package/shared/applyMixinsWithObservables.cjs +0 -15
  381. package/shared/applyMixinsWithObservables.js +0 -13
  382. package/shared/direction.cjs +0 -17
  383. package/shared/direction.js +0 -15
  384. package/shared/form-elements.cjs +0 -209
  385. package/shared/form-elements.js +0 -202
  386. package/shared/foundation/anchor/anchor.d.ts +0 -11
  387. package/shared/foundation/utilities/apply-mixins.d.ts +0 -1
  388. package/shared/patterns/form-elements/form-elements.d.ts +0 -58
  389. package/shared/picker-field/picker-field.form-associated.d.ts +0 -11
  390. package/shared/text-anchor.cjs +0 -38
  391. package/shared/text-anchor.js +0 -36
  392. package/shared/text-anchor.template.cjs +0 -35
  393. package/shared/text-anchor.template.js +0 -33
  394. package/shared/utils/applyMixinsWithObservables.d.ts +0 -1
  395. package/text-anchor/index.cjs +0 -17
  396. 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 };