@vonage/vivid 5.24.0 → 5.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 (331) hide show
  1. package/README.md +1 -1
  2. package/avatar/index.cjs +10 -10
  3. package/avatar/index.js +4 -3
  4. package/breadcrumb-item/index.cjs +9 -5
  5. package/breadcrumb-item/index.js +11 -6
  6. package/bundled/affix.cjs +1 -1
  7. package/bundled/affix.js +1 -1
  8. package/bundled/definition10.cjs +2 -1
  9. package/bundled/definition10.js +3 -2
  10. package/bundled/definition11.cjs +4 -4
  11. package/bundled/definition11.js +4 -3
  12. package/bundled/definition12.cjs +1 -1
  13. package/bundled/definition12.js +1 -0
  14. package/bundled/definition15.cjs +5 -5
  15. package/bundled/definition15.js +4 -3
  16. package/bundled/definition17.cjs +7 -7
  17. package/bundled/definition17.js +22 -109
  18. package/bundled/definition18.cjs +3 -3
  19. package/bundled/definition18.js +9 -31
  20. package/bundled/definition19.cjs +19 -19
  21. package/bundled/definition19.js +3 -2
  22. package/bundled/definition21.cjs +8 -8
  23. package/bundled/definition21.js +5 -4
  24. package/bundled/definition22.cjs +2 -2
  25. package/bundled/definition22.js +2 -2
  26. package/bundled/definition24.cjs +4 -4
  27. package/bundled/definition24.js +4 -3
  28. package/bundled/definition25.cjs +3 -3
  29. package/bundled/definition25.js +32 -28
  30. package/bundled/definition3.cjs +5 -5
  31. package/bundled/definition3.js +10 -40
  32. package/bundled/definition4.cjs +6 -6
  33. package/bundled/definition4.js +4 -3
  34. package/bundled/definition6.cjs +11 -11
  35. package/bundled/definition6.js +4 -3
  36. package/bundled/definition9.cjs +12 -6
  37. package/bundled/definition9.js +66 -43
  38. package/bundled/extractOptions.cjs +1 -1
  39. package/bundled/extractOptions.js +2 -2
  40. package/bundled/icon.cjs +1 -0
  41. package/bundled/icon.js +34 -0
  42. package/bundled/listbox.cjs +1 -1
  43. package/bundled/listbox.js +5 -2
  44. package/bundled/mixins.cjs +8 -8
  45. package/bundled/mixins.js +4 -3
  46. package/bundled/optgroup.cjs +1 -0
  47. package/bundled/optgroup.js +27 -0
  48. package/bundled/option.cjs +1 -0
  49. package/bundled/option.js +93 -0
  50. package/bundled/vivid-element.cjs +1 -1
  51. package/bundled/vivid-element.js +1 -1
  52. package/card/index.cjs +22 -22
  53. package/card/index.js +4 -3
  54. package/color-picker/index.cjs +18 -18
  55. package/color-picker/index.js +4 -3
  56. package/combobox/index.cjs +7 -7
  57. package/combobox/index.js +4 -2
  58. package/custom-elements.json +4159 -3847
  59. package/data-grid/index.cjs +24 -24
  60. package/data-grid/index.js +4 -3
  61. package/dial-pad/index.cjs +21 -21
  62. package/dial-pad/index.js +4 -3
  63. package/dialog/index.cjs +14 -14
  64. package/dialog/index.js +4 -3
  65. package/empty-state/index.cjs +3 -3
  66. package/empty-state/index.js +4 -3
  67. package/file-picker/index.cjs +7 -7
  68. package/file-picker/index.js +4 -3
  69. package/icon/definition.cjs +2 -1
  70. package/icon/definition.js +2 -1
  71. package/index.cjs +148 -141
  72. package/index.js +41 -37
  73. package/lib/accordion-item/accordion-item.d.ts +1 -0
  74. package/lib/combobox/combobox.d.ts +1 -1
  75. package/lib/components.d.ts +1 -0
  76. package/lib/dial-pad/dial-pad.d.ts +0 -1
  77. package/lib/listbox/definition.d.ts +3 -0
  78. package/lib/listbox/index.d.ts +1 -0
  79. package/lib/listbox/listbox.d.ts +1302 -0
  80. package/lib/listbox/listbox.template.d.ts +3 -0
  81. package/lib/listbox/variations.browser-spec.d.ts +1 -0
  82. package/lib/menu/menu.d.ts +0 -1
  83. package/lib/number-field/number-field.d.ts +0 -1
  84. package/lib/rich-text-editor/rte/features/base.d.ts +1 -0
  85. package/lib/rich-text-editor/rte/utils/default-textblock.d.ts +2 -2
  86. package/lib/tag-name-map.d.ts +2 -1
  87. package/lib/text-field/text-field.d.ts +1 -0
  88. package/lib/toggletip/toggletip.d.ts +1 -0
  89. package/lib/tooltip/tooltip.d.ts +1 -0
  90. package/listbox/definition.cjs +5 -0
  91. package/listbox/definition.js +2 -0
  92. package/listbox/index.cjs +11 -0
  93. package/listbox/index.js +540 -0
  94. package/nav/definition.cjs +1 -1
  95. package/nav/definition.js +1 -1
  96. package/nav-disclosure/definition.cjs +1 -1
  97. package/nav-disclosure/definition.js +1 -1
  98. package/nav-disclosure/index.cjs +4 -4
  99. package/nav-disclosure/index.js +4 -3
  100. package/nav-item/definition.cjs +1 -1
  101. package/nav-item/definition.js +1 -1
  102. package/note/definition.cjs +1 -1
  103. package/note/definition.js +1 -1
  104. package/number-field/definition.cjs +1 -1
  105. package/number-field/definition.js +1 -1
  106. package/optgroup/definition.cjs +2 -1
  107. package/optgroup/definition.js +2 -1
  108. package/option/definition.cjs +2 -1
  109. package/option/definition.js +2 -1
  110. package/package.json +8 -7
  111. package/pagination/definition.cjs +1 -1
  112. package/pagination/definition.js +1 -1
  113. package/platform-switch/definition.cjs +1 -1
  114. package/platform-switch/definition.js +1 -1
  115. package/popover/definition.cjs +1 -1
  116. package/popover/definition.js +1 -1
  117. package/popover/index.cjs +5 -5
  118. package/popover/index.js +4 -3
  119. package/progress/definition.cjs +1 -1
  120. package/progress/definition.js +1 -1
  121. package/radio/definition.cjs +1 -1
  122. package/radio/definition.js +1 -1
  123. package/radio-group/definition.cjs +1 -1
  124. package/radio-group/definition.js +1 -1
  125. package/range-slider/definition.cjs +1 -1
  126. package/range-slider/definition.js +1 -1
  127. package/rich-text-editor/definition.cjs +1 -1
  128. package/rich-text-editor/definition.js +1 -1
  129. package/rich-text-editor/index.cjs +13 -13
  130. package/rich-text-editor/index.js +22 -19
  131. package/rich-text-view/definition.cjs +1 -1
  132. package/rich-text-view/definition.js +1 -1
  133. package/searchable-select/definition.cjs +1 -1
  134. package/searchable-select/definition.js +1 -1
  135. package/searchable-select/index.cjs +23 -23
  136. package/searchable-select/index.js +10 -7
  137. package/select/definition.cjs +1 -1
  138. package/select/definition.js +1 -1
  139. package/selectable-box/definition.cjs +1 -1
  140. package/selectable-box/definition.js +1 -1
  141. package/shared/listbox/commands.d.ts +17 -0
  142. package/shared/listbox/move.d.ts +6 -0
  143. package/shared/listbox/options.d.ts +12 -0
  144. package/shared/listbox/selection.d.ts +28 -0
  145. package/shared/listbox/state.d.ts +26 -0
  146. package/shared/listbox/typeahead.d.ts +8 -0
  147. package/shared/listbox/with-options-filter.d.ts +440 -0
  148. package/shared/listbox/with-options.d.ts +862 -0
  149. package/side-drawer/definition.cjs +1 -1
  150. package/side-drawer/definition.js +1 -1
  151. package/simple-color-picker/definition.cjs +1 -1
  152. package/simple-color-picker/definition.js +1 -1
  153. package/simple-color-picker/index.cjs +6 -6
  154. package/simple-color-picker/index.js +4 -3
  155. package/split-button/definition.cjs +1 -1
  156. package/split-button/definition.js +1 -1
  157. package/status/definition.cjs +1 -1
  158. package/status/definition.js +1 -1
  159. package/switch/definition.cjs +1 -1
  160. package/switch/definition.js +1 -1
  161. package/tab/definition.cjs +1 -1
  162. package/tab/definition.js +1 -1
  163. package/tab-panel/definition.cjs +1 -1
  164. package/tab-panel/definition.js +1 -1
  165. package/table/definition.cjs +1 -1
  166. package/table/definition.js +1 -1
  167. package/table/index.cjs +13 -13
  168. package/table/index.js +4 -3
  169. package/tabs/definition.cjs +1 -1
  170. package/tabs/definition.js +1 -1
  171. package/tag/definition.cjs +1 -1
  172. package/tag/definition.js +1 -1
  173. package/tag/index.cjs +11 -11
  174. package/tag/index.js +4 -3
  175. package/tag-group/definition.cjs +1 -1
  176. package/tag-group/definition.js +1 -1
  177. package/text-area/definition.cjs +1 -1
  178. package/text-area/definition.js +1 -1
  179. package/time-picker/definition.cjs +1 -1
  180. package/time-picker/definition.js +1 -1
  181. package/tree-item/definition.cjs +1 -1
  182. package/tree-item/definition.js +1 -1
  183. package/tree-view/definition.cjs +1 -1
  184. package/tree-view/definition.js +1 -1
  185. package/unbundled/affix.cjs +2 -2
  186. package/unbundled/affix.js +1 -1
  187. package/unbundled/base-progress.cjs +1 -1
  188. package/unbundled/base-progress.js +1 -1
  189. package/unbundled/button.cjs +2 -2
  190. package/unbundled/button.js +2 -2
  191. package/unbundled/definition.cjs +2 -65
  192. package/unbundled/definition.js +4 -61
  193. package/unbundled/definition11.cjs +4 -3
  194. package/unbundled/definition11.js +3 -2
  195. package/unbundled/definition12.cjs +3 -2
  196. package/unbundled/definition12.js +3 -2
  197. package/unbundled/definition14.cjs +2 -1
  198. package/unbundled/definition14.js +2 -1
  199. package/unbundled/definition17.cjs +9 -4
  200. package/unbundled/definition17.js +9 -4
  201. package/unbundled/definition2.cjs +7 -2
  202. package/unbundled/definition2.js +8 -3
  203. package/unbundled/definition21.cjs +2 -1
  204. package/unbundled/definition21.js +2 -1
  205. package/unbundled/definition23.cjs +2 -1
  206. package/unbundled/definition23.js +2 -1
  207. package/unbundled/definition24.cjs +6 -4
  208. package/unbundled/definition24.js +6 -4
  209. package/unbundled/definition25.cjs +2 -1
  210. package/unbundled/definition25.js +2 -1
  211. package/unbundled/definition26.cjs +7 -4
  212. package/unbundled/definition26.js +7 -4
  213. package/unbundled/definition27.cjs +39 -5
  214. package/unbundled/definition27.js +40 -6
  215. package/unbundled/definition28.cjs +4 -3
  216. package/unbundled/definition28.js +4 -3
  217. package/unbundled/definition29.cjs +5 -168
  218. package/unbundled/definition29.js +11 -162
  219. package/unbundled/definition30.cjs +2 -63
  220. package/unbundled/definition30.js +5 -54
  221. package/unbundled/definition31.cjs +5 -3
  222. package/unbundled/definition31.js +5 -3
  223. package/unbundled/definition32.cjs +2 -1
  224. package/unbundled/definition32.js +2 -1
  225. package/unbundled/definition35.cjs +2 -1
  226. package/unbundled/definition35.js +2 -1
  227. package/unbundled/definition37.cjs +1 -1
  228. package/unbundled/definition37.js +1 -1
  229. package/unbundled/definition39.cjs +1 -1
  230. package/unbundled/definition39.js +1 -1
  231. package/unbundled/definition40.cjs +4 -2
  232. package/unbundled/definition40.js +4 -2
  233. package/unbundled/definition41.cjs +11 -6
  234. package/unbundled/definition41.js +11 -6
  235. package/unbundled/definition42.cjs +5 -4
  236. package/unbundled/definition42.js +5 -4
  237. package/unbundled/definition44.cjs +3 -2
  238. package/unbundled/definition44.js +3 -2
  239. package/unbundled/definition45.cjs +2 -2
  240. package/unbundled/definition45.js +2 -2
  241. package/unbundled/definition49.cjs +583 -79
  242. package/unbundled/definition49.js +579 -76
  243. package/unbundled/definition50.cjs +71 -33
  244. package/unbundled/definition50.js +67 -29
  245. package/unbundled/definition51.cjs +54 -23
  246. package/unbundled/definition51.js +52 -18
  247. package/unbundled/definition52.cjs +23 -39
  248. package/unbundled/definition52.js +17 -36
  249. package/unbundled/definition53.cjs +29 -314
  250. package/unbundled/definition53.js +27 -312
  251. package/unbundled/definition54.cjs +302 -195
  252. package/unbundled/definition54.js +298 -191
  253. package/unbundled/definition55.cjs +210 -40
  254. package/unbundled/definition55.js +206 -36
  255. package/unbundled/definition56.cjs +42 -266
  256. package/unbundled/definition56.js +38 -262
  257. package/unbundled/definition57.cjs +270 -50
  258. package/unbundled/definition57.js +267 -46
  259. package/unbundled/definition58.cjs +48 -146
  260. package/unbundled/definition58.js +47 -143
  261. package/unbundled/definition59.cjs +127 -225
  262. package/unbundled/definition59.js +122 -223
  263. package/unbundled/definition6.cjs +2 -1
  264. package/unbundled/definition6.js +2 -1
  265. package/unbundled/definition60.cjs +199 -418
  266. package/unbundled/definition60.js +196 -415
  267. package/unbundled/definition61.cjs +442 -3738
  268. package/unbundled/definition61.js +432 -3565
  269. package/unbundled/definition62.cjs +3717 -730
  270. package/unbundled/definition62.js +3544 -720
  271. package/unbundled/definition63.cjs +770 -97
  272. package/unbundled/definition63.js +767 -94
  273. package/unbundled/definition64.cjs +100 -999
  274. package/unbundled/definition64.js +98 -994
  275. package/unbundled/definition65.cjs +991 -93
  276. package/unbundled/definition65.js +985 -90
  277. package/unbundled/definition66.cjs +109 -73
  278. package/unbundled/definition66.js +105 -63
  279. package/unbundled/definition67.cjs +69 -155
  280. package/unbundled/definition67.js +60 -152
  281. package/unbundled/definition68.cjs +155 -119
  282. package/unbundled/definition68.js +151 -115
  283. package/unbundled/definition69.cjs +124 -49
  284. package/unbundled/definition69.js +120 -45
  285. package/unbundled/definition70.cjs +51 -85
  286. package/unbundled/definition70.js +50 -81
  287. package/unbundled/definition71.cjs +91 -19
  288. package/unbundled/definition71.js +86 -14
  289. package/unbundled/definition72.cjs +20 -87
  290. package/unbundled/definition72.js +14 -84
  291. package/unbundled/definition73.cjs +77 -294
  292. package/unbundled/definition73.js +72 -217
  293. package/unbundled/definition74.cjs +289 -311
  294. package/unbundled/definition74.js +219 -306
  295. package/unbundled/definition75.cjs +326 -26
  296. package/unbundled/definition75.js +317 -23
  297. package/unbundled/definition76.cjs +27 -122
  298. package/unbundled/definition76.js +22 -118
  299. package/unbundled/definition77.cjs +105 -232
  300. package/unbundled/definition77.js +101 -228
  301. package/unbundled/definition78.cjs +259 -26
  302. package/unbundled/definition78.js +249 -23
  303. package/unbundled/definition79.cjs +29 -148
  304. package/unbundled/definition79.js +27 -133
  305. package/unbundled/definition80.cjs +118 -173
  306. package/unbundled/definition80.js +109 -169
  307. package/unbundled/definition81.cjs +181 -477
  308. package/unbundled/definition81.js +176 -471
  309. package/unbundled/definition82.cjs +517 -0
  310. package/unbundled/definition82.js +497 -0
  311. package/unbundled/extractOptions.cjs +5 -5
  312. package/unbundled/extractOptions.js +2 -2
  313. package/unbundled/icon.cjs +67 -0
  314. package/unbundled/icon.js +61 -0
  315. package/unbundled/linkable.cjs +1 -1
  316. package/unbundled/linkable.js +1 -1
  317. package/unbundled/listbox.cjs +8 -3
  318. package/unbundled/listbox.js +7 -2
  319. package/unbundled/mixins.cjs +2 -1
  320. package/unbundled/mixins.js +2 -1
  321. package/unbundled/optgroup.cjs +66 -0
  322. package/unbundled/optgroup.js +54 -0
  323. package/unbundled/option.cjs +176 -0
  324. package/unbundled/option.js +164 -0
  325. package/unbundled/time-selection-picker.template.cjs +1 -1
  326. package/unbundled/time-selection-picker.template.js +1 -1
  327. package/unbundled/vivid-element.cjs +1 -1
  328. package/unbundled/vivid-element.js +1 -1
  329. package/video-player/definition.cjs +1 -1
  330. package/video-player/definition.js +1 -1
  331. package/vivid.api.json +336 -193
