xmlui 0.11.3 → 0.11.6

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 (691) hide show
  1. package/dist/bin/index.cjs +8836 -0
  2. package/dist/bin/index.js +8825 -0
  3. package/dist/lib/{apiInterceptorWorker-QiltRtq1.js → apiInterceptorWorker-dwrAyq6l.js} +126 -151
  4. package/dist/lib/{index-DSUDwtWN.js → index-x4orhWfi.js} +2054 -2285
  5. package/dist/lib/index.css +1 -1
  6. package/dist/lib/{initMock-DdH1iCH-.js → initMock-DrUirixi.js} +19 -22
  7. package/dist/lib/language-server-web-worker.js +13 -5
  8. package/dist/lib/language-server.js +11 -3
  9. package/dist/lib/{metadata-utils-D27cn-XB.js → metadata-utils-2bsMr4Gd.js} +57 -26
  10. package/dist/lib/{server-common-hq0poDwA.js → server-common-DI3W4cob.js} +4140 -3741
  11. package/dist/lib/syntax-textmate.js +8 -2472
  12. package/dist/lib/testing.d.ts +1 -0
  13. package/dist/lib/testing.js +20 -23
  14. package/dist/lib/{transform-Tooy42EB.js → transform-CQ_6R-43.js} +174 -127
  15. package/dist/lib/vite-xmlui-plugin.d.ts +10 -0
  16. package/dist/lib/vite-xmlui-plugin.js +8316 -0
  17. package/dist/lib/{xmlui-parser-BZZ430Wm.js → xmlui-parser-CW8YmGjO.js} +10 -11
  18. package/dist/lib/xmlui-parser.d.ts +2 -0
  19. package/dist/lib/xmlui-parser.js +2 -2
  20. package/dist/lib/{xmlui-serializer-D9D2mQ8m.js → xmlui-serializer-CeCcgdVR.js} +19 -19
  21. package/dist/lib/xmlui.d.ts +124 -2
  22. package/dist/lib/xmlui.js +8 -3
  23. package/dist/metadata/{apiInterceptorWorker-Dql7QGw2.js → apiInterceptorWorker-Wgm2_zjg.js} +124 -149
  24. package/dist/metadata/{collectedComponentMetadata-C8Lr9TFe.js → collectedComponentMetadata-BGdap_gu.js} +2100 -2276
  25. package/dist/metadata/{initMock-CWwgOjW_.js → initMock-DlJ0S4Uy.js} +19 -22
  26. package/dist/metadata/xmlui-metadata.css +1 -0
  27. package/dist/metadata/xmlui-metadata.js +1 -1
  28. package/dist/metadata/xmlui-metadata.umd.cjs +3 -3
  29. package/dist/standalone/xmlui-standalone.es.d.ts +175 -4
  30. package/dist/standalone/xmlui-standalone.umd.js +36 -37
  31. package/package.json +20 -50
  32. package/dist/lib/vite-xmlui-plugin/index.js +0 -13968
  33. package/dist/lib/vite-xmlui-plugin/package.json +0 -3
  34. package/dist/metadata/style.css +0 -1
  35. package/dist/scripts/bin/bootstrap.cjs +0 -4
  36. package/dist/scripts/bin/build-lib.js +0 -126
  37. package/dist/scripts/bin/build.js +0 -266
  38. package/dist/scripts/bin/index.js +0 -167
  39. package/dist/scripts/bin/preview.js +0 -44
  40. package/dist/scripts/bin/start.js +0 -52
  41. package/dist/scripts/bin/vite-xmlui-plugin.js +0 -109
  42. package/dist/scripts/bin/viteConfig.js +0 -144
  43. package/dist/scripts/package.json +0 -285
  44. package/dist/scripts/src/abstractions/ActionDefs.js +0 -2
  45. package/dist/scripts/src/abstractions/AppContextDefs.js +0 -4
  46. package/dist/scripts/src/abstractions/ComponentDefs.js +0 -2
  47. package/dist/scripts/src/abstractions/ContainerDefs.js +0 -2
  48. package/dist/scripts/src/abstractions/ExtensionDefs.js +0 -2
  49. package/dist/scripts/src/abstractions/FunctionDefs.js +0 -2
  50. package/dist/scripts/src/abstractions/RendererDefs.js +0 -2
  51. package/dist/scripts/src/abstractions/ThemingDefs.js +0 -2
  52. package/dist/scripts/src/abstractions/scripting/BlockScope.js +0 -2
  53. package/dist/scripts/src/abstractions/scripting/Compilation.js +0 -2
  54. package/dist/scripts/src/abstractions/scripting/LogicalThread.js +0 -2
  55. package/dist/scripts/src/abstractions/scripting/LoopScope.js +0 -2
  56. package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +0 -2
  57. package/dist/scripts/src/abstractions/scripting/Token.js +0 -2
  58. package/dist/scripts/src/abstractions/scripting/TryScope.js +0 -2
  59. package/dist/scripts/src/abstractions/scripting/TryScopeExp.js +0 -2
  60. package/dist/scripts/src/abstractions/scripting/modules.js +0 -2
  61. package/dist/scripts/src/components/APICall/APICall.js +0 -130
  62. package/dist/scripts/src/components/APICall/APICall.spec.js +0 -910
  63. package/dist/scripts/src/components/APICall/APICallNative.js +0 -36
  64. package/dist/scripts/src/components/Accordion/Accordion.js +0 -97
  65. package/dist/scripts/src/components/Accordion/Accordion.spec.js +0 -969
  66. package/dist/scripts/src/components/Accordion/AccordionContext.js +0 -20
  67. package/dist/scripts/src/components/Accordion/AccordionItem.js +0 -35
  68. package/dist/scripts/src/components/Accordion/AccordionItemNative.js +0 -95
  69. package/dist/scripts/src/components/Accordion/AccordionNative.js +0 -141
  70. package/dist/scripts/src/components/Animation/AnimationNative.js +0 -263
  71. package/dist/scripts/src/components/App/App.js +0 -581
  72. package/dist/scripts/src/components/App/App.spec.js +0 -331
  73. package/dist/scripts/src/components/App/AppLayoutContext.js +0 -49
  74. package/dist/scripts/src/components/App/AppNative.js +0 -308
  75. package/dist/scripts/src/components/App/AppStateContext.js +0 -9
  76. package/dist/scripts/src/components/App/IndexerContext.js +0 -44
  77. package/dist/scripts/src/components/App/LinkInfoContext.js +0 -9
  78. package/dist/scripts/src/components/App/SearchContext.js +0 -35
  79. package/dist/scripts/src/components/App/Sheet.js +0 -99
  80. package/dist/scripts/src/components/AppHeader/AppHeader.js +0 -58
  81. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +0 -169
  82. package/dist/scripts/src/components/AppHeader/AppHeaderNative.js +0 -72
  83. package/dist/scripts/src/components/AppState/AppState.js +0 -75
  84. package/dist/scripts/src/components/AppState/AppState.spec.js +0 -292
  85. package/dist/scripts/src/components/AppState/AppStateNative.js +0 -51
  86. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +0 -109
  87. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +0 -433
  88. package/dist/scripts/src/components/AutoComplete/AutoCompleteContext.js +0 -19
  89. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +0 -498
  90. package/dist/scripts/src/components/Avatar/Avatar.js +0 -55
  91. package/dist/scripts/src/components/Avatar/Avatar.spec.js +0 -1514
  92. package/dist/scripts/src/components/Avatar/AvatarNative.js +0 -58
  93. package/dist/scripts/src/components/Backdrop/Backdrop.js +0 -40
  94. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +0 -131
  95. package/dist/scripts/src/components/Backdrop/BackdropNative.js +0 -25
  96. package/dist/scripts/src/components/Badge/Badge.js +0 -81
  97. package/dist/scripts/src/components/Badge/Badge.spec.js +0 -2214
  98. package/dist/scripts/src/components/Badge/BadgeNative.js +0 -46
  99. package/dist/scripts/src/components/Bookmark/Bookmark.js +0 -48
  100. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +0 -230
  101. package/dist/scripts/src/components/Bookmark/BookmarkNative.js +0 -55
  102. package/dist/scripts/src/components/Breakout/Breakout.js +0 -17
  103. package/dist/scripts/src/components/Breakout/Breakout.spec.js +0 -56
  104. package/dist/scripts/src/components/Breakout/BreakoutNative.js +0 -24
  105. package/dist/scripts/src/components/Button/Button-style.spec.js +0 -274
  106. package/dist/scripts/src/components/Button/Button.js +0 -171
  107. package/dist/scripts/src/components/Button/Button.spec.js +0 -425
  108. package/dist/scripts/src/components/Button/ButtonNative.js +0 -109
  109. package/dist/scripts/src/components/Card/Card.js +0 -89
  110. package/dist/scripts/src/components/Card/Card.spec.js +0 -150
  111. package/dist/scripts/src/components/Card/CardNative.js +0 -41
  112. package/dist/scripts/src/components/Carousel/Carousel.js +0 -133
  113. package/dist/scripts/src/components/Carousel/Carousel.spec.js +0 -557
  114. package/dist/scripts/src/components/Carousel/CarouselContext.js +0 -57
  115. package/dist/scripts/src/components/Carousel/CarouselItem.js +0 -15
  116. package/dist/scripts/src/components/Carousel/CarouselItemNative.js +0 -40
  117. package/dist/scripts/src/components/Carousel/CarouselNative.js +0 -195
  118. package/dist/scripts/src/components/ChangeListener/ChangeListener.js +0 -34
  119. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +0 -169
  120. package/dist/scripts/src/components/ChangeListener/ChangeListenerNative.js +0 -30
  121. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.js +0 -92
  122. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +0 -999
  123. package/dist/scripts/src/components/Charts/AreaChart/AreaChartNative.js +0 -127
  124. package/dist/scripts/src/components/Charts/BarChart/BarChart.js +0 -97
  125. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +0 -597
  126. package/dist/scripts/src/components/Charts/BarChart/BarChartNative.js +0 -317
  127. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.js +0 -60
  128. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +0 -608
  129. package/dist/scripts/src/components/Charts/LabelList/LabelList.js +0 -41
  130. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +0 -539
  131. package/dist/scripts/src/components/Charts/LabelList/LabelListNative.js +0 -25
  132. package/dist/scripts/src/components/Charts/Legend/Legend.js +0 -33
  133. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +0 -558
  134. package/dist/scripts/src/components/Charts/Legend/LegendNative.js +0 -64
  135. package/dist/scripts/src/components/Charts/LineChart/LineChart.js +0 -94
  136. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +0 -450
  137. package/dist/scripts/src/components/Charts/LineChart/LineChartNative.js +0 -192
  138. package/dist/scripts/src/components/Charts/PieChart/PieChart.js +0 -64
  139. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +0 -584
  140. package/dist/scripts/src/components/Charts/PieChart/PieChartNative.js +0 -167
  141. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.js +0 -92
  142. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +0 -571
  143. package/dist/scripts/src/components/Charts/RadarChart/RadarChartNative.js +0 -125
  144. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.js +0 -27
  145. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +0 -451
  146. package/dist/scripts/src/components/Charts/utils/ChartProvider.js +0 -65
  147. package/dist/scripts/src/components/Charts/utils/abstractions.js +0 -26
  148. package/dist/scripts/src/components/Checkbox/Checkbox.js +0 -81
  149. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +0 -969
  150. package/dist/scripts/src/components/CodeBlock/CodeBlock.js +0 -42
  151. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +0 -196
  152. package/dist/scripts/src/components/CodeBlock/CodeBlockNative.js +0 -127
  153. package/dist/scripts/src/components/CodeBlock/highlight-code.js +0 -273
  154. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +0 -54
  155. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +0 -312
  156. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +0 -86
  157. package/dist/scripts/src/components/Column/Column.js +0 -89
  158. package/dist/scripts/src/components/Column/ColumnNative.js +0 -49
  159. package/dist/scripts/src/components/Column/TableContext.js +0 -12
  160. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +0 -53
  161. package/dist/scripts/src/components/ComponentProvider.js +0 -811
  162. package/dist/scripts/src/components/ComponentRegistryContext.js +0 -44
  163. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +0 -51
  164. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +0 -531
  165. package/dist/scripts/src/components/ContentSeparator/ContentSeparatorNative.js +0 -31
  166. package/dist/scripts/src/components/DataSource/DataSource.js +0 -124
  167. package/dist/scripts/src/components/DateInput/DateInput.js +0 -197
  168. package/dist/scripts/src/components/DateInput/DateInput.spec.js +0 -952
  169. package/dist/scripts/src/components/DateInput/DateInputNative.js +0 -734
  170. package/dist/scripts/src/components/DatePicker/DatePicker.js +0 -146
  171. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +0 -394
  172. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +0 -326
  173. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +0 -196
  174. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +0 -331
  175. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +0 -146
  176. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +0 -26
  177. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +0 -29
  178. package/dist/scripts/src/components/EmojiSelector/EmojiSelectorNative.js +0 -71
  179. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.js +0 -101
  180. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +0 -435
  181. package/dist/scripts/src/components/ExpandableItem/ExpandableItemNative.js +0 -109
  182. package/dist/scripts/src/components/FileInput/FileInput.js +0 -80
  183. package/dist/scripts/src/components/FileInput/FileInput.spec.js +0 -285
  184. package/dist/scripts/src/components/FileInput/FileInputNative.js +0 -161
  185. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +0 -58
  186. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +0 -296
  187. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +0 -134
  188. package/dist/scripts/src/components/FlowLayout/FlowLayout.js +0 -65
  189. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +0 -518
  190. package/dist/scripts/src/components/FlowLayout/FlowLayoutNative.js +0 -153
  191. package/dist/scripts/src/components/Footer/Footer.js +0 -45
  192. package/dist/scripts/src/components/Footer/Footer.spec.js +0 -991
  193. package/dist/scripts/src/components/Footer/FooterNative.js +0 -35
  194. package/dist/scripts/src/components/Form/Form.js +0 -161
  195. package/dist/scripts/src/components/Form/Form.spec.js +0 -1719
  196. package/dist/scripts/src/components/Form/FormContext.js +0 -124
  197. package/dist/scripts/src/components/Form/FormNative.js +0 -463
  198. package/dist/scripts/src/components/Form/formActions.js +0 -115
  199. package/dist/scripts/src/components/FormItem/FormItem.js +0 -231
  200. package/dist/scripts/src/components/FormItem/FormItem.spec.js +0 -1022
  201. package/dist/scripts/src/components/FormItem/FormItemNative.js +0 -255
  202. package/dist/scripts/src/components/FormItem/HelperText.js +0 -27
  203. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +0 -52
  204. package/dist/scripts/src/components/FormItem/Validations.js +0 -389
  205. package/dist/scripts/src/components/FormSection/FormSection.js +0 -56
  206. package/dist/scripts/src/components/Fragment/Fragment.js +0 -24
  207. package/dist/scripts/src/components/Fragment/Fragment.spec.js +0 -50
  208. package/dist/scripts/src/components/Heading/H1.spec.js +0 -66
  209. package/dist/scripts/src/components/Heading/H2.spec.js +0 -66
  210. package/dist/scripts/src/components/Heading/H3.spec.js +0 -66
  211. package/dist/scripts/src/components/Heading/H4.spec.js +0 -66
  212. package/dist/scripts/src/components/Heading/H5.spec.js +0 -66
  213. package/dist/scripts/src/components/Heading/H6.spec.js +0 -66
  214. package/dist/scripts/src/components/Heading/Heading.js +0 -396
  215. package/dist/scripts/src/components/Heading/Heading.spec.js +0 -966
  216. package/dist/scripts/src/components/Heading/HeadingNative.js +0 -98
  217. package/dist/scripts/src/components/Heading/abstractions.js +0 -4
  218. package/dist/scripts/src/components/HoverCard/HoverCard.js +0 -18
  219. package/dist/scripts/src/components/HoverCard/HovercardNative.js +0 -44
  220. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +0 -1441
  221. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +0 -69
  222. package/dist/scripts/src/components/IFrame/IFrame.js +0 -77
  223. package/dist/scripts/src/components/IFrame/IFrame.spec.js +0 -527
  224. package/dist/scripts/src/components/IFrame/IFrameNative.js +0 -46
  225. package/dist/scripts/src/components/Icon/AdmonitionDanger.js +0 -10
  226. package/dist/scripts/src/components/Icon/AdmonitionInfo.js +0 -10
  227. package/dist/scripts/src/components/Icon/AdmonitionNote.js +0 -10
  228. package/dist/scripts/src/components/Icon/AdmonitionTip.js +0 -10
  229. package/dist/scripts/src/components/Icon/AdmonitionWarning.js +0 -10
  230. package/dist/scripts/src/components/Icon/ApiIcon.js +0 -10
  231. package/dist/scripts/src/components/Icon/ArrowDropDown.js +0 -11
  232. package/dist/scripts/src/components/Icon/ArrowDropUp.js +0 -11
  233. package/dist/scripts/src/components/Icon/ArrowLeft.js +0 -11
  234. package/dist/scripts/src/components/Icon/ArrowRight.js +0 -11
  235. package/dist/scripts/src/components/Icon/Attach.js +0 -10
  236. package/dist/scripts/src/components/Icon/Binding.js +0 -11
  237. package/dist/scripts/src/components/Icon/BoardIcon.js +0 -7
  238. package/dist/scripts/src/components/Icon/BoxIcon.js +0 -10
  239. package/dist/scripts/src/components/Icon/CheckIcon.js +0 -7
  240. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +0 -7
  241. package/dist/scripts/src/components/Icon/ChevronLeft.js +0 -7
  242. package/dist/scripts/src/components/Icon/ChevronRight.js +0 -7
  243. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +0 -7
  244. package/dist/scripts/src/components/Icon/CodeFileIcon.js +0 -10
  245. package/dist/scripts/src/components/Icon/CodeSandbox.js +0 -10
  246. package/dist/scripts/src/components/Icon/CompactListIcon.js +0 -7
  247. package/dist/scripts/src/components/Icon/ContentCopyIcon.js +0 -7
  248. package/dist/scripts/src/components/Icon/DarkToLightIcon.js +0 -10
  249. package/dist/scripts/src/components/Icon/DatabaseIcon.js +0 -11
  250. package/dist/scripts/src/components/Icon/DocFileIcon.js +0 -10
  251. package/dist/scripts/src/components/Icon/DocIcon.js +0 -10
  252. package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +0 -7
  253. package/dist/scripts/src/components/Icon/DotMenuIcon.js +0 -7
  254. package/dist/scripts/src/components/Icon/EmailIcon.js +0 -7
  255. package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +0 -10
  256. package/dist/scripts/src/components/Icon/ErrorIcon.js +0 -7
  257. package/dist/scripts/src/components/Icon/ExpressionIcon.js +0 -10
  258. package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +0 -7
  259. package/dist/scripts/src/components/Icon/FilterIcon.js +0 -10
  260. package/dist/scripts/src/components/Icon/FolderIcon.js +0 -10
  261. package/dist/scripts/src/components/Icon/GlobeIcon.js +0 -7
  262. package/dist/scripts/src/components/Icon/HomeIcon.js +0 -7
  263. package/dist/scripts/src/components/Icon/HyperLinkIcon.js +0 -7
  264. package/dist/scripts/src/components/Icon/Icon.js +0 -42
  265. package/dist/scripts/src/components/Icon/Icon.spec.js +0 -527
  266. package/dist/scripts/src/components/Icon/IconNative.js +0 -127
  267. package/dist/scripts/src/components/Icon/ImageFileIcon.js +0 -10
  268. package/dist/scripts/src/components/Icon/Inspect.js +0 -10
  269. package/dist/scripts/src/components/Icon/LightToDark.js +0 -10
  270. package/dist/scripts/src/components/Icon/LinkIcon.js +0 -7
  271. package/dist/scripts/src/components/Icon/ListIcon.js +0 -7
  272. package/dist/scripts/src/components/Icon/LooseListIcon.js +0 -7
  273. package/dist/scripts/src/components/Icon/MoonIcon.js +0 -10
  274. package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +0 -7
  275. package/dist/scripts/src/components/Icon/NoSortIcon.js +0 -8
  276. package/dist/scripts/src/components/Icon/PDFIcon.js +0 -10
  277. package/dist/scripts/src/components/Icon/PenIcon.js +0 -7
  278. package/dist/scripts/src/components/Icon/PhoneIcon.js +0 -7
  279. package/dist/scripts/src/components/Icon/PhotoIcon.js +0 -10
  280. package/dist/scripts/src/components/Icon/PlusIcon.js +0 -7
  281. package/dist/scripts/src/components/Icon/SearchIcon.js +0 -7
  282. package/dist/scripts/src/components/Icon/ShareIcon.js +0 -10
  283. package/dist/scripts/src/components/Icon/SortAscendingIcon.js +0 -8
  284. package/dist/scripts/src/components/Icon/SortDescendingIcon.js +0 -8
  285. package/dist/scripts/src/components/Icon/StarsIcon.js +0 -10
  286. package/dist/scripts/src/components/Icon/SunIcon.js +0 -10
  287. package/dist/scripts/src/components/Icon/TableDeleteColumnIcon.js +0 -7
  288. package/dist/scripts/src/components/Icon/TableDeleteRowIcon.js +0 -7
  289. package/dist/scripts/src/components/Icon/TableInsertColumnIcon.js +0 -7
  290. package/dist/scripts/src/components/Icon/TableInsertRowIcon.js +0 -7
  291. package/dist/scripts/src/components/Icon/TrashIcon.js +0 -7
  292. package/dist/scripts/src/components/Icon/TrendingDownIcon.js +0 -10
  293. package/dist/scripts/src/components/Icon/TrendingLevelIcon.js +0 -10
  294. package/dist/scripts/src/components/Icon/TrendingUpIcon.js +0 -10
  295. package/dist/scripts/src/components/Icon/TxtIcon.js +0 -10
  296. package/dist/scripts/src/components/Icon/UnknownFileIcon.js +0 -10
  297. package/dist/scripts/src/components/Icon/UnlinkIcon.js +0 -10
  298. package/dist/scripts/src/components/Icon/UserIcon.js +0 -7
  299. package/dist/scripts/src/components/Icon/WarningIcon.js +0 -7
  300. package/dist/scripts/src/components/Icon/XlsIcon.js +0 -10
  301. package/dist/scripts/src/components/IconProvider.js +0 -300
  302. package/dist/scripts/src/components/IconRegistryContext.js +0 -318
  303. package/dist/scripts/src/components/Image/Image.js +0 -52
  304. package/dist/scripts/src/components/Image/Image.spec.js +0 -198
  305. package/dist/scripts/src/components/Image/ImageNative.js +0 -73
  306. package/dist/scripts/src/components/Input/InputAdornment.js +0 -28
  307. package/dist/scripts/src/components/Input/InputDivider.js +0 -35
  308. package/dist/scripts/src/components/Input/InputLabel.js +0 -25
  309. package/dist/scripts/src/components/Input/PartialInput.js +0 -155
  310. package/dist/scripts/src/components/Input/index.js +0 -5
  311. package/dist/scripts/src/components/InspectButton/InspectButton.js +0 -35
  312. package/dist/scripts/src/components/Items/Items.js +0 -39
  313. package/dist/scripts/src/components/Items/Items.spec.js +0 -397
  314. package/dist/scripts/src/components/Items/ItemsNative.js +0 -33
  315. package/dist/scripts/src/components/Link/Link.js +0 -82
  316. package/dist/scripts/src/components/Link/Link.spec.js +0 -894
  317. package/dist/scripts/src/components/Link/LinkNative.js +0 -48
  318. package/dist/scripts/src/components/List/List.js +0 -130
  319. package/dist/scripts/src/components/List/List.spec.js +0 -927
  320. package/dist/scripts/src/components/List/ListNative.js +0 -433
  321. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +0 -53
  322. package/dist/scripts/src/components/Logo/Logo.js +0 -30
  323. package/dist/scripts/src/components/Logo/LogoNative.js +0 -32
  324. package/dist/scripts/src/components/Markdown/CodeText.js +0 -38
  325. package/dist/scripts/src/components/Markdown/Markdown.js +0 -143
  326. package/dist/scripts/src/components/Markdown/Markdown.spec.js +0 -188
  327. package/dist/scripts/src/components/Markdown/MarkdownNative.js +0 -476
  328. package/dist/scripts/src/components/Markdown/parse-binding-expr.js +0 -60
  329. package/dist/scripts/src/components/Markdown/utils.js +0 -389
  330. package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +0 -111
  331. package/dist/scripts/src/components/ModalDialog/Dialog.js +0 -20
  332. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +0 -83
  333. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +0 -181
  334. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +0 -217
  335. package/dist/scripts/src/components/ModalDialog/ModalVisibilityContext.js +0 -60
  336. package/dist/scripts/src/components/NavGroup/NavGroup.js +0 -70
  337. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +0 -304
  338. package/dist/scripts/src/components/NavGroup/NavGroupContext.js +0 -13
  339. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +0 -133
  340. package/dist/scripts/src/components/NavLink/NavLink.js +0 -86
  341. package/dist/scripts/src/components/NavLink/NavLink.spec.js +0 -864
  342. package/dist/scripts/src/components/NavLink/NavLinkNative.js +0 -73
  343. package/dist/scripts/src/components/NavPanel/NavPanel.js +0 -53
  344. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +0 -864
  345. package/dist/scripts/src/components/NavPanel/NavPanelNative.js +0 -222
  346. package/dist/scripts/src/components/NestedApp/AppWithCodeView.js +0 -91
  347. package/dist/scripts/src/components/NestedApp/AppWithCodeViewNative.js +0 -84
  348. package/dist/scripts/src/components/NestedApp/NestedApp.js +0 -86
  349. package/dist/scripts/src/components/NestedApp/NestedAppNative.js +0 -231
  350. package/dist/scripts/src/components/NestedApp/Tooltip.js +0 -46
  351. package/dist/scripts/src/components/NestedApp/defaultProps.js +0 -12
  352. package/dist/scripts/src/components/NestedApp/utils.js +0 -67
  353. package/dist/scripts/src/components/NoResult/NoResult.js +0 -46
  354. package/dist/scripts/src/components/NoResult/NoResult.spec.js +0 -863
  355. package/dist/scripts/src/components/NoResult/NoResultNative.js +0 -31
  356. package/dist/scripts/src/components/NumberBox/NumberBox.js +0 -123
  357. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +0 -954
  358. package/dist/scripts/src/components/NumberBox/NumberBoxNative.js +0 -513
  359. package/dist/scripts/src/components/NumberBox/numberbox-abstractions.js +0 -109
  360. package/dist/scripts/src/components/Option/Option.js +0 -44
  361. package/dist/scripts/src/components/Option/Option.spec.js +0 -474
  362. package/dist/scripts/src/components/Option/OptionNative.js +0 -29
  363. package/dist/scripts/src/components/Option/OptionTypeProvider.js +0 -16
  364. package/dist/scripts/src/components/PageMetaTitle/PageMetaTilteNative.js +0 -13
  365. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +0 -22
  366. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +0 -80
  367. package/dist/scripts/src/components/Pages/Pages.js +0 -54
  368. package/dist/scripts/src/components/Pages/PagesNative.js +0 -57
  369. package/dist/scripts/src/components/Pagination/Pagination.js +0 -107
  370. package/dist/scripts/src/components/Pagination/Pagination.spec.js +0 -1008
  371. package/dist/scripts/src/components/Pagination/PaginationNative.js +0 -157
  372. package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +0 -24
  373. package/dist/scripts/src/components/PositionedContainer/PositionedContainerNative.js +0 -14
  374. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +0 -20
  375. package/dist/scripts/src/components/ProgressBar/ProgressBar.js +0 -38
  376. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +0 -166
  377. package/dist/scripts/src/components/ProgressBar/ProgressBarNative.js +0 -28
  378. package/dist/scripts/src/components/Queue/Queue.js +0 -85
  379. package/dist/scripts/src/components/Queue/Queue.spec.js +0 -624
  380. package/dist/scripts/src/components/Queue/QueueNative.js +0 -342
  381. package/dist/scripts/src/components/Queue/queueActions.js +0 -87
  382. package/dist/scripts/src/components/RadioGroup/RadioGroup.js +0 -61
  383. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +0 -488
  384. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +0 -158
  385. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
  386. package/dist/scripts/src/components/RadioGroup/RadioItemNative.js +0 -62
  387. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +0 -24
  388. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapterNative.js +0 -135
  389. package/dist/scripts/src/components/Redirect/Redirect.js +0 -31
  390. package/dist/scripts/src/components/Redirect/Redirect.spec.js +0 -527
  391. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.js +0 -60
  392. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +0 -76
  393. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBarNative.js +0 -313
  394. package/dist/scripts/src/components/Select/HiddenOption.js +0 -20
  395. package/dist/scripts/src/components/Select/OptionContext.js +0 -12
  396. package/dist/scripts/src/components/Select/Select.js +0 -131
  397. package/dist/scripts/src/components/Select/Select.spec.js +0 -671
  398. package/dist/scripts/src/components/Select/SelectContext.js +0 -16
  399. package/dist/scripts/src/components/Select/SelectNative.js +0 -440
  400. package/dist/scripts/src/components/SelectionStore/SelectionStore.js +0 -25
  401. package/dist/scripts/src/components/SelectionStore/SelectionStoreNative.js +0 -103
  402. package/dist/scripts/src/components/Slider/Slider.js +0 -115
  403. package/dist/scripts/src/components/Slider/Slider.spec.js +0 -643
  404. package/dist/scripts/src/components/Slider/SliderNative.js +0 -237
  405. package/dist/scripts/src/components/Slot/Slot.js +0 -17
  406. package/dist/scripts/src/components/Slot/Slot.spec.js +0 -368
  407. package/dist/scripts/src/components/SlotItem.js +0 -32
  408. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +0 -20
  409. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +0 -184
  410. package/dist/scripts/src/components/SpaceFiller/SpaceFillerNative.js +0 -10
  411. package/dist/scripts/src/components/Spinner/Spinner.js +0 -39
  412. package/dist/scripts/src/components/Spinner/Spinner.spec.js +0 -161
  413. package/dist/scripts/src/components/Spinner/SpinnerNative.js +0 -48
  414. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +0 -104
  415. package/dist/scripts/src/components/Splitter/Splitter.js +0 -114
  416. package/dist/scripts/src/components/Splitter/Splitter.spec.js +0 -631
  417. package/dist/scripts/src/components/Splitter/SplitterNative.js +0 -203
  418. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +0 -104
  419. package/dist/scripts/src/components/Splitter/utils.js +0 -22
  420. package/dist/scripts/src/components/Stack/CHStack.spec.js +0 -86
  421. package/dist/scripts/src/components/Stack/CVStack.spec.js +0 -86
  422. package/dist/scripts/src/components/Stack/HStack.spec.js +0 -67
  423. package/dist/scripts/src/components/Stack/Stack.js +0 -156
  424. package/dist/scripts/src/components/Stack/Stack.spec.js +0 -654
  425. package/dist/scripts/src/components/Stack/StackNative.js +0 -45
  426. package/dist/scripts/src/components/Stack/VStack.spec.js +0 -67
  427. package/dist/scripts/src/components/StickyBox/StickyBox.js +0 -34
  428. package/dist/scripts/src/components/StickyBox/StickyBoxNative.js +0 -42
  429. package/dist/scripts/src/components/Switch/Switch.js +0 -80
  430. package/dist/scripts/src/components/Switch/Switch.spec.js +0 -836
  431. package/dist/scripts/src/components/Table/Table.js +0 -268
  432. package/dist/scripts/src/components/Table/Table.spec.js +0 -827
  433. package/dist/scripts/src/components/Table/TableNative.js +0 -670
  434. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +0 -53
  435. package/dist/scripts/src/components/Table/useRowSelection.js +0 -454
  436. package/dist/scripts/src/components/TableOfContents/TableOfContents.js +0 -76
  437. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +0 -838
  438. package/dist/scripts/src/components/TableOfContents/TableOfContentsNative.js +0 -81
  439. package/dist/scripts/src/components/Tabs/TabContext.js +0 -58
  440. package/dist/scripts/src/components/Tabs/TabItem.js +0 -44
  441. package/dist/scripts/src/components/Tabs/TabItemNative.js +0 -53
  442. package/dist/scripts/src/components/Tabs/Tabs.js +0 -95
  443. package/dist/scripts/src/components/Tabs/Tabs.spec.js +0 -1237
  444. package/dist/scripts/src/components/Tabs/TabsNative.js +0 -137
  445. package/dist/scripts/src/components/Text/Text.js +0 -181
  446. package/dist/scripts/src/components/Text/Text.spec.js +0 -1676
  447. package/dist/scripts/src/components/Text/TextNative.js +0 -244
  448. package/dist/scripts/src/components/TextArea/TextArea.js +0 -103
  449. package/dist/scripts/src/components/TextArea/TextArea.spec.js +0 -794
  450. package/dist/scripts/src/components/TextArea/TextAreaNative.js +0 -196
  451. package/dist/scripts/src/components/TextArea/TextAreaResizable.js +0 -73
  452. package/dist/scripts/src/components/TextArea/useComposedRef.js +0 -60
  453. package/dist/scripts/src/components/TextBox/TextBox.js +0 -131
  454. package/dist/scripts/src/components/TextBox/TextBox.spec.js +0 -725
  455. package/dist/scripts/src/components/TextBox/TextBoxNative.js +0 -142
  456. package/dist/scripts/src/components/Theme/NotificationToast.js +0 -64
  457. package/dist/scripts/src/components/Theme/Theme.js +0 -47
  458. package/dist/scripts/src/components/Theme/Theme.spec.js +0 -390
  459. package/dist/scripts/src/components/Theme/ThemeNative.js +0 -162
  460. package/dist/scripts/src/components/TimeInput/TimeInput.js +0 -149
  461. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +0 -1160
  462. package/dist/scripts/src/components/TimeInput/TimeInputNative.js +0 -650
  463. package/dist/scripts/src/components/TimeInput/utils.js +0 -197
  464. package/dist/scripts/src/components/Timer/Timer.js +0 -62
  465. package/dist/scripts/src/components/Timer/Timer.spec.js +0 -328
  466. package/dist/scripts/src/components/Timer/TimerNative.js +0 -178
  467. package/dist/scripts/src/components/Toggle/Toggle.js +0 -172
  468. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.js +0 -63
  469. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +0 -414
  470. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.js +0 -51
  471. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +0 -89
  472. package/dist/scripts/src/components/ToneSwitch/ToneSwitchNative.js +0 -42
  473. package/dist/scripts/src/components/Tooltip/Tooltip.js +0 -118
  474. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +0 -418
  475. package/dist/scripts/src/components/Tooltip/TooltipNative.js +0 -160
  476. package/dist/scripts/src/components/Tree/Tree-dynamic.spec.js +0 -2894
  477. package/dist/scripts/src/components/Tree/Tree-icons.spec.js +0 -206
  478. package/dist/scripts/src/components/Tree/Tree.spec.js +0 -2839
  479. package/dist/scripts/src/components/Tree/TreeComponent.js +0 -324
  480. package/dist/scripts/src/components/Tree/TreeNative.js +0 -1129
  481. package/dist/scripts/src/components/Tree/testData.js +0 -296
  482. package/dist/scripts/src/components/TreeDisplay/TreeDisplay.js +0 -49
  483. package/dist/scripts/src/components/TreeDisplay/TreeDisplayNative.js +0 -104
  484. package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +0 -64
  485. package/dist/scripts/src/components/VisuallyHidden.js +0 -21
  486. package/dist/scripts/src/components/abstractions.js +0 -341
  487. package/dist/scripts/src/components/chart-color-schemes.js +0 -43
  488. package/dist/scripts/src/components/collectedComponentMetadata.js +0 -316
  489. package/dist/scripts/src/components/component-utils.js +0 -29
  490. package/dist/scripts/src/components/container-helpers.js +0 -26
  491. package/dist/scripts/src/components/metadata-helpers.js +0 -269
  492. package/dist/scripts/src/components-core/ApiBoundComponent.js +0 -227
  493. package/dist/scripts/src/components-core/AppContext.js +0 -16
  494. package/dist/scripts/src/components-core/ComponentDecorator.js +0 -74
  495. package/dist/scripts/src/components-core/ComponentViewer.js +0 -69
  496. package/dist/scripts/src/components-core/CompoundComponent.js +0 -145
  497. package/dist/scripts/src/components-core/DebugViewProvider.js +0 -43
  498. package/dist/scripts/src/components-core/EngineError.js +0 -91
  499. package/dist/scripts/src/components-core/InspectorContext.js +0 -248
  500. package/dist/scripts/src/components-core/LoaderComponent.js +0 -109
  501. package/dist/scripts/src/components-core/RestApiProxy.js +0 -468
  502. package/dist/scripts/src/components-core/StandaloneApp.js +0 -821
  503. package/dist/scripts/src/components-core/StandaloneExtensionManager.js +0 -44
  504. package/dist/scripts/src/components-core/TableOfContentsContext.js +0 -168
  505. package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +0 -2
  506. package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +0 -2
  507. package/dist/scripts/src/components-core/abstractions/standalone.js +0 -2
  508. package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +0 -2
  509. package/dist/scripts/src/components-core/action/APICall.js +0 -284
  510. package/dist/scripts/src/components-core/action/FileDownloadAction.js +0 -80
  511. package/dist/scripts/src/components-core/action/FileUploadAction.js +0 -88
  512. package/dist/scripts/src/components-core/action/NavigateAction.js +0 -20
  513. package/dist/scripts/src/components-core/action/TimedAction.js +0 -21
  514. package/dist/scripts/src/components-core/action/actions.js +0 -15
  515. package/dist/scripts/src/components-core/appContext/date-functions.js +0 -24
  516. package/dist/scripts/src/components-core/appContext/math-function.js +0 -27
  517. package/dist/scripts/src/components-core/appContext/misc-utils.js +0 -14
  518. package/dist/scripts/src/components-core/behaviors/Behavior.js +0 -2
  519. package/dist/scripts/src/components-core/behaviors/CoreBehaviors.js +0 -200
  520. package/dist/scripts/src/components-core/component-hooks.js +0 -25
  521. package/dist/scripts/src/components-core/constants.js +0 -18
  522. package/dist/scripts/src/components-core/descriptorHelper.js +0 -96
  523. package/dist/scripts/src/components-core/devtools/InspectorDialog.js +0 -135
  524. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +0 -8
  525. package/dist/scripts/src/components-core/event-handlers.js +0 -46
  526. package/dist/scripts/src/components-core/interception/ApiInterceptor.js +0 -247
  527. package/dist/scripts/src/components-core/interception/ApiInterceptorProvider.js +0 -167
  528. package/dist/scripts/src/components-core/interception/Backend.js +0 -141
  529. package/dist/scripts/src/components-core/interception/Errors.js +0 -129
  530. package/dist/scripts/src/components-core/interception/InMemoryDb.js +0 -41
  531. package/dist/scripts/src/components-core/interception/IndexedDb.js +0 -205
  532. package/dist/scripts/src/components-core/interception/ReadonlyCollection.js +0 -145
  533. package/dist/scripts/src/components-core/interception/abstractions.js +0 -2
  534. package/dist/scripts/src/components-core/interception/apiInterceptorWorker.js +0 -44
  535. package/dist/scripts/src/components-core/interception/initMock.js +0 -20
  536. package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +0 -9
  537. package/dist/scripts/src/components-core/loader/ApiLoader.js +0 -54
  538. package/dist/scripts/src/components-core/loader/DataLoader.js +0 -330
  539. package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +0 -60
  540. package/dist/scripts/src/components-core/loader/Loader.js +0 -159
  541. package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +0 -43
  542. package/dist/scripts/src/components-core/loader/PageableLoader.js +0 -272
  543. package/dist/scripts/src/components-core/markup-check.js +0 -279
  544. package/dist/scripts/src/components-core/parts.js +0 -11
  545. package/dist/scripts/src/components-core/renderers.js +0 -76
  546. package/dist/scripts/src/components-core/rendering/AppContent.js +0 -400
  547. package/dist/scripts/src/components-core/rendering/AppRoot.js +0 -87
  548. package/dist/scripts/src/components-core/rendering/AppWrapper.js +0 -49
  549. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +0 -380
  550. package/dist/scripts/src/components-core/rendering/ComponentWrapper.js +0 -166
  551. package/dist/scripts/src/components-core/rendering/Container.js +0 -621
  552. package/dist/scripts/src/components-core/rendering/ContainerWrapper.js +0 -94
  553. package/dist/scripts/src/components-core/rendering/ErrorBoundary.js +0 -65
  554. package/dist/scripts/src/components-core/rendering/InvalidComponent.js +0 -17
  555. package/dist/scripts/src/components-core/rendering/StandaloneComponent.js +0 -39
  556. package/dist/scripts/src/components-core/rendering/StateContainer.js +0 -350
  557. package/dist/scripts/src/components-core/rendering/UnknownComponent.js +0 -15
  558. package/dist/scripts/src/components-core/rendering/buildProxy.js +0 -58
  559. package/dist/scripts/src/components-core/rendering/collectFnVarDeps.js +0 -49
  560. package/dist/scripts/src/components-core/rendering/containers.js +0 -19
  561. package/dist/scripts/src/components-core/rendering/nodeUtils.js +0 -6
  562. package/dist/scripts/src/components-core/rendering/reducer.js +0 -160
  563. package/dist/scripts/src/components-core/rendering/renderChild.js +0 -82
  564. package/dist/scripts/src/components-core/rendering/valueExtractor.js +0 -216
  565. package/dist/scripts/src/components-core/reportEngineError.js +0 -62
  566. package/dist/scripts/src/components-core/script-runner/AttributeValueParser.js +0 -117
  567. package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +0 -33
  568. package/dist/scripts/src/components-core/script-runner/ParameterParser.js +0 -117
  569. package/dist/scripts/src/components-core/script-runner/ScriptingSourceTree.js +0 -45
  570. package/dist/scripts/src/components-core/script-runner/asyncProxy.js +0 -96
  571. package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +0 -34
  572. package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +0 -613
  573. package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +0 -439
  574. package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +0 -522
  575. package/dist/scripts/src/components-core/script-runner/process-statement-async.js +0 -761
  576. package/dist/scripts/src/components-core/script-runner/process-statement-common.js +0 -208
  577. package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +0 -746
  578. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +0 -386
  579. package/dist/scripts/src/components-core/script-runner/statement-queue.js +0 -63
  580. package/dist/scripts/src/components-core/script-runner/visitors.js +0 -369
  581. package/dist/scripts/src/components-core/theming/StyleContext.js +0 -133
  582. package/dist/scripts/src/components-core/theming/StyleRegistry.js +0 -171
  583. package/dist/scripts/src/components-core/theming/ThemeContext.js +0 -53
  584. package/dist/scripts/src/components-core/theming/ThemeProvider.js +0 -342
  585. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +0 -153
  586. package/dist/scripts/src/components-core/theming/extendThemeUtils.js +0 -47
  587. package/dist/scripts/src/components-core/theming/hvar.js +0 -105
  588. package/dist/scripts/src/components-core/theming/layout-resolver.js +0 -388
  589. package/dist/scripts/src/components-core/theming/parse-layout-props.js +0 -136
  590. package/dist/scripts/src/components-core/theming/themeVars.js +0 -62
  591. package/dist/scripts/src/components-core/theming/themes/base-utils.js +0 -15
  592. package/dist/scripts/src/components-core/theming/themes/palette.js +0 -57
  593. package/dist/scripts/src/components-core/theming/themes/root.js +0 -434
  594. package/dist/scripts/src/components-core/theming/themes/solid.js +0 -16
  595. package/dist/scripts/src/components-core/theming/themes/theme-colors.js +0 -561
  596. package/dist/scripts/src/components-core/theming/themes/xmlui.js +0 -57
  597. package/dist/scripts/src/components-core/theming/transformThemeVars.js +0 -733
  598. package/dist/scripts/src/components-core/theming/utils.js +0 -31
  599. package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +0 -41
  600. package/dist/scripts/src/components-core/utils/LruCache.js +0 -184
  601. package/dist/scripts/src/components-core/utils/actionUtils.js +0 -32
  602. package/dist/scripts/src/components-core/utils/audio-utils.js +0 -83
  603. package/dist/scripts/src/components-core/utils/base64-utils.js +0 -124
  604. package/dist/scripts/src/components-core/utils/compound-utils.js +0 -11
  605. package/dist/scripts/src/components-core/utils/css-utils.js +0 -179
  606. package/dist/scripts/src/components-core/utils/date-utils.js +0 -186
  607. package/dist/scripts/src/components-core/utils/extractParam.js +0 -281
  608. package/dist/scripts/src/components-core/utils/hooks.js +0 -400
  609. package/dist/scripts/src/components-core/utils/mergeProps.js +0 -45
  610. package/dist/scripts/src/components-core/utils/misc.js +0 -539
  611. package/dist/scripts/src/components-core/utils/request-params.js +0 -70
  612. package/dist/scripts/src/components-core/utils/statementUtils.js +0 -224
  613. package/dist/scripts/src/components-core/utils/treeUtils.js +0 -226
  614. package/dist/scripts/src/components-core/xmlui-parser.js +0 -548
  615. package/dist/scripts/src/index-standalone.js +0 -61
  616. package/dist/scripts/src/index.js +0 -158
  617. package/dist/scripts/src/language-server/server-common.js +0 -152
  618. package/dist/scripts/src/language-server/server-web-worker.js +0 -47
  619. package/dist/scripts/src/language-server/server.js +0 -42
  620. package/dist/scripts/src/language-server/services/common/docs-generation.js +0 -73
  621. package/dist/scripts/src/language-server/services/common/lsp-utils.js +0 -9
  622. package/dist/scripts/src/language-server/services/common/metadata-utils.js +0 -157
  623. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +0 -135
  624. package/dist/scripts/src/language-server/services/completion.js +0 -288
  625. package/dist/scripts/src/language-server/services/diagnostic.js +0 -19
  626. package/dist/scripts/src/language-server/services/format.js +0 -430
  627. package/dist/scripts/src/language-server/services/hover.js +0 -164
  628. package/dist/scripts/src/language-server/xmlui-metadata-generated.js +0 -16276
  629. package/dist/scripts/src/logging/LoggerContext.js +0 -22
  630. package/dist/scripts/src/logging/LoggerInitializer.js +0 -14
  631. package/dist/scripts/src/logging/LoggerService.js +0 -60
  632. package/dist/scripts/src/logging/xmlui.js +0 -21
  633. package/dist/scripts/src/parsers/common/GenericToken.js +0 -2
  634. package/dist/scripts/src/parsers/common/InputStream.js +0 -59
  635. package/dist/scripts/src/parsers/common/utils.js +0 -19
  636. package/dist/scripts/src/parsers/scripting/Lexer.js +0 -1097
  637. package/dist/scripts/src/parsers/scripting/Parser.js +0 -2638
  638. package/dist/scripts/src/parsers/scripting/ParserError.js +0 -47
  639. package/dist/scripts/src/parsers/scripting/ScriptingNodeTypes.js +0 -50
  640. package/dist/scripts/src/parsers/scripting/TokenTrait.js +0 -108
  641. package/dist/scripts/src/parsers/scripting/TokenType.js +0 -109
  642. package/dist/scripts/src/parsers/scripting/code-behind-collect.js +0 -101
  643. package/dist/scripts/src/parsers/scripting/modules.js +0 -105
  644. package/dist/scripts/src/parsers/scripting/tree-visitor.js +0 -601
  645. package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +0 -39
  646. package/dist/scripts/src/parsers/style-parser/StyleLexer.js +0 -623
  647. package/dist/scripts/src/parsers/style-parser/StyleParser.js +0 -453
  648. package/dist/scripts/src/parsers/style-parser/errors.js +0 -37
  649. package/dist/scripts/src/parsers/style-parser/source-tree.js +0 -2
  650. package/dist/scripts/src/parsers/style-parser/tokens.js +0 -43
  651. package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +0 -136
  652. package/dist/scripts/src/parsers/xmlui-parser/ParserError.js +0 -60
  653. package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +0 -172
  654. package/dist/scripts/src/parsers/xmlui-parser/fileExtensions.js +0 -6
  655. package/dist/scripts/src/parsers/xmlui-parser/index.js +0 -29
  656. package/dist/scripts/src/parsers/xmlui-parser/lint.js +0 -165
  657. package/dist/scripts/src/parsers/xmlui-parser/parser.js +0 -626
  658. package/dist/scripts/src/parsers/xmlui-parser/scanner.js +0 -415
  659. package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +0 -123
  660. package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +0 -67
  661. package/dist/scripts/src/parsers/xmlui-parser/transform.js +0 -1131
  662. package/dist/scripts/src/parsers/xmlui-parser/utils.js +0 -83
  663. package/dist/scripts/src/parsers/xmlui-parser/xmlui-serializer.js +0 -582
  664. package/dist/scripts/src/parsers/xmlui-parser/xmlui-tree.js +0 -2
  665. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +0 -286
  666. package/dist/scripts/src/syntax/monaco/index.js +0 -14
  667. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +0 -25
  668. package/dist/scripts/src/syntax/monaco/xmlui-light.js +0 -25
  669. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +0 -310
  670. package/dist/scripts/src/syntax/textMate/index.js +0 -14
  671. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +0 -631
  672. package/dist/scripts/src/syntax/textMate/xmlui-light.json +0 -565
  673. package/dist/scripts/src/syntax/textMate/xmlui.json +0 -564
  674. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +0 -341
  675. package/dist/scripts/src/testing/ComponentDrivers.js +0 -1380
  676. package/dist/scripts/src/testing/assertions.js +0 -444
  677. package/dist/scripts/src/testing/component-test-helpers.js +0 -373
  678. package/dist/scripts/src/testing/drivers/DateInputDriver.js +0 -19
  679. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +0 -10
  680. package/dist/scripts/src/testing/drivers/NumberBoxDriver.js +0 -44
  681. package/dist/scripts/src/testing/drivers/TextBoxDriver.js +0 -20
  682. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +0 -22
  683. package/dist/scripts/src/testing/drivers/TimerDriver.js +0 -64
  684. package/dist/scripts/src/testing/drivers/TreeDriver.js +0 -13
  685. package/dist/scripts/src/testing/drivers/index.js +0 -9
  686. package/dist/scripts/src/testing/fixtures.js +0 -519
  687. package/dist/scripts/src/testing/index.js +0 -69
  688. package/dist/scripts/src/testing/infrastructure/TestBed.js +0 -17
  689. package/dist/scripts/src/testing/infrastructure/main.js +0 -9
  690. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +0 -266
  691. package/dist/scripts/src/testing/themed-app-test-helpers.js +0 -133
