@vonage/vivid 4.17.0 → 4.18.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 (363) hide show
  1. package/custom-elements.json +3903 -3860
  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 +1 -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/select/select.d.ts +1 -5
  50. package/lib/selectable-box/selectable-box.d.ts +449 -2
  51. package/lib/slider/slider.d.ts +449 -3
  52. package/lib/split-button/split-button.d.ts +449 -3
  53. package/lib/switch/switch.d.ts +449 -2
  54. package/lib/tag-group/tag-group.d.ts +449 -2
  55. package/lib/text-anchor/text-anchor.d.ts +449 -1
  56. package/lib/text-area/text-area.d.ts +450 -3
  57. package/lib/text-field/text-field.d.ts +450 -7
  58. package/lib/time-picker/locale.d.ts +0 -2
  59. package/lib/time-picker/time-picker.d.ts +1053 -9
  60. package/lib/time-picker/time-picker.template.d.ts +2 -1
  61. package/locales/de-DE.cjs +29 -5
  62. package/locales/de-DE.js +29 -5
  63. package/locales/en-GB.cjs +29 -5
  64. package/locales/en-GB.js +29 -5
  65. package/locales/en-US.cjs +29 -5
  66. package/locales/en-US.js +29 -5
  67. package/locales/ja-JP.cjs +29 -5
  68. package/locales/ja-JP.js +29 -5
  69. package/locales/zh-CN.cjs +29 -5
  70. package/locales/zh-CN.js +29 -5
  71. package/menu/index.cjs +1 -1
  72. package/menu/index.js +1 -1
  73. package/menu-item/index.cjs +1 -1
  74. package/menu-item/index.js +1 -1
  75. package/nav/index.cjs +1 -1
  76. package/nav/index.js +1 -1
  77. package/nav-disclosure/index.cjs +1 -1
  78. package/nav-disclosure/index.js +1 -1
  79. package/nav-item/index.cjs +1 -1
  80. package/nav-item/index.js +1 -1
  81. package/note/index.cjs +1 -1
  82. package/note/index.js +1 -1
  83. package/number-field/index.cjs +1 -1
  84. package/number-field/index.js +1 -1
  85. package/option/index.cjs +1 -1
  86. package/option/index.js +1 -1
  87. package/package.json +1 -1
  88. package/pagination/index.cjs +1 -1
  89. package/pagination/index.js +1 -1
  90. package/popup/index.cjs +1 -1
  91. package/popup/index.js +1 -1
  92. package/progress/index.cjs +1 -1
  93. package/progress/index.js +1 -1
  94. package/progress-ring/index.cjs +1 -1
  95. package/progress-ring/index.js +1 -1
  96. package/radio/index.cjs +1 -1
  97. package/radio/index.js +1 -1
  98. package/radio-group/index.cjs +1 -1
  99. package/radio-group/index.js +1 -1
  100. package/range-slider/index.cjs +1 -1
  101. package/range-slider/index.js +1 -1
  102. package/rich-text-editor/index.cjs +1 -1
  103. package/rich-text-editor/index.js +1 -1
  104. package/searchable-select/index.cjs +1 -1
  105. package/searchable-select/index.js +1 -1
  106. package/select/index.cjs +1 -1
  107. package/select/index.js +1 -1
  108. package/selectable-box/index.cjs +1 -1
  109. package/selectable-box/index.js +1 -1
  110. package/shared/Reflector.cjs +71 -0
  111. package/shared/Reflector.js +69 -0
  112. package/shared/affix.cjs +1 -1
  113. package/shared/affix.js +1 -1
  114. package/shared/anchor.cjs +0 -10
  115. package/shared/anchor.js +0 -10
  116. package/shared/aria/delegates-aria.d.ts +454 -0
  117. package/shared/base-progress.js +1 -1
  118. package/shared/breadcrumb-item.cjs +2 -1
  119. package/shared/breadcrumb-item.js +2 -1
  120. package/shared/button.cjs +2 -13
  121. package/shared/button.js +2 -13
  122. package/shared/{presentationDate.cjs → calendar-picker.template.cjs} +730 -900
  123. package/shared/{presentationDate.js → calendar-picker.template.js} +672 -845
  124. package/shared/datetime/dateTimeStr.d.ts +6 -0
  125. package/shared/datetime/presentationDate.d.ts +4 -0
  126. package/shared/{date-picker/calendar → datetime}/presentationDateRange.d.ts +3 -3
  127. package/shared/datetime/presentationDateTime.d.ts +4 -0
  128. package/{lib/time-picker/time → shared/datetime}/time.d.ts +1 -0
  129. package/shared/definition.cjs +1 -1
  130. package/shared/definition.js +1 -1
  131. package/shared/definition11.cjs +8 -11
  132. package/shared/definition11.js +8 -11
  133. package/shared/definition14.cjs +2 -2
  134. package/shared/definition14.js +2 -2
  135. package/shared/definition15.cjs +3 -10
  136. package/shared/definition15.js +3 -10
  137. package/shared/definition16.cjs +29 -33
  138. package/shared/definition16.js +29 -33
  139. package/shared/definition17.cjs +1 -1
  140. package/shared/definition17.js +1 -1
  141. package/shared/definition18.cjs +56 -91
  142. package/shared/definition18.js +56 -91
  143. package/shared/definition19.cjs +68 -32
  144. package/shared/definition19.js +58 -22
  145. package/shared/definition20.cjs +253 -220
  146. package/shared/definition20.js +254 -220
  147. package/shared/definition21.cjs +200 -286
  148. package/shared/definition21.js +198 -284
  149. package/shared/definition22.cjs +302 -31
  150. package/shared/definition22.js +301 -30
  151. package/shared/definition23.cjs +37 -58
  152. package/shared/definition23.js +36 -57
  153. package/shared/definition24.cjs +50 -70
  154. package/shared/definition24.js +49 -69
  155. package/shared/definition25.cjs +75 -2475
  156. package/shared/definition25.js +74 -2475
  157. package/shared/definition26.cjs +2480 -50
  158. package/shared/definition26.js +2479 -48
  159. package/shared/definition27.cjs +53 -271
  160. package/shared/definition27.js +52 -269
  161. package/shared/definition28.cjs +271 -48
  162. package/shared/definition28.js +269 -47
  163. package/shared/definition29.cjs +37 -764
  164. package/shared/definition29.js +36 -758
  165. package/shared/definition3.cjs +2 -9
  166. package/shared/definition3.js +2 -9
  167. package/shared/definition30.cjs +739 -57
  168. package/shared/definition30.js +733 -56
  169. package/shared/definition31.cjs +93 -22
  170. package/shared/definition31.js +92 -21
  171. package/shared/definition32.cjs +28 -10
  172. package/shared/definition32.js +27 -9
  173. package/shared/definition33.cjs +10 -52
  174. package/shared/definition33.js +9 -51
  175. package/shared/definition34.cjs +30 -411
  176. package/shared/definition34.js +30 -412
  177. package/shared/definition35.cjs +422 -52
  178. package/shared/definition35.js +423 -53
  179. package/shared/definition36.cjs +53 -216
  180. package/shared/definition36.js +53 -215
  181. package/shared/definition37.cjs +201 -71
  182. package/shared/definition37.js +200 -70
  183. package/shared/definition38.cjs +53 -48
  184. package/shared/definition38.js +51 -46
  185. package/shared/definition39.cjs +57 -263
  186. package/shared/definition39.js +56 -262
  187. package/shared/definition4.cjs +2 -2
  188. package/shared/definition4.js +2 -2
  189. package/shared/definition40.cjs +220 -148
  190. package/shared/definition40.js +220 -148
  191. package/shared/definition41.cjs +143 -567
  192. package/shared/definition41.js +143 -568
  193. package/shared/definition42.cjs +596 -12573
  194. package/shared/definition42.js +596 -12573
  195. package/shared/definition43.cjs +13489 -1058
  196. package/shared/definition43.js +13489 -1059
  197. package/shared/definition44.cjs +936 -698
  198. package/shared/definition44.js +937 -698
  199. package/shared/definition45.cjs +850 -105
  200. package/shared/definition45.js +850 -104
  201. package/shared/definition46.cjs +110 -90
  202. package/shared/definition46.js +108 -88
  203. package/shared/definition47.cjs +88 -464
  204. package/shared/definition47.js +87 -463
  205. package/shared/definition48.cjs +457 -111
  206. package/shared/definition48.js +456 -110
  207. package/shared/definition49.cjs +103 -109
  208. package/shared/definition49.js +102 -108
  209. package/shared/definition5.cjs +3 -3
  210. package/shared/definition5.js +3 -3
  211. package/shared/definition50.cjs +136 -14
  212. package/shared/definition50.js +135 -13
  213. package/shared/definition51.cjs +16 -115
  214. package/shared/definition51.js +15 -114
  215. package/shared/definition52.cjs +79 -486
  216. package/shared/definition52.js +78 -485
  217. package/shared/definition53.cjs +503 -24
  218. package/shared/definition53.js +502 -23
  219. package/shared/definition54.cjs +23 -137
  220. package/shared/definition54.js +22 -136
  221. package/shared/definition55.cjs +96 -241
  222. package/shared/definition55.js +95 -241
  223. package/shared/definition56.cjs +261 -61
  224. package/shared/definition56.js +260 -60
  225. package/shared/definition57.cjs +419 -788
  226. package/shared/definition57.js +420 -789
  227. package/shared/definition58.cjs +27 -144
  228. package/shared/definition58.js +27 -143
  229. package/shared/definition59.cjs +83 -54
  230. package/shared/definition59.js +82 -53
  231. package/shared/definition6.cjs +1 -1
  232. package/shared/definition6.js +1 -1
  233. package/shared/definition60.cjs +80 -165
  234. package/shared/definition60.js +79 -163
  235. package/shared/definition61.cjs +143 -230
  236. package/shared/definition61.js +141 -229
  237. package/shared/definition62.cjs +233 -69344
  238. package/shared/definition62.js +232 -69343
  239. package/shared/definition63.cjs +69381 -28
  240. package/shared/definition63.js +69379 -26
  241. package/shared/definition64.cjs +28 -2168
  242. package/shared/definition64.js +27 -2166
  243. package/shared/definition65.cjs +2195 -0
  244. package/shared/definition65.js +2190 -0
  245. package/shared/definition7.cjs +1 -1
  246. package/shared/definition7.js +1 -1
  247. package/shared/definition8.cjs +3 -9
  248. package/shared/definition8.js +3 -9
  249. package/shared/definition9.cjs +1 -1
  250. package/shared/definition9.js +1 -1
  251. package/shared/delegates-aria.cjs +69 -0
  252. package/shared/delegates-aria.js +67 -0
  253. package/shared/form-associated.js +1 -1
  254. package/shared/form-elements.cjs +1 -1
  255. package/shared/form-elements.js +1 -1
  256. package/shared/foundation/anchor/anchor.d.ts +0 -8
  257. package/shared/foundation/button/button.d.ts +449 -7
  258. package/shared/foundation/listbox/listbox.d.ts +0 -9
  259. package/shared/listbox.cjs +4 -30
  260. package/shared/listbox.js +4 -30
  261. package/shared/localization/Locale.d.ts +6 -2
  262. package/shared/option.cjs +1 -38
  263. package/shared/option.js +1 -38
  264. package/shared/picker-field/locale.d.ts +4 -0
  265. package/shared/picker-field/mixins/calendar-picker.d.ts +558 -0
  266. package/shared/{date-picker/locale.d.ts → picker-field/mixins/calendar-picker.locale.d.ts} +1 -3
  267. package/shared/picker-field/mixins/calendar-picker.template.d.ts +555 -0
  268. package/shared/picker-field/mixins/calendar-segments/calendarGrid.d.ts +17 -0
  269. package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/monthPickerGrid.d.ts +3 -3
  270. package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/columns.d.ts +1 -1
  271. package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/inline-time-picker.d.ts +2 -2
  272. package/{lib/time-picker/time/picker.d.ts → shared/picker-field/mixins/inline-time-picker/picker-option.d.ts} +1 -1
  273. package/shared/picker-field/mixins/min-max-calendar-picker.d.ts +1110 -0
  274. package/shared/picker-field/mixins/single-date-picker.d.ts +1626 -0
  275. package/shared/picker-field/mixins/single-value-picker.d.ts +518 -0
  276. package/shared/picker-field/mixins/time-selection-picker.d.ts +1053 -0
  277. package/shared/picker-field/mixins/time-selection-picker.template.d.ts +1050 -0
  278. package/shared/picker-field/picker-field.d.ts +11 -0
  279. package/shared/picker-field/picker-field.form-associated.d.ts +11 -0
  280. package/shared/picker-field/picker-field.template.d.ts +7 -0
  281. package/shared/picker-field.template.cjs +315 -0
  282. package/shared/picker-field.template.js +310 -0
  283. package/shared/single-date-picker.cjs +46 -0
  284. package/shared/single-date-picker.js +44 -0
  285. package/shared/single-value-picker.cjs +77 -0
  286. package/shared/single-value-picker.js +75 -0
  287. package/shared/slider.template.cjs +3 -3
  288. package/shared/slider.template.js +3 -3
  289. package/shared/text-anchor.cjs +2 -1
  290. package/shared/text-anchor.js +2 -1
  291. package/shared/text-anchor.template.cjs +3 -5
  292. package/shared/text-anchor.template.js +3 -5
  293. package/shared/text-field.cjs +2 -555
  294. package/shared/text-field.js +2 -554
  295. package/shared/time-selection-picker.template.cjs +776 -0
  296. package/shared/time-selection-picker.template.js +767 -0
  297. package/shared/vivid-element.cjs +1 -1
  298. package/shared/vivid-element.js +1 -1
  299. package/side-drawer/index.cjs +1 -1
  300. package/side-drawer/index.js +1 -1
  301. package/slider/index.cjs +1 -1
  302. package/slider/index.js +1 -1
  303. package/split-button/index.cjs +1 -1
  304. package/split-button/index.js +1 -1
  305. package/styles/core/all.css +1 -1
  306. package/styles/core/theme.css +1 -1
  307. package/styles/core/typography.css +1 -1
  308. package/styles/tokens/theme-dark.css +4 -4
  309. package/styles/tokens/theme-light.css +4 -4
  310. package/styles/tokens/vivid-2-compat.css +1 -1
  311. package/switch/index.cjs +1 -1
  312. package/switch/index.js +1 -1
  313. package/tab/index.cjs +1 -1
  314. package/tab/index.js +1 -1
  315. package/tab-panel/index.cjs +1 -1
  316. package/tab-panel/index.js +1 -1
  317. package/tabs/index.cjs +1 -1
  318. package/tabs/index.js +1 -1
  319. package/tag/index.cjs +1 -1
  320. package/tag/index.js +1 -1
  321. package/tag-group/index.cjs +1 -1
  322. package/tag-group/index.js +1 -1
  323. package/text-anchor/index.cjs +1 -1
  324. package/text-anchor/index.js +1 -1
  325. package/text-area/index.cjs +1 -1
  326. package/text-area/index.js +1 -1
  327. package/text-field/index.cjs +1 -1
  328. package/text-field/index.js +1 -1
  329. package/time-picker/index.cjs +1 -1
  330. package/time-picker/index.js +1 -1
  331. package/toggletip/index.cjs +1 -1
  332. package/toggletip/index.js +1 -1
  333. package/tooltip/index.cjs +1 -1
  334. package/tooltip/index.js +1 -1
  335. package/tree-item/index.cjs +1 -1
  336. package/tree-item/index.js +1 -1
  337. package/tree-view/index.cjs +1 -1
  338. package/tree-view/index.js +1 -1
  339. package/video-player/index.cjs +1 -1
  340. package/video-player/index.js +1 -1
  341. package/vivid.api.json +105 -1152
  342. package/lib/time-picker/time-picker.form-associated.d.ts +0 -11
  343. package/shared/aria-global.cjs +0 -93
  344. package/shared/aria-global.js +0 -91
  345. package/shared/date-picker/calendar/calendarGrid.d.ts +0 -17
  346. package/shared/date-picker/calendar/presentationDate.d.ts +0 -4
  347. package/shared/date-picker/date-picker-base.d.ts +0 -21
  348. package/shared/date-picker/date-picker-base.form-associated.d.ts +0 -11
  349. package/shared/date-picker/date-picker-base.template.d.ts +0 -3
  350. package/shared/foundation/patterns/aria-global.d.ts +0 -21
  351. package/shared/foundation/patterns/index.d.ts +0 -1
  352. package/shared/text-field2.cjs +0 -5
  353. package/shared/text-field2.js +0 -3
  354. package/shared/trapped-focus.cjs +0 -35
  355. package/shared/trapped-focus.js +0 -33
  356. /package/shared/{date-picker/calendar → datetime}/dateRange.d.ts +0 -0
  357. /package/shared/{date-picker/calendar → datetime}/dateStr.d.ts +0 -0
  358. /package/shared/{date-picker/calendar → datetime}/month.d.ts +0 -0
  359. /package/{lib/time-picker/time → shared/datetime}/presentationTime.d.ts +0 -0
  360. /package/shared/{date-picker/calendar → datetime}/year.d.ts +0 -0
  361. /package/shared/{date-picker/calendar → picker-field/mixins/calendar-segments}/segment.d.ts +0 -0
  362. /package/{lib/time-picker → shared/picker-field/mixins}/inline-time-picker/definition.d.ts +0 -0
  363. /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;