@@ -1,221 +1,166 @@
1
1
  require("./chunk.cjs");
2
2
  const require_vivid_element = require("./vivid-element.cjs");
3
+ const require_definition = require("./definition.cjs");
3
4
  const require_decorate = require("./decorate.cjs");
5
+ const require_icon = require("./icon.cjs");
6
+ const require_affix = require("./affix.cjs");
4
7
  const require_host_semantics = require("./host-semantics.cjs");
5
- const require_definition = require("./definition79.cjs");
6
8
  let _microsoft_fast_element = require("@microsoft/fast-element");
7
9
  let _microsoft_fast_web_utilities = require("@microsoft/fast-web-utilities");
8
- //#region src/lib/tree-view/tree-view.scss?inline
9
- var tree_view_default = ".control{flex-direction:column;gap:4px;display:flex;position:relative}";
10
+ //#region src/lib/tree-item/tree-item.scss?inline
11
+ var tree_item_default = ":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:disabled,.control.disabled{--_appearance-color-text:var(--vvd-color-neutral-300);--_appearance-color-fill:transparent;--_appearance-color-outline:transparent}@media (hover:hover){.control: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.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:active:where(:not(.disabled,:disabled)),.control.active:where(:not(.disabled,:disabled)){--_appearance-color-text:var(--_connotation-color-firm);--_appearance-color-fill:var(--_connotation-color-soft);--_appearance-color-outline:transparent}.control.selected:where(:not(.disabled,:disabled)){--_appearance-color-text:var(--_connotation-color-primary-text);--_appearance-color-fill:var(--_connotation-color-primary);--_appearance-color-outline:transparent}@media (hover:hover){.control.selected: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.selected.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));box-sizing:border-box;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);hyphens:auto;inline-size:100%;min-block-size:calc(1px * (40 + 4 * clamp(-1, var(--vvd-size-density,0), 2)));vertical-align:middle;word-break:break-word;user-select:none;border-radius:8px;align-items:center;gap:12px;padding-inline:16px;text-decoration:none;display:inline-flex;position:relative}.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(--focus-stroke-color,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{border-radius:8px;align-items:center;font-size:20px;display:flex}.expandCollapseButton .expandCollapseIcon{margin:4px}@media (hover:hover){.expandCollapseButton:hover{background-color:var(--vvd-color-neutral-100)}.selected .expandCollapseButton:hover{background-color:var(--vvd-color-neutral-700)}}.items{flex-direction:column;gap:4px;margin-block-start:4px;padding-inline-start:48px;display:flex}slot[name=icon]{font-size:20px;line-height:1}.control:not(.disabled,.selected) slot[name=icon]{color:var(--vvd-color-neutral-600)}";
10
12
  //#endregion