@@ -1,2894 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- const fixtures_1 = require("../../testing/fixtures");
13
- const testData_1 = require("./testData");
14
- // =============================================================================
15
- // IMPERATIVE API TESTS
16
- // =============================================================================
17
- fixtures_1.test.describe("Imperative API", () => {
18
- (0, fixtures_1.test)("exposes expandNode method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
19
- yield initTestBed(`
20
- <Fragment>
21
- <VStack height="400px">
22
- <Tree id="treeApi" testId="tree"
23
- dataFormat="flat"
24
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
25
- <property name="itemTemplate">
26
- <HStack testId="{$item.id}:expand" verticalAlignment="center">
27
- <Text value="{$item.name}" />
28
- </HStack>
29
- </property>
30
- </Tree>
31
- </VStack>
32
- <Button id="expandBtn" testId="expand-node-btn" label="Expand Node 1"
33
- onClick="treeApi.expandNode(1);" />
34
- </Fragment>
35
- `);
36
- const tree = yield createTreeDriver("tree");
37
- const expandButton = yield createButtonDriver("expand-node-btn");
38
- // Initially, tree should be collapsed
39
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expand")).toBeVisible(); // Root visible
40
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expand")).not.toBeVisible(); // Child hidden
41
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expand")).not.toBeVisible(); // Child hidden
42
- // Click expand specific node button
43
- yield expandButton.click();
44
- // Verify node 1's children are now visible but grandchildren are still hidden
45
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expand")).toBeVisible(); // Root visible
46
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expand")).toBeVisible(); // Child now visible
47
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expand")).toBeVisible(); // Child now visible
48
- yield (0, fixtures_1.expect)(tree.getByTestId("4:expand")).not.toBeVisible(); // Grandchild still hidden (node 2 not expanded)
49
- }));
50
- (0, fixtures_1.test)("exposes collapseNode method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
51
- yield initTestBed(`
52
- <Fragment>
53
- <VStack height="400px">
54
- <Tree id="treeApi" testId="tree"
55
- dataFormat="flat"
56
- defaultExpanded="all"
57
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
58
- <property name="itemTemplate">
59
- <HStack testId="{$item.id}:expand" verticalAlignment="center">
60
- <Text value="{$item.name}" />
61
- </HStack>
62
- </property>
63
- </Tree>
64
- </VStack>
65
- <Button id="collapseBtn" testId="collapse-btn" label="Collapse Node 1"
66
- onClick="treeApi.collapseNode(1);" />
67
- </Fragment>
68
- `);
69
- const tree = yield createTreeDriver("tree");
70
- const collapseButton = yield createButtonDriver("collapse-btn");
71
- // Verify tree starts with all nodes visible (defaultExpanded="all")
72
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expand")).toBeVisible();
73
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expand")).toBeVisible();
74
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expand")).toBeVisible();
75
- yield (0, fixtures_1.expect)(tree.getByTestId("4:expand")).toBeVisible();
76
- // Click collapse node button
77
- yield collapseButton.click();
78
- // Verify node 1 children are now hidden
79
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expand")).toBeVisible(); // Root still visible
80
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expand")).not.toBeVisible(); // Child hidden
81
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expand")).not.toBeVisible(); // Child hidden
82
- yield (0, fixtures_1.expect)(tree.getByTestId("4:expand")).not.toBeVisible(); // Grandchild hidden
83
- }));
84
- (0, fixtures_1.test)("exposes expandAll method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
85
- yield initTestBed(`
86
- <Fragment>
87
- <VStack height="400px">
88
- <Tree id="treeApi" testId="tree"
89
- dataFormat="flat"
90
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
91
- <property name="itemTemplate">
92
- <HStack testId="{$item.id}:expandall" verticalAlignment="center">
93
- <Text value="{$item.name}" />
94
- </HStack>
95
- </property>
96
- </Tree>
97
- </VStack>
98
- <Button id="expandBtn" testId="expand-all-btn" label="Expand All"
99
- onClick="treeApi.expandAll();" />
100
- </Fragment>
101
- `);
102
- const tree = yield createTreeDriver("tree");
103
- const expandButton = yield createButtonDriver("expand-all-btn");
104
- // Initially, tree should be collapsed (not expanded)
105
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expandall")).not.toBeVisible();
106
- yield (0, fixtures_1.expect)(tree.getByTestId("4:expandall")).not.toBeVisible();
107
- // Click expandAll button
108
- yield expandButton.click();
109
- // Verify all nodes are now visible (expanded)
110
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expandall")).toBeVisible(); // Root
111
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expandall")).toBeVisible(); // Child
112
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expandall")).toBeVisible(); // Child
113
- yield (0, fixtures_1.expect)(tree.getByTestId("4:expandall")).toBeVisible(); // Grandchild
114
- }));
115
- (0, fixtures_1.test)("exposes collapseAll method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
116
- yield initTestBed(`
117
- <Fragment>
118
- <VStack height="400px">
119
- <Tree id="treeApi" testId="tree"
120
- dataFormat="flat"
121
- defaultExpanded="all"
122
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
123
- <property name="itemTemplate">
124
- <HStack testId="{$item.id}:collapseall" verticalAlignment="center">
125
- <Text value="{$item.name}" />
126
- </HStack>
127
- </property>
128
- </Tree>
129
- </VStack>
130
- <Button id="collapseBtn" testId="collapse-all-btn" label="Collapse All"
131
- onClick="treeApi.collapseAll();" />
132
- </Fragment>
133
- `);
134
- const tree = yield createTreeDriver("tree");
135
- const collapseButton = yield createButtonDriver("collapse-all-btn");
136
- // Initially, tree should be fully expanded (defaultExpanded="all")
137
- yield (0, fixtures_1.expect)(tree.getByTestId("1:collapseall")).toBeVisible(); // Root
138
- yield (0, fixtures_1.expect)(tree.getByTestId("2:collapseall")).toBeVisible(); // Child
139
- yield (0, fixtures_1.expect)(tree.getByTestId("3:collapseall")).toBeVisible(); // Child
140
- yield (0, fixtures_1.expect)(tree.getByTestId("4:collapseall")).toBeVisible(); // Grandchild
141
- // Click collapseAll button
142
- yield collapseButton.click();
143
- // Verify only root nodes are visible (all collapsed)
144
- yield (0, fixtures_1.expect)(tree.getByTestId("1:collapseall")).toBeVisible(); // Root still visible
145
- yield (0, fixtures_1.expect)(tree.getByTestId("2:collapseall")).not.toBeVisible(); // Child hidden
146
- yield (0, fixtures_1.expect)(tree.getByTestId("3:collapseall")).not.toBeVisible(); // Child hidden
147
- yield (0, fixtures_1.expect)(tree.getByTestId("4:collapseall")).not.toBeVisible(); // Grandchild hidden
148
- }));
149
- (0, fixtures_1.test)("exposes scrollToItem method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
150
- // Create a larger dataset to ensure scrolling is needed
151
- const largeTreeData = [
152
- { id: 1, name: "Root Item 1", parentId: null },
153
- { id: 2, name: "Child Item 1.1", parentId: 1 },
154
- { id: 3, name: "Child Item 1.2", parentId: 1 },
155
- { id: 4, name: "Grandchild Item 1.1.1", parentId: 2 },
156
- { id: 5, name: "Grandchild Item 1.1.2", parentId: 2 },
157
- { id: 6, name: "Root Item 2", parentId: null },
158
- { id: 7, name: "Child Item 2.1", parentId: 6 },
159
- { id: 8, name: "Child Item 2.2", parentId: 6 },
160
- { id: 9, name: "Child Item 2.3", parentId: 6 },
161
- { id: 10, name: "Root Item 3", parentId: null },
162
- { id: 11, name: "Child Item 3.1", parentId: 10 },
163
- { id: 12, name: "Child Item 3.2", parentId: 10 },
164
- { id: 13, name: "Root Item 4", parentId: null },
165
- { id: 14, name: "Child Item 4.1", parentId: 13 },
166
- { id: 15, name: "Child Item 4.2", parentId: 13 },
167
- { id: 16, name: "Root Item 5", parentId: null },
168
- { id: 17, name: "Child Item 5.1", parentId: 16 },
169
- { id: 18, name: "Child Item 5.2", parentId: 16 },
170
- { id: 19, name: "Target Item (Bottom)", parentId: 16 }, // This will be at the bottom
171
- ];
172
- const { testStateDriver } = yield initTestBed(`
173
- <Fragment>
174
- <VStack height="150px">
175
- <Tree id="treeApi" testId="tree"
176
- dataFormat="flat"
177
- parentIdField="parentId"
178
- defaultExpanded="all"
179
- data='{${JSON.stringify(largeTreeData)}}'>
180
- <property name="itemTemplate">
181
- <HStack testId="{$item.id}:scroll" verticalAlignment="center">
182
- <Text value="{$item.name}" />
183
- </HStack>
184
- </property>
185
- </Tree>
186
- </VStack>
187
- <Button id="scrollBtn" testId="scroll-btn" label="Scroll to Bottom Item" onClick="
188
- treeApi.scrollToItem('19');
189
- testState = { actionPerformed: 'scrollToItem', itemId: '19' };
190
- " />
191
- </Fragment>
192
- `);
193
- const tree = yield createTreeDriver("tree");
194
- const scrollButton = yield createButtonDriver("scroll-btn");
195
- // Verify tree is visible and first items are visible
196
- yield (0, fixtures_1.expect)(tree.getByTestId("1:scroll")).toBeVisible();
197
- yield (0, fixtures_1.expect)(tree.getByTestId("2:scroll")).toBeVisible();
198
- // Verify the target item at the bottom is initially NOT visible in the small viewport
199
- // (Due to the small height of 150px and many items, item 19 should be out of view)
200
- yield (0, fixtures_1.expect)(tree.getByTestId("19:scroll")).not.toBeVisible();
201
- // Click scroll to item button
202
- yield scrollButton.click();
203
- // Verify test state confirms action was performed
204
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({
205
- actionPerformed: "scrollToItem",
206
- itemId: "19",
207
- });
208
- // After scrolling, the target item should now be visible
209
- // Note: We can't easily test the exact scroll position in virtualized components,
210
- // but we can verify the API was called successfully
211
- }));
212
- (0, fixtures_1.test)("exposes getSelectedNode method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
213
- const { testStateDriver } = yield initTestBed(`
214
- <Fragment>
215
- <VStack height="400px">
216
- <Tree id="treeApi" testId="tree"
217
- dataFormat="flat"
218
- defaultExpanded="all"
219
- selectedValue="2"
220
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
221
- <property name="itemTemplate">
222
- <HStack testId="{$item.id}:selected" verticalAlignment="center">
223
- <Text value="{$item.name}" />
224
- </HStack>
225
- </property>
226
- </Tree>
227
- </VStack>
228
- <Button id="getSelectedBtn" testId="get-selected-btn" label="Get Selected" onClick="
229
- const selectedNode = treeApi.getSelectedNode();
230
- testState = {
231
- hasSelectedNode: selectedNode !== null,
232
- selectedNodeKey: selectedNode?.key,
233
- selectedNodeName: selectedNode?.displayName
234
- };
235
- " />
236
- </Fragment>
237
- `);
238
- const tree = yield createTreeDriver("tree");
239
- const getSelectedButton = yield createButtonDriver("get-selected-btn");
240
- // Verify tree is visible with selection
241
- yield (0, fixtures_1.expect)(tree.getByTestId("2:selected")).toBeVisible();
242
- // Click get selected node button
243
- yield getSelectedButton.click();
244
- // Verify getSelectedNode returns correct data
245
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({
246
- hasSelectedNode: true,
247
- selectedNodeKey: 2,
248
- selectedNodeName: "Child Item 1.1",
249
- });
250
- }));
251
- (0, fixtures_1.test)("exposes appendNode method with flat data format #1", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
252
- yield initTestBed(`
253
- <Fragment>
254
- <VStack height="400px">
255
- <Tree id="treeApi" testId="tree"
256
- dataFormat="flat"
257
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
258
- <property name="itemTemplate">
259
- <HStack testId="{$item.id}" verticalAlignment="center">
260
- <Text value="{$item.name}" />
261
- </HStack>
262
- </property>
263
- </Tree>
264
- </VStack>
265
- <Button id="appendBtn" testId="append-btn" label="Append Child to Node 1"
266
- onClick="treeApi.appendNode(1, { id: 5, name: 'New Child Item' });" />
267
- <Button id="expandBtn" testId="expand-btn" label="Expand Node 1"
268
- onClick="treeApi.expandNode(1);" />
269
- </Fragment>
270
- `);
271
- const tree = yield createTreeDriver("tree");
272
- const appendButton = yield createButtonDriver("append-btn");
273
- const expandButton = yield createButtonDriver("expand-btn");
274
- // Check initial tree structure - only root nodes visible
275
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
276
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Child hidden (collapsed)
277
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Child hidden (collapsed)
278
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Grandchild hidden (collapsed)
279
- // Append new node using API
280
- yield appendButton.click();
281
- // Expand node 1 to see its children
282
- yield expandButton.click();
283
- // Verify original children are visible
284
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
285
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
286
- // Verify new node is now visible as a child of node 1
287
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New child
288
- }));
289
- (0, fixtures_1.test)("exposes appendNode method with flat data format #2", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
290
- yield initTestBed(`
291
- <Fragment>
292
- <VStack height="400px">
293
- <Tree id="treeApi" testId="tree"
294
- dataFormat="flat"
295
- defaultExpanded="all"
296
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
297
- <property name="itemTemplate">
298
- <HStack testId="{$item.id}" verticalAlignment="center">
299
- <Text value="{$item.name}" />
300
- </HStack>
301
- </property>
302
- </Tree>
303
- </VStack>
304
- <Button id="appendBtn" testId="append-btn" label="Append new root node"
305
- onClick="treeApi.appendNode(null, { id: 5, name: 'New Root Item' });" />
306
- </Fragment>
307
- `);
308
- const tree = yield createTreeDriver("tree");
309
- const appendButton = yield createButtonDriver("append-btn");
310
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
311
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
312
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
313
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
314
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
315
- // Append new root node using API
316
- yield appendButton.click();
317
- // Verify original nodes are still visible
318
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
319
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
320
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
321
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Original grandchild
322
- // Verify new root node is now visible
323
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New root node
324
- }));
325
- (0, fixtures_1.test)("exposes appendNode method with hierarchy data format #1", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
326
- yield initTestBed(`
327
- <Fragment>
328
- <VStack height="400px">
329
- <Tree id="treeApi" testId="tree"
330
- dataFormat="hierarchy"
331
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
332
- <property name="itemTemplate">
333
- <HStack testId="{$item.id}" verticalAlignment="center">
334
- <Text value="{$item.name}" />
335
- </HStack>
336
- </property>
337
- </Tree>
338
- </VStack>
339
- <Button id="appendBtn" testId="append-btn" label="Append Child to Node 1"
340
- onClick="treeApi.appendNode(1, { id: 5, name: 'New Child Item' });" />
341
- <Button id="expandBtn" testId="expand-btn" label="Expand Node 1"
342
- onClick="treeApi.expandNode(1);" />
343
- </Fragment>
344
- `);
345
- const tree = yield createTreeDriver("tree");
346
- const appendButton = yield createButtonDriver("append-btn");
347
- const expandButton = yield createButtonDriver("expand-btn");
348
- // Check initial tree structure - only root nodes visible
349
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
350
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Child hidden (collapsed)
351
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Child hidden (collapsed)
352
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Grandchild hidden (collapsed)
353
- // Append new node using API
354
- yield appendButton.click();
355
- // Expand node 1 to see its children
356
- yield expandButton.click();
357
- // Verify original children are visible
358
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
359
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
360
- // Verify new node is now visible as a child of node 1
361
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New child
362
- }));
363
- (0, fixtures_1.test)("exposes appendNode method with hierarchy data format #2", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
364
- yield initTestBed(`
365
- <Fragment>
366
- <VStack height="400px">
367
- <Tree id="treeApi" testId="tree"
368
- dataFormat="hierarchy"
369
- defaultExpanded="all"
370
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
371
- <property name="itemTemplate">
372
- <HStack testId="{$item.id}" verticalAlignment="center">
373
- <Text value="{$item.name}" />
374
- </HStack>
375
- </property>
376
- </Tree>
377
- </VStack>
378
- <Button id="appendBtn" testId="append-btn" label="Append new root node"
379
- onClick="treeApi.appendNode(null, { id: 5, name: 'New Root Item' });" />
380
- </Fragment>
381
- `);
382
- const tree = yield createTreeDriver("tree");
383
- const appendButton = yield createButtonDriver("append-btn");
384
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
385
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
386
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
387
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
388
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
389
- // Append new root node using API
390
- yield appendButton.click();
391
- // Verify original nodes are still visible
392
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
393
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
394
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
395
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Original grandchild
396
- // Verify new root node is now visible
397
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New root node
398
- }));
399
- (0, fixtures_1.test)("exposes removeNode method with flat data format #1 - remove leaf node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
400
- yield initTestBed(`
401
- <Fragment>
402
- <VStack height="400px">
403
- <Tree id="treeApi" testId="tree"
404
- dataFormat="flat"
405
- defaultExpanded="all"
406
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
407
- <property name="itemTemplate">
408
- <HStack testId="{$item.id}" verticalAlignment="center">
409
- <Text value="{$item.name}" />
410
- </HStack>
411
- </property>
412
- </Tree>
413
- </VStack>
414
- <Button id="removeBtn" testId="remove-btn" label="Remove Leaf Node 4"
415
- onClick="treeApi.removeNode(4);" />
416
- </Fragment>
417
- `);
418
- const tree = yield createTreeDriver("tree");
419
- const removeButton = yield createButtonDriver("remove-btn");
420
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
421
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
422
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
423
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
424
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
425
- // Remove leaf node using API
426
- yield removeButton.click();
427
- // Verify original nodes are still visible except removed node
428
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
429
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
430
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
431
- // Verify removed node is no longer visible
432
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed leaf node
433
- }));
434
- (0, fixtures_1.test)("exposes removeNode method with flat data format #2 - remove parent with children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
435
- yield initTestBed(`
436
- <Fragment>
437
- <VStack height="400px">
438
- <Tree id="treeApi" testId="tree"
439
- dataFormat="flat"
440
- defaultExpanded="all"
441
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
442
- <property name="itemTemplate">
443
- <HStack testId="{$item.id}" verticalAlignment="center">
444
- <Text value="{$item.name}" />
445
- </HStack>
446
- </property>
447
- </Tree>
448
- </VStack>
449
- <Button id="removeBtn" testId="remove-btn" label="Remove Node 2 and its children"
450
- onClick="treeApi.removeNode(2);" />
451
- </Fragment>
452
- `);
453
- const tree = yield createTreeDriver("tree");
454
- const removeButton = yield createButtonDriver("remove-btn");
455
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
456
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
457
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
458
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
459
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
460
- // Remove parent node and its children using API
461
- yield removeButton.click();
462
- // Verify remaining nodes are still visible
463
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
464
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child (not removed)
465
- // Verify removed nodes are no longer visible
466
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Removed parent
467
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed child (descendant of node 2)
468
- }));
469
- (0, fixtures_1.test)("exposes removeNode method with flat data format #3 - remove root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
470
- yield initTestBed(`
471
- <Fragment>
472
- <VStack height="400px">
473
- <Tree id="treeApi" testId="tree"
474
- dataFormat="flat"
475
- defaultExpanded="all"
476
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
477
- <property name="itemTemplate">
478
- <HStack testId="{$item.id}" verticalAlignment="center">
479
- <Text value="{$item.name}" />
480
- </HStack>
481
- </property>
482
- </Tree>
483
- </VStack>
484
- <Button id="removeBtn" testId="remove-btn" label="Remove Root Node 1 and all descendants"
485
- onClick="treeApi.removeNode(1);" />
486
- </Fragment>
487
- `);
488
- const tree = yield createTreeDriver("tree");
489
- const removeButton = yield createButtonDriver("remove-btn");
490
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
491
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
492
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
493
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
494
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
495
- // Remove root node and all descendants using API
496
- yield removeButton.click();
497
- // Verify all nodes are removed since they were all descendants of node 1
498
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).not.toBeVisible(); // Removed root
499
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Removed descendant
500
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Removed descendant
501
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed descendant
502
- }));
503
- (0, fixtures_1.test)("exposes removeChildren method with flat data format #1 - remove children of parent node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
504
- yield initTestBed(`
505
- <Fragment>
506
- <VStack height="400px">
507
- <Tree id="treeApi" testId="tree"
508
- dataFormat="flat"
509
- defaultExpanded="all"
510
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
511
- <property name="itemTemplate">
512
- <HStack testId="{$item.id}" verticalAlignment="center">
513
- <Text value="{$item.name}" />
514
- </HStack>
515
- </property>
516
- </Tree>
517
- </VStack>
518
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Node 1"
519
- onClick="treeApi.removeChildren(1);" />
520
- </Fragment>
521
- `);
522
- const tree = yield createTreeDriver("tree");
523
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
524
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
525
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
526
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
527
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
528
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
529
- // Remove children of node 1 using API
530
- yield removeChildrenButton.click();
531
- // Verify parent node 1 is still visible
532
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Parent node kept
533
- // Verify all children and descendants are removed
534
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Removed child
535
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Removed child
536
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed descendant
537
- }));
538
- (0, fixtures_1.test)("exposes removeChildren method with flat data format #2 - remove children of node with one child", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
539
- yield initTestBed(`
540
- <Fragment>
541
- <VStack height="400px">
542
- <Tree id="treeApi" testId="tree"
543
- dataFormat="flat"
544
- defaultExpanded="all"
545
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
546
- <property name="itemTemplate">
547
- <HStack testId="{$item.id}" verticalAlignment="center">
548
- <Text value="{$item.name}" />
549
- </HStack>
550
- </property>
551
- </Tree>
552
- </VStack>
553
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Node 2"
554
- onClick="treeApi.removeChildren(2);" />
555
- </Fragment>
556
- `);
557
- const tree = yield createTreeDriver("tree");
558
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
559
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
560
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
561
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
562
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
563
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
564
- // Remove children of node 2 using API
565
- yield removeChildrenButton.click();
566
- // Verify nodes 1, 2, and 3 are still visible (not affected)
567
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
568
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Parent node kept
569
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Sibling not affected
570
- // Verify only node 4 (child of node 2) is removed
571
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed child
572
- }));
573
- (0, fixtures_1.test)("exposes removeChildren method with flat data format #3 - remove children of leaf node (no effect)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
574
- yield initTestBed(`
575
- <Fragment>
576
- <VStack height="400px">
577
- <Tree id="treeApi" testId="tree"
578
- dataFormat="flat"
579
- defaultExpanded="all"
580
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
581
- <property name="itemTemplate">
582
- <HStack testId="{$item.id}" verticalAlignment="center">
583
- <Text value="{$item.name}" />
584
- </HStack>
585
- </property>
586
- </Tree>
587
- </VStack>
588
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Leaf Node 4"
589
- onClick="treeApi.removeChildren(4);" />
590
- </Fragment>
591
- `);
592
- const tree = yield createTreeDriver("tree");
593
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
594
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
595
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
596
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
597
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
598
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
599
- // Remove children of leaf node 4 using API (should have no effect)
600
- yield removeChildrenButton.click();
601
- // Verify all nodes are still visible (no changes since node 4 has no children)
602
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
603
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
604
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
605
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Leaf node still visible
606
- }));
607
- (0, fixtures_1.test)("exposes removeNode method with hierarchy data format #1 - remove leaf node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
608
- yield initTestBed(`
609
- <Fragment>
610
- <VStack height="400px">
611
- <Tree id="treeApi" testId="tree"
612
- dataFormat="hierarchy"
613
- defaultExpanded="all"
614
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
615
- <property name="itemTemplate">
616
- <HStack testId="{$item.id}" verticalAlignment="center">
617
- <Text value="{$item.name}" />
618
- </HStack>
619
- </property>
620
- </Tree>
621
- </VStack>
622
- <Button id="removeBtn" testId="remove-btn" label="Remove Leaf Node 4"
623
- onClick="treeApi.removeNode(4);" />
624
- </Fragment>
625
- `);
626
- const tree = yield createTreeDriver("tree");
627
- const removeButton = yield createButtonDriver("remove-btn");
628
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
629
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
630
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
631
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
632
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
633
- // Remove leaf node using API
634
- yield removeButton.click();
635
- // Verify original nodes are still visible except removed node
636
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
637
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child
638
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Original child
639
- // Verify removed node is no longer visible
640
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed leaf node
641
- }));
642
- (0, fixtures_1.test)("exposes removeNode method with hierarchy data format #2 - remove parent with children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
643
- yield initTestBed(`
644
- <Fragment>
645
- <VStack height="400px">
646
- <Tree id="treeApi" testId="tree"
647
- dataFormat="hierarchy"
648
- defaultExpanded="all"
649
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
650
- <property name="itemTemplate">
651
- <HStack testId="{$item.id}" verticalAlignment="center">
652
- <Text value="{$item.name}" />
653
- </HStack>
654
- </property>
655
- </Tree>
656
- </VStack>
657
- <Button id="removeBtn" testId="remove-btn" label="Remove Node 3 and its children"
658
- onClick="treeApi.removeNode(3);" />
659
- </Fragment>
660
- `);
661
- const tree = yield createTreeDriver("tree");
662
- const removeButton = yield createButtonDriver("remove-btn");
663
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
664
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
665
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
666
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
667
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
668
- // Remove parent node and its children using API
669
- yield removeButton.click();
670
- // Verify remaining nodes are still visible
671
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Original root
672
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Original child (not removed)
673
- // Verify removed nodes are no longer visible
674
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Removed parent
675
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed child (descendant of node 3)
676
- }));
677
- (0, fixtures_1.test)("exposes removeNode method with hierarchy data format #3 - remove root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
678
- yield initTestBed(`
679
- <Fragment>
680
- <VStack height="400px">
681
- <Tree id="treeApi" testId="tree"
682
- dataFormat="hierarchy"
683
- defaultExpanded="all"
684
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
685
- <property name="itemTemplate">
686
- <HStack testId="{$item.id}" verticalAlignment="center">
687
- <Text value="{$item.name}" />
688
- </HStack>
689
- </property>
690
- </Tree>
691
- </VStack>
692
- <Button id="removeBtn" testId="remove-btn" label="Remove Root Node 1 and all descendants"
693
- onClick="treeApi.removeNode(1);" />
694
- </Fragment>
695
- `);
696
- const tree = yield createTreeDriver("tree");
697
- const removeButton = yield createButtonDriver("remove-btn");
698
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
699
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
700
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
701
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
702
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
703
- // Remove root node and all descendants using API
704
- yield removeButton.click();
705
- // Verify all nodes are removed since they were all descendants of node 1
706
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).not.toBeVisible(); // Removed root
707
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Removed descendant
708
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Removed descendant
709
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed descendant
710
- }));
711
- (0, fixtures_1.test)("exposes removeChildren method with hierarchy data format #1 - remove children of parent node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
712
- yield initTestBed(`
713
- <Fragment>
714
- <VStack height="400px">
715
- <Tree id="treeApi" testId="tree"
716
- dataFormat="hierarchy"
717
- defaultExpanded="all"
718
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
719
- <property name="itemTemplate">
720
- <HStack testId="{$item.id}" verticalAlignment="center">
721
- <Text value="{$item.name}" />
722
- </HStack>
723
- </property>
724
- </Tree>
725
- </VStack>
726
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Node 1"
727
- onClick="treeApi.removeChildren(1);" />
728
- </Fragment>
729
- `);
730
- const tree = yield createTreeDriver("tree");
731
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
732
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
733
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
734
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
735
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
736
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
737
- // Remove children of node 1 using API
738
- yield removeChildrenButton.click();
739
- // Verify parent node 1 is still visible
740
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Parent node kept
741
- // Verify all children and descendants are removed
742
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).not.toBeVisible(); // Removed child
743
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).not.toBeVisible(); // Removed child
744
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed descendant
745
- }));
746
- (0, fixtures_1.test)("exposes removeChildren method with hierarchy data format #2 - remove children of node with children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
747
- yield initTestBed(`
748
- <Fragment>
749
- <VStack height="400px">
750
- <Tree id="treeApi" testId="tree"
751
- dataFormat="hierarchy"
752
- defaultExpanded="all"
753
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
754
- <property name="itemTemplate">
755
- <HStack testId="{$item.id}" verticalAlignment="center">
756
- <Text value="{$item.name}" />
757
- </HStack>
758
- </property>
759
- </Tree>
760
- </VStack>
761
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Node 3"
762
- onClick="treeApi.removeChildren(3);" />
763
- </Fragment>
764
- `);
765
- const tree = yield createTreeDriver("tree");
766
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
767
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
768
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
769
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
770
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
771
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
772
- // Remove children of node 3 using API
773
- yield removeChildrenButton.click();
774
- // Verify nodes 1, 2, and 3 are still visible (not affected)
775
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
776
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Sibling not affected
777
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Parent node kept
778
- // Verify only node 4 (child of node 3) is removed
779
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).not.toBeVisible(); // Removed child
780
- }));
781
- (0, fixtures_1.test)("exposes removeChildren method with hierarchy data format #3 - remove children of leaf node (no effect)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
782
- yield initTestBed(`
783
- <Fragment>
784
- <VStack height="400px">
785
- <Tree id="treeApi" testId="tree"
786
- dataFormat="hierarchy"
787
- defaultExpanded="all"
788
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
789
- <property name="itemTemplate">
790
- <HStack testId="{$item.id}" verticalAlignment="center">
791
- <Text value="{$item.name}" />
792
- </HStack>
793
- </property>
794
- </Tree>
795
- </VStack>
796
- <Button id="removeChildrenBtn" testId="remove-children-btn" label="Remove children of Leaf Node 2"
797
- onClick="treeApi.removeChildren(2);" />
798
- </Fragment>
799
- `);
800
- const tree = yield createTreeDriver("tree");
801
- const removeChildrenButton = yield createButtonDriver("remove-children-btn");
802
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
803
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
804
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
805
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
806
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
807
- // Remove children of leaf node 2 using API (should have no effect)
808
- yield removeChildrenButton.click();
809
- // Verify all nodes are still visible (no changes since node 2 has no children in hierarchy data)
810
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
811
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Leaf node still visible
812
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Sibling still visible
813
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Child of sibling still visible
814
- }));
815
- (0, fixtures_1.test)("exposes insertNodeBefore method with flat data format #1 - insert before sibling node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
816
- yield initTestBed(`
817
- <Fragment>
818
- <VStack height="400px">
819
- <Tree id="treeApi" testId="tree"
820
- dataFormat="flat"
821
- defaultExpanded="all"
822
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
823
- <property name="itemTemplate">
824
- <HStack testId="{$item.id}" verticalAlignment="center">
825
- <Text value="{$item.name}" />
826
- </HStack>
827
- </property>
828
- </Tree>
829
- </VStack>
830
- <Button id="insertBtn" testId="insert-btn" label="Insert before Node 3"
831
- onClick="treeApi.insertNodeBefore(3, { id: 5, name: 'New Node Before 3' });" />
832
- </Fragment>
833
- `);
834
- const tree = yield createTreeDriver("tree");
835
- const insertButton = yield createButtonDriver("insert-btn");
836
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
837
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
838
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
839
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
840
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
841
- // Insert new node before node 3 using API
842
- yield insertButton.click();
843
- // Verify all original nodes are still visible
844
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
845
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
846
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
847
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
848
- // Verify new node is visible (inserted as sibling of node 3)
849
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
850
- }));
851
- (0, fixtures_1.test)("exposes insertNodeBefore method with flat data format #2 - insert before first child", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
852
- yield initTestBed(`
853
- <Fragment>
854
- <VStack height="400px">
855
- <Tree id="treeApi" testId="tree"
856
- dataFormat="flat"
857
- defaultExpanded="all"
858
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
859
- <property name="itemTemplate">
860
- <HStack testId="{$item.id}" verticalAlignment="center">
861
- <Text value="{$item.name}" />
862
- </HStack>
863
- </property>
864
- </Tree>
865
- </VStack>
866
- <Button id="insertBtn" testId="insert-btn" label="Insert before Node 2"
867
- onClick="treeApi.insertNodeBefore(2, { id: 5, name: 'New First Child' });" />
868
- </Fragment>
869
- `);
870
- const tree = yield createTreeDriver("tree");
871
- const insertButton = yield createButtonDriver("insert-btn");
872
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
873
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
874
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
875
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
876
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
877
- // Insert new node before node 2 using API
878
- yield insertButton.click();
879
- // Verify all original nodes are still visible
880
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
881
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
882
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
883
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
884
- // Verify new node is visible (inserted as first child of node 1)
885
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
886
- }));
887
- (0, fixtures_1.test)("exposes insertNodeBefore method with flat data format #3 - insert before root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
888
- yield initTestBed(`
889
- <Fragment>
890
- <VStack height="400px">
891
- <Tree id="treeApi" testId="tree"
892
- dataFormat="flat"
893
- defaultExpanded="all"
894
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
895
- <property name="itemTemplate">
896
- <HStack testId="{$item.id}" verticalAlignment="center">
897
- <Text value="{$item.name}" />
898
- </HStack>
899
- </property>
900
- </Tree>
901
- </VStack>
902
- <Button id="insertBtn" testId="insert-btn" label="Insert before Root Node 1"
903
- onClick="treeApi.insertNodeBefore(1, { id: 5, name: 'New Root Before 1' });" />
904
- </Fragment>
905
- `);
906
- const tree = yield createTreeDriver("tree");
907
- const insertButton = yield createButtonDriver("insert-btn");
908
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
909
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
910
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
911
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
912
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
913
- // Insert new node before root node 1 using API
914
- yield insertButton.click();
915
- // Verify all original nodes are still visible
916
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
917
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
918
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
919
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
920
- // Verify new node is visible (inserted as new root before node 1)
921
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
922
- }));
923
- (0, fixtures_1.test)("exposes insertNodeBefore method with hierarchy data format #1 - insert before sibling node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
924
- yield initTestBed(`
925
- <Fragment>
926
- <VStack height="400px">
927
- <Tree id="treeApi" testId="tree"
928
- dataFormat="hierarchy"
929
- defaultExpanded="all"
930
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
931
- <property name="itemTemplate">
932
- <HStack testId="{$item.id}" verticalAlignment="center">
933
- <Text value="{$item.name}" />
934
- </HStack>
935
- </property>
936
- </Tree>
937
- </VStack>
938
- <Button id="insertBtn" testId="insert-btn" label="Insert before Node 3"
939
- onClick="treeApi.insertNodeBefore(3, { id: 5, name: 'New Node Before 3' });" />
940
- </Fragment>
941
- `);
942
- const tree = yield createTreeDriver("tree");
943
- const insertButton = yield createButtonDriver("insert-btn");
944
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
945
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
946
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
947
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
948
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
949
- // Insert new node before node 3 using API
950
- yield insertButton.click();
951
- // Verify all original nodes are still visible
952
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
953
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
954
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
955
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
956
- // Verify new node is visible (inserted as sibling of node 3)
957
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
958
- }));
959
- (0, fixtures_1.test)("exposes insertNodeBefore method with hierarchy data format #2 - insert before first child", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
960
- yield initTestBed(`
961
- <Fragment>
962
- <VStack height="400px">
963
- <Tree id="treeApi" testId="tree"
964
- dataFormat="hierarchy"
965
- defaultExpanded="all"
966
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
967
- <property name="itemTemplate">
968
- <HStack testId="{$item.id}" verticalAlignment="center">
969
- <Text value="{$item.name}" />
970
- </HStack>
971
- </property>
972
- </Tree>
973
- </VStack>
974
- <Button id="insertBtn" testId="insert-btn" label="Insert before Node 2"
975
- onClick="treeApi.insertNodeBefore(2, { id: 5, name: 'New First Child' });" />
976
- </Fragment>
977
- `);
978
- const tree = yield createTreeDriver("tree");
979
- const insertButton = yield createButtonDriver("insert-btn");
980
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
981
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
982
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
983
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
984
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
985
- // Insert new node before node 2 using API
986
- yield insertButton.click();
987
- // Verify all original nodes are still visible
988
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
989
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
990
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
991
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
992
- // Verify new node is visible (inserted as first child of node 1)
993
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
994
- }));
995
- (0, fixtures_1.test)("exposes insertNodeBefore method with hierarchy data format #3 - insert before root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
996
- yield initTestBed(`
997
- <Fragment>
998
- <VStack height="400px">
999
- <Tree id="treeApi" testId="tree"
1000
- dataFormat="hierarchy"
1001
- defaultExpanded="all"
1002
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1003
- <property name="itemTemplate">
1004
- <HStack testId="{$item.id}" verticalAlignment="center">
1005
- <Text value="{$item.name}" />
1006
- </HStack>
1007
- </property>
1008
- </Tree>
1009
- </VStack>
1010
- <Button id="insertBtn" testId="insert-btn" label="Insert before Root Node 1"
1011
- onClick="treeApi.insertNodeBefore(1, { id: 5, name: 'New Root Before 1' });" />
1012
- </Fragment>
1013
- `);
1014
- const tree = yield createTreeDriver("tree");
1015
- const insertButton = yield createButtonDriver("insert-btn");
1016
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1017
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1018
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1019
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1020
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1021
- // Insert new node before root node 1 using API
1022
- yield insertButton.click();
1023
- // Verify all original nodes are still visible
1024
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1025
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1026
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1027
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1028
- // Verify new node is visible (inserted as new root before node 1)
1029
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1030
- }));
1031
- (0, fixtures_1.test)("exposes insertNodeAfter method with flat data format #1 - insert after sibling node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1032
- yield initTestBed(`
1033
- <Fragment>
1034
- <VStack height="400px">
1035
- <Tree id="treeApi" testId="tree"
1036
- dataFormat="flat"
1037
- defaultExpanded="all"
1038
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
1039
- <property name="itemTemplate">
1040
- <HStack testId="{$item.id}" verticalAlignment="center">
1041
- <Text value="{$item.name}" />
1042
- </HStack>
1043
- </property>
1044
- </Tree>
1045
- </VStack>
1046
- <Button id="insertBtn" testId="insert-btn" label="Insert after Node 2"
1047
- onClick="treeApi.insertNodeAfter(2, { id: 5, name: 'New Node After 2' });" />
1048
- </Fragment>
1049
- `);
1050
- const tree = yield createTreeDriver("tree");
1051
- const insertButton = yield createButtonDriver("insert-btn");
1052
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1053
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1054
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1055
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1056
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1057
- // Insert new node after node 2 using API
1058
- yield insertButton.click();
1059
- // Verify all original nodes are still visible
1060
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1061
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1062
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1063
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1064
- // Verify new node is visible (inserted as sibling after node 2)
1065
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1066
- }));
1067
- (0, fixtures_1.test)("exposes insertNodeAfter method with flat data format #2 - insert after last child", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1068
- yield initTestBed(`
1069
- <Fragment>
1070
- <VStack height="400px">
1071
- <Tree id="treeApi" testId="tree"
1072
- dataFormat="flat"
1073
- defaultExpanded="all"
1074
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
1075
- <property name="itemTemplate">
1076
- <HStack testId="{$item.id}" verticalAlignment="center">
1077
- <Text value="{$item.name}" />
1078
- </HStack>
1079
- </property>
1080
- </Tree>
1081
- </VStack>
1082
- <Button id="insertBtn" testId="insert-btn" label="Insert after Node 3"
1083
- onClick="treeApi.insertNodeAfter(3, { id: 5, name: 'New Last Child' });" />
1084
- </Fragment>
1085
- `);
1086
- const tree = yield createTreeDriver("tree");
1087
- const insertButton = yield createButtonDriver("insert-btn");
1088
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1089
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1090
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1091
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1092
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1093
- // Insert new node after node 3 using API
1094
- yield insertButton.click();
1095
- // Verify all original nodes are still visible
1096
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1097
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1098
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1099
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1100
- // Verify new node is visible (inserted as last child of node 1)
1101
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1102
- }));
1103
- (0, fixtures_1.test)("exposes insertNodeAfter method with flat data format #3 - insert after root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1104
- yield initTestBed(`
1105
- <Fragment>
1106
- <VStack height="400px">
1107
- <Tree id="treeApi" testId="tree"
1108
- dataFormat="flat"
1109
- defaultExpanded="all"
1110
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
1111
- <property name="itemTemplate">
1112
- <HStack testId="{$item.id}" verticalAlignment="center">
1113
- <Text value="{$item.name}" />
1114
- </HStack>
1115
- </property>
1116
- </Tree>
1117
- </VStack>
1118
- <Button id="insertBtn" testId="insert-btn" label="Insert after Root Node 1"
1119
- onClick="treeApi.insertNodeAfter(1, { id: 5, name: 'New Root After 1' });" />
1120
- </Fragment>
1121
- `);
1122
- const tree = yield createTreeDriver("tree");
1123
- const insertButton = yield createButtonDriver("insert-btn");
1124
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1125
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1126
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1127
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1128
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1129
- // Insert new node after root node 1 using API
1130
- yield insertButton.click();
1131
- // Verify all original nodes are still visible
1132
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1133
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1134
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1135
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1136
- // Verify new node is visible (inserted as new root after node 1)
1137
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1138
- }));
1139
- (0, fixtures_1.test)("exposes insertNodeAfter method with hierarchy data format #1 - insert after sibling node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1140
- yield initTestBed(`
1141
- <Fragment>
1142
- <VStack height="400px">
1143
- <Tree id="treeApi" testId="tree"
1144
- dataFormat="hierarchy"
1145
- defaultExpanded="all"
1146
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1147
- <property name="itemTemplate">
1148
- <HStack testId="{$item.id}" verticalAlignment="center">
1149
- <Text value="{$item.name}" />
1150
- </HStack>
1151
- </property>
1152
- </Tree>
1153
- </VStack>
1154
- <Button id="insertBtn" testId="insert-btn" label="Insert after Node 2"
1155
- onClick="treeApi.insertNodeAfter(2, { id: 5, name: 'New Node After 2' });" />
1156
- </Fragment>
1157
- `);
1158
- const tree = yield createTreeDriver("tree");
1159
- const insertButton = yield createButtonDriver("insert-btn");
1160
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1161
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1162
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1163
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1164
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1165
- // Insert new node after node 2 using API
1166
- yield insertButton.click();
1167
- // Verify all original nodes are still visible
1168
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1169
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1170
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1171
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1172
- // Verify new node is visible (inserted as sibling after node 2)
1173
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1174
- }));
1175
- (0, fixtures_1.test)("exposes insertNodeAfter method with hierarchy data format #2 - insert after last child", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1176
- yield initTestBed(`
1177
- <Fragment>
1178
- <VStack height="400px">
1179
- <Tree id="treeApi" testId="tree"
1180
- dataFormat="hierarchy"
1181
- defaultExpanded="all"
1182
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1183
- <property name="itemTemplate">
1184
- <HStack testId="{$item.id}" verticalAlignment="center">
1185
- <Text value="{$item.name}" />
1186
- </HStack>
1187
- </property>
1188
- </Tree>
1189
- </VStack>
1190
- <Button id="insertBtn" testId="insert-btn" label="Insert after Node 3"
1191
- onClick="treeApi.insertNodeAfter(3, { id: 5, name: 'New Last Child' });" />
1192
- </Fragment>
1193
- `);
1194
- const tree = yield createTreeDriver("tree");
1195
- const insertButton = yield createButtonDriver("insert-btn");
1196
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1197
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1198
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1199
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1200
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1201
- // Insert new node after node 3 using API
1202
- yield insertButton.click();
1203
- // Verify all original nodes are still visible
1204
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1205
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1206
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1207
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1208
- // Verify new node is visible (inserted as last child of node 1)
1209
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1210
- }));
1211
- (0, fixtures_1.test)("exposes insertNodeAfter method with hierarchy data format #3 - insert after root node", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1212
- yield initTestBed(`
1213
- <Fragment>
1214
- <VStack height="400px">
1215
- <Tree id="treeApi" testId="tree"
1216
- dataFormat="hierarchy"
1217
- defaultExpanded="all"
1218
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1219
- <property name="itemTemplate">
1220
- <HStack testId="{$item.id}" verticalAlignment="center">
1221
- <Text value="{$item.name}" />
1222
- </HStack>
1223
- </property>
1224
- </Tree>
1225
- </VStack>
1226
- <Button id="insertBtn" testId="insert-btn" label="Insert after Root Node 1"
1227
- onClick="treeApi.insertNodeAfter(1, { id: 5, name: 'New Root After 1' });" />
1228
- </Fragment>
1229
- `);
1230
- const tree = yield createTreeDriver("tree");
1231
- const insertButton = yield createButtonDriver("insert-btn");
1232
- // Check initial tree structure - all nodes visible due to defaultExpanded="all"
1233
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root visible
1234
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child visible (expanded)
1235
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child visible (expanded)
1236
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild visible (expanded)
1237
- // Insert new node after root node 1 using API
1238
- yield insertButton.click();
1239
- // Verify all original nodes are still visible
1240
- yield (0, fixtures_1.expect)(tree.getByTestId("1")).toBeVisible(); // Root still visible
1241
- yield (0, fixtures_1.expect)(tree.getByTestId("2")).toBeVisible(); // Child still visible
1242
- yield (0, fixtures_1.expect)(tree.getByTestId("3")).toBeVisible(); // Child still visible
1243
- yield (0, fixtures_1.expect)(tree.getByTestId("4")).toBeVisible(); // Grandchild still visible
1244
- // Verify new node is visible (inserted as new root after node 1)
1245
- yield (0, fixtures_1.expect)(tree.getByTestId("5")).toBeVisible(); // New node inserted
1246
- }));
1247
- (0, fixtures_1.test)("exposes scrollIntoView method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1248
- // Create a deeper hierarchy to test scrollIntoView with expansion
1249
- const deepTreeData = [
1250
- { id: 1, name: "Root Item 1", parentId: null },
1251
- { id: 2, name: "Child Item 1.1", parentId: 1 },
1252
- { id: 3, name: "Child Item 1.2", parentId: 1 },
1253
- { id: 4, name: "Grandchild Item 1.1.1", parentId: 2 },
1254
- { id: 5, name: "Great-grandchild Item 1.1.1.1", parentId: 4 },
1255
- { id: 6, name: "Root Item 2", parentId: null },
1256
- { id: 7, name: "Child Item 2.1", parentId: 6 },
1257
- { id: 8, name: "Child Item 2.2", parentId: 6 },
1258
- { id: 9, name: "Grandchild Item 2.1.1", parentId: 7 },
1259
- { id: 10, name: "Root Item 3", parentId: null },
1260
- { id: 11, name: "Child Item 3.1", parentId: 10 },
1261
- { id: 12, name: "Deeply Nested Target", parentId: 11 }, // This requires expansion to be visible
1262
- ];
1263
- const { testStateDriver } = yield initTestBed(`
1264
- <Fragment>
1265
- <VStack height="100px">
1266
- <Tree id="treeApi" testId="tree"
1267
- dataFormat="flat"
1268
- parentIdField="parentId"
1269
- data='{${JSON.stringify(deepTreeData)}}'>
1270
- <property name="itemTemplate">
1271
- <HStack testId="{$item.id}:scrollview" verticalAlignment="center">
1272
- <Text value="{$item.name}" />
1273
- </HStack>
1274
- </property>
1275
- </Tree>
1276
- </VStack>
1277
- <Button id="scrollViewBtn" testId="scroll-view-btn" label="Scroll Into View Deep Target" onClick="
1278
- treeApi.scrollIntoView('12');
1279
- testState = { actionPerformed: 'scrollIntoView', itemId: '12' };
1280
- " />
1281
- </Fragment>
1282
- `);
1283
- const tree = yield createTreeDriver("tree");
1284
- const scrollViewButton = yield createButtonDriver("scroll-view-btn");
1285
- // Initially, tree should be collapsed so the deep target is not visible
1286
- yield (0, fixtures_1.expect)(tree.getByTestId("1:scrollview")).toBeVisible(); // Root visible
1287
- yield (0, fixtures_1.expect)(tree.getByTestId("6:scrollview")).toBeVisible(); // Root visible
1288
- yield (0, fixtures_1.expect)(tree.getByTestId("10:scrollview")).toBeVisible(); // Root visible
1289
- yield (0, fixtures_1.expect)(tree.getByTestId("11:scrollview")).not.toBeVisible(); // Child hidden (collapsed)
1290
- yield (0, fixtures_1.expect)(tree.getByTestId("12:scrollview")).not.toBeVisible(); // Deep target hidden (needs expansion)
1291
- // Click scroll into view button
1292
- yield scrollViewButton.click();
1293
- // Verify test state confirms action was performed
1294
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({
1295
- actionPerformed: "scrollIntoView",
1296
- itemId: "12",
1297
- });
1298
- // Verify that the node and its parents are now expanded (target should be visible)
1299
- yield (0, fixtures_1.expect)(tree.getByTestId("10:scrollview")).toBeVisible(); // Root still visible
1300
- yield (0, fixtures_1.expect)(tree.getByTestId("11:scrollview")).toBeVisible(); // Parent expanded
1301
- yield (0, fixtures_1.expect)(tree.getByTestId("12:scrollview")).toBeVisible(); // Target node now visible
1302
- }));
1303
- (0, fixtures_1.test)("exposes refreshData method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1304
- const { testStateDriver } = yield initTestBed(`
1305
- <Fragment>
1306
- <VStack height="400px">
1307
- <Tree id="treeApi" testId="tree"
1308
- dataFormat="flat"
1309
- defaultExpanded="all"
1310
- data='{${JSON.stringify(testData_1.flatTreeData)}}'>
1311
- <property name="itemTemplate">
1312
- <HStack testId="{$item.id}:refresh" verticalAlignment="center">
1313
- <Text value="{$item.name}" />
1314
- </HStack>
1315
- </property>
1316
- </Tree>
1317
- </VStack>
1318
- <Button id="refreshBtn" testId="refresh-btn" label="Refresh Data" onClick="
1319
- treeApi.refreshData();
1320
- testState = { actionPerformed: 'refreshData' };
1321
- " />
1322
- </Fragment>
1323
- `);
1324
- const tree = yield createTreeDriver("tree");
1325
- const refreshButton = yield createButtonDriver("refresh-btn");
1326
- // Verify tree is visible with original data
1327
- yield (0, fixtures_1.expect)(tree.getByTestId("1:refresh")).toBeVisible();
1328
- yield (0, fixtures_1.expect)(tree.getByTestId("2:refresh")).toBeVisible();
1329
- // Click refresh data button
1330
- yield refreshButton.click();
1331
- // Verify test state confirms action was performed
1332
- // Note: refreshData forces re-processing but with same data, tree should remain the same
1333
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({
1334
- actionPerformed: "refreshData",
1335
- });
1336
- // Tree should still be visible after refresh
1337
- yield (0, fixtures_1.expect)(tree.getByTestId("1:refresh")).toBeVisible();
1338
- yield (0, fixtures_1.expect)(tree.getByTestId("2:refresh")).toBeVisible();
1339
- }));
1340
- // =============================================================================
1341
- // COMPREHENSIVE API METHOD TESTS
1342
- // =============================================================================
1343
- fixtures_1.test.describe("API Method Tests", () => {
1344
- (0, fixtures_1.test)("expandAll() - expands all nodes and makes all children visible", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1345
- const { testStateDriver } = yield initTestBed(`
1346
- <Fragment>
1347
- <VStack height="400px">
1348
- <Tree id="treeApi" testId="tree"
1349
- dataFormat="hierarchy"
1350
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1351
- <property name="itemTemplate">
1352
- <HStack testId="{$item.id}:expandall">
1353
- <Text value="{$item.name}" />
1354
- </HStack>
1355
- </property>
1356
- </Tree>
1357
- </VStack>
1358
- <Button testId="expandall-btn" label="Expand All" onClick="
1359
- treeApi.expandAll();
1360
- testState = { actionPerformed: 'expandAll' };
1361
- " />
1362
- </Fragment>
1363
- `);
1364
- const tree = yield createTreeDriver("tree");
1365
- const expandAllButton = yield createButtonDriver("expandall-btn");
1366
- // BEFORE: Verify tree starts collapsed - only root visible
1367
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expandall")).toBeVisible(); // Root visible
1368
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expandall")).not.toBeVisible(); // Child hidden
1369
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expandall")).not.toBeVisible(); // Child hidden
1370
- // Trigger expandAll API
1371
- yield expandAllButton.click();
1372
- // Wait for async API call to complete
1373
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandAll" });
1374
- // AFTER: Verify all nodes are now visible
1375
- yield (0, fixtures_1.expect)(tree.getByTestId("1:expandall")).toBeVisible(); // Root still visible
1376
- yield (0, fixtures_1.expect)(tree.getByTestId("2:expandall")).toBeVisible(); // Child now visible
1377
- yield (0, fixtures_1.expect)(tree.getByTestId("3:expandall")).toBeVisible(); // Child now visible
1378
- // Note: For hierarchyTreeData, we only have 2 levels, so all should be visible after expandAll
1379
- }));
1380
- (0, fixtures_1.test)("collapseAll() - collapses all nodes and hides all children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1381
- const { testStateDriver } = yield initTestBed(`
1382
- <Fragment>
1383
- <VStack height="400px">
1384
- <Tree id="treeApi" testId="tree"
1385
- dataFormat="hierarchy"
1386
- defaultExpanded="all"
1387
- data='{${JSON.stringify(testData_1.hierarchyTreeData)}}'>
1388
- <property name="itemTemplate">
1389
- <HStack testId="{$item.id}:collapseall">
1390
- <Text value="{$item.name}" />
1391
- </HStack>
1392
- </property>
1393
- </Tree>
1394
- </VStack>
1395
- <Button testId="collapseall-btn" label="Collapse All" onClick="
1396
- treeApi.collapseAll();
1397
- testState = { actionPerformed: 'collapseAll' };
1398
- " />
1399
- </Fragment>
1400
- `);
1401
- const tree = yield createTreeDriver("tree");
1402
- const collapseAllButton = yield createButtonDriver("collapseall-btn");
1403
- // BEFORE: Verify tree starts expanded - all nodes visible
1404
- yield (0, fixtures_1.expect)(tree.getByTestId("1:collapseall")).toBeVisible(); // Root visible
1405
- yield (0, fixtures_1.expect)(tree.getByTestId("2:collapseall")).toBeVisible(); // Child visible
1406
- yield (0, fixtures_1.expect)(tree.getByTestId("3:collapseall")).toBeVisible(); // Child visible
1407
- // Trigger collapseAll API
1408
- yield collapseAllButton.click();
1409
- // Wait for async API call to complete
1410
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "collapseAll" });
1411
- // AFTER: Verify only root nodes are visible, children are hidden
1412
- yield (0, fixtures_1.expect)(tree.getByTestId("1:collapseall")).toBeVisible(); // Root still visible
1413
- yield (0, fixtures_1.expect)(tree.getByTestId("2:collapseall")).not.toBeVisible(); // Child now hidden
1414
- yield (0, fixtures_1.expect)(tree.getByTestId("3:collapseall")).not.toBeVisible(); // Child now hidden
1415
- }));
1416
- (0, fixtures_1.test)("expandAll() - with deep hierarchy (4+ levels)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1417
- // Create a deeper hierarchy for thorough testing
1418
- const deepHierarchyData = [
1419
- {
1420
- id: 1,
1421
- name: "Root Level 0",
1422
- children: [
1423
- {
1424
- id: 2,
1425
- name: "Level 1 - Branch A",
1426
- children: [
1427
- {
1428
- id: 3,
1429
- name: "Level 2 - Branch A.1",
1430
- children: [
1431
- { id: 4, name: "Level 3 - Leaf A.1.1", children: [] },
1432
- { id: 5, name: "Level 3 - Leaf A.1.2", children: [] },
1433
- ],
1434
- },
1435
- { id: 6, name: "Level 2 - Branch A.2", children: [] },
1436
- ],
1437
- },
1438
- {
1439
- id: 7,
1440
- name: "Level 1 - Branch B",
1441
- children: [{ id: 8, name: "Level 2 - Branch B.1", children: [] }],
1442
- },
1443
- ],
1444
- },
1445
- ];
1446
- const { testStateDriver } = yield initTestBed(`
1447
- <Fragment>
1448
- <VStack height="400px">
1449
- <Tree id="treeApi" testId="tree"
1450
- dataFormat="hierarchy"
1451
- data='{${JSON.stringify(deepHierarchyData)}}'>
1452
- <property name="itemTemplate">
1453
- <HStack testId="{$item.id}:deep">
1454
- <Text value="{$item.name}" />
1455
- </HStack>
1456
- </property>
1457
- </Tree>
1458
- </VStack>
1459
- <Button testId="expandall-deep-btn" label="Expand All Deep" onClick="
1460
- treeApi.expandAll();
1461
- testState = { actionPerformed: 'expandAllDeep' };
1462
- " />
1463
- </Fragment>
1464
- `);
1465
- const tree = yield createTreeDriver("tree");
1466
- const expandAllButton = yield createButtonDriver("expandall-deep-btn");
1467
- // BEFORE: Verify tree starts collapsed - only root visible
1468
- yield (0, fixtures_1.expect)(tree.getByTestId("1:deep")).toBeVisible(); // Root (Level 0)
1469
- yield (0, fixtures_1.expect)(tree.getByTestId("2:deep")).not.toBeVisible(); // Level 1 - Branch A (hidden)
1470
- yield (0, fixtures_1.expect)(tree.getByTestId("3:deep")).not.toBeVisible(); // Level 2 - Branch A.1 (hidden)
1471
- yield (0, fixtures_1.expect)(tree.getByTestId("4:deep")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (hidden)
1472
- yield (0, fixtures_1.expect)(tree.getByTestId("7:deep")).not.toBeVisible(); // Level 1 - Branch B (hidden)
1473
- yield (0, fixtures_1.expect)(tree.getByTestId("8:deep")).not.toBeVisible(); // Level 2 - Branch B.1 (hidden)
1474
- // Trigger expandAll API
1475
- yield expandAllButton.click();
1476
- // Wait for async API call to complete
1477
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandAllDeep" });
1478
- // AFTER: Verify ALL levels are now visible (4 levels deep)
1479
- yield (0, fixtures_1.expect)(tree.getByTestId("1:deep")).toBeVisible(); // Root (Level 0) - still visible
1480
- yield (0, fixtures_1.expect)(tree.getByTestId("2:deep")).toBeVisible(); // Level 1 - Branch A (now visible)
1481
- yield (0, fixtures_1.expect)(tree.getByTestId("3:deep")).toBeVisible(); // Level 2 - Branch A.1 (now visible)
1482
- yield (0, fixtures_1.expect)(tree.getByTestId("4:deep")).toBeVisible(); // Level 3 - Leaf A.1.1 (now visible)
1483
- yield (0, fixtures_1.expect)(tree.getByTestId("5:deep")).toBeVisible(); // Level 3 - Leaf A.1.2 (now visible)
1484
- yield (0, fixtures_1.expect)(tree.getByTestId("6:deep")).toBeVisible(); // Level 2 - Branch A.2 (now visible)
1485
- yield (0, fixtures_1.expect)(tree.getByTestId("7:deep")).toBeVisible(); // Level 1 - Branch B (now visible)
1486
- yield (0, fixtures_1.expect)(tree.getByTestId("8:deep")).toBeVisible(); // Level 2 - Branch B.1 (now visible)
1487
- }));
1488
- (0, fixtures_1.test)("collapseAll() - with deep hierarchy (4+ levels)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1489
- // Use the same deep hierarchy data
1490
- const deepHierarchyData = [
1491
- {
1492
- id: 1,
1493
- name: "Root Level 0",
1494
- children: [
1495
- {
1496
- id: 2,
1497
- name: "Level 1 - Branch A",
1498
- children: [
1499
- {
1500
- id: 3,
1501
- name: "Level 2 - Branch A.1",
1502
- children: [
1503
- { id: 4, name: "Level 3 - Leaf A.1.1", children: [] },
1504
- { id: 5, name: "Level 3 - Leaf A.1.2", children: [] },
1505
- ],
1506
- },
1507
- { id: 6, name: "Level 2 - Branch A.2", children: [] },
1508
- ],
1509
- },
1510
- {
1511
- id: 7,
1512
- name: "Level 1 - Branch B",
1513
- children: [{ id: 8, name: "Level 2 - Branch B.1", children: [] }],
1514
- },
1515
- ],
1516
- },
1517
- ];
1518
- const { testStateDriver } = yield initTestBed(`
1519
- <Fragment>
1520
- <VStack height="400px">
1521
- <Tree id="treeApi" testId="tree"
1522
- dataFormat="hierarchy"
1523
- defaultExpanded="all"
1524
- data='{${JSON.stringify(deepHierarchyData)}}'>
1525
- <property name="itemTemplate">
1526
- <HStack testId="{$item.id}:deepcollapse">
1527
- <Text value="{$item.name}" />
1528
- </HStack>
1529
- </property>
1530
- </Tree>
1531
- </VStack>
1532
- <Button testId="collapseall-deep-btn" label="Collapse All Deep" onClick="
1533
- treeApi.collapseAll();
1534
- testState = { actionPerformed: 'collapseAllDeep' };
1535
- " />
1536
- </Fragment>
1537
- `);
1538
- const tree = yield createTreeDriver("tree");
1539
- const collapseAllButton = yield createButtonDriver("collapseall-deep-btn");
1540
- // BEFORE: Verify tree starts fully expanded - all levels visible
1541
- yield (0, fixtures_1.expect)(tree.getByTestId("1:deepcollapse")).toBeVisible(); // Root (Level 0)
1542
- yield (0, fixtures_1.expect)(tree.getByTestId("2:deepcollapse")).toBeVisible(); // Level 1 - Branch A
1543
- yield (0, fixtures_1.expect)(tree.getByTestId("3:deepcollapse")).toBeVisible(); // Level 2 - Branch A.1
1544
- yield (0, fixtures_1.expect)(tree.getByTestId("4:deepcollapse")).toBeVisible(); // Level 3 - Leaf A.1.1
1545
- yield (0, fixtures_1.expect)(tree.getByTestId("5:deepcollapse")).toBeVisible(); // Level 3 - Leaf A.1.2
1546
- yield (0, fixtures_1.expect)(tree.getByTestId("7:deepcollapse")).toBeVisible(); // Level 1 - Branch B
1547
- yield (0, fixtures_1.expect)(tree.getByTestId("8:deepcollapse")).toBeVisible(); // Level 2 - Branch B.1
1548
- // Trigger collapseAll API
1549
- yield collapseAllButton.click();
1550
- // Wait for async API call to complete
1551
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "collapseAllDeep" });
1552
- // AFTER: Verify only root level nodes are visible, all children hidden
1553
- yield (0, fixtures_1.expect)(tree.getByTestId("1:deepcollapse")).toBeVisible(); // Root (Level 0) - still visible
1554
- yield (0, fixtures_1.expect)(tree.getByTestId("2:deepcollapse")).not.toBeVisible(); // Level 1 - Branch A (now hidden)
1555
- yield (0, fixtures_1.expect)(tree.getByTestId("3:deepcollapse")).not.toBeVisible(); // Level 2 - Branch A.1 (now hidden)
1556
- yield (0, fixtures_1.expect)(tree.getByTestId("4:deepcollapse")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (now hidden)
1557
- yield (0, fixtures_1.expect)(tree.getByTestId("5:deepcollapse")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (now hidden)
1558
- yield (0, fixtures_1.expect)(tree.getByTestId("6:deepcollapse")).not.toBeVisible(); // Level 2 - Branch A.2 (now hidden)
1559
- yield (0, fixtures_1.expect)(tree.getByTestId("7:deepcollapse")).not.toBeVisible(); // Level 1 - Branch B (now hidden)
1560
- yield (0, fixtures_1.expect)(tree.getByTestId("8:deepcollapse")).not.toBeVisible(); // Level 2 - Branch B.1 (now hidden)
1561
- }));
1562
- (0, fixtures_1.test)("expandToLevel(level) - expands nodes only to specified depth", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1563
- // Use deep hierarchy to test expandToLevel properly
1564
- const deepHierarchyData = [
1565
- {
1566
- id: 1,
1567
- name: "Root Level 0",
1568
- children: [
1569
- {
1570
- id: 2,
1571
- name: "Level 1 - Branch A",
1572
- children: [
1573
- {
1574
- id: 3,
1575
- name: "Level 2 - Branch A.1",
1576
- children: [
1577
- { id: 4, name: "Level 3 - Leaf A.1.1", children: [] },
1578
- { id: 5, name: "Level 3 - Leaf A.1.2", children: [] },
1579
- ],
1580
- },
1581
- { id: 6, name: "Level 2 - Branch A.2", children: [] },
1582
- ],
1583
- },
1584
- {
1585
- id: 7,
1586
- name: "Level 1 - Branch B",
1587
- children: [{ id: 8, name: "Level 2 - Branch B.1", children: [] }],
1588
- },
1589
- ],
1590
- },
1591
- ];
1592
- const { testStateDriver } = yield initTestBed(`
1593
- <Fragment>
1594
- <VStack height="400px">
1595
- <Tree id="treeApi" testId="tree"
1596
- dataFormat="hierarchy"
1597
- data='{${JSON.stringify(deepHierarchyData)}}'>
1598
- <property name="itemTemplate">
1599
- <HStack testId="{$item.id}:level">
1600
- <Text value="{$item.name}" />
1601
- </HStack>
1602
- </property>
1603
- </Tree>
1604
- </VStack>
1605
- <Button testId="expand-level0-btn" label="Expand to Level 0" onClick="
1606
- treeApi.expandToLevel(0);
1607
- testState = { actionPerformed: 'expandToLevel0' };
1608
- " />
1609
- <Button testId="expand-level1-btn" label="Expand to Level 1" onClick="
1610
- treeApi.expandToLevel(1);
1611
- testState = { actionPerformed: 'expandToLevel1' };
1612
- " />
1613
- <Button testId="expand-level2-btn" label="Expand to Level 2" onClick="
1614
- treeApi.expandToLevel(2);
1615
- testState = { actionPerformed: 'expandToLevel2' };
1616
- " />
1617
- <Button testId="expand-level3-btn" label="Expand to Level 3" onClick="
1618
- treeApi.expandToLevel(3);
1619
- testState = { actionPerformed: 'expandToLevel3' };
1620
- " />
1621
- </Fragment>
1622
- `);
1623
- const tree = yield createTreeDriver("tree");
1624
- const expandLevel0Button = yield createButtonDriver("expand-level0-btn");
1625
- const expandLevel1Button = yield createButtonDriver("expand-level1-btn");
1626
- const expandLevel2Button = yield createButtonDriver("expand-level2-btn");
1627
- const expandLevel3Button = yield createButtonDriver("expand-level3-btn");
1628
- // INITIAL STATE: Verify tree starts collapsed - only root visible
1629
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root)
1630
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 (hidden)
1631
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 (hidden)
1632
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 (hidden)
1633
- // TEST 1: expandToLevel(0) - should show only root level (no expansion)
1634
- yield expandLevel0Button.click();
1635
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandToLevel0" });
1636
- // AFTER expandToLevel(0): Only Level 0 visible
1637
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1638
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - Branch A (hidden)
1639
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).not.toBeVisible(); // Level 1 - Branch B (hidden)
1640
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (hidden)
1641
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (hidden)
1642
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (hidden)
1643
- // TEST 2: expandToLevel(1) - should show Level 0 and Level 1 only
1644
- yield expandLevel1Button.click();
1645
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandToLevel1" });
1646
- // AFTER expandToLevel(1): Level 0 and 1 visible, Level 2+ hidden
1647
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1648
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A (now visible)
1649
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B (now visible)
1650
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (still hidden)
1651
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).not.toBeVisible(); // Level 2 - Branch A.2 (still hidden)
1652
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (still hidden)
1653
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden)
1654
- // TEST 3: expandToLevel(2) - should show Level 0, 1, and 2
1655
- yield expandLevel2Button.click();
1656
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandToLevel2" });
1657
- // AFTER expandToLevel(2): Level 0, 1, and 2 visible, Level 3+ hidden
1658
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1659
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - visible
1660
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - visible
1661
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 (now visible)
1662
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 (now visible)
1663
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 (now visible)
1664
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden)
1665
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (still hidden)
1666
- // TEST 4: expandToLevel(3) - should show all levels (0, 1, 2, and 3)
1667
- yield expandLevel3Button.click();
1668
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandToLevel3" });
1669
- // AFTER expandToLevel(3): All levels visible (complete expansion for this tree)
1670
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1671
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - visible
1672
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - visible
1673
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 - visible
1674
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 - visible
1675
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 - visible
1676
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).toBeVisible(); // Level 3 - Leaf A.1.1 (now visible)
1677
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).toBeVisible(); // Level 3 - Leaf A.1.2 (now visible)
1678
- }));
1679
- (0, fixtures_1.test)("expandNode(nodeId) - expands specific node and shows its children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1680
- // Use deep hierarchy to test individual node expansion
1681
- const deepHierarchyData = [
1682
- {
1683
- id: 1,
1684
- name: "Root Level 0",
1685
- children: [
1686
- {
1687
- id: 2,
1688
- name: "Level 1 - Branch A",
1689
- children: [
1690
- {
1691
- id: 3,
1692
- name: "Level 2 - Branch A.1",
1693
- children: [
1694
- { id: 4, name: "Level 3 - Leaf A.1.1", children: [] },
1695
- { id: 5, name: "Level 3 - Leaf A.1.2", children: [] },
1696
- ],
1697
- },
1698
- { id: 6, name: "Level 2 - Branch A.2", children: [] },
1699
- ],
1700
- },
1701
- {
1702
- id: 7,
1703
- name: "Level 1 - Branch B",
1704
- children: [{ id: 8, name: "Level 2 - Branch B.1", children: [] }],
1705
- },
1706
- ],
1707
- },
1708
- ];
1709
- const { testStateDriver } = yield initTestBed(`
1710
- <Fragment>
1711
- <VStack height="400px">
1712
- <Tree id="treeApi" testId="tree"
1713
- dataFormat="hierarchy"
1714
- data='{${JSON.stringify(deepHierarchyData)}}'>
1715
- <property name="itemTemplate">
1716
- <HStack testId="{$item.id}:level">
1717
- <Text value="{$item.name}" />
1718
- </HStack>
1719
- </property>
1720
- </Tree>
1721
- </VStack>
1722
- <Button testId="expand-root-btn" label="Expand Root" onClick="
1723
- treeApi.expandNode(1);
1724
- testState = { actionPerformed: 'expandRoot' };
1725
- " />
1726
- <Button testId="expand-node2-btn" label="Expand Node 2" onClick="
1727
- treeApi.expandNode(2);
1728
- testState = { actionPerformed: 'expandNode2' };
1729
- " />
1730
- <Button testId="expand-node3-btn" label="Expand Node 3" onClick="
1731
- treeApi.expandNode(3);
1732
- testState = { actionPerformed: 'expandNode3' };
1733
- " />
1734
- <Button testId="expand-node7-btn" label="Expand Node 7" onClick="
1735
- treeApi.expandNode(7);
1736
- testState = { actionPerformed: 'expandNode7' };
1737
- " />
1738
- </Fragment>
1739
- `);
1740
- const tree = yield createTreeDriver("tree");
1741
- const expandRootButton = yield createButtonDriver("expand-root-btn");
1742
- const expandNode2Button = yield createButtonDriver("expand-node2-btn");
1743
- const expandNode3Button = yield createButtonDriver("expand-node3-btn");
1744
- const expandNode7Button = yield createButtonDriver("expand-node7-btn");
1745
- // INITIAL STATE: Verify tree starts collapsed - only root visible
1746
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1747
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - Branch A (hidden)
1748
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (hidden)
1749
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (hidden)
1750
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).not.toBeVisible(); // Level 2 - Branch A.2 (hidden)
1751
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).not.toBeVisible(); // Level 1 - Branch B (hidden)
1752
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (hidden)
1753
- // FIRST: Expand root to make Level 1 nodes visible
1754
- yield expandRootButton.click();
1755
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandRoot" });
1756
- // AFTER expanding root: Level 1 nodes become visible
1757
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1758
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A (now visible)
1759
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B (now visible)
1760
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (still hidden)
1761
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden)
1762
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).not.toBeVisible(); // Level 2 - Branch A.2 (still hidden)
1763
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (still hidden)
1764
- // TEST 1: expandNode(2) - should expand "Level 1 - Branch A" and show its children
1765
- yield expandNode2Button.click();
1766
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandNode2" });
1767
- // AFTER expandNode(2): Node 2's children become visible, others stay hidden
1768
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1769
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A (still visible)
1770
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 (now visible - child of node 2)
1771
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 (now visible - child of node 2)
1772
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden - child of node 3)
1773
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (still hidden - child of node 3)
1774
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B (still visible from root expansion)
1775
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (still hidden - child of node 7)
1776
- // TEST 2: expandNode(3) - should expand "Level 2 - Branch A.1" and show its children
1777
- yield expandNode3Button.click();
1778
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandNode3" });
1779
- // AFTER expandNode(3): Node 3's children become visible, previous expansions remain
1780
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1781
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - still visible
1782
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 - still visible
1783
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 - still visible
1784
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).toBeVisible(); // Level 3 - Leaf A.1.1 (now visible - child of node 3)
1785
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).toBeVisible(); // Level 3 - Leaf A.1.2 (now visible - child of node 3)
1786
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B (still visible from root expansion)
1787
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (still hidden - child of node 7)
1788
- // TEST 3: expandNode(7) - should expand "Level 1 - Branch B" and show its children
1789
- yield expandNode7Button.click();
1790
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandNode7" });
1791
- // AFTER expandNode(7): Node 7's children become visible, all previous expansions remain
1792
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1793
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - still visible
1794
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 - still visible
1795
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 - still visible
1796
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).toBeVisible(); // Level 3 - Leaf A.1.1 - still visible
1797
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).toBeVisible(); // Level 3 - Leaf A.1.2 - still visible
1798
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - still visible
1799
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 (now visible - child of node 7)
1800
- }));
1801
- (0, fixtures_1.test)("expandNode(nodeId) - negative tests for invalid or inaccessible nodes", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1802
- // Use simple hierarchy to test negative cases clearly
1803
- const simpleHierarchyData = [
1804
- {
1805
- id: 1,
1806
- name: "Root Level 0",
1807
- children: [
1808
- {
1809
- id: 2,
1810
- name: "Level 1 - Branch A",
1811
- children: [{ id: 3, name: "Level 2 - Leaf A.1", children: [] }],
1812
- },
1813
- ],
1814
- },
1815
- ];
1816
- const { testStateDriver } = yield initTestBed(`
1817
- <Fragment>
1818
- <VStack height="400px">
1819
- <Tree id="treeApi" testId="tree"
1820
- dataFormat="hierarchy"
1821
- data='{${JSON.stringify(simpleHierarchyData)}}'>
1822
- <property name="itemTemplate">
1823
- <HStack testId="{$item.id}:level">
1824
- <Text value="{$item.name}" />
1825
- </HStack>
1826
- </property>
1827
- </Tree>
1828
- </VStack>
1829
- <Button testId="expand-nonexistent-btn" label="Expand Non-existent Node" onClick="
1830
- treeApi.expandNode(999);
1831
- testState = { actionPerformed: 'expandNonExistent' };
1832
- " />
1833
- <Button testId="expand-leaf-node3-btn" label="Expand Leaf Node 3" onClick="
1834
- treeApi.expandNode(3);
1835
- testState = { actionPerformed: 'expandLeafNode3' };
1836
- " />
1837
- <Button testId="expand-root-btn" label="Expand Root" onClick="
1838
- treeApi.expandNode(1);
1839
- testState = { actionPerformed: 'expandRoot' };
1840
- " />
1841
- <Button testId="expand-node2-btn" label="Expand Node 2" onClick="
1842
- treeApi.expandNode(2);
1843
- testState = { actionPerformed: 'expandNode2' };
1844
- " />
1845
- </Fragment>
1846
- `);
1847
- const tree = yield createTreeDriver("tree");
1848
- const expandNonExistentButton = yield createButtonDriver("expand-nonexistent-btn");
1849
- const expandLeafNode3Button = yield createButtonDriver("expand-leaf-node3-btn");
1850
- const expandRootButton = yield createButtonDriver("expand-root-btn");
1851
- const expandNode2Button = yield createButtonDriver("expand-node2-btn");
1852
- // INITIAL STATE: Only root visible, all children hidden
1853
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - visible
1854
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - hidden
1855
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - hidden
1856
- // NEGATIVE TEST 1: Try to expand non-existent node (ID 999)
1857
- yield expandNonExistentButton.click();
1858
- yield fixtures_1.expect
1859
- .poll(testStateDriver.testState)
1860
- .toEqual({ actionPerformed: "expandNonExistent" });
1861
- // AFTER expandNode(999): Should have no effect, tree state unchanged
1862
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - still visible
1863
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - still hidden
1864
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - still hidden
1865
- // NEGATIVE TEST 2: Try to expand leaf node 3 (which has no children) while it's hidden
1866
- yield expandLeafNode3Button.click();
1867
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandLeafNode3" });
1868
- // AFTER expandNode(3) on hidden leaf: Should have no effect since node is not visible
1869
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - still visible
1870
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - still hidden
1871
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - still hidden
1872
- // Now expand the tree properly to make nodes visible
1873
- yield expandRootButton.click();
1874
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandRoot" });
1875
- yield expandNode2Button.click();
1876
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandNode2" });
1877
- // After proper expansion: All nodes should be visible
1878
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - visible
1879
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - visible
1880
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - visible
1881
- // NEGATIVE TEST 3: Try to expand leaf node 3 again (now that it's visible but still has no children)
1882
- yield expandLeafNode3Button.click();
1883
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "expandLeafNode3" });
1884
- // AFTER expandNode(3) on visible leaf: Should have no visible effect since leaf nodes can't expand
1885
- // Tree state should remain the same - all nodes still visible
1886
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - still visible
1887
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - still visible
1888
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - still visible
1889
- }));
1890
- (0, fixtures_1.test)("collapseNode(nodeId) - collapses specific node and hides its children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1891
- // Use deep hierarchy to test individual node collapse
1892
- const deepHierarchyData = [
1893
- {
1894
- id: 1,
1895
- name: "Root Level 0",
1896
- children: [
1897
- {
1898
- id: 2,
1899
- name: "Level 1 - Branch A",
1900
- children: [
1901
- {
1902
- id: 3,
1903
- name: "Level 2 - Branch A.1",
1904
- children: [
1905
- { id: 4, name: "Level 3 - Leaf A.1.1", children: [] },
1906
- { id: 5, name: "Level 3 - Leaf A.1.2", children: [] },
1907
- ],
1908
- },
1909
- { id: 6, name: "Level 2 - Branch A.2", children: [] },
1910
- ],
1911
- },
1912
- {
1913
- id: 7,
1914
- name: "Level 1 - Branch B",
1915
- children: [{ id: 8, name: "Level 2 - Branch B.1", children: [] }],
1916
- },
1917
- ],
1918
- },
1919
- ];
1920
- const { testStateDriver } = yield initTestBed(`
1921
- <Fragment>
1922
- <VStack height="400px">
1923
- <Tree id="treeApi" testId="tree"
1924
- dataFormat="hierarchy"
1925
- defaultExpanded="all"
1926
- data='{${JSON.stringify(deepHierarchyData)}}'>
1927
- <property name="itemTemplate">
1928
- <HStack testId="{$item.id}:level">
1929
- <Text value="{$item.name}" />
1930
- </HStack>
1931
- </property>
1932
- </Tree>
1933
- </VStack>
1934
- <Button testId="collapse-node3-btn" label="Collapse Node 3" onClick="
1935
- treeApi.collapseNode(3);
1936
- testState = { actionPerformed: 'collapseNode3' };
1937
- " />
1938
- <Button testId="collapse-node2-btn" label="Collapse Node 2" onClick="
1939
- treeApi.collapseNode(2);
1940
- testState = { actionPerformed: 'collapseNode2' };
1941
- " />
1942
- <Button testId="collapse-root-btn" label="Collapse Root" onClick="
1943
- treeApi.collapseNode(1);
1944
- testState = { actionPerformed: 'collapseRoot' };
1945
- " />
1946
- </Fragment>
1947
- `);
1948
- const tree = yield createTreeDriver("tree");
1949
- const collapseNode3Button = yield createButtonDriver("collapse-node3-btn");
1950
- const collapseNode2Button = yield createButtonDriver("collapse-node2-btn");
1951
- const collapseRootButton = yield createButtonDriver("collapse-root-btn");
1952
- // INITIAL STATE: Tree starts fully expanded - all nodes visible
1953
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - visible
1954
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - visible
1955
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 - visible
1956
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).toBeVisible(); // Level 3 - Leaf A.1.1 - visible
1957
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).toBeVisible(); // Level 3 - Leaf A.1.2 - visible
1958
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 - visible
1959
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - visible
1960
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 - visible
1961
- // TEST 1: collapseNode(3) - should collapse "Level 2 - Branch A.1" and hide its children
1962
- yield collapseNode3Button.click();
1963
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "collapseNode3" });
1964
- // AFTER collapseNode(3): Node 3's children become hidden, others remain visible
1965
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1966
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - still visible
1967
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - Branch A.1 - still visible (but collapsed)
1968
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (now hidden - child of collapsed node 3)
1969
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (now hidden - child of collapsed node 3)
1970
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).toBeVisible(); // Level 2 - Branch A.2 - still visible (not child of node 3)
1971
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - still visible
1972
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 - still visible
1973
- // TEST 2: collapseNode(2) - should collapse "Level 1 - Branch A" and hide all its descendants
1974
- yield collapseNode2Button.click();
1975
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "collapseNode2" });
1976
- // AFTER collapseNode(2): Node 2's entire subtree becomes hidden
1977
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible
1978
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - Branch A - still visible (but collapsed)
1979
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (now hidden - child of collapsed node 2)
1980
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden)
1981
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (still hidden)
1982
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).not.toBeVisible(); // Level 2 - Branch A.2 (now hidden - child of collapsed node 2)
1983
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).toBeVisible(); // Level 1 - Branch B - still visible (not descendant of node 2)
1984
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).toBeVisible(); // Level 2 - Branch B.1 - still visible
1985
- // TEST 3: collapseNode(1) - should collapse root and hide all children
1986
- yield collapseRootButton.click();
1987
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({ actionPerformed: "collapseRoot" });
1988
- // AFTER collapseNode(1): All children of root become hidden
1989
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Level 0 (Root) - still visible (but collapsed)
1990
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).not.toBeVisible(); // Level 1 - Branch A (now hidden - child of collapsed root)
1991
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).not.toBeVisible(); // Level 2 - Branch A.1 (still hidden)
1992
- yield (0, fixtures_1.expect)(tree.getByTestId("4:level")).not.toBeVisible(); // Level 3 - Leaf A.1.1 (still hidden)
1993
- yield (0, fixtures_1.expect)(tree.getByTestId("5:level")).not.toBeVisible(); // Level 3 - Leaf A.1.2 (still hidden)
1994
- yield (0, fixtures_1.expect)(tree.getByTestId("6:level")).not.toBeVisible(); // Level 2 - Branch A.2 (still hidden)
1995
- yield (0, fixtures_1.expect)(tree.getByTestId("7:level")).not.toBeVisible(); // Level 1 - Branch B (now hidden - child of collapsed root)
1996
- yield (0, fixtures_1.expect)(tree.getByTestId("8:level")).not.toBeVisible(); // Level 2 - Branch B.1 (now hidden)
1997
- }));
1998
- (0, fixtures_1.test)("collapseNode(nodeId) - negative tests for invalid or leaf nodes", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
1999
- // Use simple hierarchy for negative tests
2000
- const simpleHierarchyData = [
2001
- {
2002
- id: 1,
2003
- name: "Root Level 0",
2004
- children: [
2005
- {
2006
- id: 2,
2007
- name: "Level 1 - Branch A",
2008
- children: [{ id: 3, name: "Level 2 - Leaf A.1", children: [] }],
2009
- },
2010
- ],
2011
- },
2012
- ];
2013
- const { testStateDriver } = yield initTestBed(`
2014
- <Fragment>
2015
- <VStack height="400px">
2016
- <Tree id="treeApi" testId="tree"
2017
- dataFormat="hierarchy"
2018
- defaultExpanded="all"
2019
- data='{${JSON.stringify(simpleHierarchyData)}}'>
2020
- <property name="itemTemplate">
2021
- <HStack testId="{$item.id}:level">
2022
- <Text value="{$item.name}" />
2023
- </HStack>
2024
- </property>
2025
- </Tree>
2026
- </VStack>
2027
- <Button testId="collapse-nonexistent-btn" label="Collapse Non-existent Node" onClick="
2028
- treeApi.collapseNode(999);
2029
- testState = { actionPerformed: 'collapseNonExistent' };
2030
- " />
2031
- <Button testId="collapse-leaf-node3-btn" label="Collapse Leaf Node 3" onClick="
2032
- treeApi.collapseNode(3);
2033
- testState = { actionPerformed: 'collapseLeafNode3' };
2034
- " />
2035
- </Fragment>
2036
- `);
2037
- const tree = yield createTreeDriver("tree");
2038
- const collapseNonExistentButton = yield createButtonDriver("collapse-nonexistent-btn");
2039
- const collapseLeafNode3Button = yield createButtonDriver("collapse-leaf-node3-btn");
2040
- // INITIAL STATE: Tree starts fully expanded
2041
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - visible
2042
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - visible
2043
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - visible
2044
- // NEGATIVE TEST 1: Try to collapse non-existent node (ID 999)
2045
- yield collapseNonExistentButton.click();
2046
- yield fixtures_1.expect
2047
- .poll(testStateDriver.testState)
2048
- .toEqual({ actionPerformed: "collapseNonExistent" });
2049
- // AFTER collapseNode(999): Should have no effect, tree state unchanged
2050
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - still visible
2051
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - still visible
2052
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - still visible
2053
- // NEGATIVE TEST 2: Try to collapse leaf node 3 (which has no children to hide)
2054
- yield collapseLeafNode3Button.click();
2055
- yield fixtures_1.expect
2056
- .poll(testStateDriver.testState)
2057
- .toEqual({ actionPerformed: "collapseLeafNode3" });
2058
- // AFTER collapseNode(3) on leaf: Should have no visible effect since leaf nodes have no children
2059
- // Tree state should remain the same
2060
- yield (0, fixtures_1.expect)(tree.getByTestId("1:level")).toBeVisible(); // Root - still visible
2061
- yield (0, fixtures_1.expect)(tree.getByTestId("2:level")).toBeVisible(); // Level 1 - still visible
2062
- yield (0, fixtures_1.expect)(tree.getByTestId("3:level")).toBeVisible(); // Level 2 - still visible
2063
- }));
2064
- (0, fixtures_1.test)("selectNode(nodeId) - API method executes without error", (_a) => __awaiter(void 0, [_a], void 0, function* ({ page, initTestBed, createTreeDriver, createButtonDriver, }) {
2065
- // Use hierarchy for testing selectNode API
2066
- const selectableHierarchyData = [
2067
- {
2068
- id: 1,
2069
- name: "Root Level 0",
2070
- children: [
2071
- {
2072
- id: 2,
2073
- name: "Level 1 - Branch A",
2074
- children: [{ id: 3, name: "Level 2 - Leaf A.1", children: [] }],
2075
- },
2076
- ],
2077
- },
2078
- ];
2079
- yield initTestBed(`
2080
- <Fragment>
2081
- <VStack height="400px" var.selectedNodeId="{null}">
2082
- <Text testId="selectedId">{selectedNodeId}</Text>
2083
- <Tree id="treeApi" testId="tree"
2084
- dataFormat="hierarchy"
2085
- defaultExpanded="all"
2086
- onSelectionDidChange="node => {selectedNodeId = node.newNode.id}"
2087
- data='{${JSON.stringify(selectableHierarchyData)}}'>
2088
- <property name="itemTemplate">
2089
- <HStack testId="{$item.id}:selection">
2090
- <Text value="{$item.name}" />
2091
- </HStack>
2092
- </property>
2093
- </Tree>
2094
- </VStack>
2095
- <Button testId="select-node2-btn" label="Select Node 2" onClick="treeApi.selectNode(2);" />
2096
- <Button testId="select-nonexistent-btn" label="Select Non-existent Node" onClick="
2097
- treeApi.selectNode('999');
2098
- const selectedNode = treeApi.getSelectedNode();
2099
- testState = { actionPerformed: 'selectNonExistent', selectedNodeData: selectedNode };
2100
- " />
2101
- </Fragment>
2102
- `);
2103
- const tree = yield createTreeDriver("tree");
2104
- const selectNode2Button = yield createButtonDriver("select-node2-btn");
2105
- const selectNonExistentButton = yield createButtonDriver("select-nonexistent-btn");
2106
- const selectedIdText = page.getByTestId("selectedId");
2107
- // INITIAL STATE: No selection
2108
- yield (0, fixtures_1.expect)(selectedIdText).toHaveText("");
2109
- // TEST 1: selectNode('2') API call completes without error
2110
- yield selectNode2Button.click();
2111
- yield (0, fixtures_1.expect)(selectedIdText).toHaveText("2");
2112
- // TEST 2: selectNode('999') with invalid ID completes without error
2113
- yield selectNonExistentButton.click();
2114
- yield (0, fixtures_1.expect)(selectedIdText).toHaveText("");
2115
- }));
2116
- (0, fixtures_1.test)("getSelectedNode() - returns correct selected node data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
2117
- // Simple hierarchy for testing getSelectedNode API
2118
- const simpleHierarchyData = [
2119
- {
2120
- id: 1,
2121
- name: "Root Level 0",
2122
- children: [
2123
- { id: 2, name: "Level 1 - Branch A", children: [] },
2124
- { id: 3, name: "Level 1 - Branch B", children: [] },
2125
- ],
2126
- },
2127
- ];
2128
- const { testStateDriver } = yield initTestBed(`
2129
- <Fragment>
2130
- <VStack height="400px">
2131
- <Tree id="treeApi" testId="tree"
2132
- dataFormat="hierarchy"
2133
- defaultExpanded="all"
2134
- selectedValue="{2}"
2135
- data='{${JSON.stringify(simpleHierarchyData)}}'>
2136
- <property name="itemTemplate">
2137
- <HStack testId="{$item.id}:selection">
2138
- <Text value="{$item.name}" />
2139
- </HStack>
2140
- </property>
2141
- </Tree>
2142
- </VStack>
2143
- <Button testId="get-selected-btn" label="Get Selected Node" onClick="
2144
- const selectedNode = treeApi.getSelectedNode();
2145
- testState = {
2146
- actionPerformed: 'getSelected',
2147
- selectedNodeData: selectedNode,
2148
- selectedKey: selectedNode?.key,
2149
- selectedName: selectedNode?.name
2150
- };
2151
- " />
2152
- <Button testId="get-selected-null-btn" label="Get Selected When None" onClick="
2153
- const selectedNode = treeApi.getSelectedNode();
2154
- testState = {
2155
- actionPerformed: 'getSelectedNull',
2156
- selectedNodeData: selectedNode
2157
- };
2158
- " />
2159
- </Fragment>
2160
- `);
2161
- const getSelectedButton = yield createButtonDriver("get-selected-btn");
2162
- // TEST 1: getSelectedNode() returns correct node when selectedValue is set
2163
- yield getSelectedButton.click();
2164
- yield fixtures_1.expect
2165
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2166
- const state = yield testStateDriver.testState();
2167
- return state.actionPerformed;
2168
- }))
2169
- .toBe("getSelected");
2170
- // Verify getSelectedNode returns the correct node data
2171
- yield fixtures_1.expect
2172
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2173
- const state = yield testStateDriver.testState();
2174
- return state.selectedKey;
2175
- }))
2176
- .toBe(2);
2177
- yield fixtures_1.expect
2178
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2179
- const state = yield testStateDriver.testState();
2180
- return state.selectedName;
2181
- }))
2182
- .toBe("Level 1 - Branch A");
2183
- // Verify the returned node is not null
2184
- yield fixtures_1.expect
2185
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2186
- const state = yield testStateDriver.testState();
2187
- return state.selectedNodeData;
2188
- }))
2189
- .not.toBe(null);
2190
- // TEST 2: Test with no selection (update tree to have no selectedValue)
2191
- const { testStateDriver: testStateDriver2 } = yield initTestBed(`
2192
- <Fragment>
2193
- <VStack height="400px">
2194
- <Tree id="treeApi" testId="tree"
2195
- dataFormat="hierarchy"
2196
- defaultExpanded="all"
2197
- data='{${JSON.stringify(simpleHierarchyData)}}'>
2198
- <property name="itemTemplate">
2199
- <HStack testId="{$item.id}:selection">
2200
- <Text value="{$item.name}" />
2201
- </HStack>
2202
- </property>
2203
- </Tree>
2204
- </VStack>
2205
- <Button testId="get-selected-null-btn" label="Get Selected When None" onClick="
2206
- const selectedNode = treeApi.getSelectedNode();
2207
- testState = {
2208
- actionPerformed: 'getSelectedNull',
2209
- selectedNodeData: selectedNode
2210
- };
2211
- " />
2212
- </Fragment>
2213
- `);
2214
- const getSelectedNullButton = yield createButtonDriver("get-selected-null-btn");
2215
- yield getSelectedNullButton.click();
2216
- yield fixtures_1.expect
2217
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2218
- const state = yield testStateDriver2.testState();
2219
- return state.actionPerformed;
2220
- }))
2221
- .toBe("getSelectedNull");
2222
- // Verify getSelectedNode returns null when no selection
2223
- yield fixtures_1.expect
2224
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2225
- const state = yield testStateDriver2.testState();
2226
- return state.selectedNodeData;
2227
- }))
2228
- .toBe(null);
2229
- }));
2230
- (0, fixtures_1.test)("clearSelection() - API method executes without error", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
2231
- // Simple hierarchy for testing clearSelection API
2232
- const simpleHierarchyData = [
2233
- {
2234
- id: 1,
2235
- name: "Root Level 0",
2236
- children: [{ id: 2, name: "Level 1 - Branch A", children: [] }],
2237
- },
2238
- ];
2239
- const { testStateDriver } = yield initTestBed(`
2240
- <Fragment>
2241
- <VStack height="400px">
2242
- <Tree id="treeApi" testId="tree"
2243
- dataFormat="hierarchy"
2244
- defaultExpanded="all"
2245
- data='{${JSON.stringify(simpleHierarchyData)}}'>
2246
- <property name="itemTemplate">
2247
- <HStack testId="{$item.id}:clear">
2248
- <Text value="{$item.name}" />
2249
- </HStack>
2250
- </property>
2251
- </Tree>
2252
- </VStack>
2253
- <Button testId="clear-selection-btn" label="Clear Selection" onClick="
2254
- try {
2255
- treeApi.clearSelection();
2256
- testState = {
2257
- actionPerformed: 'clearSelection',
2258
- success: true,
2259
- error: null
2260
- };
2261
- } catch (error) {
2262
- testState = {
2263
- actionPerformed: 'clearSelection',
2264
- success: false,
2265
- error: error.message
2266
- };
2267
- }
2268
- " />
2269
- <Button testId="get-selected-btn" label="Get Selected Node" onClick="
2270
- try {
2271
- const selectedNode = treeApi.getSelectedNode();
2272
- testState = {
2273
- actionPerformed: 'getSelected',
2274
- success: true,
2275
- selectedNodeData: selectedNode,
2276
- error: null
2277
- };
2278
- } catch (error) {
2279
- testState = {
2280
- actionPerformed: 'getSelected',
2281
- success: false,
2282
- error: error.message
2283
- };
2284
- }
2285
- " />
2286
- </Fragment>
2287
- `);
2288
- const clearSelectionButton = yield createButtonDriver("clear-selection-btn");
2289
- const getSelectedButton = yield createButtonDriver("get-selected-btn");
2290
- // TEST: clearSelection() API call completes without error
2291
- yield clearSelectionButton.click();
2292
- yield fixtures_1.expect
2293
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2294
- const state = yield testStateDriver.testState();
2295
- return state.actionPerformed;
2296
- }))
2297
- .toBe("clearSelection");
2298
- let currentState = yield testStateDriver.testState();
2299
- (0, fixtures_1.expect)(currentState.success).toBe(true);
2300
- (0, fixtures_1.expect)(currentState.error).toBe(null);
2301
- // TEST: getSelectedNode() API call completes without error
2302
- yield getSelectedButton.click();
2303
- yield fixtures_1.expect
2304
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2305
- const state = yield testStateDriver.testState();
2306
- return state.actionPerformed;
2307
- }))
2308
- .toBe("getSelected");
2309
- currentState = yield testStateDriver.testState();
2310
- (0, fixtures_1.expect)(currentState.success).toBe(true);
2311
- (0, fixtures_1.expect)(currentState.error).toBe(null);
2312
- // When no selection is managed, getSelectedNode() returns null
2313
- (0, fixtures_1.expect)(currentState.selectedNodeData).toBe(null);
2314
- }));
2315
- (0, fixtures_1.test)("getNodeById() - returns correct node data or null for invalid keys", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
2316
- // Rich hierarchy data for testing getNodeById API
2317
- const hierarchyData = [
2318
- {
2319
- id: 1,
2320
- name: "Root Level 0",
2321
- children: [
2322
- {
2323
- id: 2,
2324
- name: "Level 1 - Branch A",
2325
- children: [
2326
- { id: 4, name: "Level 2 - Leaf A1", children: [] },
2327
- { id: 5, name: "Level 2 - Leaf A2", children: [] },
2328
- ],
2329
- },
2330
- { id: 3, name: "Level 1 - Branch B", children: [] },
2331
- ],
2332
- },
2333
- {
2334
- id: 6,
2335
- name: "Root Level 1",
2336
- children: [{ id: 7, name: "Level 1 - Branch C", children: [] }],
2337
- },
2338
- ];
2339
- const { testStateDriver } = yield initTestBed(`
2340
- <Fragment>
2341
- <VStack height="400px">
2342
- <Tree id="treeApi" testId="tree"
2343
- dataFormat="hierarchy"
2344
- defaultExpanded="all"
2345
- data='{${JSON.stringify(hierarchyData)}}'>
2346
- <property name="itemTemplate">
2347
- <HStack testId="{$item.id}:getById">
2348
- <Text value="{$item.name}" />
2349
- </HStack>
2350
- </property>
2351
- </Tree>
2352
- </VStack>
2353
- <Button testId="get-node1-btn" label="Get Node 1" onClick="
2354
- const node = treeApi.getNodeById(1);
2355
- testState = {
2356
- actionPerformed: 'getNode1',
2357
- nodeData: node,
2358
- nodeKey: node?.key,
2359
- nodeName: node?.name
2360
- };
2361
- " />
2362
- <Button testId="get-node4-btn" label="Get Node 4" onClick="
2363
- const node = treeApi.getNodeById(4);
2364
- testState = {
2365
- actionPerformed: 'getNode4',
2366
- nodeData: node,
2367
- nodeKey: node?.key,
2368
- nodeName: node?.name
2369
- };
2370
- " />
2371
- <Button testId="get-node7-btn" label="Get Node 7" onClick="
2372
- const node = treeApi.getNodeById(7);
2373
- testState = {
2374
- actionPerformed: 'getNode7',
2375
- nodeData: node,
2376
- nodeKey: node?.key,
2377
- nodeName: node?.name
2378
- };
2379
- " />
2380
- <Button testId="get-invalid-btn" label="Get Invalid Node" onClick="
2381
- const node = treeApi.getNodeById(999);
2382
- testState = {
2383
- actionPerformed: 'getInvalid',
2384
- nodeData: node,
2385
- nodeExists: node !== null
2386
- };
2387
- " />
2388
- </Fragment>
2389
- `);
2390
- const getNode1Button = yield createButtonDriver("get-node1-btn");
2391
- const getNode4Button = yield createButtonDriver("get-node4-btn");
2392
- const getNode7Button = yield createButtonDriver("get-node7-btn");
2393
- const getInvalidButton = yield createButtonDriver("get-invalid-btn");
2394
- // TEST: getNodeById(1) should return root node data
2395
- yield getNode1Button.click();
2396
- yield fixtures_1.expect
2397
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2398
- const state = yield testStateDriver.testState();
2399
- return state.actionPerformed;
2400
- }))
2401
- .toBe("getNode1");
2402
- let currentState = yield testStateDriver.testState();
2403
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(1);
2404
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Root Level 0");
2405
- (0, fixtures_1.expect)(currentState.nodeData).not.toBe(null);
2406
- // TEST: getNodeById(4) should return deep nested node data
2407
- yield getNode4Button.click();
2408
- yield fixtures_1.expect
2409
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2410
- const state = yield testStateDriver.testState();
2411
- return state.actionPerformed;
2412
- }))
2413
- .toBe("getNode4");
2414
- currentState = yield testStateDriver.testState();
2415
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(4);
2416
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Level 2 - Leaf A1");
2417
- (0, fixtures_1.expect)(currentState.nodeData).not.toBe(null);
2418
- // TEST: getNodeById(7) should return node from second root
2419
- yield getNode7Button.click();
2420
- yield fixtures_1.expect
2421
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2422
- const state = yield testStateDriver.testState();
2423
- return state.actionPerformed;
2424
- }))
2425
- .toBe("getNode7");
2426
- currentState = yield testStateDriver.testState();
2427
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(7);
2428
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Level 1 - Branch C");
2429
- (0, fixtures_1.expect)(currentState.nodeData).not.toBe(null);
2430
- // TEST: getNodeById(999) should return null for non-existent node
2431
- yield getInvalidButton.click();
2432
- yield fixtures_1.expect
2433
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2434
- const state = yield testStateDriver.testState();
2435
- return state.actionPerformed;
2436
- }))
2437
- .toBe("getInvalid");
2438
- currentState = yield testStateDriver.testState();
2439
- (0, fixtures_1.expect)(currentState.nodeExists).toBe(false);
2440
- (0, fixtures_1.expect)(currentState.nodeData).toBe(null);
2441
- }));
2442
- (0, fixtures_1.test)("getNodeById() - can retrieve nodes within collapsed parents", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
2443
- // Hierarchy with nested structure to test collapsed nodes
2444
- const hierarchyData = [
2445
- {
2446
- id: 1,
2447
- name: "Root Level 0",
2448
- children: [
2449
- {
2450
- id: 2,
2451
- name: "Level 1 - Branch A",
2452
- children: [
2453
- { id: 4, name: "Level 2 - Hidden Leaf A1", children: [] },
2454
- { id: 5, name: "Level 2 - Hidden Leaf A2", children: [] },
2455
- ],
2456
- },
2457
- { id: 3, name: "Level 1 - Branch B", children: [] },
2458
- ],
2459
- },
2460
- ];
2461
- const { testStateDriver } = yield initTestBed(`
2462
- <Fragment>
2463
- <VStack height="400px">
2464
- <Tree id="treeApi" testId="tree"
2465
- dataFormat="hierarchy"
2466
- defaultExpanded="all"
2467
- data='{${JSON.stringify(hierarchyData)}}'>
2468
- <property name="itemTemplate">
2469
- <HStack testId="{$item.id}:hidden">
2470
- <Text value="{$item.name}" />
2471
- </HStack>
2472
- </property>
2473
- </Tree>
2474
- </VStack>
2475
- <Button testId="collapse-node2-btn" label="Collapse Node 2" onClick="
2476
- treeApi.collapseNode(2);
2477
- testState = { actionPerformed: 'collapseNode2' };
2478
- " />
2479
- <Button testId="get-visible-node1-btn" label="Get Visible Node 1" onClick="
2480
- const node = treeApi.getNodeById(1);
2481
- testState = {
2482
- actionPerformed: 'getVisibleNode1',
2483
- nodeData: node,
2484
- nodeKey: node?.key,
2485
- nodeName: node?.name,
2486
- nodeExists: node !== null
2487
- };
2488
- " />
2489
- <Button testId="get-hidden-node4-btn" label="Get Hidden Node 4" onClick="
2490
- const node = treeApi.getNodeById(4);
2491
- testState = {
2492
- actionPerformed: 'getHiddenNode4',
2493
- nodeData: node,
2494
- nodeKey: node?.key,
2495
- nodeName: node?.name,
2496
- nodeExists: node !== null
2497
- };
2498
- " />
2499
- <Button testId="get-hidden-node5-btn" label="Get Hidden Node 5" onClick="
2500
- const node = treeApi.getNodeById(5);
2501
- testState = {
2502
- actionPerformed: 'getHiddenNode5',
2503
- nodeData: node,
2504
- nodeKey: node?.key,
2505
- nodeName: node?.name,
2506
- nodeExists: node !== null
2507
- };
2508
- " />
2509
- <Button testId="expand-node2-btn" label="Expand Node 2" onClick="
2510
- treeApi.expandNode(2);
2511
- testState = { actionPerformed: 'expandNode2' };
2512
- " />
2513
- <Button testId="get-now-visible-node4-btn" label="Get Now Visible Node 4" onClick="
2514
- const node = treeApi.getNodeById(4);
2515
- testState = {
2516
- actionPerformed: 'getNowVisibleNode4',
2517
- nodeData: node,
2518
- nodeKey: node?.key,
2519
- nodeName: node?.name,
2520
- nodeExists: node !== null
2521
- };
2522
- " />
2523
- </Fragment>
2524
- `);
2525
- const tree = yield createTreeDriver("tree");
2526
- const collapseNode2Button = yield createButtonDriver("collapse-node2-btn");
2527
- const getVisibleNode1Button = yield createButtonDriver("get-visible-node1-btn");
2528
- const getHiddenNode4Button = yield createButtonDriver("get-hidden-node4-btn");
2529
- const getHiddenNode5Button = yield createButtonDriver("get-hidden-node5-btn");
2530
- const expandNode2Button = yield createButtonDriver("expand-node2-btn");
2531
- const getNowVisibleNode4Button = yield createButtonDriver("get-now-visible-node4-btn");
2532
- // INITIAL STATE: defaultExpanded="all", so all nodes are visible
2533
- // First, verify all nodes are visible initially
2534
- const node1Wrapper = tree.getNodeWrapperByTestId("1:hidden");
2535
- const node2Wrapper = tree.getNodeWrapperByTestId("2:hidden");
2536
- const node4Wrapper = tree.getNodeWrapperByTestId("4:hidden");
2537
- const node5Wrapper = tree.getNodeWrapperByTestId("5:hidden");
2538
- yield (0, fixtures_1.expect)(node1Wrapper).toBeVisible();
2539
- yield (0, fixtures_1.expect)(node2Wrapper).toBeVisible();
2540
- yield (0, fixtures_1.expect)(node4Wrapper).toBeVisible();
2541
- yield (0, fixtures_1.expect)(node5Wrapper).toBeVisible();
2542
- // Now collapse node 2 to hide its children
2543
- yield collapseNode2Button.click();
2544
- yield fixtures_1.expect
2545
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2546
- const state = yield testStateDriver.testState();
2547
- return state.actionPerformed;
2548
- }))
2549
- .toBe("collapseNode2");
2550
- // After collapse, node 2 is still visible but its children (4, 5) are hidden
2551
- yield (0, fixtures_1.expect)(node1Wrapper).toBeVisible();
2552
- yield (0, fixtures_1.expect)(node2Wrapper).toBeVisible();
2553
- yield (0, fixtures_1.expect)(node4Wrapper).not.toBeVisible();
2554
- yield (0, fixtures_1.expect)(node5Wrapper).not.toBeVisible();
2555
- // TEST: getNodeById(1) should work for visible node
2556
- yield getVisibleNode1Button.click();
2557
- yield fixtures_1.expect
2558
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2559
- const state = yield testStateDriver.testState();
2560
- return state.actionPerformed;
2561
- }))
2562
- .toBe("getVisibleNode1");
2563
- let currentState = yield testStateDriver.testState();
2564
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(1);
2565
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Root Level 0");
2566
- (0, fixtures_1.expect)(currentState.nodeExists).toBe(true);
2567
- // TEST: getNodeById(4) should work even though node 4 is hidden (collapsed parent)
2568
- // This tests whether the API can access data model nodes regardless of DOM visibility
2569
- yield getHiddenNode4Button.click();
2570
- yield fixtures_1.expect
2571
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2572
- const state = yield testStateDriver.testState();
2573
- return state.actionPerformed;
2574
- }))
2575
- .toBe("getHiddenNode4");
2576
- currentState = yield testStateDriver.testState();
2577
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(4);
2578
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Level 2 - Hidden Leaf A1");
2579
- (0, fixtures_1.expect)(currentState.nodeExists).toBe(true);
2580
- // TEST: getNodeById(5) should also work for another hidden node
2581
- yield getHiddenNode5Button.click();
2582
- yield fixtures_1.expect
2583
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2584
- const state = yield testStateDriver.testState();
2585
- return state.actionPerformed;
2586
- }))
2587
- .toBe("getHiddenNode5");
2588
- currentState = yield testStateDriver.testState();
2589
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(5);
2590
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Level 2 - Hidden Leaf A2");
2591
- (0, fixtures_1.expect)(currentState.nodeExists).toBe(true);
2592
- // Now expand the parent node to make children visible again
2593
- yield expandNode2Button.click();
2594
- yield fixtures_1.expect
2595
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2596
- const state = yield testStateDriver.testState();
2597
- return state.actionPerformed;
2598
- }))
2599
- .toBe("expandNode2");
2600
- // Verify nodes are now visible in DOM again
2601
- yield (0, fixtures_1.expect)(node4Wrapper).toBeVisible();
2602
- yield (0, fixtures_1.expect)(node5Wrapper).toBeVisible();
2603
- // TEST: getNodeById(4) should still work now that it's visible again
2604
- yield getNowVisibleNode4Button.click();
2605
- yield fixtures_1.expect
2606
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2607
- const state = yield testStateDriver.testState();
2608
- return state.actionPerformed;
2609
- }))
2610
- .toBe("getNowVisibleNode4");
2611
- currentState = yield testStateDriver.testState();
2612
- (0, fixtures_1.expect)(currentState.nodeKey).toBe(4);
2613
- (0, fixtures_1.expect)(currentState.nodeName).toBe("Level 2 - Hidden Leaf A1");
2614
- (0, fixtures_1.expect)(currentState.nodeExists).toBe(true);
2615
- }));
2616
- (0, fixtures_1.test)("getExpandedNodes() - returns array of expanded node keys", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createTreeDriver, createButtonDriver, }) {
2617
- // Hierarchy data for testing expanded nodes tracking
2618
- const hierarchyData = [
2619
- {
2620
- id: 1,
2621
- name: "Root Level 0",
2622
- children: [
2623
- {
2624
- id: 2,
2625
- name: "Level 1 - Branch A",
2626
- children: [
2627
- { id: 4, name: "Level 2 - Leaf A1", children: [] },
2628
- { id: 5, name: "Level 2 - Leaf A2", children: [] },
2629
- ],
2630
- },
2631
- { id: 3, name: "Level 1 - Branch B", children: [] },
2632
- ],
2633
- },
2634
- {
2635
- id: 6,
2636
- name: "Root Level 1",
2637
- children: [{ id: 7, name: "Level 1 - Branch C", children: [] }],
2638
- },
2639
- ];
2640
- const { testStateDriver } = yield initTestBed(`
2641
- <Fragment>
2642
- <VStack height="400px">
2643
- <Tree id="treeApi" testId="tree"
2644
- dataFormat="hierarchy"
2645
- defaultExpanded="none"
2646
- data='{${JSON.stringify(hierarchyData)}}'>
2647
- <property name="itemTemplate">
2648
- <HStack testId="{$item.id}:expand">
2649
- <Text value="{$item.name}" />
2650
- </HStack>
2651
- </property>
2652
- </Tree>
2653
- </VStack>
2654
- <Button testId="get-expanded-initial-btn" label="Get Expanded Initial" onClick="
2655
- const expanded = treeApi.getExpandedNodes();
2656
- testState = {
2657
- actionPerformed: 'getExpandedInitial',
2658
- expandedNodes: expanded,
2659
- expandedCount: expanded.length
2660
- };
2661
- " />
2662
- <Button testId="expand-node1-btn" label="Expand Node 1" onClick="
2663
- treeApi.expandNode(1);
2664
- testState = { actionPerformed: 'expandNode1' };
2665
- " />
2666
- <Button testId="get-expanded-after1-btn" label="Get Expanded After 1" onClick="
2667
- const expanded = treeApi.getExpandedNodes();
2668
- testState = {
2669
- actionPerformed: 'getExpandedAfter1',
2670
- expandedNodes: expanded,
2671
- expandedCount: expanded.length
2672
- };
2673
- " />
2674
- <Button testId="expand-node2-btn" label="Expand Node 2" onClick="
2675
- treeApi.expandNode(2);
2676
- testState = { actionPerformed: 'expandNode2' };
2677
- " />
2678
- <Button testId="get-expanded-after2-btn" label="Get Expanded After 2" onClick="
2679
- const expanded = treeApi.getExpandedNodes();
2680
- testState = {
2681
- actionPerformed: 'getExpandedAfter2',
2682
- expandedNodes: expanded,
2683
- expandedCount: expanded.length
2684
- };
2685
- " />
2686
- <Button testId="expand-all-btn" label="Expand All" onClick="
2687
- treeApi.expandAll();
2688
- testState = { actionPerformed: 'expandAll' };
2689
- " />
2690
- <Button testId="get-expanded-all-btn" label="Get Expanded All" onClick="
2691
- const expanded = treeApi.getExpandedNodes();
2692
- testState = {
2693
- actionPerformed: 'getExpandedAll',
2694
- expandedNodes: expanded,
2695
- expandedCount: expanded.length
2696
- };
2697
- " />
2698
- <Button testId="collapse-node2-btn" label="Collapse Node 2" onClick="
2699
- treeApi.collapseNode(2);
2700
- testState = { actionPerformed: 'collapseNode2' };
2701
- " />
2702
- <Button testId="get-expanded-after-collapse-btn" label="Get Expanded After Collapse" onClick="
2703
- const expanded = treeApi.getExpandedNodes();
2704
- testState = {
2705
- actionPerformed: 'getExpandedAfterCollapse',
2706
- expandedNodes: expanded,
2707
- expandedCount: expanded.length
2708
- };
2709
- " />
2710
- </Fragment>
2711
- `);
2712
- const getExpandedInitialButton = yield createButtonDriver("get-expanded-initial-btn");
2713
- const expandNode1Button = yield createButtonDriver("expand-node1-btn");
2714
- const getExpandedAfter1Button = yield createButtonDriver("get-expanded-after1-btn");
2715
- const expandNode2Button = yield createButtonDriver("expand-node2-btn");
2716
- const getExpandedAfter2Button = yield createButtonDriver("get-expanded-after2-btn");
2717
- const expandAllButton = yield createButtonDriver("expand-all-btn");
2718
- const getExpandedAllButton = yield createButtonDriver("get-expanded-all-btn");
2719
- const collapseNode2Button = yield createButtonDriver("collapse-node2-btn");
2720
- const getExpandedAfterCollapseButton = yield createButtonDriver("get-expanded-after-collapse-btn");
2721
- // INITIAL STATE: defaultExpanded="none", so no nodes should be expanded
2722
- yield getExpandedInitialButton.click();
2723
- yield fixtures_1.expect
2724
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2725
- const state = yield testStateDriver.testState();
2726
- return state.actionPerformed;
2727
- }))
2728
- .toBe("getExpandedInitial");
2729
- let currentState = yield testStateDriver.testState();
2730
- (0, fixtures_1.expect)(currentState.expandedCount).toBe(0);
2731
- (0, fixtures_1.expect)(currentState.expandedNodes).toEqual([]);
2732
- // EXPAND NODE 1: Should add node 1 to expanded list
2733
- yield expandNode1Button.click();
2734
- yield fixtures_1.expect
2735
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2736
- const state = yield testStateDriver.testState();
2737
- return state.actionPerformed;
2738
- }))
2739
- .toBe("expandNode1");
2740
- yield getExpandedAfter1Button.click();
2741
- yield fixtures_1.expect
2742
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2743
- const state = yield testStateDriver.testState();
2744
- return state.actionPerformed;
2745
- }))
2746
- .toBe("getExpandedAfter1");
2747
- currentState = yield testStateDriver.testState();
2748
- (0, fixtures_1.expect)(currentState.expandedCount).toBe(1);
2749
- (0, fixtures_1.expect)(currentState.expandedNodes).toEqual([1]);
2750
- // EXPAND NODE 2: Should add node 2 to expanded list (alongside node 1)
2751
- yield expandNode2Button.click();
2752
- yield fixtures_1.expect
2753
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2754
- const state = yield testStateDriver.testState();
2755
- return state.actionPerformed;
2756
- }))
2757
- .toBe("expandNode2");
2758
- yield getExpandedAfter2Button.click();
2759
- yield fixtures_1.expect
2760
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2761
- const state = yield testStateDriver.testState();
2762
- return state.actionPerformed;
2763
- }))
2764
- .toBe("getExpandedAfter2");
2765
- currentState = yield testStateDriver.testState();
2766
- (0, fixtures_1.expect)(currentState.expandedCount).toBe(2);
2767
- (0, fixtures_1.expect)(currentState.expandedNodes).toEqual(fixtures_1.expect.arrayContaining([1, 2]));
2768
- // EXPAND ALL: Should expand all nodes with children
2769
- yield expandAllButton.click();
2770
- yield fixtures_1.expect
2771
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2772
- const state = yield testStateDriver.testState();
2773
- return state.actionPerformed;
2774
- }))
2775
- .toBe("expandAll");
2776
- yield getExpandedAllButton.click();
2777
- yield fixtures_1.expect
2778
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2779
- const state = yield testStateDriver.testState();
2780
- return state.actionPerformed;
2781
- }))
2782
- .toBe("getExpandedAll");
2783
- currentState = yield testStateDriver.testState();
2784
- // After expandAll, ALL nodes are added to the expanded list
2785
- // This includes leaf nodes, which is the current implementation behavior
2786
- (0, fixtures_1.expect)(currentState.expandedCount).toBe(7);
2787
- (0, fixtures_1.expect)(currentState.expandedNodes).toEqual(fixtures_1.expect.arrayContaining([1, 2, 3, 4, 5, 6, 7]));
2788
- // COLLAPSE NODE 2: Should remove node 2 from expanded list
2789
- yield collapseNode2Button.click();
2790
- yield fixtures_1.expect
2791
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2792
- const state = yield testStateDriver.testState();
2793
- return state.actionPerformed;
2794
- }))
2795
- .toBe("collapseNode2");
2796
- yield getExpandedAfterCollapseButton.click();
2797
- yield fixtures_1.expect
2798
- .poll(() => __awaiter(void 0, void 0, void 0, function* () {
2799
- const state = yield testStateDriver.testState();
2800
- return state.actionPerformed;
2801
- }))
2802
- .toBe("getExpandedAfterCollapse");
2803
- currentState = yield testStateDriver.testState();
2804
- (0, fixtures_1.expect)(currentState.expandedCount).toBe(4);
2805
- // When node 2 is collapsed, its descendants (4, 5) are also removed from expanded list
2806
- (0, fixtures_1.expect)(currentState.expandedNodes).toEqual(fixtures_1.expect.arrayContaining([1, 3, 6, 7]));
2807
- (0, fixtures_1.expect)(currentState.expandedNodes).not.toEqual(fixtures_1.expect.arrayContaining([2, 4, 5]));
2808
- }));
2809
- });
2810
- });
2811
- // =============================================================================
2812
- // DYNAMIC FIELD SUPPORT TESTS
2813
- // =============================================================================
2814
- fixtures_1.test.describe("Dynamic Field Support", () => {
2815
- (0, fixtures_1.test)("should display expand/collapse icons for dynamic nodes even without children", (_a) => __awaiter(void 0, [_a], void 0, function* ({ page, initTestBed, createTreeDriver, }) {
2816
- yield initTestBed(`
2817
- <VStack height="400px">
2818
- <Tree testId="tree"
2819
- dataFormat="hierarchy"
2820
- data='{${JSON.stringify(testData_1.dynamicTreeData)}}'
2821
- defaultExpanded="none">
2822
- <property name="itemTemplate">
2823
- <HStack testId="{$item.id}:{$item.depth}">
2824
- <Text value="{$item.name}" />
2825
- </HStack>
2826
- </property>
2827
- </Tree>
2828
- </VStack>
2829
- `);
2830
- const tree = yield createTreeDriver("tree");
2831
- yield (0, fixtures_1.expect)(tree.component).toBeVisible();
2832
- // --- We see an extra icon because Node 3 is dynamic ---
2833
- yield (0, fixtures_1.expect)(tree.getIconsByName("chevronright")).toHaveCount(2);
2834
- // Verify tree items are rendered (only root level nodes should be visible initially)
2835
- yield (0, fixtures_1.expect)(page.getByTestId("1:0")).toBeVisible();
2836
- yield (0, fixtures_1.expect)(page.getByTestId("3:0")).toBeVisible();
2837
- yield (0, fixtures_1.expect)(page.getByTestId("4:0")).toBeVisible();
2838
- // Node 2 should not be visible initially as parent is collapsed
2839
- yield (0, fixtures_1.expect)(page.getByTestId("2:1")).not.toBeVisible();
2840
- }));
2841
- (0, fixtures_1.test)("should use custom dynamicField name", (_a) => __awaiter(void 0, [_a], void 0, function* ({ page, initTestBed, createTreeDriver }) {
2842
- yield initTestBed(`
2843
- <VStack height="400px">
2844
- <Tree testId="tree"
2845
- dataFormat="hierarchy"
2846
- dynamicField="canLoadMore"
2847
- data='{${JSON.stringify(testData_1.customDynamicTreeData)}}'
2848
- defaultExpanded="none">
2849
- <property name="itemTemplate">
2850
- <HStack testId="{$item.id}:{$item.depth}">
2851
- <Text value="{$item.name}" />
2852
- </HStack>
2853
- </property>
2854
- </Tree>
2855
- </VStack>
2856
- `);
2857
- const tree = yield createTreeDriver("tree");
2858
- yield (0, fixtures_1.expect)(tree.component).toBeVisible();
2859
- // --- We see an extra icon because Node 3 is dynamic ---
2860
- yield (0, fixtures_1.expect)(tree.getIconsByName("chevronright")).toHaveCount(2);
2861
- // Verify tree items are rendered (only root level nodes should be visible initially)
2862
- yield (0, fixtures_1.expect)(page.getByTestId("1:0")).toBeVisible();
2863
- yield (0, fixtures_1.expect)(page.getByTestId("3:0")).toBeVisible();
2864
- yield (0, fixtures_1.expect)(page.getByTestId("4:0")).toBeVisible();
2865
- // Node 2 should not be visible initially as parent is collapsed
2866
- yield (0, fixtures_1.expect)(page.getByTestId("2:1")).not.toBeVisible();
2867
- }));
2868
- (0, fixtures_1.test)("should work with flat data format and dynamic field", (_a) => __awaiter(void 0, [_a], void 0, function* ({ page, initTestBed, createTreeDriver, }) {
2869
- yield initTestBed(`
2870
- <VStack height="400px">
2871
- <Tree testId="tree"
2872
- dataFormat="flat"
2873
- data='{${JSON.stringify(testData_1.dynamicFlatData)}}'
2874
- defaultExpanded="none">
2875
- <property name="itemTemplate">
2876
- <HStack testId="{$item.id}:{$item.depth}">
2877
- <Text value="{$item.name}" />
2878
- </HStack>
2879
- </property>
2880
- </Tree>
2881
- </VStack>
2882
- `);
2883
- const tree = yield createTreeDriver("tree");
2884
- yield (0, fixtures_1.expect)(tree.component).toBeVisible();
2885
- // --- We see an extra icon because Node 3 is dynamic ---
2886
- yield (0, fixtures_1.expect)(tree.getIconsByName("chevronright")).toHaveCount(2);
2887
- // Verify tree items are rendered (only root level nodes should be visible initially)
2888
- yield (0, fixtures_1.expect)(page.getByTestId("1:0")).toBeVisible();
2889
- yield (0, fixtures_1.expect)(page.getByTestId("3:0")).toBeVisible();
2890
- yield (0, fixtures_1.expect)(page.getByTestId("4:0")).toBeVisible();
2891
- // Node 2 should not be visible initially as parent is collapsed
2892
- yield (0, fixtures_1.expect)(page.getByTestId("2:1")).not.toBeVisible();
2893
- }));
2894
- });