@vonage/vivid 4.17.0 → 4.19.0-preview.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 (364) hide show
  1. package/custom-elements.json +4248 -4149
  2. package/date-time-picker/index.cjs +5 -0
  3. package/date-time-picker/index.js +3 -0
  4. package/dial-pad/index.cjs +1 -1
  5. package/dial-pad/index.js +1 -1
  6. package/dialog/index.cjs +1 -1
  7. package/dialog/index.js +1 -1
  8. package/divider/index.cjs +1 -1
  9. package/divider/index.js +1 -1
  10. package/elevation/index.cjs +1 -1
  11. package/elevation/index.js +1 -1
  12. package/empty-state/index.cjs +1 -1
  13. package/empty-state/index.js +1 -1
  14. package/fab/index.cjs +1 -1
  15. package/fab/index.js +1 -1
  16. package/file-picker/index.cjs +1 -1
  17. package/file-picker/index.js +1 -1
  18. package/header/index.cjs +1 -1
  19. package/header/index.js +1 -1
  20. package/icon/index.cjs +1 -1
  21. package/icon/index.js +1 -1
  22. package/index.cjs +136 -133
  23. package/index.js +45 -44
  24. package/layout/index.cjs +1 -1
  25. package/layout/index.js +1 -1
  26. package/lib/action-group/action-group.d.ts +449 -3
  27. package/lib/banner/banner.d.ts +449 -3
  28. package/lib/breadcrumb-item/breadcrumb-item.d.ts +449 -1
  29. package/lib/checkbox/checkbox.d.ts +449 -4
  30. package/lib/components.d.ts +1 -0
  31. package/lib/date-picker/date-picker.d.ts +2182 -4
  32. package/lib/date-picker/date-picker.template.d.ts +2 -0
  33. package/lib/date-range-picker/date-range-picker.d.ts +1110 -4
  34. package/lib/date-range-picker/date-range-picker.template.d.ts +2 -0
  35. package/lib/date-time-picker/date-time-picker.d.ts +2175 -0
  36. package/lib/date-time-picker/date-time-picker.template.d.ts +2 -0
  37. package/lib/date-time-picker/definition.d.ts +1 -0
  38. package/lib/date-time-picker/locale.d.ts +9 -0
  39. package/lib/dialog/dialog.d.ts +449 -2
  40. package/lib/divider/divider.d.ts +448 -1
  41. package/lib/menu/menu.d.ts +446 -1
  42. package/lib/nav-disclosure/nav-disclosure.d.ts +449 -2
  43. package/lib/number-field/number-field.d.ts +450 -3
  44. package/lib/option/option.d.ts +4 -11
  45. package/lib/progress/progress.d.ts +449 -2
  46. package/lib/progress-ring/progress-ring.d.ts +449 -2
  47. package/lib/rich-text-editor/facades/vivid-prose-mirror.facade.d.ts +1 -0
  48. package/lib/rich-text-editor/rich-text-editor.d.ts +7 -4
  49. package/lib/searchable-select/searchable-select.d.ts +3 -0
  50. package/lib/select/select.d.ts +1 -5
  51. package/lib/selectable-box/selectable-box.d.ts +449 -2
  52. package/lib/slider/slider.d.ts +449 -3
  53. package/lib/split-button/split-button.d.ts +449 -3
  54. package/lib/switch/switch.d.ts +449 -2
  55. package/lib/tag-group/tag-group.d.ts +449 -2
  56. package/lib/text-anchor/text-anchor.d.ts +449 -1
  57. package/lib/text-area/text-area.d.ts +450 -3
  58. package/lib/text-field/text-field.d.ts +450 -7
  59. package/lib/time-picker/locale.d.ts +0 -2
  60. package/lib/time-picker/time-picker.d.ts +1053 -9
  61. package/lib/time-picker/time-picker.template.d.ts +2 -1
  62. package/locales/de-DE.cjs +29 -5
  63. package/locales/de-DE.js +29 -5
  64. package/locales/en-GB.cjs +29 -5
  65. package/locales/en-GB.js +29 -5
  66. package/locales/en-US.cjs +29 -5
  67. package/locales/en-US.js +29 -5
  68. package/locales/ja-JP.cjs +29 -5
  69. package/locales/ja-JP.js +29 -5
  70. package/locales/zh-CN.cjs +29 -5
  71. package/locales/zh-CN.js +29 -5
  72. package/menu/index.cjs +1 -1
  73. package/menu/index.js +1 -1
  74. package/menu-item/index.cjs +1 -1
  75. package/menu-item/index.js +1 -1
  76. package/nav/index.cjs +1 -1
  77. package/nav/index.js +1 -1
  78. package/nav-disclosure/index.cjs +1 -1
  79. package/nav-disclosure/index.js +1 -1
  80. package/nav-item/index.cjs +1 -1
  81. package/nav-item/index.js +1 -1
  82. package/note/index.cjs +1 -1
  83. package/note/index.js +1 -1
  84. package/number-field/index.cjs +1 -1
  85. package/number-field/index.js +1 -1
  86. package/option/index.cjs +1 -1
  87. package/option/index.js +1 -1
  88. package/package.json +1 -1
  89. package/pagination/index.cjs +1 -1
  90. package/pagination/index.js +1 -1
  91. package/popup/index.cjs +1 -1
  92. package/popup/index.js +1 -1
  93. package/progress/index.cjs +1 -1
  94. package/progress/index.js +1 -1
  95. package/progress-ring/index.cjs +1 -1
  96. package/progress-ring/index.js +1 -1
  97. package/radio/index.cjs +1 -1
  98. package/radio/index.js +1 -1
  99. package/radio-group/index.cjs +1 -1
  100. package/radio-group/index.js +1 -1
  101. package/range-slider/index.cjs +1 -1
  102. package/range-slider/index.js +1 -1
  103. package/rich-text-editor/index.cjs +1 -1
  104. package/rich-text-editor/index.js +1 -1
  105. package/searchable-select/index.cjs +1 -1
  106. package/searchable-select/index.js +1 -1
  107. package/select/index.cjs +1 -1
  108. package/select/index.js +1 -1
  109. package/selectable-box/index.cjs +1 -1
  110. package/selectable-box/index.js +1 -1
  111. package/shared/Reflector.cjs +71 -0
  112. package/shared/Reflector.js +69 -0
  113. package/shared/affix.cjs +1 -1
  114. package/shared/affix.js +1 -1
  115. package/shared/anchor.cjs +0 -10
  116. package/shared/anchor.js +0 -10
  117. package/shared/aria/delegates-aria.d.ts +454 -0
  118. package/shared/base-progress.js +1 -1
  119. package/shared/breadcrumb-item.cjs +2 -1
  120. package/shared/breadcrumb-item.js +2 -1
  121. package/shared/button.cjs +2 -13
  122. package/shared/button.js +2 -13
  123. package/shared/{presentationDate.cjs → calendar-picker.template.cjs} +730 -900
  124. package/shared/{presentationDate.js → calendar-picker.template.js} +672 -845
  125. package/shared/datetime/dateTimeStr.d.ts +6 -0
  126. package/shared/datetime/presentationDate.d.ts +4 -0
  127. package/shared/{date-picker/calendar → datetime}/presentationDateRange.d.ts +3 -3
  128. package/shared/datetime/presentationDateTime.d.ts +4 -0
  129. package/{lib/time-picker/time → shared/datetime}/time.d.ts +1 -0
  130. package/shared/definition.cjs +1 -1
  131. package/shared/definition.js +1 -1
  132. package/shared/definition11.cjs +8 -11
  133. package/shared/definition11.js +8 -11
  134. package/shared/definition14.cjs +2 -2
  135. package/shared/definition14.js +2 -2
  136. package/shared/definition15.cjs +3 -10
  137. package/shared/definition15.js +3 -10
  138. package/shared/definition16.cjs +29 -33
  139. package/shared/definition16.js +29 -33
  140. package/shared/definition17.cjs +1 -1
  141. package/shared/definition17.js +1 -1
  142. package/shared/definition18.cjs +56 -91
  143. package/shared/definition18.js +56 -91
  144. package/shared/definition19.cjs +68 -32
  145. package/shared/definition19.js +58 -22
  146. package/shared/definition20.cjs +253 -220
  147. package/shared/definition20.js +254 -220
  148. package/shared/definition21.cjs +200 -286
  149. package/shared/definition21.js +198 -284
  150. package/shared/definition22.cjs +302 -31
  151. package/shared/definition22.js +301 -30
  152. package/shared/definition23.cjs +37 -58
  153. package/shared/definition23.js +36 -57
  154. package/shared/definition24.cjs +50 -70
  155. package/shared/definition24.js +49 -69
  156. package/shared/definition25.cjs +75 -2475
  157. package/shared/definition25.js +74 -2475
  158. package/shared/definition26.cjs +2480 -50
  159. package/shared/definition26.js +2479 -48
  160. package/shared/definition27.cjs +53 -271
  161. package/shared/definition27.js +52 -269
  162. package/shared/definition28.cjs +271 -48
  163. package/shared/definition28.js +269 -47
  164. package/shared/definition29.cjs +37 -764
  165. package/shared/definition29.js +36 -758
  166. package/shared/definition3.cjs +2 -9
  167. package/shared/definition3.js +2 -9
  168. package/shared/definition30.cjs +739 -57
  169. package/shared/definition30.js +733 -56
  170. package/shared/definition31.cjs +93 -22
  171. package/shared/definition31.js +92 -21
  172. package/shared/definition32.cjs +28 -10
  173. package/shared/definition32.js +27 -9
  174. package/shared/definition33.cjs +10 -52
  175. package/shared/definition33.js +9 -51
  176. package/shared/definition34.cjs +30 -411
  177. package/shared/definition34.js +30 -412
  178. package/shared/definition35.cjs +422 -52
  179. package/shared/definition35.js +423 -53
  180. package/shared/definition36.cjs +54 -216
  181. package/shared/definition36.js +54 -215
  182. package/shared/definition37.cjs +201 -71
  183. package/shared/definition37.js +200 -70
  184. package/shared/definition38.cjs +53 -48
  185. package/shared/definition38.js +51 -46
  186. package/shared/definition39.cjs +57 -263
  187. package/shared/definition39.js +56 -262
  188. package/shared/definition4.cjs +2 -2
  189. package/shared/definition4.js +2 -2
  190. package/shared/definition40.cjs +220 -148
  191. package/shared/definition40.js +220 -148
  192. package/shared/definition41.cjs +143 -567
  193. package/shared/definition41.js +143 -568
  194. package/shared/definition42.cjs +596 -12573
  195. package/shared/definition42.js +596 -12573
  196. package/shared/definition43.cjs +13489 -1058
  197. package/shared/definition43.js +13489 -1059
  198. package/shared/definition44.cjs +968 -696
  199. package/shared/definition44.js +970 -697
  200. package/shared/definition45.cjs +850 -105
  201. package/shared/definition45.js +850 -104
  202. package/shared/definition46.cjs +110 -90
  203. package/shared/definition46.js +108 -88
  204. package/shared/definition47.cjs +88 -464
  205. package/shared/definition47.js +87 -463
  206. package/shared/definition48.cjs +457 -111
  207. package/shared/definition48.js +456 -110
  208. package/shared/definition49.cjs +103 -109
  209. package/shared/definition49.js +102 -108
  210. package/shared/definition5.cjs +3 -3
  211. package/shared/definition5.js +3 -3
  212. package/shared/definition50.cjs +136 -14
  213. package/shared/definition50.js +135 -13
  214. package/shared/definition51.cjs +16 -115
  215. package/shared/definition51.js +15 -114
  216. package/shared/definition52.cjs +79 -486
  217. package/shared/definition52.js +78 -485
  218. package/shared/definition53.cjs +503 -24
  219. package/shared/definition53.js +502 -23
  220. package/shared/definition54.cjs +23 -137
  221. package/shared/definition54.js +22 -136
  222. package/shared/definition55.cjs +96 -241
  223. package/shared/definition55.js +95 -241
  224. package/shared/definition56.cjs +261 -61
  225. package/shared/definition56.js +260 -60
  226. package/shared/definition57.cjs +419 -788
  227. package/shared/definition57.js +420 -789
  228. package/shared/definition58.cjs +27 -144
  229. package/shared/definition58.js +27 -143
  230. package/shared/definition59.cjs +83 -54
  231. package/shared/definition59.js +82 -53
  232. package/shared/definition6.cjs +1 -1
  233. package/shared/definition6.js +1 -1
  234. package/shared/definition60.cjs +80 -165
  235. package/shared/definition60.js +79 -163
  236. package/shared/definition61.cjs +143 -230
  237. package/shared/definition61.js +141 -229
  238. package/shared/definition62.cjs +233 -69344
  239. package/shared/definition62.js +232 -69343
  240. package/shared/definition63.cjs +69381 -28
  241. package/shared/definition63.js +69379 -26
  242. package/shared/definition64.cjs +28 -2168
  243. package/shared/definition64.js +27 -2166
  244. package/shared/definition65.cjs +2195 -0
  245. package/shared/definition65.js +2190 -0
  246. package/shared/definition7.cjs +1 -1
  247. package/shared/definition7.js +1 -1
  248. package/shared/definition8.cjs +3 -9
  249. package/shared/definition8.js +3 -9
  250. package/shared/definition9.cjs +1 -1
  251. package/shared/definition9.js +1 -1
  252. package/shared/delegates-aria.cjs +69 -0
  253. package/shared/delegates-aria.js +67 -0
  254. package/shared/form-associated.js +1 -1
  255. package/shared/form-elements.cjs +1 -1
  256. package/shared/form-elements.js +1 -1
  257. package/shared/foundation/anchor/anchor.d.ts +0 -8
  258. package/shared/foundation/button/button.d.ts +449 -7
  259. package/shared/foundation/listbox/listbox.d.ts +0 -9
  260. package/shared/listbox.cjs +4 -30
  261. package/shared/listbox.js +4 -30
  262. package/shared/localization/Locale.d.ts +6 -2
  263. package/shared/option.cjs +38 -50
  264. package/shared/option.js +39 -51
  265. package/shared/picker-field/locale.d.ts +4 -0
  266. package/shared/picker-field/mixins/calendar-picker.d.ts +558 -0
  267. package/shared/{date-picker/locale.d.ts → picker-field/mixins/calendar-picker.locale.d.ts} +1 -3
  268. package/shared/picker-field/mixins/calendar-picker.template.d.ts +555 -0
  269. package/shared/picker-field/mixins/calendar-segments/calendarGrid.d.ts +17 -0
  270. package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/monthPickerGrid.d.ts +3 -3
  271. package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/columns.d.ts +1 -1
  272. package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/inline-time-picker.d.ts +2 -2
  273. package/{lib/time-picker/time/picker.d.ts → shared/picker-field/mixins/inline-time-picker/picker-option.d.ts} +1 -1
  274. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1110 -0
  275. package/shared/picker-field/mixins/single-date-picker.d.ts +1626 -0
  276. package/shared/picker-field/mixins/single-value-picker.d.ts +518 -0
  277. package/shared/picker-field/mixins/time-selection-picker.d.ts +1053 -0
  278. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +1050 -0
  279. package/shared/picker-field/picker-field.d.ts +11 -0
  280. package/shared/picker-field/picker-field.form-associated.d.ts +11 -0
  281. package/shared/picker-field/picker-field.template.d.ts +7 -0
  282. package/shared/picker-field.template.cjs +315 -0
  283. package/shared/picker-field.template.js +310 -0
  284. package/shared/single-date-picker.cjs +46 -0
  285. package/shared/single-date-picker.js +44 -0
  286. package/shared/single-value-picker.cjs +77 -0
  287. package/shared/single-value-picker.js +75 -0
  288. package/shared/slider.template.cjs +3 -3
  289. package/shared/slider.template.js +3 -3
  290. package/shared/text-anchor.cjs +2 -1
  291. package/shared/text-anchor.js +2 -1
  292. package/shared/text-anchor.template.cjs +3 -5
  293. package/shared/text-anchor.template.js +3 -5
  294. package/shared/text-field.cjs +2 -555
  295. package/shared/text-field.js +2 -554
  296. package/shared/time-selection-picker.template.cjs +776 -0
  297. package/shared/time-selection-picker.template.js +767 -0
  298. package/shared/vivid-element.cjs +1 -1
  299. package/shared/vivid-element.js +1 -1
  300. package/side-drawer/index.cjs +1 -1
  301. package/side-drawer/index.js +1 -1
  302. package/slider/index.cjs +1 -1
  303. package/slider/index.js +1 -1
  304. package/split-button/index.cjs +1 -1
  305. package/split-button/index.js +1 -1
  306. package/styles/core/all.css +1 -1
  307. package/styles/core/theme.css +1 -1
  308. package/styles/core/typography.css +1 -1
  309. package/styles/tokens/theme-dark.css +4 -4
  310. package/styles/tokens/theme-light.css +4 -4
  311. package/styles/tokens/vivid-2-compat.css +1 -1
  312. package/switch/index.cjs +1 -1
  313. package/switch/index.js +1 -1
  314. package/tab/index.cjs +1 -1
  315. package/tab/index.js +1 -1
  316. package/tab-panel/index.cjs +1 -1
  317. package/tab-panel/index.js +1 -1
  318. package/tabs/index.cjs +1 -1
  319. package/tabs/index.js +1 -1
  320. package/tag/index.cjs +1 -1
  321. package/tag/index.js +1 -1
  322. package/tag-group/index.cjs +1 -1
  323. package/tag-group/index.js +1 -1
  324. package/text-anchor/index.cjs +1 -1
  325. package/text-anchor/index.js +1 -1
  326. package/text-area/index.cjs +1 -1
  327. package/text-area/index.js +1 -1
  328. package/text-field/index.cjs +1 -1
  329. package/text-field/index.js +1 -1
  330. package/time-picker/index.cjs +1 -1
  331. package/time-picker/index.js +1 -1
  332. package/toggletip/index.cjs +1 -1
  333. package/toggletip/index.js +1 -1
  334. package/tooltip/index.cjs +1 -1
  335. package/tooltip/index.js +1 -1
  336. package/tree-item/index.cjs +1 -1
  337. package/tree-item/index.js +1 -1
  338. package/tree-view/index.cjs +1 -1
  339. package/tree-view/index.js +1 -1
  340. package/video-player/index.cjs +1 -1
  341. package/video-player/index.js +1 -1
  342. package/vivid.api.json +286 -1144
  343. package/lib/time-picker/time-picker.form-associated.d.ts +0 -11
  344. package/shared/aria-global.cjs +0 -93
  345. package/shared/aria-global.js +0 -91
  346. package/shared/date-picker/calendar/calendarGrid.d.ts +0 -17
  347. package/shared/date-picker/calendar/presentationDate.d.ts +0 -4
  348. package/shared/date-picker/date-picker-base.d.ts +0 -21
  349. package/shared/date-picker/date-picker-base.form-associated.d.ts +0 -11
  350. package/shared/date-picker/date-picker-base.template.d.ts +0 -3
  351. package/shared/foundation/patterns/aria-global.d.ts +0 -21
  352. package/shared/foundation/patterns/index.d.ts +0 -1
  353. package/shared/text-field2.cjs +0 -5
  354. package/shared/text-field2.js +0 -3
  355. package/shared/trapped-focus.cjs +0 -35
  356. package/shared/trapped-focus.js +0 -33
  357. /package/shared/{date-picker/calendar → datetime}/dateRange.d.ts +0 -0
  358. /package/shared/{date-picker/calendar → datetime}/dateStr.d.ts +0 -0
  359. /package/shared/{date-picker/calendar → datetime}/month.d.ts +0 -0
  360. /package/{lib/time-picker/time → shared/datetime}/presentationTime.d.ts +0 -0
  361. /package/shared/{date-picker/calendar → datetime}/year.d.ts +0 -0
  362. /package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/segment.d.ts +0 -0
  363. /package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/definition.d.ts +0 -0
  364. /package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/inline-time-picker.template.d.ts +0 -0