11
- //#region src/lib/tree-view/tree-view.ts
12
- function getDisplayedNodes(rootNode, selector) {
13
- if ((0, _microsoft_fast_web_utilities.isHTMLElement)(rootNode)) return Array.from(rootNode.querySelectorAll(selector)).filter((node) => {
14
- if (node.parentElement instanceof require_definition.TreeItem) {
15
- if (node.parentElement.expanded) return true;
16
- } else return true;
17
- return false;
18
- });
19
- return [];
13
+ //#region src/lib/tree-item/tree-item.ts
14
+ function isTreeItemElement(el) {
15
+ return (0, _microsoft_fast_web_utilities.isHTMLElement)(el) && (el.getAttribute("role") === "treeitem" || el instanceof TreeItem);
20
16
  }
21
17
  /**
22
18
  * @public
23
- * @component tree-view
24
- * @slot - Default slot.
19
+ * @component tree-item
20
+ * @slot item - To specify a child tree item.
21
+ * @slot icon - The preferred way to add an icon to the component.
22
+ * @event {CustomEvent<HTMLElement>} expanded-change - Fires a custom 'expanded-change' event when the expanded state changes
23
+ * @event {CustomEvent<HTMLElement>} selected-change - Fires a custom 'selected-change' event when the selected state changes
25
24
  */
26
- var TreeView = class extends require_host_semantics.HostSemantics(require_vivid_element.VividElement) {
25
+ var TreeItem = class extends require_host_semantics.HostSemantics(require_affix.AffixIcon(require_vivid_element.VividElement)) {
27
26
  constructor(..._args) {
28
27
  super(..._args);
29
- this.currentFocused = null;
30
- this.handleFocus = (e) => {
31
- if (this.slottedTreeItems.length > 0) {
32
- if (e.target === this) {
33
- /* v8 ignore else -- @preserve */
34
- if (this.currentFocused !== null) require_definition.TreeItem.focusItem(this.currentFocused);
35
- return;
36
- }
37
- /* v8 ignore else -- @preserve */
38
- if (this.contains(e.target)) {
39
- this.setAttribute("tabindex", "-1");
40
- this.currentFocused = e.target;
41
- }
42
- }
28
+ this.expanded = false;
29
+ this.selected = false;
30
+ this.disabled = false;
31
+ this.focusable = false;
32
+ this.isNestedItem = () => {
33
+ return isTreeItemElement(this.parentElement);
43
34
  };
44
- this.handleBlur = (e) => {
45
- if (e.target instanceof HTMLElement && (e.relatedTarget === null || !this.contains(e.relatedTarget))) this.setAttribute("tabindex", "0");
35
+ this.handleExpandCollapseButtonClick = (e) => {
36
+ if (!this.disabled && !e.defaultPrevented) this.expanded = !this.expanded;
46
37
  };
47
- this.handleKeyDown = (e) => {
48
- if (this.slottedTreeItems.length < 1) return true;
49
- /* v8 ignore else -- @preserve */
50
- if (!e.defaultPrevented) {
51
- const treeItems = this.getVisibleNodes();
52
- switch (e.key) {
53
- case _microsoft_fast_web_utilities.keyHome:
54
- /* v8 ignore else -- @preserve */
55
- if (treeItems.length) require_definition.TreeItem.focusItem(treeItems[0]);
56
- return;
57
- case _microsoft_fast_web_utilities.keyEnd:
58
- /* v8 ignore else -- @preserve */
59
- if (treeItems.length) require_definition.TreeItem.focusItem(treeItems[treeItems.length - 1]);
60
- return;
61
- case _microsoft_fast_web_utilities.keyArrowLeft:
62
- /* v8 ignore else -- @preserve */
63
- if (e.target && this.isFocusableElement(e.target)) {
64
- const item = e.target;
65
- /* v8 ignore else -- @preserve */
66
- if (item instanceof require_definition.TreeItem && item.childItemLength() > 0 && item.expanded) item.expanded = false;
67
- else if (item instanceof require_definition.TreeItem && item.parentElement instanceof require_definition.TreeItem) require_definition.TreeItem.focusItem(item.parentElement);
68
- }
69
- return false;
70
- case _microsoft_fast_web_utilities.keyArrowRight:
71
- /* v8 ignore else -- @preserve */
72
- if (e.target && this.isFocusableElement(e.target)) {
73
- const item = e.target;
74
- /* v8 ignore else -- @preserve */
75
- if (item instanceof require_definition.TreeItem && item.childItemLength() > 0 && !item.expanded) item.expanded = true;
76
- else if (item instanceof require_definition.TreeItem && item.childItemLength() > 0) this.focusNextNode(1, e.target);
77
- }
78
- return;
79
- case _microsoft_fast_web_utilities.keyArrowDown:
80
- /* v8 ignore else -- @preserve */
81
- if (e.target && this.isFocusableElement(e.target)) this.focusNextNode(1, e.target);
82
- return;
83
- case _microsoft_fast_web_utilities.keyArrowUp:
84
- /* v8 ignore else -- @preserve */
85
- if (e.target && this.isFocusableElement(e.target)) this.focusNextNode(-1, e.target);
86
- return;
87
- case _microsoft_fast_web_utilities.keyEnter:
88
- this.handleClick(e);
89
- return;
90
- }
91
- }
92
- return true;
93
- };
94
- this.handleSelectedChange = (e) => {
95
- /* v8 ignore else -- @preserve */
96
- if (!e.defaultPrevented) {
97
- if (!(e.target instanceof Element) || !require_definition.isTreeItemElement(e.target)) return true;
98
- const item = e.target;
99
- /* v8 ignore else -- @preserve */
100
- if (item.selected) {
101
- if (this.currentSelected && this.currentSelected !== item) this.currentSelected.selected = false;
102
- this.currentSelected = item;
103
- } else if (!item.selected && this.currentSelected === item) this.currentSelected = null;
104
- }
38
+ this.handleFocus = (_e) => {
39
+ this.setAttribute("tabindex", "0");
105
40
  };
106
- this.setItems = () => {
107
- const selectedItem = this.treeView.querySelector("[selected]");
108
- this.currentSelected = selectedItem;
109
- if (this.currentFocused === null || !this.contains(this.currentFocused)) this.currentFocused = this.getValidFocusableItem();
110
- this.nested = this.checkForNestedItems();
111
- this.getVisibleNodes().forEach((node) => {
112
- /* v8 ignore else -- @preserve */
113
- if (require_definition.isTreeItemElement(node)) node.nested = this.nested;
114
- });
115
- };
116
- this.isFocusableElement = (el) => {
117
- return require_definition.isTreeItemElement(el);
118
- };
119
- this.isSelectedElement = (el) => {
120
- return el.selected;
41
+ this.handleBlur = (_e) => {
42
+ this.setAttribute("tabindex", "-1");
121
43
  };
122
44
  }
123
45
  /** @internal */
124
- slottedTreeItemsChanged() {
125
- if (this.$fastController.isConnected) this.setItems();
46
+ expandedChanged() {
47
+ if (this.$fastController.isConnected) this.$emit("expanded-change", this);
126
48
  }
127
- connectedCallback() {
128
- super.connectedCallback();
129
- this.setAttribute("tabindex", "0");
130
- _microsoft_fast_element.Updates.enqueue(() => {
131
- this.setItems();
49
+ /** @internal */
50
+ selectedChanged() {
51
+ if (this.$fastController.isConnected) this.$emit("selected-change", this);
52
+ }
53
+ itemsChanged() {
54
+ if (this.$fastController.isConnected) this.items.forEach((node) => {
55
+ /* v8 ignore else -- @preserve */
56
+ if (isTreeItemElement(node)) node.nested = true;
132
57
  });
133
58
  }
134
59
  /**
135
- * Handles click events bubbling up
60
+ * Places document focus on a tree item
136
61
  *
137
- * @internal
62
+ * @param el - the element to focus
138
63
  */
139
- handleClick(e) {
140
- if (!e.defaultPrevented) {
141
- if (!(e.target instanceof Element) || !require_definition.isTreeItemElement(e.target)) return true;
142
- const item = e.target;
143
- if (!item.disabled) item.selected = !item.selected;
144
- }
145
- }
146
- /** Move focus to a tree item based on its offset from the provided item */
147
- focusNextNode(delta, item) {
148
- const visibleNodes = this.getVisibleNodes();
149
- /* v8 ignore else -- @preserve */
150
- if (visibleNodes) {
151
- const focusItem = visibleNodes[visibleNodes.indexOf(item) + delta];
152
- /* v8 ignore else -- @preserve */
153
- if ((0, _microsoft_fast_web_utilities.isHTMLElement)(focusItem)) require_definition.TreeItem.focusItem(focusItem);
154
- }
155
- }
156
- /** checks if there are any nested tree items */
157
- getValidFocusableItem() {
158
- const treeItems = this.getVisibleNodes();
159
- let focusIndex = treeItems.findIndex(this.isSelectedElement);
160
- if (focusIndex === -1) focusIndex = treeItems.findIndex(this.isFocusableElement);
161
- if (focusIndex !== -1) return treeItems[focusIndex];
162
- return null;
64
+ static focusItem(el) {
65
+ el.focusable = true;
66
+ el.focus();
163
67
  }
164
- /** checks if there are any nested tree items */
165
- checkForNestedItems() {
166
- return this.slottedTreeItems.some((node) => {
167
- return require_definition.isTreeItemElement(node) && node.querySelector("[data-vvd-component='tree-item']");
168
- });
169
- }
170
- getVisibleNodes() {
171
- return getDisplayedNodes(this, "[data-vvd-component='tree-item']");
68
+ /**
69
+ * Gets number of children
70
+ *
71
+ * @internal
72
+ */
73
+ childItemLength() {
74
+ return this.childItems.filter((item) => {
75
+ return isTreeItemElement(item);
76
+ }).length;
172
77
  }
173
78
  };
174
- require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ attribute: "render-collapsed-nodes" })], TreeView.prototype, "renderCollapsedNodes", void 0);
175
- require_decorate.__decorate([_microsoft_fast_element.observable], TreeView.prototype, "currentSelected", void 0);
176
- require_decorate.__decorate([_microsoft_fast_element.observable], TreeView.prototype, "slottedTreeItems", void 0);
79
+ require_decorate.__decorate([_microsoft_fast_element.attr], TreeItem.prototype, "text", void 0);
80
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], TreeItem.prototype, "expanded", void 0);
81
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], TreeItem.prototype, "selected", void 0);
82
+ require_decorate.__decorate([(0, _microsoft_fast_element.attr)({ mode: "boolean" })], TreeItem.prototype, "disabled", void 0);
83
+ require_decorate.__decorate([_microsoft_fast_element.observable], TreeItem.prototype, "focusable", void 0);
84
+ require_decorate.__decorate([_microsoft_fast_element.observable], TreeItem.prototype, "childItems", void 0);
85
+ require_decorate.__decorate([_microsoft_fast_element.observable], TreeItem.prototype, "items", void 0);
86
+ require_decorate.__decorate([_microsoft_fast_element.observable], TreeItem.prototype, "nested", void 0);
87
+ require_decorate.__decorate([_microsoft_fast_element.observable], TreeItem.prototype, "renderCollapsedChildren", void 0);
177
88
  //#endregion
178
- //#region src/lib/tree-view/tree-view.template.ts
179
- var getClasses = (_) => (0, _microsoft_fast_web_utilities.classNames)("control");
180
- var TreeViewTemplate = _microsoft_fast_element.html` <template
181
- ${(0, _microsoft_fast_element.ref)("treeView")}
182
- ${require_host_semantics.applyHostSemantics({ role: "tree" })}
183
- @keydown="${(x, c) => x.handleKeyDown(c.event)}"
184
- @focusin="${(x, c) => x.handleFocus(c.event)}"
185
- @focusout="${(x, c) => x.handleBlur(c.event)}"
186
- @click="${(x, c) => x.handleClick(c.event)}"
187
- @selected-change="${(x, c) => x.handleSelectedChange(c.event)}"
188
- >
189
- <div class="${getClasses}">
190
- <slot ${(0, _microsoft_fast_element.slotted)("slottedTreeItems")}></slot>
191
- </div>
192
- </template>`;
89
+ //#region src/lib/tree-item/tree-item.template.ts
90
+ var expandCollapseButton = (context) => {
91
+ const iconTag = context.tagFor(require_icon.Icon);
92
+ return _microsoft_fast_element.html`
93
+ <div aria-hidden="true"
94
+ class="expandCollapseButton"
95
+ @click="${(x, c) => x.handleExpandCollapseButtonClick(c.event)}"
96
+ ${(0, _microsoft_fast_element.ref)("expandCollapseButton")}
97
+ >
98
+ <${iconTag} class="expandCollapseIcon" name="${(x) => x.expanded ? "chevron-down-line" : "chevron-right-line"}"></${iconTag}>
99
+ </div>`;
100
+ };
101
+ var TreeItemTemplate = (context) => {
102
+ const affixIconTemplate = require_affix.affixIconTemplateFactory(context);
103
+ const treeItemTagName = context.tagFor(TreeItem, true);
104
+ return _microsoft_fast_element.html` <template
105
+ slot="${(x) => x.isNestedItem() ? "item" : void 0}"
106
+ tabindex="-1"
107
+ ${require_host_semantics.applyHostSemantics({
108
+ role: "treeitem",
109
+ ariaExpanded: (x) => x.childItems && x.childItems.length > 0 ? x.expanded : void 0,
110
+ ariaSelected: (x) => x.selected,
111
+ ariaDisabled: (x) => x.disabled
112
+ })}
113
+ @focusin="${(x, c) => x.handleFocus(c.event)}"
114
+ @focusout="${(x, c) => x.handleBlur(c.event)}"
115
+ ${(0, _microsoft_fast_element.children)({
116
+ property: "childItems",
117
+ filter: (0, _microsoft_fast_element.elements)(treeItemTagName)
118
+ })}
119
+ >
120
+ <div
121
+ class="${(x) => (0, _microsoft_fast_web_utilities.classNames)("control", ["disabled", x.disabled], ["selected", x.selected])}"
122
+ >
123
+ ${(0, _microsoft_fast_element.when)((x) => x.childItems && x.childItems.length > 0, expandCollapseButton(context))}
124
+ ${(x) => affixIconTemplate(x.icon, require_affix.IconWrapper.Slot)}
125
+ ${(x) => x.text}
126
+ </div>
127
+ ${(0, _microsoft_fast_element.when)((x) => x.childItems && x.childItems.length > 0 && x.expanded, _microsoft_fast_element.html` <div role="group" class="items">
128
+ <slot name="item" ${(0, _microsoft_fast_element.slotted)("items")}></slot>
129
+ </div>`)}
130
+ </template>`;
131
+ };
193
132
  //#endregion
194
- //#region src/lib/tree-view/definition.ts
133
+ //#region src/lib/tree-item/definition.ts
195
134
  /** @internal */
196
- var treeViewDefinition = require_vivid_element.defineVividComponent("tree-view", TreeView, TreeViewTemplate, [require_definition.treeItemDefinition], { styles: tree_view_default });
135
+ var treeItemDefinition = require_vivid_element.defineVividComponent("tree-item", TreeItem, TreeItemTemplate, [require_definition.iconDefinition], { styles: tree_item_default });
197
136
  /**
198
- * Registers the tree-view element with the design system.
137
+ * Registers the tree-item element with the design system.
199
138
  *
200
139
  * @param prefix - the prefix to use for the component name
201
140
  */
202
- var registerTreeView = require_vivid_element.createRegisterFunction(treeViewDefinition);
141
+ var registerTreeItem = require_vivid_element.createRegisterFunction(treeItemDefinition);
203
142
  //#endregion
204
- Object.defineProperty(exports, "TreeView", {
143
+ Object.defineProperty(exports, "TreeItem", {
144
+ enumerable: true,
145
+ get: function() {
146
+ return TreeItem;
147
+ }
148
+ });
149
+ Object.defineProperty(exports, "isTreeItemElement", {
205
150
  enumerable: true,
206
151
  get: function() {
207
- return TreeView;
152
+ return isTreeItemElement;
208
153
  }
209
154
  });
210
- Object.defineProperty(exports, "registerTreeView", {
155
+ Object.defineProperty(exports, "registerTreeItem", {
211
156
  enumerable: true,
212
157
  get: function() {
213
- return registerTreeView;
158
+ return registerTreeItem;
214
159
  }
215
160
  });
216
- Object.defineProperty(exports, "treeViewDefinition", {
161
+ Object.defineProperty(exports, "treeItemDefinition", {
217
162
  enumerable: true,
218
163
  get: function() {
219
- return treeViewDefinition;
164
+ return treeItemDefinition;
220
165
  }
221
166
  });