xmlui 0.11.4 → 0.11.7

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 (690) 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-Cq0EMm3L.js → index-CwYK6iB4.js} +2502 -2675
  5. package/dist/lib/index.css +1 -1
  6. package/dist/lib/{initMock-DCigV4Zh.js → initMock-CvmWAkGr.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-BiolWMg9.js → metadata-utils-2bsMr4Gd.js} +58 -26
  10. package/dist/lib/{server-common-DyCHOk-z.js → server-common-DI3W4cob.js} +6297 -5930
  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-DHf9tQF7.js → transform-CQ_6R-43.js} +159 -126
  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-CHN3mADy.js → xmlui-parser-CW8YmGjO.js} +10 -11
  18. package/dist/lib/xmlui-parser.js +2 -2
  19. package/dist/lib/{xmlui-serializer-CYNSHAlP.js → xmlui-serializer-CeCcgdVR.js} +19 -19
  20. package/dist/lib/xmlui.d.ts +122 -1
  21. package/dist/lib/xmlui.js +8 -3
  22. package/dist/metadata/{apiInterceptorWorker-Dql7QGw2.js → apiInterceptorWorker-Wgm2_zjg.js} +124 -149
  23. package/dist/metadata/{collectedComponentMetadata-CLaDZhmc.js → collectedComponentMetadata-CSFNLstl.js} +3169 -3302
  24. package/dist/metadata/{initMock-Buqah4JF.js → initMock-CyTd5aE8.js} +19 -22
  25. package/dist/metadata/xmlui-metadata.css +1 -0
  26. package/dist/metadata/xmlui-metadata.js +1 -1
  27. package/dist/metadata/xmlui-metadata.umd.cjs +3 -3
  28. package/dist/standalone/xmlui-standalone.es.d.ts +171 -2
  29. package/dist/standalone/xmlui-standalone.umd.js +36 -37
  30. package/package.json +20 -50
  31. package/dist/lib/vite-xmlui-plugin/index.js +0 -13985
  32. package/dist/lib/vite-xmlui-plugin/package.json +0 -3
  33. package/dist/metadata/style.css +0 -1
  34. package/dist/scripts/bin/bootstrap.cjs +0 -4
  35. package/dist/scripts/bin/build-lib.js +0 -126
  36. package/dist/scripts/bin/build.js +0 -266
  37. package/dist/scripts/bin/index.js +0 -167
  38. package/dist/scripts/bin/preview.js +0 -44
  39. package/dist/scripts/bin/start.js +0 -52
  40. package/dist/scripts/bin/vite-xmlui-plugin.js +0 -109
  41. package/dist/scripts/bin/viteConfig.js +0 -144
  42. package/dist/scripts/package.json +0 -285
  43. package/dist/scripts/src/abstractions/ActionDefs.js +0 -2
  44. package/dist/scripts/src/abstractions/AppContextDefs.js +0 -4
  45. package/dist/scripts/src/abstractions/ComponentDefs.js +0 -2
  46. package/dist/scripts/src/abstractions/ContainerDefs.js +0 -2
  47. package/dist/scripts/src/abstractions/ExtensionDefs.js +0 -2
  48. package/dist/scripts/src/abstractions/FunctionDefs.js +0 -2
  49. package/dist/scripts/src/abstractions/RendererDefs.js +0 -2
  50. package/dist/scripts/src/abstractions/ThemingDefs.js +0 -2
  51. package/dist/scripts/src/abstractions/scripting/BlockScope.js +0 -2
  52. package/dist/scripts/src/abstractions/scripting/Compilation.js +0 -2
  53. package/dist/scripts/src/abstractions/scripting/LogicalThread.js +0 -2
  54. package/dist/scripts/src/abstractions/scripting/LoopScope.js +0 -2
  55. package/dist/scripts/src/abstractions/scripting/ScriptParserError.js +0 -2
  56. package/dist/scripts/src/abstractions/scripting/Token.js +0 -2
  57. package/dist/scripts/src/abstractions/scripting/TryScope.js +0 -2
  58. package/dist/scripts/src/abstractions/scripting/TryScopeExp.js +0 -2
  59. package/dist/scripts/src/abstractions/scripting/modules.js +0 -2
  60. package/dist/scripts/src/components/APICall/APICall.js +0 -130
  61. package/dist/scripts/src/components/APICall/APICall.spec.js +0 -910
  62. package/dist/scripts/src/components/APICall/APICallNative.js +0 -36
  63. package/dist/scripts/src/components/Accordion/Accordion.js +0 -97
  64. package/dist/scripts/src/components/Accordion/Accordion.spec.js +0 -969
  65. package/dist/scripts/src/components/Accordion/AccordionContext.js +0 -20
  66. package/dist/scripts/src/components/Accordion/AccordionItem.js +0 -35
  67. package/dist/scripts/src/components/Accordion/AccordionItemNative.js +0 -95
  68. package/dist/scripts/src/components/Accordion/AccordionNative.js +0 -141
  69. package/dist/scripts/src/components/Animation/AnimationNative.js +0 -263
  70. package/dist/scripts/src/components/App/App.js +0 -581
  71. package/dist/scripts/src/components/App/App.spec.js +0 -331
  72. package/dist/scripts/src/components/App/AppLayoutContext.js +0 -49
  73. package/dist/scripts/src/components/App/AppNative.js +0 -308
  74. package/dist/scripts/src/components/App/AppStateContext.js +0 -9
  75. package/dist/scripts/src/components/App/IndexerContext.js +0 -44
  76. package/dist/scripts/src/components/App/LinkInfoContext.js +0 -9
  77. package/dist/scripts/src/components/App/SearchContext.js +0 -35
  78. package/dist/scripts/src/components/App/Sheet.js +0 -99
  79. package/dist/scripts/src/components/AppHeader/AppHeader.js +0 -58
  80. package/dist/scripts/src/components/AppHeader/AppHeader.spec.js +0 -169
  81. package/dist/scripts/src/components/AppHeader/AppHeaderNative.js +0 -72
  82. package/dist/scripts/src/components/AppState/AppState.js +0 -75
  83. package/dist/scripts/src/components/AppState/AppState.spec.js +0 -292
  84. package/dist/scripts/src/components/AppState/AppStateNative.js +0 -51
  85. package/dist/scripts/src/components/AutoComplete/AutoComplete.js +0 -109
  86. package/dist/scripts/src/components/AutoComplete/AutoComplete.spec.js +0 -546
  87. package/dist/scripts/src/components/AutoComplete/AutoCompleteContext.js +0 -19
  88. package/dist/scripts/src/components/AutoComplete/AutoCompleteNative.js +0 -498
  89. package/dist/scripts/src/components/Avatar/Avatar.js +0 -55
  90. package/dist/scripts/src/components/Avatar/Avatar.spec.js +0 -1514
  91. package/dist/scripts/src/components/Avatar/AvatarNative.js +0 -58
  92. package/dist/scripts/src/components/Backdrop/Backdrop.js +0 -40
  93. package/dist/scripts/src/components/Backdrop/Backdrop.spec.js +0 -131
  94. package/dist/scripts/src/components/Backdrop/BackdropNative.js +0 -25
  95. package/dist/scripts/src/components/Badge/Badge.js +0 -81
  96. package/dist/scripts/src/components/Badge/Badge.spec.js +0 -2214
  97. package/dist/scripts/src/components/Badge/BadgeNative.js +0 -46
  98. package/dist/scripts/src/components/Bookmark/Bookmark.js +0 -48
  99. package/dist/scripts/src/components/Bookmark/Bookmark.spec.js +0 -230
  100. package/dist/scripts/src/components/Bookmark/BookmarkNative.js +0 -55
  101. package/dist/scripts/src/components/Breakout/Breakout.js +0 -17
  102. package/dist/scripts/src/components/Breakout/Breakout.spec.js +0 -56
  103. package/dist/scripts/src/components/Breakout/BreakoutNative.js +0 -24
  104. package/dist/scripts/src/components/Button/Button-style.spec.js +0 -274
  105. package/dist/scripts/src/components/Button/Button.js +0 -171
  106. package/dist/scripts/src/components/Button/Button.spec.js +0 -425
  107. package/dist/scripts/src/components/Button/ButtonNative.js +0 -109
  108. package/dist/scripts/src/components/Card/Card.js +0 -89
  109. package/dist/scripts/src/components/Card/Card.spec.js +0 -150
  110. package/dist/scripts/src/components/Card/CardNative.js +0 -41
  111. package/dist/scripts/src/components/Carousel/Carousel.js +0 -133
  112. package/dist/scripts/src/components/Carousel/Carousel.spec.js +0 -557
  113. package/dist/scripts/src/components/Carousel/CarouselContext.js +0 -57
  114. package/dist/scripts/src/components/Carousel/CarouselItem.js +0 -15
  115. package/dist/scripts/src/components/Carousel/CarouselItemNative.js +0 -40
  116. package/dist/scripts/src/components/Carousel/CarouselNative.js +0 -195
  117. package/dist/scripts/src/components/ChangeListener/ChangeListener.js +0 -34
  118. package/dist/scripts/src/components/ChangeListener/ChangeListener.spec.js +0 -169
  119. package/dist/scripts/src/components/ChangeListener/ChangeListenerNative.js +0 -30
  120. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.js +0 -92
  121. package/dist/scripts/src/components/Charts/AreaChart/AreaChart.spec.js +0 -999
  122. package/dist/scripts/src/components/Charts/AreaChart/AreaChartNative.js +0 -127
  123. package/dist/scripts/src/components/Charts/BarChart/BarChart.js +0 -97
  124. package/dist/scripts/src/components/Charts/BarChart/BarChart.spec.js +0 -597
  125. package/dist/scripts/src/components/Charts/BarChart/BarChartNative.js +0 -317
  126. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.js +0 -60
  127. package/dist/scripts/src/components/Charts/DonutChart/DonutChart.spec.js +0 -608
  128. package/dist/scripts/src/components/Charts/LabelList/LabelList.js +0 -41
  129. package/dist/scripts/src/components/Charts/LabelList/LabelList.spec.js +0 -539
  130. package/dist/scripts/src/components/Charts/LabelList/LabelListNative.js +0 -25
  131. package/dist/scripts/src/components/Charts/Legend/Legend.js +0 -33
  132. package/dist/scripts/src/components/Charts/Legend/Legend.spec.js +0 -558
  133. package/dist/scripts/src/components/Charts/Legend/LegendNative.js +0 -64
  134. package/dist/scripts/src/components/Charts/LineChart/LineChart.js +0 -94
  135. package/dist/scripts/src/components/Charts/LineChart/LineChart.spec.js +0 -450
  136. package/dist/scripts/src/components/Charts/LineChart/LineChartNative.js +0 -192
  137. package/dist/scripts/src/components/Charts/PieChart/PieChart.js +0 -64
  138. package/dist/scripts/src/components/Charts/PieChart/PieChart.spec.js +0 -584
  139. package/dist/scripts/src/components/Charts/PieChart/PieChartNative.js +0 -167
  140. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.js +0 -92
  141. package/dist/scripts/src/components/Charts/RadarChart/RadarChart.spec.js +0 -571
  142. package/dist/scripts/src/components/Charts/RadarChart/RadarChartNative.js +0 -125
  143. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.js +0 -27
  144. package/dist/scripts/src/components/Charts/Tooltip/TooltipContent.spec.js +0 -451
  145. package/dist/scripts/src/components/Charts/utils/ChartProvider.js +0 -65
  146. package/dist/scripts/src/components/Charts/utils/abstractions.js +0 -26
  147. package/dist/scripts/src/components/Checkbox/Checkbox.js +0 -81
  148. package/dist/scripts/src/components/Checkbox/Checkbox.spec.js +0 -900
  149. package/dist/scripts/src/components/CodeBlock/CodeBlock.js +0 -42
  150. package/dist/scripts/src/components/CodeBlock/CodeBlock.spec.js +0 -196
  151. package/dist/scripts/src/components/CodeBlock/CodeBlockNative.js +0 -127
  152. package/dist/scripts/src/components/CodeBlock/highlight-code.js +0 -273
  153. package/dist/scripts/src/components/ColorPicker/ColorPicker.js +0 -54
  154. package/dist/scripts/src/components/ColorPicker/ColorPicker.spec.js +0 -355
  155. package/dist/scripts/src/components/ColorPicker/ColorPickerNative.js +0 -86
  156. package/dist/scripts/src/components/Column/Column.js +0 -89
  157. package/dist/scripts/src/components/Column/ColumnNative.js +0 -49
  158. package/dist/scripts/src/components/Column/TableContext.js +0 -12
  159. package/dist/scripts/src/components/Column/doc-resources/list-component-data.js +0 -53
  160. package/dist/scripts/src/components/ComponentProvider.js +0 -811
  161. package/dist/scripts/src/components/ComponentRegistryContext.js +0 -44
  162. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.js +0 -51
  163. package/dist/scripts/src/components/ContentSeparator/ContentSeparator.spec.js +0 -531
  164. package/dist/scripts/src/components/ContentSeparator/ContentSeparatorNative.js +0 -31
  165. package/dist/scripts/src/components/DataSource/DataSource.js +0 -124
  166. package/dist/scripts/src/components/DateInput/DateInput.js +0 -197
  167. package/dist/scripts/src/components/DateInput/DateInput.spec.js +0 -1023
  168. package/dist/scripts/src/components/DateInput/DateInputNative.js +0 -734
  169. package/dist/scripts/src/components/DatePicker/DatePicker.js +0 -146
  170. package/dist/scripts/src/components/DatePicker/DatePicker.spec.js +0 -394
  171. package/dist/scripts/src/components/DatePicker/DatePickerNative.js +0 -326
  172. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.js +0 -196
  173. package/dist/scripts/src/components/DropdownMenu/DropdownMenu.spec.js +0 -331
  174. package/dist/scripts/src/components/DropdownMenu/DropdownMenuNative.js +0 -146
  175. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.js +0 -26
  176. package/dist/scripts/src/components/EmojiSelector/EmojiSelector.spec.js +0 -29
  177. package/dist/scripts/src/components/EmojiSelector/EmojiSelectorNative.js +0 -71
  178. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.js +0 -101
  179. package/dist/scripts/src/components/ExpandableItem/ExpandableItem.spec.js +0 -435
  180. package/dist/scripts/src/components/ExpandableItem/ExpandableItemNative.js +0 -109
  181. package/dist/scripts/src/components/FileInput/FileInput.js +0 -80
  182. package/dist/scripts/src/components/FileInput/FileInput.spec.js +0 -285
  183. package/dist/scripts/src/components/FileInput/FileInputNative.js +0 -161
  184. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.js +0 -58
  185. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZone.spec.js +0 -296
  186. package/dist/scripts/src/components/FileUploadDropZone/FileUploadDropZoneNative.js +0 -134
  187. package/dist/scripts/src/components/FlowLayout/FlowLayout.js +0 -65
  188. package/dist/scripts/src/components/FlowLayout/FlowLayout.spec.js +0 -518
  189. package/dist/scripts/src/components/FlowLayout/FlowLayoutNative.js +0 -153
  190. package/dist/scripts/src/components/Footer/Footer.js +0 -45
  191. package/dist/scripts/src/components/Footer/Footer.spec.js +0 -991
  192. package/dist/scripts/src/components/Footer/FooterNative.js +0 -35
  193. package/dist/scripts/src/components/Form/Form.js +0 -161
  194. package/dist/scripts/src/components/Form/Form.spec.js +0 -1719
  195. package/dist/scripts/src/components/Form/FormContext.js +0 -124
  196. package/dist/scripts/src/components/Form/FormNative.js +0 -463
  197. package/dist/scripts/src/components/Form/formActions.js +0 -115
  198. package/dist/scripts/src/components/FormItem/FormItem.js +0 -231
  199. package/dist/scripts/src/components/FormItem/FormItem.spec.js +0 -1022
  200. package/dist/scripts/src/components/FormItem/FormItemNative.js +0 -255
  201. package/dist/scripts/src/components/FormItem/HelperText.js +0 -27
  202. package/dist/scripts/src/components/FormItem/ItemWithLabel.js +0 -52
  203. package/dist/scripts/src/components/FormItem/Validations.js +0 -389
  204. package/dist/scripts/src/components/FormSection/FormSection.js +0 -56
  205. package/dist/scripts/src/components/Fragment/Fragment.js +0 -24
  206. package/dist/scripts/src/components/Fragment/Fragment.spec.js +0 -50
  207. package/dist/scripts/src/components/Heading/H1.spec.js +0 -66
  208. package/dist/scripts/src/components/Heading/H2.spec.js +0 -66
  209. package/dist/scripts/src/components/Heading/H3.spec.js +0 -66
  210. package/dist/scripts/src/components/Heading/H4.spec.js +0 -66
  211. package/dist/scripts/src/components/Heading/H5.spec.js +0 -66
  212. package/dist/scripts/src/components/Heading/H6.spec.js +0 -66
  213. package/dist/scripts/src/components/Heading/Heading.js +0 -396
  214. package/dist/scripts/src/components/Heading/Heading.spec.js +0 -966
  215. package/dist/scripts/src/components/Heading/HeadingNative.js +0 -98
  216. package/dist/scripts/src/components/Heading/abstractions.js +0 -4
  217. package/dist/scripts/src/components/HoverCard/HoverCard.js +0 -18
  218. package/dist/scripts/src/components/HoverCard/HovercardNative.js +0 -44
  219. package/dist/scripts/src/components/HtmlTags/HtmlTags.js +0 -1441
  220. package/dist/scripts/src/components/HtmlTags/HtmlTags.spec.js +0 -69
  221. package/dist/scripts/src/components/IFrame/IFrame.js +0 -77
  222. package/dist/scripts/src/components/IFrame/IFrame.spec.js +0 -527
  223. package/dist/scripts/src/components/IFrame/IFrameNative.js +0 -46
  224. package/dist/scripts/src/components/Icon/AdmonitionDanger.js +0 -10
  225. package/dist/scripts/src/components/Icon/AdmonitionInfo.js +0 -10
  226. package/dist/scripts/src/components/Icon/AdmonitionNote.js +0 -10
  227. package/dist/scripts/src/components/Icon/AdmonitionTip.js +0 -10
  228. package/dist/scripts/src/components/Icon/AdmonitionWarning.js +0 -10
  229. package/dist/scripts/src/components/Icon/ApiIcon.js +0 -10
  230. package/dist/scripts/src/components/Icon/ArrowDropDown.js +0 -11
  231. package/dist/scripts/src/components/Icon/ArrowDropUp.js +0 -11
  232. package/dist/scripts/src/components/Icon/ArrowLeft.js +0 -11
  233. package/dist/scripts/src/components/Icon/ArrowRight.js +0 -11
  234. package/dist/scripts/src/components/Icon/Attach.js +0 -10
  235. package/dist/scripts/src/components/Icon/Binding.js +0 -11
  236. package/dist/scripts/src/components/Icon/BoardIcon.js +0 -7
  237. package/dist/scripts/src/components/Icon/BoxIcon.js +0 -10
  238. package/dist/scripts/src/components/Icon/CheckIcon.js +0 -7
  239. package/dist/scripts/src/components/Icon/ChevronDownIcon.js +0 -7
  240. package/dist/scripts/src/components/Icon/ChevronLeft.js +0 -7
  241. package/dist/scripts/src/components/Icon/ChevronRight.js +0 -7
  242. package/dist/scripts/src/components/Icon/ChevronUpIcon.js +0 -7
  243. package/dist/scripts/src/components/Icon/CodeFileIcon.js +0 -10
  244. package/dist/scripts/src/components/Icon/CodeSandbox.js +0 -10
  245. package/dist/scripts/src/components/Icon/CompactListIcon.js +0 -7
  246. package/dist/scripts/src/components/Icon/ContentCopyIcon.js +0 -7
  247. package/dist/scripts/src/components/Icon/DarkToLightIcon.js +0 -10
  248. package/dist/scripts/src/components/Icon/DatabaseIcon.js +0 -11
  249. package/dist/scripts/src/components/Icon/DocFileIcon.js +0 -10
  250. package/dist/scripts/src/components/Icon/DocIcon.js +0 -10
  251. package/dist/scripts/src/components/Icon/DotMenuHorizontalIcon.js +0 -7
  252. package/dist/scripts/src/components/Icon/DotMenuIcon.js +0 -7
  253. package/dist/scripts/src/components/Icon/EmailIcon.js +0 -7
  254. package/dist/scripts/src/components/Icon/EmptyFolderIcon.js +0 -10
  255. package/dist/scripts/src/components/Icon/ErrorIcon.js +0 -7
  256. package/dist/scripts/src/components/Icon/ExpressionIcon.js +0 -10
  257. package/dist/scripts/src/components/Icon/FillPlusCricleIcon.js +0 -7
  258. package/dist/scripts/src/components/Icon/FilterIcon.js +0 -10
  259. package/dist/scripts/src/components/Icon/FolderIcon.js +0 -10
  260. package/dist/scripts/src/components/Icon/GlobeIcon.js +0 -7
  261. package/dist/scripts/src/components/Icon/HomeIcon.js +0 -7
  262. package/dist/scripts/src/components/Icon/HyperLinkIcon.js +0 -7
  263. package/dist/scripts/src/components/Icon/Icon.js +0 -42
  264. package/dist/scripts/src/components/Icon/Icon.spec.js +0 -527
  265. package/dist/scripts/src/components/Icon/IconNative.js +0 -127
  266. package/dist/scripts/src/components/Icon/ImageFileIcon.js +0 -10
  267. package/dist/scripts/src/components/Icon/Inspect.js +0 -10
  268. package/dist/scripts/src/components/Icon/LightToDark.js +0 -10
  269. package/dist/scripts/src/components/Icon/LinkIcon.js +0 -7
  270. package/dist/scripts/src/components/Icon/ListIcon.js +0 -7
  271. package/dist/scripts/src/components/Icon/LooseListIcon.js +0 -7
  272. package/dist/scripts/src/components/Icon/MoonIcon.js +0 -10
  273. package/dist/scripts/src/components/Icon/MoreOptionsIcon.js +0 -7
  274. package/dist/scripts/src/components/Icon/NoSortIcon.js +0 -8
  275. package/dist/scripts/src/components/Icon/PDFIcon.js +0 -10
  276. package/dist/scripts/src/components/Icon/PenIcon.js +0 -7
  277. package/dist/scripts/src/components/Icon/PhoneIcon.js +0 -7
  278. package/dist/scripts/src/components/Icon/PhotoIcon.js +0 -10
  279. package/dist/scripts/src/components/Icon/PlusIcon.js +0 -7
  280. package/dist/scripts/src/components/Icon/SearchIcon.js +0 -7
  281. package/dist/scripts/src/components/Icon/ShareIcon.js +0 -10
  282. package/dist/scripts/src/components/Icon/SortAscendingIcon.js +0 -8
  283. package/dist/scripts/src/components/Icon/SortDescendingIcon.js +0 -8
  284. package/dist/scripts/src/components/Icon/StarsIcon.js +0 -10
  285. package/dist/scripts/src/components/Icon/SunIcon.js +0 -10
  286. package/dist/scripts/src/components/Icon/TableDeleteColumnIcon.js +0 -7
  287. package/dist/scripts/src/components/Icon/TableDeleteRowIcon.js +0 -7
  288. package/dist/scripts/src/components/Icon/TableInsertColumnIcon.js +0 -7
  289. package/dist/scripts/src/components/Icon/TableInsertRowIcon.js +0 -7
  290. package/dist/scripts/src/components/Icon/TrashIcon.js +0 -7
  291. package/dist/scripts/src/components/Icon/TrendingDownIcon.js +0 -10
  292. package/dist/scripts/src/components/Icon/TrendingLevelIcon.js +0 -10
  293. package/dist/scripts/src/components/Icon/TrendingUpIcon.js +0 -10
  294. package/dist/scripts/src/components/Icon/TxtIcon.js +0 -10
  295. package/dist/scripts/src/components/Icon/UnknownFileIcon.js +0 -10
  296. package/dist/scripts/src/components/Icon/UnlinkIcon.js +0 -10
  297. package/dist/scripts/src/components/Icon/UserIcon.js +0 -7
  298. package/dist/scripts/src/components/Icon/WarningIcon.js +0 -7
  299. package/dist/scripts/src/components/Icon/XlsIcon.js +0 -10
  300. package/dist/scripts/src/components/IconProvider.js +0 -300
  301. package/dist/scripts/src/components/IconRegistryContext.js +0 -318
  302. package/dist/scripts/src/components/Image/Image.js +0 -52
  303. package/dist/scripts/src/components/Image/Image.spec.js +0 -198
  304. package/dist/scripts/src/components/Image/ImageNative.js +0 -73
  305. package/dist/scripts/src/components/Input/InputAdornment.js +0 -28
  306. package/dist/scripts/src/components/Input/InputDivider.js +0 -35
  307. package/dist/scripts/src/components/Input/InputLabel.js +0 -25
  308. package/dist/scripts/src/components/Input/PartialInput.js +0 -155
  309. package/dist/scripts/src/components/Input/index.js +0 -5
  310. package/dist/scripts/src/components/InspectButton/InspectButton.js +0 -35
  311. package/dist/scripts/src/components/Items/Items.js +0 -39
  312. package/dist/scripts/src/components/Items/Items.spec.js +0 -397
  313. package/dist/scripts/src/components/Items/ItemsNative.js +0 -33
  314. package/dist/scripts/src/components/Link/Link.js +0 -82
  315. package/dist/scripts/src/components/Link/Link.spec.js +0 -894
  316. package/dist/scripts/src/components/Link/LinkNative.js +0 -48
  317. package/dist/scripts/src/components/List/List.js +0 -130
  318. package/dist/scripts/src/components/List/List.spec.js +0 -927
  319. package/dist/scripts/src/components/List/ListNative.js +0 -433
  320. package/dist/scripts/src/components/List/doc-resources/list-component-data.js +0 -53
  321. package/dist/scripts/src/components/Logo/Logo.js +0 -30
  322. package/dist/scripts/src/components/Logo/LogoNative.js +0 -32
  323. package/dist/scripts/src/components/Markdown/CodeText.js +0 -38
  324. package/dist/scripts/src/components/Markdown/Markdown.js +0 -143
  325. package/dist/scripts/src/components/Markdown/Markdown.spec.js +0 -188
  326. package/dist/scripts/src/components/Markdown/MarkdownNative.js +0 -476
  327. package/dist/scripts/src/components/Markdown/parse-binding-expr.js +0 -60
  328. package/dist/scripts/src/components/Markdown/utils.js +0 -389
  329. package/dist/scripts/src/components/ModalDialog/ConfirmationModalContextProvider.js +0 -111
  330. package/dist/scripts/src/components/ModalDialog/Dialog.js +0 -20
  331. package/dist/scripts/src/components/ModalDialog/ModalDialog.js +0 -83
  332. package/dist/scripts/src/components/ModalDialog/ModalDialog.spec.js +0 -181
  333. package/dist/scripts/src/components/ModalDialog/ModalDialogNative.js +0 -217
  334. package/dist/scripts/src/components/ModalDialog/ModalVisibilityContext.js +0 -60
  335. package/dist/scripts/src/components/NavGroup/NavGroup.js +0 -70
  336. package/dist/scripts/src/components/NavGroup/NavGroup.spec.js +0 -304
  337. package/dist/scripts/src/components/NavGroup/NavGroupContext.js +0 -13
  338. package/dist/scripts/src/components/NavGroup/NavGroupNative.js +0 -133
  339. package/dist/scripts/src/components/NavLink/NavLink.js +0 -86
  340. package/dist/scripts/src/components/NavLink/NavLink.spec.js +0 -864
  341. package/dist/scripts/src/components/NavLink/NavLinkNative.js +0 -73
  342. package/dist/scripts/src/components/NavPanel/NavPanel.js +0 -53
  343. package/dist/scripts/src/components/NavPanel/NavPanel.spec.js +0 -864
  344. package/dist/scripts/src/components/NavPanel/NavPanelNative.js +0 -222
  345. package/dist/scripts/src/components/NestedApp/AppWithCodeView.js +0 -91
  346. package/dist/scripts/src/components/NestedApp/AppWithCodeViewNative.js +0 -84
  347. package/dist/scripts/src/components/NestedApp/NestedApp.js +0 -86
  348. package/dist/scripts/src/components/NestedApp/NestedAppNative.js +0 -231
  349. package/dist/scripts/src/components/NestedApp/Tooltip.js +0 -46
  350. package/dist/scripts/src/components/NestedApp/defaultProps.js +0 -12
  351. package/dist/scripts/src/components/NestedApp/utils.js +0 -67
  352. package/dist/scripts/src/components/NoResult/NoResult.js +0 -46
  353. package/dist/scripts/src/components/NoResult/NoResult.spec.js +0 -863
  354. package/dist/scripts/src/components/NoResult/NoResultNative.js +0 -31
  355. package/dist/scripts/src/components/NumberBox/NumberBox.js +0 -123
  356. package/dist/scripts/src/components/NumberBox/NumberBox.spec.js +0 -979
  357. package/dist/scripts/src/components/NumberBox/NumberBoxNative.js +0 -513
  358. package/dist/scripts/src/components/NumberBox/numberbox-abstractions.js +0 -109
  359. package/dist/scripts/src/components/Option/Option.js +0 -44
  360. package/dist/scripts/src/components/Option/Option.spec.js +0 -474
  361. package/dist/scripts/src/components/Option/OptionNative.js +0 -29
  362. package/dist/scripts/src/components/Option/OptionTypeProvider.js +0 -16
  363. package/dist/scripts/src/components/PageMetaTitle/PageMetaTilteNative.js +0 -13
  364. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.js +0 -22
  365. package/dist/scripts/src/components/PageMetaTitle/PageMetaTitle.spec.js +0 -80
  366. package/dist/scripts/src/components/Pages/Pages.js +0 -54
  367. package/dist/scripts/src/components/Pages/PagesNative.js +0 -57
  368. package/dist/scripts/src/components/Pagination/Pagination.js +0 -107
  369. package/dist/scripts/src/components/Pagination/Pagination.spec.js +0 -1008
  370. package/dist/scripts/src/components/Pagination/PaginationNative.js +0 -157
  371. package/dist/scripts/src/components/PositionedContainer/PositionedContainer.js +0 -24
  372. package/dist/scripts/src/components/PositionedContainer/PositionedContainerNative.js +0 -14
  373. package/dist/scripts/src/components/ProfileMenu/ProfileMenu.js +0 -20
  374. package/dist/scripts/src/components/ProgressBar/ProgressBar.js +0 -38
  375. package/dist/scripts/src/components/ProgressBar/ProgressBar.spec.js +0 -166
  376. package/dist/scripts/src/components/ProgressBar/ProgressBarNative.js +0 -28
  377. package/dist/scripts/src/components/Queue/Queue.js +0 -85
  378. package/dist/scripts/src/components/Queue/Queue.spec.js +0 -624
  379. package/dist/scripts/src/components/Queue/QueueNative.js +0 -342
  380. package/dist/scripts/src/components/Queue/queueActions.js +0 -87
  381. package/dist/scripts/src/components/RadioGroup/RadioGroup.js +0 -61
  382. package/dist/scripts/src/components/RadioGroup/RadioGroup.spec.js +0 -490
  383. package/dist/scripts/src/components/RadioGroup/RadioGroupNative.js +0 -158
  384. package/dist/scripts/src/components/RadioGroup/RadioItem.js +0 -28
  385. package/dist/scripts/src/components/RadioGroup/RadioItemNative.js +0 -62
  386. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapter.js +0 -24
  387. package/dist/scripts/src/components/RealTimeAdapter/RealTimeAdapterNative.js +0 -135
  388. package/dist/scripts/src/components/Redirect/Redirect.js +0 -31
  389. package/dist/scripts/src/components/Redirect/Redirect.spec.js +0 -527
  390. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.js +0 -60
  391. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBar.spec.js +0 -76
  392. package/dist/scripts/src/components/ResponsiveBar/ResponsiveBarNative.js +0 -313
  393. package/dist/scripts/src/components/Select/HiddenOption.js +0 -20
  394. package/dist/scripts/src/components/Select/OptionContext.js +0 -12
  395. package/dist/scripts/src/components/Select/Select.js +0 -131
  396. package/dist/scripts/src/components/Select/Select.spec.js +0 -763
  397. package/dist/scripts/src/components/Select/SelectContext.js +0 -16
  398. package/dist/scripts/src/components/Select/SelectNative.js +0 -440
  399. package/dist/scripts/src/components/SelectionStore/SelectionStore.js +0 -25
  400. package/dist/scripts/src/components/SelectionStore/SelectionStoreNative.js +0 -103
  401. package/dist/scripts/src/components/Slider/Slider.js +0 -115
  402. package/dist/scripts/src/components/Slider/Slider.spec.js +0 -677
  403. package/dist/scripts/src/components/Slider/SliderNative.js +0 -237
  404. package/dist/scripts/src/components/Slot/Slot.js +0 -17
  405. package/dist/scripts/src/components/Slot/Slot.spec.js +0 -368
  406. package/dist/scripts/src/components/SlotItem.js +0 -32
  407. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.js +0 -20
  408. package/dist/scripts/src/components/SpaceFiller/SpaceFiller.spec.js +0 -184
  409. package/dist/scripts/src/components/SpaceFiller/SpaceFillerNative.js +0 -10
  410. package/dist/scripts/src/components/Spinner/Spinner.js +0 -39
  411. package/dist/scripts/src/components/Spinner/Spinner.spec.js +0 -161
  412. package/dist/scripts/src/components/Spinner/SpinnerNative.js +0 -48
  413. package/dist/scripts/src/components/Splitter/HSplitter.spec.js +0 -104
  414. package/dist/scripts/src/components/Splitter/Splitter.js +0 -163
  415. package/dist/scripts/src/components/Splitter/Splitter.spec.js +0 -856
  416. package/dist/scripts/src/components/Splitter/SplitterNative.js +0 -205
  417. package/dist/scripts/src/components/Splitter/VSplitter.spec.js +0 -104
  418. package/dist/scripts/src/components/Splitter/utils.js +0 -22
  419. package/dist/scripts/src/components/Stack/CHStack.spec.js +0 -86
  420. package/dist/scripts/src/components/Stack/CVStack.spec.js +0 -86
  421. package/dist/scripts/src/components/Stack/HStack.spec.js +0 -67
  422. package/dist/scripts/src/components/Stack/Stack.js +0 -156
  423. package/dist/scripts/src/components/Stack/Stack.spec.js +0 -654
  424. package/dist/scripts/src/components/Stack/StackNative.js +0 -45
  425. package/dist/scripts/src/components/Stack/VStack.spec.js +0 -67
  426. package/dist/scripts/src/components/StickyBox/StickyBox.js +0 -34
  427. package/dist/scripts/src/components/StickyBox/StickyBoxNative.js +0 -42
  428. package/dist/scripts/src/components/Switch/Switch.js +0 -80
  429. package/dist/scripts/src/components/Switch/Switch.spec.js +0 -834
  430. package/dist/scripts/src/components/Table/Table.js +0 -268
  431. package/dist/scripts/src/components/Table/Table.spec.js +0 -827
  432. package/dist/scripts/src/components/Table/TableNative.js +0 -670
  433. package/dist/scripts/src/components/Table/doc-resources/list-component-data.js +0 -53
  434. package/dist/scripts/src/components/Table/useRowSelection.js +0 -454
  435. package/dist/scripts/src/components/TableOfContents/TableOfContents.js +0 -76
  436. package/dist/scripts/src/components/TableOfContents/TableOfContents.spec.js +0 -838
  437. package/dist/scripts/src/components/TableOfContents/TableOfContentsNative.js +0 -81
  438. package/dist/scripts/src/components/Tabs/TabContext.js +0 -58
  439. package/dist/scripts/src/components/Tabs/TabItem.js +0 -44
  440. package/dist/scripts/src/components/Tabs/TabItemNative.js +0 -53
  441. package/dist/scripts/src/components/Tabs/Tabs.js +0 -95
  442. package/dist/scripts/src/components/Tabs/Tabs.spec.js +0 -1237
  443. package/dist/scripts/src/components/Tabs/TabsNative.js +0 -137
  444. package/dist/scripts/src/components/Text/Text.js +0 -181
  445. package/dist/scripts/src/components/Text/Text.spec.js +0 -1676
  446. package/dist/scripts/src/components/Text/TextNative.js +0 -244
  447. package/dist/scripts/src/components/TextArea/TextArea.js +0 -103
  448. package/dist/scripts/src/components/TextArea/TextArea.spec.js +0 -886
  449. package/dist/scripts/src/components/TextArea/TextAreaNative.js +0 -196
  450. package/dist/scripts/src/components/TextArea/TextAreaResizable.js +0 -73
  451. package/dist/scripts/src/components/TextArea/useComposedRef.js +0 -60
  452. package/dist/scripts/src/components/TextBox/TextBox.js +0 -133
  453. package/dist/scripts/src/components/TextBox/TextBox.spec.js +0 -758
  454. package/dist/scripts/src/components/TextBox/TextBoxNative.js +0 -142
  455. package/dist/scripts/src/components/Theme/NotificationToast.js +0 -64
  456. package/dist/scripts/src/components/Theme/Theme.js +0 -47
  457. package/dist/scripts/src/components/Theme/Theme.spec.js +0 -390
  458. package/dist/scripts/src/components/Theme/ThemeNative.js +0 -162
  459. package/dist/scripts/src/components/TimeInput/TimeInput.js +0 -149
  460. package/dist/scripts/src/components/TimeInput/TimeInput.spec.js +0 -1236
  461. package/dist/scripts/src/components/TimeInput/TimeInputNative.js +0 -650
  462. package/dist/scripts/src/components/TimeInput/utils.js +0 -197
  463. package/dist/scripts/src/components/Timer/Timer.js +0 -62
  464. package/dist/scripts/src/components/Timer/Timer.spec.js +0 -328
  465. package/dist/scripts/src/components/Timer/TimerNative.js +0 -178
  466. package/dist/scripts/src/components/Toggle/Toggle.js +0 -172
  467. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.js +0 -63
  468. package/dist/scripts/src/components/ToneChangerButton/ToneChangerButton.spec.js +0 -414
  469. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.js +0 -51
  470. package/dist/scripts/src/components/ToneSwitch/ToneSwitch.spec.js +0 -89
  471. package/dist/scripts/src/components/ToneSwitch/ToneSwitchNative.js +0 -42
  472. package/dist/scripts/src/components/Tooltip/Tooltip.js +0 -118
  473. package/dist/scripts/src/components/Tooltip/Tooltip.spec.js +0 -418
  474. package/dist/scripts/src/components/Tooltip/TooltipNative.js +0 -160
  475. package/dist/scripts/src/components/Tree/Tree-dynamic.spec.js +0 -2894
  476. package/dist/scripts/src/components/Tree/Tree-icons.spec.js +0 -206
  477. package/dist/scripts/src/components/Tree/Tree.spec.js +0 -2839
  478. package/dist/scripts/src/components/Tree/TreeComponent.js +0 -324
  479. package/dist/scripts/src/components/Tree/TreeNative.js +0 -1129
  480. package/dist/scripts/src/components/Tree/testData.js +0 -296
  481. package/dist/scripts/src/components/TreeDisplay/TreeDisplay.js +0 -49
  482. package/dist/scripts/src/components/TreeDisplay/TreeDisplayNative.js +0 -104
  483. package/dist/scripts/src/components/ValidationSummary/ValidationSummary.js +0 -64
  484. package/dist/scripts/src/components/VisuallyHidden.js +0 -21
  485. package/dist/scripts/src/components/abstractions.js +0 -341
  486. package/dist/scripts/src/components/chart-color-schemes.js +0 -43
  487. package/dist/scripts/src/components/collectedComponentMetadata.js +0 -316
  488. package/dist/scripts/src/components/component-utils.js +0 -29
  489. package/dist/scripts/src/components/container-helpers.js +0 -26
  490. package/dist/scripts/src/components/metadata-helpers.js +0 -269
  491. package/dist/scripts/src/components-core/ApiBoundComponent.js +0 -227
  492. package/dist/scripts/src/components-core/AppContext.js +0 -16
  493. package/dist/scripts/src/components-core/ComponentDecorator.js +0 -74
  494. package/dist/scripts/src/components-core/ComponentViewer.js +0 -69
  495. package/dist/scripts/src/components-core/CompoundComponent.js +0 -145
  496. package/dist/scripts/src/components-core/DebugViewProvider.js +0 -43
  497. package/dist/scripts/src/components-core/EngineError.js +0 -91
  498. package/dist/scripts/src/components-core/InspectorContext.js +0 -248
  499. package/dist/scripts/src/components-core/LoaderComponent.js +0 -109
  500. package/dist/scripts/src/components-core/RestApiProxy.js +0 -468
  501. package/dist/scripts/src/components-core/StandaloneApp.js +0 -821
  502. package/dist/scripts/src/components-core/StandaloneExtensionManager.js +0 -44
  503. package/dist/scripts/src/components-core/TableOfContentsContext.js +0 -168
  504. package/dist/scripts/src/components-core/abstractions/ComponentRenderer.js +0 -2
  505. package/dist/scripts/src/components-core/abstractions/LoaderRenderer.js +0 -2
  506. package/dist/scripts/src/components-core/abstractions/standalone.js +0 -2
  507. package/dist/scripts/src/components-core/abstractions/treeAbstractions.js +0 -2
  508. package/dist/scripts/src/components-core/action/APICall.js +0 -284
  509. package/dist/scripts/src/components-core/action/FileDownloadAction.js +0 -80
  510. package/dist/scripts/src/components-core/action/FileUploadAction.js +0 -88
  511. package/dist/scripts/src/components-core/action/NavigateAction.js +0 -20
  512. package/dist/scripts/src/components-core/action/TimedAction.js +0 -21
  513. package/dist/scripts/src/components-core/action/actions.js +0 -15
  514. package/dist/scripts/src/components-core/appContext/date-functions.js +0 -24
  515. package/dist/scripts/src/components-core/appContext/math-function.js +0 -27
  516. package/dist/scripts/src/components-core/appContext/misc-utils.js +0 -14
  517. package/dist/scripts/src/components-core/behaviors/Behavior.js +0 -2
  518. package/dist/scripts/src/components-core/behaviors/CoreBehaviors.js +0 -201
  519. package/dist/scripts/src/components-core/component-hooks.js +0 -25
  520. package/dist/scripts/src/components-core/constants.js +0 -18
  521. package/dist/scripts/src/components-core/descriptorHelper.js +0 -96
  522. package/dist/scripts/src/components-core/devtools/InspectorDialog.js +0 -135
  523. package/dist/scripts/src/components-core/devtools/InspectorDialogVisibilityContext.js +0 -8
  524. package/dist/scripts/src/components-core/event-handlers.js +0 -46
  525. package/dist/scripts/src/components-core/interception/ApiInterceptor.js +0 -247
  526. package/dist/scripts/src/components-core/interception/ApiInterceptorProvider.js +0 -167
  527. package/dist/scripts/src/components-core/interception/Backend.js +0 -141
  528. package/dist/scripts/src/components-core/interception/Errors.js +0 -129
  529. package/dist/scripts/src/components-core/interception/InMemoryDb.js +0 -41
  530. package/dist/scripts/src/components-core/interception/IndexedDb.js +0 -205
  531. package/dist/scripts/src/components-core/interception/ReadonlyCollection.js +0 -145
  532. package/dist/scripts/src/components-core/interception/abstractions.js +0 -2
  533. package/dist/scripts/src/components-core/interception/apiInterceptorWorker.js +0 -44
  534. package/dist/scripts/src/components-core/interception/initMock.js +0 -20
  535. package/dist/scripts/src/components-core/interception/useApiInterceptorContext.js +0 -9
  536. package/dist/scripts/src/components-core/loader/ApiLoader.js +0 -54
  537. package/dist/scripts/src/components-core/loader/DataLoader.js +0 -330
  538. package/dist/scripts/src/components-core/loader/ExternalDataLoader.js +0 -60
  539. package/dist/scripts/src/components-core/loader/Loader.js +0 -159
  540. package/dist/scripts/src/components-core/loader/MockLoaderRenderer.js +0 -43
  541. package/dist/scripts/src/components-core/loader/PageableLoader.js +0 -272
  542. package/dist/scripts/src/components-core/markup-check.js +0 -279
  543. package/dist/scripts/src/components-core/parts.js +0 -11
  544. package/dist/scripts/src/components-core/renderers.js +0 -76
  545. package/dist/scripts/src/components-core/rendering/AppContent.js +0 -400
  546. package/dist/scripts/src/components-core/rendering/AppRoot.js +0 -87
  547. package/dist/scripts/src/components-core/rendering/AppWrapper.js +0 -49
  548. package/dist/scripts/src/components-core/rendering/ComponentAdapter.js +0 -380
  549. package/dist/scripts/src/components-core/rendering/ComponentWrapper.js +0 -166
  550. package/dist/scripts/src/components-core/rendering/Container.js +0 -621
  551. package/dist/scripts/src/components-core/rendering/ContainerWrapper.js +0 -94
  552. package/dist/scripts/src/components-core/rendering/ErrorBoundary.js +0 -65
  553. package/dist/scripts/src/components-core/rendering/InvalidComponent.js +0 -17
  554. package/dist/scripts/src/components-core/rendering/StandaloneComponent.js +0 -39
  555. package/dist/scripts/src/components-core/rendering/StateContainer.js +0 -350
  556. package/dist/scripts/src/components-core/rendering/UnknownComponent.js +0 -15
  557. package/dist/scripts/src/components-core/rendering/buildProxy.js +0 -58
  558. package/dist/scripts/src/components-core/rendering/collectFnVarDeps.js +0 -49
  559. package/dist/scripts/src/components-core/rendering/containers.js +0 -19
  560. package/dist/scripts/src/components-core/rendering/nodeUtils.js +0 -6
  561. package/dist/scripts/src/components-core/rendering/reducer.js +0 -160
  562. package/dist/scripts/src/components-core/rendering/renderChild.js +0 -82
  563. package/dist/scripts/src/components-core/rendering/valueExtractor.js +0 -216
  564. package/dist/scripts/src/components-core/reportEngineError.js +0 -62
  565. package/dist/scripts/src/components-core/script-runner/AttributeValueParser.js +0 -117
  566. package/dist/scripts/src/components-core/script-runner/BindingTreeEvaluationContext.js +0 -33
  567. package/dist/scripts/src/components-core/script-runner/ParameterParser.js +0 -117
  568. package/dist/scripts/src/components-core/script-runner/ScriptingSourceTree.js +0 -45
  569. package/dist/scripts/src/components-core/script-runner/asyncProxy.js +0 -96
  570. package/dist/scripts/src/components-core/script-runner/bannedFunctions.js +0 -34
  571. package/dist/scripts/src/components-core/script-runner/eval-tree-async.js +0 -613
  572. package/dist/scripts/src/components-core/script-runner/eval-tree-common.js +0 -439
  573. package/dist/scripts/src/components-core/script-runner/eval-tree-sync.js +0 -522
  574. package/dist/scripts/src/components-core/script-runner/process-statement-async.js +0 -761
  575. package/dist/scripts/src/components-core/script-runner/process-statement-common.js +0 -208
  576. package/dist/scripts/src/components-core/script-runner/process-statement-sync.js +0 -746
  577. package/dist/scripts/src/components-core/script-runner/simplify-expression.js +0 -386
  578. package/dist/scripts/src/components-core/script-runner/statement-queue.js +0 -63
  579. package/dist/scripts/src/components-core/script-runner/visitors.js +0 -369
  580. package/dist/scripts/src/components-core/theming/StyleContext.js +0 -133
  581. package/dist/scripts/src/components-core/theming/StyleRegistry.js +0 -171
  582. package/dist/scripts/src/components-core/theming/ThemeContext.js +0 -53
  583. package/dist/scripts/src/components-core/theming/ThemeProvider.js +0 -342
  584. package/dist/scripts/src/components-core/theming/component-layout-resolver.js +0 -153
  585. package/dist/scripts/src/components-core/theming/extendThemeUtils.js +0 -47
  586. package/dist/scripts/src/components-core/theming/hvar.js +0 -105
  587. package/dist/scripts/src/components-core/theming/layout-resolver.js +0 -388
  588. package/dist/scripts/src/components-core/theming/parse-layout-props.js +0 -136
  589. package/dist/scripts/src/components-core/theming/themeVars.js +0 -62
  590. package/dist/scripts/src/components-core/theming/themes/base-utils.js +0 -15
  591. package/dist/scripts/src/components-core/theming/themes/palette.js +0 -57
  592. package/dist/scripts/src/components-core/theming/themes/root.js +0 -434
  593. package/dist/scripts/src/components-core/theming/themes/solid.js +0 -16
  594. package/dist/scripts/src/components-core/theming/themes/theme-colors.js +0 -561
  595. package/dist/scripts/src/components-core/theming/themes/xmlui.js +0 -57
  596. package/dist/scripts/src/components-core/theming/transformThemeVars.js +0 -733
  597. package/dist/scripts/src/components-core/theming/utils.js +0 -31
  598. package/dist/scripts/src/components-core/utils/DataLoaderQueryKeyGenerator.js +0 -41
  599. package/dist/scripts/src/components-core/utils/LruCache.js +0 -184
  600. package/dist/scripts/src/components-core/utils/actionUtils.js +0 -32
  601. package/dist/scripts/src/components-core/utils/audio-utils.js +0 -83
  602. package/dist/scripts/src/components-core/utils/base64-utils.js +0 -124
  603. package/dist/scripts/src/components-core/utils/compound-utils.js +0 -11
  604. package/dist/scripts/src/components-core/utils/css-utils.js +0 -179
  605. package/dist/scripts/src/components-core/utils/date-utils.js +0 -186
  606. package/dist/scripts/src/components-core/utils/extractParam.js +0 -281
  607. package/dist/scripts/src/components-core/utils/hooks.js +0 -400
  608. package/dist/scripts/src/components-core/utils/mergeProps.js +0 -45
  609. package/dist/scripts/src/components-core/utils/misc.js +0 -539
  610. package/dist/scripts/src/components-core/utils/request-params.js +0 -70
  611. package/dist/scripts/src/components-core/utils/statementUtils.js +0 -224
  612. package/dist/scripts/src/components-core/utils/treeUtils.js +0 -226
  613. package/dist/scripts/src/components-core/xmlui-parser.js +0 -548
  614. package/dist/scripts/src/index-standalone.js +0 -61
  615. package/dist/scripts/src/index.js +0 -158
  616. package/dist/scripts/src/language-server/server-common.js +0 -152
  617. package/dist/scripts/src/language-server/server-web-worker.js +0 -47
  618. package/dist/scripts/src/language-server/server.js +0 -42
  619. package/dist/scripts/src/language-server/services/common/docs-generation.js +0 -73
  620. package/dist/scripts/src/language-server/services/common/lsp-utils.js +0 -9
  621. package/dist/scripts/src/language-server/services/common/metadata-utils.js +0 -157
  622. package/dist/scripts/src/language-server/services/common/syntax-node-utilities.js +0 -127
  623. package/dist/scripts/src/language-server/services/completion.js +0 -288
  624. package/dist/scripts/src/language-server/services/diagnostic.js +0 -19
  625. package/dist/scripts/src/language-server/services/format.js +0 -569
  626. package/dist/scripts/src/language-server/services/hover.js +0 -164
  627. package/dist/scripts/src/language-server/xmlui-metadata-generated.js +0 -16276
  628. package/dist/scripts/src/logging/LoggerContext.js +0 -22
  629. package/dist/scripts/src/logging/LoggerInitializer.js +0 -14
  630. package/dist/scripts/src/logging/LoggerService.js +0 -60
  631. package/dist/scripts/src/logging/xmlui.js +0 -21
  632. package/dist/scripts/src/parsers/common/GenericToken.js +0 -2
  633. package/dist/scripts/src/parsers/common/InputStream.js +0 -59
  634. package/dist/scripts/src/parsers/common/utils.js +0 -19
  635. package/dist/scripts/src/parsers/scripting/Lexer.js +0 -1097
  636. package/dist/scripts/src/parsers/scripting/Parser.js +0 -2638
  637. package/dist/scripts/src/parsers/scripting/ParserError.js +0 -47
  638. package/dist/scripts/src/parsers/scripting/ScriptingNodeTypes.js +0 -50
  639. package/dist/scripts/src/parsers/scripting/TokenTrait.js +0 -108
  640. package/dist/scripts/src/parsers/scripting/TokenType.js +0 -109
  641. package/dist/scripts/src/parsers/scripting/code-behind-collect.js +0 -101
  642. package/dist/scripts/src/parsers/scripting/modules.js +0 -105
  643. package/dist/scripts/src/parsers/scripting/tree-visitor.js +0 -601
  644. package/dist/scripts/src/parsers/style-parser/StyleInputStream.js +0 -39
  645. package/dist/scripts/src/parsers/style-parser/StyleLexer.js +0 -623
  646. package/dist/scripts/src/parsers/style-parser/StyleParser.js +0 -453
  647. package/dist/scripts/src/parsers/style-parser/errors.js +0 -37
  648. package/dist/scripts/src/parsers/style-parser/source-tree.js +0 -2
  649. package/dist/scripts/src/parsers/style-parser/tokens.js +0 -43
  650. package/dist/scripts/src/parsers/xmlui-parser/CharacterCodes.js +0 -136
  651. package/dist/scripts/src/parsers/xmlui-parser/ParserError.js +0 -60
  652. package/dist/scripts/src/parsers/xmlui-parser/diagnostics.js +0 -172
  653. package/dist/scripts/src/parsers/xmlui-parser/fileExtensions.js +0 -6
  654. package/dist/scripts/src/parsers/xmlui-parser/index.js +0 -29
  655. package/dist/scripts/src/parsers/xmlui-parser/lint.js +0 -165
  656. package/dist/scripts/src/parsers/xmlui-parser/parser.js +0 -627
  657. package/dist/scripts/src/parsers/xmlui-parser/scanner.js +0 -415
  658. package/dist/scripts/src/parsers/xmlui-parser/syntax-kind.js +0 -123
  659. package/dist/scripts/src/parsers/xmlui-parser/syntax-node.js +0 -83
  660. package/dist/scripts/src/parsers/xmlui-parser/transform.js +0 -1131
  661. package/dist/scripts/src/parsers/xmlui-parser/utils.js +0 -83
  662. package/dist/scripts/src/parsers/xmlui-parser/xmlui-serializer.js +0 -582
  663. package/dist/scripts/src/parsers/xmlui-parser/xmlui-tree.js +0 -2
  664. package/dist/scripts/src/syntax/monaco/grammar.monacoLanguage.js +0 -286
  665. package/dist/scripts/src/syntax/monaco/index.js +0 -14
  666. package/dist/scripts/src/syntax/monaco/xmlui-dark.js +0 -25
  667. package/dist/scripts/src/syntax/monaco/xmlui-light.js +0 -25
  668. package/dist/scripts/src/syntax/monaco/xmluiscript.monacoLanguage.js +0 -310
  669. package/dist/scripts/src/syntax/textMate/index.js +0 -14
  670. package/dist/scripts/src/syntax/textMate/xmlui-dark.json +0 -631
  671. package/dist/scripts/src/syntax/textMate/xmlui-light.json +0 -565
  672. package/dist/scripts/src/syntax/textMate/xmlui.json +0 -564
  673. package/dist/scripts/src/syntax/textMate/xmlui.tmLanguage.json +0 -341
  674. package/dist/scripts/src/testing/ComponentDrivers.js +0 -1380
  675. package/dist/scripts/src/testing/assertions.js +0 -444
  676. package/dist/scripts/src/testing/component-test-helpers.js +0 -373
  677. package/dist/scripts/src/testing/drivers/DateInputDriver.js +0 -19
  678. package/dist/scripts/src/testing/drivers/ModalDialogDriver.js +0 -10
  679. package/dist/scripts/src/testing/drivers/NumberBoxDriver.js +0 -44
  680. package/dist/scripts/src/testing/drivers/TextBoxDriver.js +0 -20
  681. package/dist/scripts/src/testing/drivers/TimeInputDriver.js +0 -22
  682. package/dist/scripts/src/testing/drivers/TimerDriver.js +0 -64
  683. package/dist/scripts/src/testing/drivers/TreeDriver.js +0 -13
  684. package/dist/scripts/src/testing/drivers/index.js +0 -9
  685. package/dist/scripts/src/testing/fixtures.js +0 -519
  686. package/dist/scripts/src/testing/index.js +0 -69
  687. package/dist/scripts/src/testing/infrastructure/TestBed.js +0 -17
  688. package/dist/scripts/src/testing/infrastructure/main.js +0 -9
  689. package/dist/scripts/src/testing/infrastructure/public/mockServiceWorker.js +0 -266
  690. 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
- });