@@ -1,14 +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('./definition60.cjs');
5
- const keyCodes = require('./key-codes.cjs');
5
+ const applyMixins = require('./apply-mixins.cjs');
6
+ const affix = require('./affix.cjs');
6
7
  const dom = require('./dom.cjs');
7
- const ref = require('./ref.cjs');
8
- const classNames = require('./class-names.cjs');
9
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');
10
13
 
11
- 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:inset 0 0 0 3px var(--focus-stroke-gap-color, currentColor);outline:2px solid var(--focus-stroke-color, var(--vvd-color-canvas-text));outline-offset:calc(-2px - 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)}";
12
15
 
13
16
  var __defProp = Object.defineProperty;
14
17
  var __decorateClass = (decorators, target, key, kind) => {
@@ -19,279 +22,189 @@ var __decorateClass = (decorators, target, key, kind) => {
19
22
  if (result) __defProp(target, key, result);
20
23
  return result;
21
24
  };
22
- function getDisplayedNodes(rootNode, selector) {
23
- if (dom.isHTMLElement(rootNode)) {
24
- const nodes = Array.from(
25
- rootNode.querySelectorAll(selector)
26
- );
27
- const visibleNodes = nodes.filter((node) => {
28
- if (node.parentElement instanceof definition.TreeItem) {
29
- if (node.parentElement.getAttribute("aria-expanded") === "true")
30
- return true;
31
- } else {
32
- return true;
33
- }
34
- return false;
35
- });
36
- return visibleNodes;
37
- }
38
- return [];
25
+ function isTreeItemElement(el) {
26
+ return dom.isHTMLElement(el) && el.getAttribute("role") === "treeitem";
39
27
  }
40
- class TreeView extends vividElement.VividElement {
28
+ class TreeItem extends vividElement.VividElement {
41
29
  constructor() {
42
30
  super(...arguments);
31
+ this.expanded = false;
32
+ this.selected = false;
33
+ this.disabled = false;
34
+ this.focusable = false;
43
35
  /**
44
- * The tree item that is designated to be in the tab queue.
45
- *
46
- * @internal
47
- */
48
- this.currentFocused = null;
49
- /**
50
- * Handle focus events
36
+ * Whether the tree is nested
51
37
  *
52
- * @internal
38
+ * @public
53
39
  */
54
- this.handleFocus = (e) => {
55
- if (this.slottedTreeItems.length > 0) {
56
- if (e.target === this) {
57
- if (this.currentFocused !== null) {
58
- definition.TreeItem.focusItem(this.currentFocused);
59
- }
60
- return;
61
- }
62
- if (this.contains(e.target)) {
63
- this.setAttribute("tabindex", "-1");
64
- this.currentFocused = e.target;
65
- }
66
- }
40
+ this.isNestedItem = () => {
41
+ return isTreeItemElement(this.parentElement);
67
42
  };
68
43
  /**
69
- * Handle blur events
44
+ * Handle expand button click
70
45
  *
71
46
  * @internal
72
47
  */
73
- this.handleBlur = (e) => {
74
- if (e.target instanceof HTMLElement && (e.relatedTarget === null || !this.contains(e.relatedTarget))) {
75
- this.setAttribute("tabindex", "0");
48
+ this.handleExpandCollapseButtonClick = (e) => {
49
+ if (!this.disabled && !e.defaultPrevented) {
50
+ this.expanded = !this.expanded;
76
51
  }
77
52
  };
78
53
  /**
79
- * KeyDown handler
54
+ * Handle focus events
80
55
  *
81
- * @internal
56
+ * @internal
82
57
  */
83
- this.handleKeyDown = (e) => {
84
- if (this.slottedTreeItems.length < 1) {
85
- return true;
86
- }
87
- if (!e.defaultPrevented) {
88
- const treeItems = this.getVisibleNodes();
89
- switch (e.key) {
90
- case keyCodes.keyHome:
91
- if (treeItems.length) {
92
- definition.TreeItem.focusItem(treeItems[0]);
93
- }
94
- return;
95
- case keyCodes.keyEnd:
96
- if (treeItems.length) {
97
- definition.TreeItem.focusItem(treeItems[treeItems.length - 1]);
98
- }
99
- return;
100
- case keyCodes.keyArrowLeft:
101
- if (e.target && this.isFocusableElement(e.target)) {
102
- const item = e.target;
103
- if (item instanceof definition.TreeItem && item.childItemLength() > 0 && item.expanded) {
104
- item.expanded = false;
105
- } else if (item instanceof definition.TreeItem && item.parentElement instanceof definition.TreeItem) {
106
- definition.TreeItem.focusItem(item.parentElement);
107
- }
108
- }
109
- return false;
110
- case keyCodes.keyArrowRight:
111
- if (e.target && this.isFocusableElement(e.target)) {
112
- const item = e.target;
113
- if (item instanceof definition.TreeItem && item.childItemLength() > 0 && !item.expanded) {
114
- item.expanded = true;
115
- } else if (item instanceof definition.TreeItem && item.childItemLength() > 0) {
116
- this.focusNextNode(1, e.target);
117
- }
118
- }
119
- return;
120
- case keyCodes.keyArrowDown:
121
- if (e.target && this.isFocusableElement(e.target)) {
122
- this.focusNextNode(1, e.target);
123
- }
124
- return;
125
- case keyCodes.keyArrowUp:
126
- if (e.target && this.isFocusableElement(e.target)) {
127
- this.focusNextNode(-1, e.target);
128
- }
129
- return;
130
- case keyCodes.keyEnter:
131
- this.handleClick(e);
132
- return;
133
- }
134
- }
135
- return true;
58
+ this.handleFocus = (_e) => {
59
+ this.setAttribute("tabindex", "0");
136
60
  };
137
61
  /**
138
- * Handles the selected-changed events bubbling up
139
- * from child tree items
62
+ * Handle blur events
140
63
  *
141
- * @internal
142
- */
143
- this.handleSelectedChange = (e) => {
144
- if (!e.defaultPrevented) {
145
- if (!(e.target instanceof Element) || !definition.isTreeItemElement(e.target)) {
146
- return true;
147
- }
148
- const item = e.target;
149
- if (item.selected) {
150
- if (this.currentSelected && this.currentSelected !== item) {
151
- this.currentSelected.selected = false;
152
- }
153
- this.currentSelected = item;
154
- } else if (!item.selected && this.currentSelected === item) {
155
- this.currentSelected = null;
156
- }
157
- return;
158
- }
159
- };
160
- /**
161
- * Updates the tree view when slottedTreeItems changes
162
- */
163
- this.setItems = () => {
164
- const selectedItem = this.treeView.querySelector(
165
- "[aria-selected='true']"
166
- );
167
- this.currentSelected = selectedItem;
168
- if (this.currentFocused === null || !this.contains(this.currentFocused)) {
169
- this.currentFocused = this.getValidFocusableItem();
170
- }
171
- this.nested = this.checkForNestedItems();
172
- const treeItems = this.getVisibleNodes();
173
- treeItems.forEach((node) => {
174
- if (definition.isTreeItemElement(node)) {
175
- node.nested = this.nested;
176
- }
177
- });
178
- };
179
- /**
180
- * check if the item is focusable
64
+ * @internal
181
65
  */
182
- this.isFocusableElement = (el) => {
183
- return definition.isTreeItemElement(el);
184
- };
185
- this.isSelectedElement = (el) => {
186
- return el.selected;
66
+ this.handleBlur = (_e) => {
67
+ this.setAttribute("tabindex", "-1");
187
68
  };
188
69
  }
189
- slottedTreeItemsChanged() {
70
+ expandedChanged() {
190
71
  if (this.$fastController.isConnected) {
191
- this.setItems();
72
+ this.$emit("expanded-change", this);
192
73
  }
193
74
  }
194
- connectedCallback() {
195
- super.connectedCallback();
196
- this.setAttribute("tabindex", "0");
197
- vividElement.DOM.queueUpdate(() => {
198
- this.setItems();
199
- });
200
- }
201
- /**
202
- * Handles click events bubbling up
203
- *
204
- * @internal
205
- */
206
- handleClick(e) {
207
- if (!e.defaultPrevented) {
208
- if (!(e.target instanceof Element) || !definition.isTreeItemElement(e.target)) {
209
- return true;
210
- }
211
- const item = e.target;
212
- if (!item.disabled) {
213
- item.selected = !item.selected;
214
- }
215
- return;
75
+ selectedChanged() {
76
+ if (this.$fastController.isConnected) {
77
+ this.$emit("selected-change", this);
216
78
  }
217
79
  }
218
- /**
219
- * Move focus to a tree item based on its offset from the provided item
220
- */
221
- focusNextNode(delta, item) {
222
- const visibleNodes = this.getVisibleNodes();
223
- if (visibleNodes) {
224
- const focusItem = visibleNodes[visibleNodes.indexOf(item) + delta];
225
- if (dom.isHTMLElement(focusItem)) {
226
- definition.TreeItem.focusItem(focusItem);
227
- }
80
+ itemsChanged() {
81
+ if (this.$fastController.isConnected) {
82
+ this.items.forEach((node) => {
83
+ if (isTreeItemElement(node)) {
84
+ node.nested = true;
85
+ }
86
+ });
228
87
  }
229
88
  }
230
89
  /**
231
- * 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
232
94
  */
233
- getValidFocusableItem() {
234
- const treeItems = this.getVisibleNodes();
235
- let focusIndex = treeItems.findIndex(this.isSelectedElement);
236
- if (focusIndex === -1) {
237
- focusIndex = treeItems.findIndex(this.isFocusableElement);
238
- }
239
- if (focusIndex !== -1) {
240
- return treeItems[focusIndex];
241
- }
242
- return null;
95
+ static focusItem(el) {
96
+ el.focusable = true;
97
+ el.focus();
243
98
  }
244
99
  /**
245
- * checks if there are any nested tree items
100
+ * Gets number of children
101
+ *
102
+ * @internal
246
103
  */
247
- checkForNestedItems() {
248
- return this.slottedTreeItems.some((node) => {
249
- return definition.isTreeItemElement(node) && node.querySelector("[role='treeitem']");
250
- });
251
- }
252
- getVisibleNodes() {
253
- 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;
254
111
  }
255
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");
256
130
  // @ts-expect-error Type is incorrectly non-optional
257
131
  __decorateClass([
258
- vividElement.attr({ attribute: "render-collapsed-nodes" })
259
- ], TreeView.prototype, "renderCollapsedNodes");
132
+ vividElement.observable
133
+ ], TreeItem.prototype, "childItems");
134
+ __decorateClass([
135
+ vividElement.observable
136
+ ], TreeItem.prototype, "items");
260
137
  // @ts-expect-error Type is incorrectly non-optional
261
138
  __decorateClass([
262
139
  vividElement.observable
263
- ], TreeView.prototype, "currentSelected");
140
+ ], TreeItem.prototype, "nested");
264
141
  // @ts-expect-error Type is incorrectly non-optional
265
142
  __decorateClass([
266
143
  vividElement.observable
267
- ], TreeView.prototype, "slottedTreeItems");
144
+ ], TreeItem.prototype, "renderCollapsedChildren");
145
+ applyMixins.applyMixins(TreeItem, affix.AffixIcon);
268
146
 
269
- const getClasses = (_) => classNames.classNames("control");
270
- const TreeViewTemplate = vividElement.html` <template
271
- role="tree"
272
- ${ref.ref("treeView")}
273
- @keydown="${(x, c) => x.handleKeyDown(c.event)}"
274
- @focusin="${(x, c) => x.handleFocus(c.event)}"
275
- @focusout="${(x, c) => x.handleBlur(c.event)}"
276
- @click="${(x, c) => x.handleClick(c.event)}"
277
- @selected-change="${(x, c) => x.handleSelectedChange(c.event)}"
278
- >
279
- <div class="${getClasses}">
280
- <slot ${slotted.slotted("slottedTreeItems")}></slot>
281
- </div>
282
- </template>`;
147
+ const getClasses = ({ disabled, selected }) => classNames.classNames(
148
+ "control",
149
+ ["disabled", disabled],
150
+ ["selected", Boolean(selected)]
151
+ );
152
+ const expandCollapseButton = (context) => {
153
+ const iconTag = context.tagFor(definition.Icon);
154
+ return vividElement.html`
155
+ <div aria-hidden="true"
156
+ class="expandCollapseButton"
157
+ @click="${(x, c) => x.handleExpandCollapseButtonClick(c.event)}"
158
+ ${ref.ref("expandCollapseButton")}
159
+ >
160
+ <${iconTag} class="expandCollapseIcon" name="${(x) => x.expanded ? "chevron-down-line" : "chevron-right-line"}"></${iconTag}>
161
+ </div>`;
162
+ };
163
+ const TreeItemTemplate = (context) => {
164
+ const affixIconTemplate = affix.affixIconTemplateFactory(context);
165
+ return vividElement.html` <template
166
+ role="treeitem"
167
+ slot="${(x) => x.isNestedItem() ? "item" : void 0}"
168
+ tabindex="-1"
169
+ aria-expanded="${(x) => x.childItems && x.childItems.length > 0 ? x.expanded : void 0}"
170
+ aria-selected="${(x) => x.selected}"
171
+ aria-disabled="${(x) => x.disabled}"
172
+ @focusin="${(x, c) => x.handleFocus(c.event)}"
173
+ @focusout="${(x, c) => x.handleBlur(c.event)}"
174
+ ${children.children({
175
+ property: "childItems",
176
+ filter: slotted.elements(context.tagFor(TreeItem))
177
+ })}
178
+ >
179
+ <div class="${getClasses}">
180
+ ${when.when(
181
+ (x) => x.childItems && x.childItems.length > 0,
182
+ expandCollapseButton(context)
183
+ )}
184
+ ${(x) => affixIconTemplate(x.icon, affix.IconWrapper.Slot)}
185
+ ${(x) => x.text}
186
+ </div>
187
+ ${when.when(
188
+ (x) => x.childItems && x.childItems.length > 0 && x.expanded,
189
+ vividElement.html` <div role="group" class="items">
190
+ <slot name="item" ${slotted.slotted("items")}></slot>
191
+ </div>`
192
+ )}
193
+ </template>`;
194
+ };
283
195
 
284
- const treeViewDefinition = vividElement.defineVividComponent(
285
- "tree-view",
286
- TreeView,
287
- TreeViewTemplate,
288
- [definition.treeItemDefinition],
196
+ const treeItemDefinition = vividElement.defineVividComponent(
197
+ "tree-item",
198
+ TreeItem,
199
+ TreeItemTemplate,
200
+ [definition.iconDefinition],
289
201
  {
290
202
  styles
291
203
  }
292
204
  );
293
- const registerTreeView = vividElement.createRegisterFunction(treeViewDefinition);
205
+ const registerTreeItem = vividElement.createRegisterFunction(treeItemDefinition);
294
206
 
295
- exports.TreeView = TreeView;
296
- exports.registerTreeView = registerTreeView;
297
- exports.treeViewDefinition = treeViewDefinition;
207
+ exports.TreeItem = TreeItem;
208
+ exports.isTreeItemElement = isTreeItemElement;
209
+ exports.registerTreeItem = registerTreeItem;
210
+ exports.treeItemDefinition = treeItemDefinition;