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,1719 +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 abstractions_1 = require("../abstractions");
13
- const fixtures_1 = require("../../testing/fixtures");
14
- const component_test_helpers_1 = require("../../testing/component-test-helpers");
15
- // Test data constants
16
- const errorDisplayInterceptor = {
17
- initialize: `
18
- $state.items = {
19
- [10]: { name: "Smith", id: 10 }
20
- };
21
- $state.currentId = 10;
22
- `,
23
- operations: {
24
- "no-validation-error": {
25
- url: "/no-validation-error",
26
- method: "post",
27
- handler: `return true;`,
28
- },
29
- "general-validation-error": {
30
- url: "/general-validation-error",
31
- method: "post",
32
- handler: `
33
- throw Errors.HttpError(404,
34
- {
35
- message: "General error message from the backend",
36
- issues: [
37
- { message: "Error for the whole form", severity: "error" },
38
- { message: "Warning for the whole form", severity: "warning" },
39
- ]
40
- }
41
- );
42
- `,
43
- },
44
- "field-validation-error": {
45
- url: "/field-validation-error",
46
- method: "post",
47
- handler: `
48
- throw Errors.HttpError(404,
49
- {
50
- message: "Field error message from the backend",
51
- issues: [
52
- { field: "test", message: "Display warning", severity: "warning" },
53
- ]
54
- }
55
- );
56
- `,
57
- },
58
- },
59
- };
60
- // =============================================================================
61
- // BASIC FUNCTIONALITY TESTS
62
- // =============================================================================
63
- fixtures_1.test.describe("Basic Functionality", () => {
64
- (0, fixtures_1.test)("component renders with default props", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
65
- yield initTestBed(`<Form testId="form"/>`);
66
- const driver = yield createFormDriver("form");
67
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
68
- }));
69
- (0, fixtures_1.test)("component renders with form items", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
70
- yield initTestBed(`
71
- <Form>
72
- <FormItem label="Name" bindTo="name" />
73
- <FormItem label="Email" bindTo="email" />
74
- </Form>
75
- `);
76
- yield (0, fixtures_1.expect)(page.getByText("Name")).toBeVisible();
77
- yield (0, fixtures_1.expect)(page.getByText("Email")).toBeVisible();
78
- }));
79
- (0, fixtures_1.test)("component renders save and cancel buttons by default", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
80
- yield initTestBed(`<Form/>`);
81
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
82
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
83
- }));
84
- (0, fixtures_1.test)("component renders custom button labels", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
85
- yield initTestBed(`
86
- <Form cancelLabel="Go Back" saveLabel="Submit"/>
87
- `);
88
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Go Back" })).toBeVisible();
89
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Submit" })).toBeVisible();
90
- }));
91
- (0, fixtures_1.test)("component swaps cancel and save button positions", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
92
- yield initTestBed(`
93
- <Form swapCancelAndSave="true"/>
94
- `);
95
- const buttons = page.getByRole("button");
96
- yield (0, fixtures_1.expect)(buttons.first()).toHaveText("Save");
97
- yield (0, fixtures_1.expect)(buttons.last()).toHaveText("Cancel");
98
- }));
99
- // =============================================================================
100
- // HIDE BUTTON ROW TESTS
101
- // =============================================================================
102
- fixtures_1.test.describe("hideButtonRow property", () => {
103
- (0, fixtures_1.test)("hides button row when set to true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
104
- yield initTestBed(`<Form hideButtonRow="true"/>`);
105
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).not.toBeVisible();
106
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
107
- }));
108
- (0, fixtures_1.test)("shows button row when set to false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
109
- yield initTestBed(`<Form hideButtonRow="false"/>`);
110
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
111
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
112
- }));
113
- (0, fixtures_1.test)("shows button row by default when property not set", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
114
- yield initTestBed(`<Form/>`);
115
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
116
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
117
- }));
118
- (0, fixtures_1.test)("hides custom button row template when set to true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
119
- yield initTestBed(`
120
- <Form hideButtonRow="true">
121
- <property name="buttonRowTemplate">
122
- <Button label="Custom Save" type="submit" testId="customSave" />
123
- <Button label="Custom Cancel" type="button" testId="customCancel" />
124
- </property>
125
- </Form>
126
- `);
127
- yield (0, fixtures_1.expect)(page.getByTestId("customSave")).not.toBeVisible();
128
- yield (0, fixtures_1.expect)(page.getByTestId("customCancel")).not.toBeVisible();
129
- }));
130
- (0, fixtures_1.test)("overrides hideButtonRowUntilDirty when both are set", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
131
- yield initTestBed(`
132
- <Form hideButtonRow="true" hideButtonRowUntilDirty="true">
133
- <FormItem label="Name" bindTo="name" testId="nameField" />
134
- </Form>
135
- `);
136
- // Button row should be hidden even before making changes
137
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
138
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).not.toBeVisible();
139
- // Make the form dirty
140
- const driver = yield createFormItemDriver("nameField");
141
- const input = yield createTextBoxDriver(driver.input);
142
- yield input.field.fill("John");
143
- // Button row should still be hidden even after making changes
144
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
145
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).not.toBeVisible();
146
- }));
147
- (0, fixtures_1.test)("handles null value gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
148
- yield initTestBed(`<Form hideButtonRow="{null}"/>`);
149
- // Should show button row (default behavior)
150
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
151
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
152
- }));
153
- (0, fixtures_1.test)("handles undefined value gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
154
- yield initTestBed(`<Form hideButtonRow="{undefined}"/>`);
155
- // Should show button row (default behavior)
156
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
157
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
158
- }));
159
- (0, fixtures_1.test)("handles string 'true' value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
160
- yield initTestBed(`<Form hideButtonRow="true"/>`);
161
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).not.toBeVisible();
162
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
163
- }));
164
- (0, fixtures_1.test)("handles string 'false' value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
165
- yield initTestBed(`<Form hideButtonRow="false"/>`);
166
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
167
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
168
- }));
169
- (0, fixtures_1.test)("form submission still works with hidden button row via external submit", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
170
- const { testStateDriver } = yield initTestBed(`
171
- <Fragment>
172
- <Form id="testForm" hideButtonRow="true" onSubmit="arg => testState = arg">
173
- <FormItem label="Name" bindTo="name" testId="nameField" />
174
- <Button type="submit" label="External Submit" testId="externalSubmit" />
175
- </Form>
176
- </Fragment>
177
- `);
178
- const driver = yield createFormItemDriver("nameField");
179
- const input = yield createTextBoxDriver(driver.input);
180
- yield input.field.fill("John Doe");
181
- yield page.getByTestId("externalSubmit").click();
182
- const submittedData = yield testStateDriver.testState();
183
- (0, fixtures_1.expect)(submittedData).toEqual({ name: "John Doe" });
184
- }));
185
- });
186
- // =============================================================================
187
- // HIDE BUTTON ROW UNTIL DIRTY TESTS
188
- // =============================================================================
189
- fixtures_1.test.describe("hideButtonRowUntilDirty property", () => {
190
- (0, fixtures_1.test)("hides button row initially when form is not dirty", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
191
- yield initTestBed(`
192
- <Form hideButtonRowUntilDirty="true">
193
- <FormItem label="Name" bindTo="name" testId="nameField" />
194
- </Form>
195
- `);
196
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).not.toBeVisible();
197
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
198
- }));
199
- (0, fixtures_1.test)("shows button row when form becomes dirty", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
200
- yield initTestBed(`
201
- <Form hideButtonRowUntilDirty="true">
202
- <FormItem label="Name" bindTo="name" testId="nameField" />
203
- </Form>
204
- `);
205
- // Initially hidden
206
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
207
- // Make form dirty
208
- const driver = yield createFormItemDriver("nameField");
209
- const input = yield createTextBoxDriver(driver.input);
210
- yield input.field.fill("John");
211
- // Now visible
212
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
213
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
214
- }));
215
- (0, fixtures_1.test)("keeps button row visible after form becomes dirty", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
216
- yield initTestBed(`
217
- <Form hideButtonRowUntilDirty="true">
218
- <FormItem label="Name" bindTo="name" testId="nameField" />
219
- </Form>
220
- `);
221
- const driver = yield createFormItemDriver("nameField");
222
- const input = yield createTextBoxDriver(driver.input);
223
- // Make form dirty
224
- yield input.field.fill("John");
225
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
226
- // Clear the input (form is still dirty)
227
- yield input.field.clear();
228
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
229
- }));
230
- (0, fixtures_1.test)("shows button row by default when property set to false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, }) {
231
- yield initTestBed(`
232
- <Form hideButtonRowUntilDirty="false">
233
- <FormItem label="Name" bindTo="name" testId="nameField" />
234
- </Form>
235
- `);
236
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
237
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
238
- }));
239
- (0, fixtures_1.test)("shows button row by default when property not set", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
240
- yield initTestBed(`
241
- <Form>
242
- <FormItem label="Name" bindTo="name" testId="nameField" />
243
- </Form>
244
- `);
245
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
246
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
247
- }));
248
- (0, fixtures_1.test)("works with multiple form items", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
249
- yield initTestBed(`
250
- <Form hideButtonRowUntilDirty="true">
251
- <FormItem label="Name" bindTo="name" testId="nameField" />
252
- <FormItem label="Email" bindTo="email" testId="emailField" />
253
- </Form>
254
- `);
255
- // Initially hidden
256
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
257
- // Modify second field
258
- const emailDriver = yield createFormItemDriver("emailField");
259
- const emailInput = yield createTextBoxDriver(emailDriver.input);
260
- yield emailInput.field.fill("test@example.com");
261
- // Now visible
262
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
263
- }));
264
- (0, fixtures_1.test)("hides custom button row template until dirty", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
265
- yield initTestBed(`
266
- <Form hideButtonRowUntilDirty="true">
267
- <FormItem label="Name" bindTo="name" testId="nameField" />
268
- <property name="buttonRowTemplate">
269
- <Button label="Custom Save" type="submit" testId="customSave" />
270
- </property>
271
- </Form>
272
- `);
273
- // Initially hidden
274
- yield (0, fixtures_1.expect)(page.getByTestId("customSave")).not.toBeVisible();
275
- // Make form dirty
276
- const driver = yield createFormItemDriver("nameField");
277
- const input = yield createTextBoxDriver(driver.input);
278
- yield input.field.fill("John");
279
- // Now visible
280
- yield (0, fixtures_1.expect)(page.getByTestId("customSave")).toBeVisible();
281
- }));
282
- (0, fixtures_1.test)("handles null value gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
283
- yield initTestBed(`
284
- <Form hideButtonRowUntilDirty="{null}">
285
- <FormItem label="Name" bindTo="name" testId="nameField" />
286
- </Form>
287
- `);
288
- // Should show button row (default behavior)
289
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
290
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
291
- }));
292
- (0, fixtures_1.test)("handles undefined value gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
293
- yield initTestBed(`
294
- <Form hideButtonRowUntilDirty="{undefined}">
295
- <FormItem label="Name" bindTo="name" testId="nameField" />
296
- </Form>
297
- `);
298
- // Should show button row (default behavior)
299
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Cancel" })).toBeVisible();
300
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
301
- }));
302
- (0, fixtures_1.test)("works with form initialized with data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
303
- yield initTestBed(`
304
- <Form hideButtonRowUntilDirty="true" data="{{ name: 'Initial' }}">
305
- <FormItem label="Name" bindTo="name" testId="nameField" />
306
- </Form>
307
- `);
308
- // Initially hidden (form has data but is not dirty)
309
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
310
- // Make form dirty
311
- const driver = yield createFormItemDriver("nameField");
312
- const input = yield createTextBoxDriver(driver.input);
313
- yield input.field.fill("Modified");
314
- // Now visible
315
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
316
- }));
317
- (0, fixtures_1.test)("button row appears when checkbox is checked", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
318
- yield initTestBed(`
319
- <Form hideButtonRowUntilDirty="true">
320
- <FormItem label="Accept Terms" bindTo="terms" type="checkbox" />
321
- </Form>
322
- `);
323
- // Initially hidden
324
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
325
- // Check the checkbox
326
- const checkbox = page.getByRole("checkbox");
327
- yield checkbox.check();
328
- // Now visible
329
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
330
- }));
331
- (0, fixtures_1.test)("button row appears when slider value changes", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
332
- yield initTestBed(`
333
- <Form hideButtonRowUntilDirty="true">
334
- <FormItem label="Volume" bindTo="volume" type="slider" testId="volumeField" />
335
- </Form>
336
- `);
337
- // Initially hidden
338
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).not.toBeVisible();
339
- // Move the slider using keyboard
340
- const slider = page.getByRole("slider");
341
- yield slider.press("ArrowRight");
342
- // Now visible
343
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Save" })).toBeVisible();
344
- }));
345
- });
346
- // =============================================================================
347
- // ENABLE SUBMIT PROPERTY TESTS
348
- // =============================================================================
349
- fixtures_1.test.describe("enableSubmit property", () => {
350
- (0, fixtures_1.test)("disables submit button when set to false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
351
- yield initTestBed(`<Form enableSubmit="false"/>`);
352
- const saveButton = page.getByRole("button", { name: "Save" });
353
- yield (0, fixtures_1.expect)(saveButton).toBeVisible();
354
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
355
- }));
356
- (0, fixtures_1.test)("enables submit button when set to true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
357
- yield initTestBed(`<Form enableSubmit="true"/>`);
358
- const saveButton = page.getByRole("button", { name: "Save" });
359
- yield (0, fixtures_1.expect)(saveButton).toBeVisible();
360
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
361
- }));
362
- (0, fixtures_1.test)("submit button is enabled by default when property not set", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, }) {
363
- yield initTestBed(`<Form/>`);
364
- const saveButton = page.getByRole("button", { name: "Save" });
365
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
366
- }));
367
- (0, fixtures_1.test)("prevents form submission when set to false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
368
- const { testStateDriver } = yield initTestBed(`
369
- <Form enableSubmit="false" onSubmit="arg => testState = arg">
370
- <FormItem label="Name" bindTo="name" testId="nameField" />
371
- </Form>
372
- `);
373
- const saveButton = page.getByRole("button", { name: "Save" });
374
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
375
- // Verify form does not submit (button is disabled, so click won't work)
376
- yield saveButton.click({ force: true }); // Force click on disabled button
377
- // testState should remain null since submit was prevented
378
- yield fixtures_1.expect.poll(testStateDriver.testState).toBeNull();
379
- }));
380
- (0, fixtures_1.test)("allows form submission when set to true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
381
- const { testStateDriver } = yield initTestBed(`
382
- <Form enableSubmit="true" onSubmit="arg => testState = arg">
383
- <FormItem label="Name" bindTo="name" testId="nameField" />
384
- </Form>
385
- `);
386
- const driver = yield createFormItemDriver("nameField");
387
- const input = yield createTextBoxDriver(driver.input);
388
- yield input.field.fill("John Doe");
389
- const saveButton = page.getByRole("button", { name: "Save" });
390
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
391
- yield saveButton.click();
392
- const submittedData = yield testStateDriver.testState();
393
- (0, fixtures_1.expect)(submittedData).toEqual({ name: "John Doe" });
394
- }));
395
- (0, fixtures_1.test)("handles null value gracefully (defaults to enabled)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
396
- yield initTestBed(`<Form enableSubmit="{null}"/>`);
397
- const saveButton = page.getByRole("button", { name: "Save" });
398
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
399
- }));
400
- (0, fixtures_1.test)("handles string 'true' value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
401
- yield initTestBed(`<Form enableSubmit="true"/>`);
402
- const saveButton = page.getByRole("button", { name: "Save" });
403
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
404
- }));
405
- (0, fixtures_1.test)("handles string 'false' value", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
406
- yield initTestBed(`<Form enableSubmit="false"/>`);
407
- const saveButton = page.getByRole("button", { name: "Save" });
408
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
409
- }));
410
- (0, fixtures_1.test)("does not affect cancel button", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
411
- yield initTestBed(`<Form enableSubmit="false"/>`);
412
- const cancelButton = page.getByRole("button", { name: "Cancel" });
413
- yield (0, fixtures_1.expect)(cancelButton).toBeEnabled();
414
- }));
415
- (0, fixtures_1.test)("works with custom submit button label", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
416
- yield initTestBed(`<Form enableSubmit="false" saveLabel="Submit Now"/>`);
417
- const submitButton = page.getByRole("button", { name: "Submit Now" });
418
- yield (0, fixtures_1.expect)(submitButton).toBeDisabled();
419
- }));
420
- (0, fixtures_1.test)("works together with form disabled state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
421
- yield initTestBed(`<Form enabled="false" enableSubmit="true"/>`);
422
- const saveButton = page.getByRole("button", { name: "Save" });
423
- // Form disabled takes precedence
424
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
425
- }));
426
- });
427
- // =============================================================================
428
- // DATA PROPERTY TESTS
429
- // =============================================================================
430
- fixtures_1.test.describe("data property", () => {
431
- (0, fixtures_1.test)("sets initial form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
432
- yield initTestBed(`
433
- <Form data="{{ name: 'John', age: 30 }}">
434
- <FormItem label="Name" bindTo="name" testId="nameField" />
435
- <FormItem label="Age" bindTo="age" type="integer" testId="ageField" />
436
- </Form>
437
- `);
438
- const nameDriver = yield createFormItemDriver("nameField");
439
- const nameInput = yield createTextBoxDriver(nameDriver.input);
440
- const ageDriver = yield createFormItemDriver("ageField");
441
- const ageInput = yield createTextBoxDriver(ageDriver.input);
442
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("John");
443
- yield (0, fixtures_1.expect)(ageInput.field).toHaveValue("30");
444
- }));
445
- (0, fixtures_1.test)("handles null data gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
446
- yield initTestBed(`<Form data="{null}" testId="form"/>`);
447
- const driver = yield createFormDriver("form");
448
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
449
- }));
450
- (0, fixtures_1.test)("handles undefined data gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
451
- yield initTestBed(`<Form data="{undefined}" testId="form"/>`);
452
- const driver = yield createFormDriver("form");
453
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
454
- }));
455
- (0, fixtures_1.test)("handles empty object data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
456
- yield initTestBed(`<Form data="{{}}" testId="form"/>`);
457
- const driver = yield createFormDriver("form");
458
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
459
- }));
460
- });
461
- // =============================================================================
462
- // ITEM LABEL POSITION TESTS
463
- // =============================================================================
464
- fixtures_1.test.describe("itemLabelPosition property", () => {
465
- abstractions_1.labelPositionValues.forEach((position) => {
466
- (0, fixtures_1.test)(`sets item label position to ${position}`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, }) {
467
- yield initTestBed(`
468
- <Form itemLabelPosition="${position}">
469
- <FormItem label="Test Label" bindTo="test" testId="testField" />
470
- </Form>
471
- `);
472
- const driver = yield createFormItemDriver("testField");
473
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
474
- }));
475
- });
476
- (0, fixtures_1.test)("handles invalid itemLabelPosition gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
477
- yield initTestBed(`<Form itemLabelPosition="invalid" testId="form"/>`);
478
- const driver = yield createFormDriver("form");
479
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
480
- }));
481
- });
482
- // =============================================================================
483
- // ITEM LABEL WIDTH TESTS
484
- // =============================================================================
485
- fixtures_1.test.describe("itemLabelWidth property", () => {
486
- (0, fixtures_1.test)("sets custom label width", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver }) {
487
- yield initTestBed(`
488
- <Form itemLabelWidth="200px">
489
- <FormItem label="Test Label" bindTo="test" testId="testField" />
490
- </Form>
491
- `);
492
- const driver = yield createFormItemDriver("testField");
493
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
494
- }));
495
- (0, fixtures_1.test)("handles numeric label width", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver }) {
496
- yield initTestBed(`
497
- <Form itemLabelWidth="150">
498
- <FormItem label="Test Label" bindTo="test" testId="testField" />
499
- </Form>
500
- `);
501
- const driver = yield createFormItemDriver("testField");
502
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
503
- }));
504
- (0, fixtures_1.test)("handles invalid label width gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
505
- yield initTestBed(`<Form itemLabelWidth="invalid" testId="form"/>`);
506
- const driver = yield createFormDriver("form");
507
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
508
- }));
509
- (0, fixtures_1.test)("handles theme variable", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver }) {
510
- const spaceBase = 0.25; //rem
511
- const labelSize = 10;
512
- const widthInPx = labelSize * spaceBase * 16; //px
513
- yield initTestBed(`
514
- <Theme space-base="${spaceBase}rem">
515
- <Form itemLabelWidth="$space-${labelSize}">
516
- <FormItem label="Test Label" bindTo="test" testId="testField" />
517
- </Form>
518
- </Theme>
519
- `);
520
- const driver = yield createFormItemDriver("testField");
521
- const labelWidth = yield (0, component_test_helpers_1.getElementStyle)(driver.label, "width");
522
- (0, fixtures_1.expect)(labelWidth).toBe(`${widthInPx}px`);
523
- }));
524
- });
525
- // =============================================================================
526
- // ITEM LABEL BREAK TESTS
527
- // =============================================================================
528
- fixtures_1.test.describe("itemLabelBreak property", () => {
529
- (0, fixtures_1.test)("enables label line breaking", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver }) {
530
- yield initTestBed(`
531
- <Form itemLabelBreak="true">
532
- <FormItem label="Very Long Label That Should Break" bindTo="test" testId="testField" />
533
- </Form>
534
- `);
535
- const driver = yield createFormItemDriver("testField");
536
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
537
- }));
538
- (0, fixtures_1.test)("disables label line breaking", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver }) {
539
- yield initTestBed(`
540
- <Form itemLabelBreak="false">
541
- <FormItem label="Very Long Label That Should Not Break" bindTo="test" testId="testField" />
542
- </Form>
543
- `);
544
- const driver = yield createFormItemDriver("testField");
545
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
546
- }));
547
- });
548
- // =============================================================================
549
- // ENABLED PROPERTY TESTS
550
- // =============================================================================
551
- fixtures_1.test.describe("enabled property", () => {
552
- (0, fixtures_1.test)("disables save button when enabled is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
553
- yield initTestBed(`
554
- <Form enabled="false">
555
- <FormItem label="Test" bindTo="test" />
556
- </Form>
557
- `);
558
- const saveButton = page.getByRole("button", { name: "Save" });
559
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
560
- }));
561
- (0, fixtures_1.test)("enables form when enabled is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
562
- yield initTestBed(`
563
- <Form enabled="true">
564
- <FormItem label="Test" bindTo="test" />
565
- </Form>
566
- `);
567
- const saveButton = page.getByRole("button", { name: "Save" });
568
- const cancelButton = page.getByRole("button", { name: "Cancel" });
569
- yield (0, fixtures_1.expect)(saveButton).toBeEnabled();
570
- yield (0, fixtures_1.expect)(cancelButton).toBeEnabled();
571
- }));
572
- });
573
- // =============================================================================
574
- // BUTTON ROW TEMPLATE TESTS
575
- // =============================================================================
576
- fixtures_1.test.describe("buttonRowTemplate property", () => {
577
- (0, fixtures_1.test)("supports custom button row template", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
578
- yield initTestBed(`
579
- <Form>
580
- <FormItem label="Test" bindTo="test" />
581
- <property name="buttonRowTemplate">
582
- <Button label="Custom Save" type="submit" />
583
- <Button label="Custom Cancel" type="button" />
584
- </property>
585
- </Form>
586
- `);
587
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Custom Save" })).toBeVisible();
588
- yield (0, fixtures_1.expect)(page.getByRole("button", { name: "Custom Cancel" })).toBeVisible();
589
- }));
590
- });
591
- // =============================================================================
592
- // EVENT TESTS
593
- // =============================================================================
594
- fixtures_1.test.describe("Events", () => {
595
- (0, fixtures_1.test)("onSubmit event fires with form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
596
- const { testStateDriver } = yield initTestBed(`
597
- <Form data="{{ name: 'John', email: 'john@example.com' }}" onSubmit="data => testState = data">
598
- <FormItem label="Name" bindTo="name" />
599
- <FormItem label="Email" bindTo="email" />
600
- </Form>
601
- `);
602
- yield page.getByRole("button", { name: "Save" }).click();
603
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual({
604
- name: "John",
605
- email: "john@example.com",
606
- });
607
- }));
608
- (0, fixtures_1.test)("onCancel event fires when cancel button clicked", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
609
- const { testStateDriver } = yield initTestBed(`
610
- <Form onCancel="testState = 'cancelled'">
611
- <FormItem label="Test" bindTo="test" />
612
- </Form>
613
- `);
614
- yield page.getByRole("button", { name: "Cancel" }).click();
615
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("cancelled");
616
- }));
617
- (0, fixtures_1.test)("onSuccess event fires on successful submission", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormDriver, }) {
618
- const { testStateDriver } = yield initTestBed(`
619
- <Form
620
- testId="form"
621
- submitUrl="/test-success"
622
- onSuccess="testState = 'success'; console.log('Submitted successfully')"
623
- data="{{ name: 'Test' }}">
624
- <FormItem label="Name" bindTo="name" />
625
- </Form>
626
- `, {
627
- apiInterceptor: {
628
- operations: {
629
- testSuccess: {
630
- url: "/test-success",
631
- method: "put",
632
- handler: `return { success: true };`,
633
- },
634
- },
635
- },
636
- });
637
- const driver = yield createFormDriver("form");
638
- yield driver.submitForm();
639
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("success");
640
- }));
641
- (0, fixtures_1.test)("onReset event fires when form is reset", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
642
- const { testStateDriver } = yield initTestBed(`
643
- <Form
644
- id="testForm"
645
- onReset="testState = 'reset'"
646
- data="{{ name: 'Test' }}">
647
- <FormItem label="Name" bindTo="name" />
648
- <Button onClick="testForm.reset()" label="Reset Form" />
649
- </Form>
650
- `);
651
- yield page.getByRole("button", { name: "Reset Form" }).click();
652
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("reset");
653
- }));
654
- });
655
- // =============================================================================
656
- // API TESTS
657
- // =============================================================================
658
- fixtures_1.test.describe("APIs", () => {
659
- (0, fixtures_1.test)("update method updates form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
660
- yield initTestBed(`
661
- <Form
662
- id="testForm"
663
- data="{{ name: 'Original', age: 25 }}">
664
- <FormItem label="Name" bindTo="name" testId="nameField" />
665
- <FormItem label="Age" bindTo="age" type="integer" testId="ageField" />
666
- <Button onClick="testForm.update({ name: 'Updated', age: 30 })" label="Update" />
667
- </Form>
668
- `);
669
- const nameDriver = yield createFormItemDriver("nameField");
670
- const nameInput = yield createTextBoxDriver(nameDriver.input);
671
- const ageDriver = yield createFormItemDriver("ageField");
672
- const ageInput = yield createTextBoxDriver(ageDriver.input);
673
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("Original");
674
- yield (0, fixtures_1.expect)(ageInput.field).toHaveValue("25");
675
- yield page.getByRole("button", { name: "Update" }).click();
676
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("Updated");
677
- yield (0, fixtures_1.expect)(ageInput.field).toHaveValue("30");
678
- }));
679
- (0, fixtures_1.test)("reset method resets form to initial state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
680
- yield initTestBed(`
681
- <Form
682
- id="testForm"
683
- data="{{ name: 'Initial' }}">
684
- <FormItem label="Name" bindTo="name" testId="nameField" />
685
- <Button onClick="testForm.reset()" label="Reset" />
686
- </Form>
687
- `);
688
- const nameDriver = yield createFormItemDriver("nameField");
689
- const nameInput = yield createTextBoxDriver(nameDriver.input);
690
- // Change the input value
691
- yield nameInput.field.fill("Changed");
692
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("Changed");
693
- // Reset the form
694
- yield page.getByRole("button", { name: "Reset" }).click();
695
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("Initial");
696
- }));
697
- (0, fixtures_1.test)("validate method returns validation results without submitting", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
698
- const { testStateDriver } = yield initTestBed(`
699
- <Form id="testForm">
700
- <FormItem label="Name" bindTo="name" required="true" testId="nameField" />
701
- <FormItem label="Email" bindTo="email" testId="emailField" />
702
- <Button onClick="testState = testForm.validate()" label="Validate" testId="validateBtn" />
703
- </Form>
704
- `);
705
- // Click validate button without filling required field
706
- yield page.getByTestId("validateBtn").click();
707
- // Wait for validation to complete
708
- yield page.waitForTimeout(100);
709
- const result = yield testStateDriver.testState();
710
- (0, fixtures_1.expect)(result).toBeTruthy();
711
- (0, fixtures_1.expect)(result.isValid).toBe(false);
712
- (0, fixtures_1.expect)(result.errors).toBeDefined();
713
- (0, fixtures_1.expect)(result.errors.length).toBeGreaterThan(0);
714
- }));
715
- (0, fixtures_1.test)("validate method returns isValid true when all validations pass", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
716
- const { testStateDriver } = yield initTestBed(`
717
- <Form id="testForm">
718
- <FormItem label="Name" bindTo="name" required="true" testId="nameField" />
719
- <Button onClick="testState = testForm.validate()" label="Validate" testId="validateBtn" />
720
- </Form>
721
- `);
722
- // Fill the required field
723
- const nameDriver = yield createFormItemDriver("nameField");
724
- const nameInput = yield createTextBoxDriver(nameDriver.input);
725
- yield nameInput.field.fill("John Doe");
726
- // Click validate button
727
- yield page.getByTestId("validateBtn").click();
728
- // Wait for validation to complete
729
- yield page.waitForTimeout(100);
730
- const result = yield testStateDriver.testState();
731
- (0, fixtures_1.expect)(result).toBeTruthy();
732
- (0, fixtures_1.expect)(result.isValid).toBe(true);
733
- (0, fixtures_1.expect)(result.errors.length).toBe(0);
734
- }));
735
- (0, fixtures_1.test)("validate method returns cleaned form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
736
- const { testStateDriver } = yield initTestBed(`
737
- <Form id="testForm">
738
- <FormItem label="Name" bindTo="name" testId="nameField" />
739
- <FormItem label="Age" bindTo="age" type="integer" testId="ageField" />
740
- <Button onClick="testState = testForm.validate()" label="Validate" testId="validateBtn" />
741
- </Form>
742
- `);
743
- // Fill form fields
744
- const nameDriver = yield createFormItemDriver("nameField");
745
- const nameInput = yield createTextBoxDriver(nameDriver.input);
746
- yield nameInput.field.fill("John Doe");
747
- const ageDriver = yield createFormItemDriver("ageField");
748
- const ageInput = yield createTextBoxDriver(ageDriver.input);
749
- yield ageInput.field.fill("30");
750
- // Click validate button
751
- yield page.getByTestId("validateBtn").click();
752
- // Wait for validation to complete
753
- yield page.waitForTimeout(100);
754
- const result = yield testStateDriver.testState();
755
- (0, fixtures_1.expect)(result).toBeTruthy();
756
- (0, fixtures_1.expect)(result.data).toEqual({ name: "John Doe", age: "30" });
757
- }));
758
- (0, fixtures_1.test)("validate method displays validation errors on form", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, }) {
759
- yield initTestBed(`
760
- <Form id="testForm">
761
- <FormItem label="Name" bindTo="name" required="true" testId="nameField" />
762
- <Button onClick="testForm.validate()" label="Validate" testId="validateBtn" />
763
- </Form>
764
- `);
765
- // Click validate without filling required field
766
- yield page.getByTestId("validateBtn").click();
767
- // Validation error should be displayed
768
- const nameField = page.getByTestId("nameField");
769
- yield (0, fixtures_1.expect)(nameField).toContainText("This field is required");
770
- }));
771
- (0, fixtures_1.test)("validate method does not trigger form submission", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
772
- const { testStateDriver } = yield initTestBed(`
773
- <Form id="testForm" onSubmit="testState = 'submitted'">
774
- <FormItem label="Name" bindTo="name" testId="nameField" />
775
- <Button onClick="testForm.validate()" label="Validate" testId="validateBtn" />
776
- </Form>
777
- `);
778
- // Fill form
779
- const nameDriver = yield createFormItemDriver("nameField");
780
- const nameInput = yield createTextBoxDriver(nameDriver.input);
781
- yield nameInput.field.fill("John");
782
- // Click validate button
783
- yield page.getByTestId("validateBtn").click();
784
- // Wait a bit
785
- yield page.waitForTimeout(200);
786
- // testState should remain null (not 'submitted')
787
- yield fixtures_1.expect.poll(testStateDriver.testState).toBeNull();
788
- }));
789
- (0, fixtures_1.test)("validate method returns complete validation results object", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, createTextBoxDriver, }) {
790
- const { testStateDriver } = yield initTestBed(`
791
- <Form id="testForm">
792
- <FormItem label="Name" bindTo="name" required="true" testId="nameField" />
793
- <FormItem label="Email" bindTo="email" testId="emailField" />
794
- <Button onClick="testState = testForm.validate()" label="Validate" testId="validateBtn" />
795
- </Form>
796
- `);
797
- // Fill only email (name is required)
798
- const emailDriver = yield createFormItemDriver("emailField");
799
- const emailInput = yield createTextBoxDriver(emailDriver.input);
800
- yield emailInput.field.fill("test@example.com");
801
- // Click validate button
802
- yield page.getByTestId("validateBtn").click();
803
- // Wait for validation to complete
804
- yield page.waitForTimeout(100);
805
- const result = yield testStateDriver.testState();
806
- (0, fixtures_1.expect)(result).toBeTruthy();
807
- (0, fixtures_1.expect)(result.isValid).toBeDefined();
808
- (0, fixtures_1.expect)(result.data).toBeDefined();
809
- (0, fixtures_1.expect)(result.errors).toBeDefined();
810
- (0, fixtures_1.expect)(result.warnings).toBeDefined();
811
- (0, fixtures_1.expect)(result.validationResults).toBeDefined();
812
- }));
813
- });
814
- // =============================================================================
815
- // CONTEXT VARIABLE TESTS
816
- // =============================================================================
817
- fixtures_1.test.describe("Context Variables", () => {
818
- (0, fixtures_1.test)("$data context variable provides access to form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, }) {
819
- // This test needs specific FormItem behavior that may vary
820
- yield initTestBed(`
821
- <Form data="{{ isEnabled: true, name: 'Joe' }}">
822
- <FormItem testId="isEnabled" label="Enable name" bindTo="isEnabled" type="checkbox" />
823
- <FormItem testId="name" enabled="{$data.isEnabled}" label="Name" bindTo="name" />
824
- </Form>
825
- `);
826
- const enableSwitch = (yield createFormItemDriver("isEnabled")).checkbox;
827
- const nameInput = (yield createFormItemDriver("name")).textBox;
828
- yield (0, fixtures_1.expect)(enableSwitch).toBeVisible();
829
- yield (0, fixtures_1.expect)(nameInput).toBeEnabled();
830
- yield enableSwitch.click();
831
- yield (0, fixtures_1.expect)(nameInput).toBeDisabled();
832
- }));
833
- (0, fixtures_1.test)("$data.update method updates form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, }) {
834
- yield initTestBed(`
835
- <Form data="{{ counter: 0 }}">
836
- <FormItem testId="counter" label="Counter" bindTo="counter" type="integer" />
837
- <Button onClick="$data.update({ counter: $data.counter + 1 })" label="Increment" />
838
- </Form>
839
- `);
840
- const counterDriver = yield createFormItemDriver("counter");
841
- const counterInput = counterDriver.textBox;
842
- yield (0, fixtures_1.expect)(counterInput).toHaveValue("0");
843
- yield page.getByRole("button", { name: "Increment" }).click({ force: true });
844
- yield (0, fixtures_1.expect)(counterInput).toHaveValue("1");
845
- }));
846
- });
847
- // =============================================================================
848
- // SUBMIT URL AND METHOD TESTS
849
- // =============================================================================
850
- fixtures_1.test.describe("Submit URL and Method", () => {
851
- (0, fixtures_1.test)("submits to custom URL with POST method (new date)", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
852
- yield initTestBed(`<App><Form testId="form" submitUrl="/custom-endpoint" data="{null}">
853
- <FormItem label="Name" bindTo="name" />
854
- </Form></App>`, {
855
- apiInterceptor: {
856
- operations: {
857
- customEndpoint: {
858
- url: "/custom-endpoint",
859
- method: "post",
860
- handler: `return { success: true };`,
861
- },
862
- },
863
- },
864
- });
865
- const driver = yield createFormDriver("form");
866
- yield driver.submitForm();
867
- const response = yield driver.getSubmitResponse("/custom-endpoint");
868
- (0, fixtures_1.expect)(response.ok()).toEqual(true);
869
- }));
870
- (0, fixtures_1.test)("uses PUT method for existing data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
871
- yield initTestBed(`<Form submitUrl="/entities/1" data="{{ id: 1, name: 'Existing' }}">
872
- <FormItem label="Name" bindTo="name" />
873
- </Form>`, {
874
- apiInterceptor: {
875
- operations: {
876
- updateEntity: {
877
- url: "/entities/1",
878
- method: "put",
879
- handler: `return { success: true };`,
880
- },
881
- },
882
- },
883
- });
884
- const driver = yield createFormDriver();
885
- yield driver.submitForm();
886
- const response = yield driver.getSubmitResponse("/entities/1");
887
- (0, fixtures_1.expect)(response.ok()).toEqual(true);
888
- }));
889
- (0, fixtures_1.test)("uses custom submit method", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
890
- yield initTestBed(`<Form submitUrl="/custom" submitMethod="put" data="{{ name: 'Test' }}">
891
- <FormItem label="Name" bindTo="name" />
892
- </Form>`, {
893
- apiInterceptor: {
894
- operations: {
895
- putCustom: {
896
- url: "/custom",
897
- method: "put",
898
- handler: `return { success: true };`,
899
- },
900
- },
901
- },
902
- });
903
- const driver = yield createFormDriver();
904
- yield driver.submitForm();
905
- const response = yield driver.getSubmitResponse("/custom");
906
- (0, fixtures_1.expect)(response.ok()).toEqual(true);
907
- }));
908
- });
909
- });
910
- // =============================================================================
911
- // ACCESSIBILITY TESTS
912
- // =============================================================================
913
- fixtures_1.test.describe("Accessibility", () => {
914
- (0, fixtures_1.test)("form has correct semantic role", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
915
- yield initTestBed(`<Form/>`);
916
- yield (0, fixtures_1.expect)(page.locator("form")).toBeVisible();
917
- }));
918
- (0, fixtures_1.test)("form items are properly associated with labels", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, }) {
919
- yield initTestBed(`
920
- <Form>
921
- <FormItem label="Full Name" bindTo="name" testId="nameField" />
922
- </Form>
923
- `);
924
- const driver = yield createFormItemDriver("nameField");
925
- yield (0, fixtures_1.expect)(driver.label).toBeVisible();
926
- yield (0, fixtures_1.expect)(driver.label).toHaveText("Full Name");
927
- }));
928
- (0, fixtures_1.test)("form submission is keyboard accessible", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
929
- const { testStateDriver } = yield initTestBed(`
930
- <Form onSubmit="testState = 'submitted via keyboard'">
931
- <FormItem label="Name" bindTo="name" />
932
- </Form>
933
- `);
934
- const submitButton = page.getByRole("button", { name: "Save" });
935
- yield submitButton.focus();
936
- yield page.keyboard.press("Enter");
937
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("submitted via keyboard");
938
- }));
939
- (0, fixtures_1.test)("form cancel is keyboard accessible", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
940
- const { testStateDriver } = yield initTestBed(`
941
- <Form onCancel="testState = 'cancelled via keyboard'">
942
- <FormItem label="Name" bindTo="name" />
943
- </Form>
944
- `);
945
- const cancelButton = page.getByRole("button", { name: "Cancel" });
946
- yield cancelButton.focus();
947
- yield page.keyboard.press("Enter");
948
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual("cancelled via keyboard");
949
- }));
950
- (0, fixtures_1.test)("disabled form buttons are properly disabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
951
- yield initTestBed(`
952
- <Form enabled="false">
953
- <FormItem label="Name" bindTo="name" />
954
- </Form>
955
- `);
956
- const saveButton = page.getByRole("button", { name: "Save" });
957
- yield (0, fixtures_1.expect)(saveButton).toBeDisabled();
958
- }));
959
- });
960
- // =============================================================================
961
- // THEME VARIABLE TESTS
962
- // =============================================================================
963
- fixtures_1.test.describe("Theme Variables", () => {
964
- (0, fixtures_1.test)("applies custom gap theme variable", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
965
- yield initTestBed(`<Form testId="form"/>`, {
966
- testThemeVars: {
967
- "gap-Form": "2rem",
968
- },
969
- });
970
- const driver = yield createFormDriver("form");
971
- yield (0, fixtures_1.expect)(driver.component).toHaveCSS("gap", "32px");
972
- }));
973
- (0, fixtures_1.test)("applies custom button row gap theme variable", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
974
- yield initTestBed(`<Form testId="form"/>`, {
975
- testThemeVars: {
976
- "gap-buttonRow-Form": "1rem",
977
- },
978
- });
979
- const driver = yield createFormDriver("form");
980
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
981
- }));
982
- (0, fixtures_1.test)("applies validation display theme variables", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
983
- // This test requires validation system to trigger error display
984
- yield initTestBed(`
985
- <Form>
986
- <FormItem testId="email" label="Email" bindTo="email" type="email" required="true" />
987
- </Form>
988
- `, {
989
- testThemeVars: {
990
- "backgroundColor-ValidationDisplay-error": "rgb(255, 0, 0)",
991
- "textColor-ValidationDisplay-error": "rgb(255, 255, 255)",
992
- },
993
- });
994
- // Trigger validation by submitting with empty required field
995
- yield page.getByRole("button", { name: "Save" }).click();
996
- const emailComp = page.getByTestId("email");
997
- yield (0, fixtures_1.expect)(emailComp).toContainText("This field is required");
998
- }));
999
- });
1000
- // =============================================================================
1001
- // EDGE CASES TESTS
1002
- // =============================================================================
1003
- fixtures_1.test.describe("Edge Cases", () => {
1004
- (0, fixtures_1.test)("handles form without any form items", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1005
- yield initTestBed(`<Form testId="form"/>`);
1006
- const driver = yield createFormDriver("form");
1007
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
1008
- }));
1009
- (0, fixtures_1.test)("handles malformed data input gracefully", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1010
- yield initTestBed(`<Form data="{invalidJson}" testId="form"/>`);
1011
- const driver = yield createFormDriver("form");
1012
- yield (0, fixtures_1.expect)(driver.component).toBeVisible();
1013
- }));
1014
- (0, fixtures_1.test)("Form does not render if data receives malformed input", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1015
- yield initTestBed(`<Form data="{}" />`);
1016
- yield (0, fixtures_1.expect)((yield createFormDriver()).component).not.toBeAttached();
1017
- }));
1018
- (0, fixtures_1.test)("handles deeply nested data structure", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
1019
- yield initTestBed(`
1020
- <Form data="{{ user: { profile: { name: 'John' } } }}">
1021
- <FormItem label="Name" bindTo="user.profile.name" testId="nameField" />
1022
- </Form>
1023
- `);
1024
- const driver = yield createFormItemDriver("nameField");
1025
- const input = yield createTextBoxDriver(driver.input);
1026
- yield (0, fixtures_1.expect)(input.field).toHaveValue("John");
1027
- }));
1028
- (0, fixtures_1.test)("handles form with validation errors", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
1029
- yield initTestBed(`
1030
- <Form>
1031
- <FormItem label="Email" bindTo="email" type="email" required="true" />
1032
- </Form>
1033
- `);
1034
- // Try to submit form without filling required field
1035
- yield page.getByRole("button", { name: "Save" }).click();
1036
- // Validation should prevent submission and show error
1037
- const form = page.locator("form");
1038
- yield (0, fixtures_1.expect)(form).toBeVisible();
1039
- }));
1040
- (0, fixtures_1.test)("handles rapid form submissions", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
1041
- const { testStateDriver } = yield initTestBed(`
1042
- <Form onSubmit="testState = (testState || 0) + 1">
1043
- <FormItem label="Name" bindTo="name" />
1044
- </Form>
1045
- `);
1046
- const submitButton = page.getByRole("button", { name: "Save" });
1047
- // Click submit button multiple times rapidly
1048
- yield submitButton.click();
1049
- yield submitButton.click();
1050
- yield submitButton.click();
1051
- // Should only submit once or handle gracefully
1052
- yield fixtures_1.expect.poll(testStateDriver.testState).toBeGreaterThanOrEqual(1);
1053
- }));
1054
- (0, fixtures_1.test)("handles null and undefined in nested data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
1055
- yield initTestBed(`
1056
- <Form data="{{ user: null, settings: undefined, name: 'Test' }}">
1057
- <FormItem label="Name" bindTo="name" testId="nameField" />
1058
- </Form>
1059
- `);
1060
- const driver = yield createFormItemDriver("nameField");
1061
- const input = yield createTextBoxDriver(driver.input);
1062
- yield (0, fixtures_1.expect)(input.field).toHaveValue("Test");
1063
- }));
1064
- (0, fixtures_1.test)("handles form with empty string properties", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page }) {
1065
- yield initTestBed(`
1066
- <Form
1067
- cancelLabel=""
1068
- saveLabel=""
1069
- data="{{ name: '' }}">
1070
- <FormItem label="Name" bindTo="name" />
1071
- </Form>
1072
- `);
1073
- // Form should still be visible
1074
- const form = page.locator("form");
1075
- yield (0, fixtures_1.expect)(form).toBeVisible();
1076
- }));
1077
- (0, fixtures_1.test)("handles special characters in form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
1078
- yield initTestBed(`
1079
- <Form data="{{ name: 'José María', description: 'Test & symbols' }}">
1080
- <FormItem label="Name" bindTo="name" testId="nameField" />
1081
- <FormItem label="Description" bindTo="description" testId="descField" />
1082
- </Form>
1083
- `);
1084
- const nameDriver = yield createFormItemDriver("nameField");
1085
- const nameInput = yield createTextBoxDriver(nameDriver.input);
1086
- const descDriver = yield createFormItemDriver("descField");
1087
- const descInput = yield createTextBoxDriver(descDriver.input);
1088
- yield (0, fixtures_1.expect)(nameInput.field).toHaveValue("José María");
1089
- yield (0, fixtures_1.expect)(descInput.field).toHaveValue("Test & symbols");
1090
- }));
1091
- (0, fixtures_1.test)("user cannot submit with clientside errors present", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1092
- const { testStateDriver } = yield initTestBed(`
1093
- <Form onSubmit="testState = true">
1094
- <FormItem bindTo="name" required="true" />
1095
- </Form>
1096
- `);
1097
- const driver = yield createFormDriver();
1098
- // The onSubmit event should have been triggered if not for the client error of an empty required field
1099
- yield driver.submitForm("click");
1100
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(null);
1101
- }));
1102
- (0, fixtures_1.test)("can submit with invisible required field", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createFormItemDriver, createTextBoxDriver, page, }) {
1103
- const { testStateDriver } = yield initTestBed(`
1104
- <Form onSubmit="testState = true">
1105
- <FormItem testId="select" bindTo="authenticationType"
1106
- type="select" label="Authentication Type:" initialValue="{0}">
1107
- <Option value="{0}" label="Password" />
1108
- <Option value="{1}" label="Public Key" />
1109
- </FormItem>
1110
- <FormItem label="name1" testId="name1" bindTo="name1"
1111
- required="true" when="{$data.authenticationType == 0}"/>
1112
- <FormItem label="name2" testId="name2" bindTo="name2"
1113
- required="true" when="{$data.authenticationType == 1}"/>
1114
- </Form>
1115
- `);
1116
- const formDriver = yield createFormDriver();
1117
- const selectDriver = yield createFormItemDriver("select");
1118
- const textfieldElement = (yield createFormItemDriver("name2")).input;
1119
- const textfieldDriver = yield createTextBoxDriver(textfieldElement);
1120
- yield selectDriver.component.click();
1121
- yield page.getByText("Public Key").click();
1122
- yield textfieldDriver.field.fill("John");
1123
- yield formDriver.submitForm();
1124
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(true);
1125
- }));
1126
- (0, fixtures_1.test)("conditional fields keep the state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createOptionDriver, createTextBoxDriver, }) {
1127
- yield initTestBed(`
1128
- <Form>
1129
- <FormItem testId="select" bindTo="authenticationType"
1130
- type="radioGroup" label="Authentication Type:" initialValue="{0}">
1131
- <Option value="{0}" label="Password" testId="password"/>
1132
- <Option value="{1}" label="Public Key" testId="publicKey" />
1133
- </FormItem>
1134
- <FormItem label="name1" testId="name1" bindTo="name1"
1135
- required="true" when="{$data.authenticationType == 0}"/>
1136
- <FormItem label="name2" testId="name2" bindTo="name2"
1137
- required="true" when="{$data.authenticationType == 1}"/>
1138
- </Form>
1139
- `);
1140
- const option1Driver = yield createFormItemDriver("password");
1141
- const option2Driver = yield createOptionDriver("publicKey");
1142
- const textfield1Element = (yield createFormItemDriver("name1")).input;
1143
- const textfield1Driver = yield createTextBoxDriver(textfield1Element);
1144
- // Fill in first field
1145
- yield textfield1Driver.field.fill("Test Value");
1146
- yield (0, fixtures_1.expect)(textfield1Driver.field).toHaveValue("Test Value");
1147
- // Switch to second option
1148
- yield option2Driver.component.click();
1149
- // Switch back to first option
1150
- yield option1Driver.component.click();
1151
- // Field should retain its value
1152
- yield (0, fixtures_1.expect)(textfield1Driver.field).toHaveValue("Test Value");
1153
- }));
1154
- });
1155
- // =============================================================================
1156
- // ORIGINAL TEST SUITE (LEGACY TESTS)
1157
- // =============================================================================
1158
- (0, fixtures_1.test)("mock service responds", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1159
- yield initTestBed(`
1160
- <Form submitUrl="/test" />`, {
1161
- apiInterceptor: {
1162
- operations: {
1163
- test: {
1164
- url: "/test",
1165
- method: "post",
1166
- handler: `return true;`,
1167
- },
1168
- },
1169
- },
1170
- });
1171
- const driver = yield createFormDriver();
1172
- yield driver.submitForm();
1173
- const request = yield driver.getSubmitResponse("/test");
1174
- (0, fixtures_1.expect)(request.ok()).toEqual(true);
1175
- }));
1176
- // --- $data
1177
- (0, fixtures_1.test)("$data is correctly bound to form data", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createButtonDriver }) {
1178
- yield initTestBed(`
1179
- <Form data="{{ field: 'test' }}">
1180
- <FormItem label="testField" bindTo="field">
1181
- <Button testId="custom" label="{$data.field}" />
1182
- </FormItem>
1183
- </Form> `);
1184
- const driver = yield createButtonDriver("custom");
1185
- yield (0, fixtures_1.expect)(driver.component).toHaveExplicitLabel("test");
1186
- }));
1187
- (0, fixtures_1.test)("$data is correctly undefined if data is not set in props", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createButtonDriver, }) {
1188
- yield initTestBed(`
1189
- <Form>
1190
- <FormItem label="testField" bindTo="field">
1191
- <Button testId="custom" label="{$data.field}" />
1192
- </FormItem>
1193
- </Form> `);
1194
- const driver = yield createButtonDriver("custom");
1195
- yield (0, fixtures_1.expect)(driver.component).toHaveExplicitLabel(undefined);
1196
- }));
1197
- (0, fixtures_1.test)("Form buttons and contained FormItems are enabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormDriver, }) {
1198
- yield initTestBed(`
1199
- <Form testId="form">
1200
- <FormItem label="Name" bindTo="name" />
1201
- <FormItem label="Email" bindTo="email" />
1202
- </Form>
1203
- `);
1204
- const driver = yield createFormDriver("form");
1205
- yield (0, fixtures_1.expect)(page.getByText("Name")).toBeVisible();
1206
- yield (0, fixtures_1.expect)(page.getByText("Email")).toBeVisible();
1207
- yield (0, fixtures_1.expect)(driver.cancelButton).toBeEnabled();
1208
- yield (0, fixtures_1.expect)(driver.submitButton).toBeEnabled();
1209
- }));
1210
- (0, fixtures_1.test)("submit only triggers when enabled", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1211
- const { testStateDriver } = yield initTestBed(`
1212
- <Form enabled="false" data="{{ name: 'John' }}" onSubmit="testState = true">
1213
- <FormItem bindTo="name" />
1214
- </Form>`);
1215
- const driver = yield createFormDriver();
1216
- yield (0, fixtures_1.expect)(driver.submitButton).toBeDisabled();
1217
- yield driver.submitForm("keypress");
1218
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(null);
1219
- }));
1220
- (0, fixtures_1.test)("submit with unbound fields", (_a) => __awaiter(void 0, [_a], void 0, function* ({ page, initTestBed, createFormDriver }) {
1221
- yield initTestBed(`
1222
- <Fragment var.output="none">
1223
- <Form testId="form"
1224
- data="{{ firstname: 'James', lastname: 'Clewell' }}"
1225
- onSubmit="args => output = JSON.stringify(args)">
1226
- <FormItem label="Firstname" bindTo="firstname" />
1227
- <FormItem label="Middle name" initialValue="Robert" />
1228
- <FormItem label="Lastname" />
1229
- </Form>
1230
- <Text testId="text">{output}</Text>
1231
- </Fragment>
1232
- `);
1233
- const driver = yield createFormDriver("form");
1234
- yield driver.submitForm();
1235
- yield (0, fixtures_1.expect)(page.getByTestId("text")).toHaveText('{"firstname":"James"}');
1236
- }));
1237
- (0, fixtures_1.test)(`submit with type 'items'`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createButtonDriver, createFormItemDriver, }) {
1238
- const { testStateDriver } = yield initTestBed(`
1239
- <Form onSubmit="data => testState = data" testId="form">
1240
- <FormItem testId="formItem" type="items" bindTo="arrayItems" id="arrayItems">
1241
- <FormItem bindTo="name" testId="text{$itemIndex}"/>
1242
- </FormItem>
1243
- <Button testId="addButton" onClick="arrayItems.addItem()"/>
1244
- </Form>`);
1245
- yield (yield createButtonDriver("addButton")).click();
1246
- yield (yield createFormItemDriver("text0")).textBox.fill("John");
1247
- yield (yield createButtonDriver("addButton")).click();
1248
- yield (yield createFormItemDriver("text1")).textBox.fill("Peter");
1249
- const driver = yield createFormDriver("form");
1250
- yield driver.submitForm();
1251
- yield fixtures_1.expect.poll(testStateDriver.testState).toStrictEqual({
1252
- arrayItems: [{ name: "John" }, { name: "Peter" }],
1253
- });
1254
- }));
1255
- (0, fixtures_1.test)(`submit with type 'items', empty bindTo`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createButtonDriver, createFormItemDriver, }) {
1256
- const { testStateDriver } = yield initTestBed(`
1257
- <Form onSubmit="data => testState = data" testId="form">
1258
- <FormItem testId="formItem" type="items" bindTo="arrayItems" id="arrayItems">
1259
- <FormItem testId="text{$itemIndex}" bindTo=""/>
1260
- </FormItem>
1261
- <Button testId="addButton" onClick="arrayItems.addItem()"/>
1262
- </Form>`);
1263
- yield (yield createButtonDriver("addButton")).click();
1264
- yield (yield createFormItemDriver("text0")).textBox.fill("John");
1265
- yield (yield createButtonDriver("addButton")).click();
1266
- yield (yield createFormItemDriver("text1")).textBox.fill("Peter");
1267
- const driver = yield createFormDriver("form");
1268
- yield driver.submitForm();
1269
- yield fixtures_1.expect.poll(testStateDriver.testState).toStrictEqual({
1270
- arrayItems: ["John", "Peter"],
1271
- });
1272
- }));
1273
- // --- Testing
1274
- // --- --- buttonRowTemplate
1275
- (0, fixtures_1.test)("buttonRowTemplate can render buttons", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createButtonDriver }) {
1276
- yield initTestBed(`
1277
- <Form>
1278
- <property name="buttonRowTemplate">
1279
- <Button testId="submitBtn" type="submit" label="Hello Button" />
1280
- </property>
1281
- </Form>`);
1282
- yield (0, fixtures_1.expect)((yield createButtonDriver("submitBtn")).component).toBeAttached();
1283
- }));
1284
- (0, fixtures_1.test)("buttonRowTemplate replaces built-in buttons", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1285
- yield initTestBed(`
1286
- <Form testId="form">
1287
- <property name="buttonRowTemplate">
1288
- <Button testId="submitBtn" type="submit" label="Hello Button" />
1289
- </property>
1290
- </Form>`);
1291
- const driver = yield createFormDriver("form");
1292
- yield (0, fixtures_1.expect)(driver.submitButton).not.toBeVisible();
1293
- yield (0, fixtures_1.expect)(driver.cancelButton).not.toBeVisible();
1294
- }));
1295
- (0, fixtures_1.test)("setting buttonRowTemplate without buttons still runs submit on Enter", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1296
- const { testStateDriver } = yield initTestBed(`
1297
- <Form onSubmit="testState = true">
1298
- <property name="buttonRowTemplate">
1299
- <Fragment />
1300
- </property>
1301
- <FormItem bindTo="name" />
1302
- </Form>
1303
- `);
1304
- const driver = yield createFormDriver();
1305
- yield driver.submitForm("keypress");
1306
- yield fixtures_1.expect.poll(testStateDriver.testState).toBe(true);
1307
- }));
1308
- (0, fixtures_1.test)("data accepts an object", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
1309
- yield initTestBed(`
1310
- <Form data="{{ field1: 'test' }}">
1311
- <FormItem testId="inputField" bindTo="field1" />
1312
- </Form>
1313
- `);
1314
- const driver = yield createFormItemDriver("inputField");
1315
- yield (0, fixtures_1.expect)((yield createTextBoxDriver(driver.input)).field).toHaveValue("test");
1316
- }));
1317
- (0, fixtures_1.test)(`data accepts primitive`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1318
- yield initTestBed(`
1319
- <Form data="test">
1320
- <FormItem bindTo="field1" />
1321
- </Form>
1322
- `);
1323
- const component = (yield createFormDriver()).component;
1324
- yield (0, fixtures_1.expect)(component).toBeAttached();
1325
- }));
1326
- (0, fixtures_1.test)(`data accepts empty array`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1327
- yield initTestBed(`
1328
- <Form data="{[]}">
1329
- <FormItem bindTo="field1" />
1330
- </Form>
1331
- `);
1332
- const component = (yield createFormDriver()).component;
1333
- yield (0, fixtures_1.expect)(component).toBeAttached();
1334
- }));
1335
- (0, fixtures_1.test)("data accepts relative URL endpoint", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createTextBoxDriver, }) {
1336
- yield initTestBed(`
1337
- <Form data="/test">
1338
- <FormItem testId="inputField" bindTo="name" />
1339
- </Form>`, {
1340
- apiInterceptor: {
1341
- operations: {
1342
- test: {
1343
- url: "/test",
1344
- method: "get",
1345
- handler: `return { name: 'John' };`,
1346
- },
1347
- },
1348
- },
1349
- });
1350
- const driver = yield createFormItemDriver("inputField");
1351
- yield (0, fixtures_1.expect)((yield createTextBoxDriver(driver.input)).field).toHaveValue("John");
1352
- }));
1353
- (0, fixtures_1.test)("cancel button and save button use default label", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1354
- yield initTestBed(`
1355
- <Form testId="form">
1356
- <FormItem label="Name" bindTo="name" />
1357
- <FormItem label="Email" bindTo="email" />
1358
- </Form>
1359
- `);
1360
- const driver = yield createFormDriver("form");
1361
- yield (0, fixtures_1.expect)(driver.cancelButton).toHaveText("Cancel");
1362
- yield (0, fixtures_1.expect)(driver.submitButton).toHaveText("Save");
1363
- }));
1364
- (0, fixtures_1.test)("cancel button is rendered with cancelLabel", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1365
- yield initTestBed(`
1366
- <Form testId="form" cancelLabel="Abort">
1367
- <FormItem label="Name" bindTo="name" />
1368
- <FormItem label="Email" bindTo="email" />
1369
- </Form>
1370
- `);
1371
- const driver = yield createFormDriver("form");
1372
- yield (0, fixtures_1.expect)(driver.cancelButton).toHaveText("Abort");
1373
- yield (0, fixtures_1.expect)(driver.submitButton).toHaveText("Save");
1374
- }));
1375
- (0, fixtures_1.test)("save button is rendered with saveLabel", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1376
- yield initTestBed(`
1377
- <Form testId="form" saveLabel="Submit">
1378
- <FormItem label="Name" bindTo="name" />
1379
- <FormItem label="Email" bindTo="email" />
1380
- </Form>
1381
- `);
1382
- const driver = yield createFormDriver("form");
1383
- yield (0, fixtures_1.expect)(driver.cancelButton).toHaveText("Cancel");
1384
- yield (0, fixtures_1.expect)(driver.submitButton).toHaveText("Submit");
1385
- }));
1386
- // swapCancelAndSave
1387
- (0, fixtures_1.test)("built-in button row order is default if swapCancelAndSave is false", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1388
- yield initTestBed(`
1389
- <Form testId="form" saveLabel="Submit">
1390
- <FormItem label="Name" bindTo="name" />
1391
- <FormItem label="Email" bindTo="email" />
1392
- </Form>
1393
- `);
1394
- const driver = yield createFormDriver("form");
1395
- const cancelBox = yield driver.cancelButton.boundingBox();
1396
- const submitBox = yield driver.submitButton.boundingBox();
1397
- (0, fixtures_1.expect)(cancelBox.x).toBeLessThan(submitBox.x);
1398
- }));
1399
- (0, fixtures_1.test)("built-in button row order flips if swapCancelAndSave is true", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1400
- yield initTestBed(`
1401
- <Form testId="form" saveLabel="Submit" swapCancelAndSave="true">
1402
- <FormItem label="Name" bindTo="name" />
1403
- <FormItem label="Email" bindTo="email" />
1404
- </Form>
1405
- `);
1406
- const driver = yield createFormDriver("form");
1407
- const cancelBox = yield driver.cancelButton.boundingBox();
1408
- const submitBox = yield driver.submitButton.boundingBox();
1409
- (0, fixtures_1.expect)(cancelBox.x).toBeGreaterThan(submitBox.x);
1410
- }));
1411
- // --- submitUrl
1412
- (0, fixtures_1.test)("form submits to correct url", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1413
- const endpoint = "/test";
1414
- yield initTestBed(`
1415
- <Form data="{{ name: 'John' }}" submitUrl="${endpoint}" submitMethod="post">
1416
- <FormItem bindTo="name" />
1417
- </Form>`, {
1418
- apiInterceptor: {
1419
- operations: {
1420
- test: {
1421
- url: endpoint,
1422
- method: "post",
1423
- handler: `{ return true; }`,
1424
- },
1425
- },
1426
- },
1427
- });
1428
- const driver = yield createFormDriver();
1429
- yield driver.submitForm();
1430
- const response = yield driver.getSubmitResponse(endpoint);
1431
- (0, fixtures_1.expect)(response.ok()).toBe(true);
1432
- (0, fixtures_1.expect)(new URL(response.url()).pathname).toBe(endpoint);
1433
- }));
1434
- // --- submitMethod
1435
- // NOTE: GET doesn't work because GET/HEAD cannot have a 'body'
1436
- ["post", "put", "delete"].forEach((method) => {
1437
- (0, fixtures_1.test)(`${method} REST op on submit`, (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1438
- yield initTestBed(`<Form submitUrl="/test" submitMethod="${method}" />`, {
1439
- apiInterceptor: {
1440
- operations: {
1441
- testPost: {
1442
- url: "/test",
1443
- method: "post",
1444
- handler: `return true;`,
1445
- },
1446
- testPut: {
1447
- url: "/test",
1448
- method: "put",
1449
- handler: `return true;`,
1450
- },
1451
- testDelete: {
1452
- url: "/test",
1453
- method: "delete",
1454
- handler: `return true;`,
1455
- },
1456
- },
1457
- },
1458
- });
1459
- const driver = yield createFormDriver();
1460
- const request = yield driver.getSubmitRequest("/test", method, "click");
1461
- (0, fixtures_1.expect)(request.failure()).toBeNull();
1462
- }));
1463
- });
1464
- // --- submitting the Form
1465
- (0, fixtures_1.test)("submit triggers when clicking save/submit button", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1466
- yield initTestBed(`
1467
- <Form data="{{ name: 'John' }}" submitUrl="/test" submitMethod="post">
1468
- <FormItem bindTo="name" />
1469
- </Form>`, {
1470
- apiInterceptor: {
1471
- operations: {
1472
- test: {
1473
- url: "/test",
1474
- method: "post",
1475
- handler: `return true;`,
1476
- },
1477
- },
1478
- },
1479
- });
1480
- const driver = yield createFormDriver();
1481
- const request = yield driver.getSubmitRequest("/test", "POST", "click");
1482
- (0, fixtures_1.expect)(request.failure()).toBeNull();
1483
- }));
1484
- (0, fixtures_1.test)("submit triggers when pressing Enter", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver }) {
1485
- yield initTestBed(`
1486
- <Form data="{{ name: 'John' }}" submitUrl="/test" submitMethod="post">
1487
- <FormItem bindTo="name" />
1488
- </Form>`, {
1489
- apiInterceptor: {
1490
- operations: {
1491
- test: {
1492
- url: "/test",
1493
- method: "post",
1494
- handler: `return true;`,
1495
- },
1496
- },
1497
- },
1498
- });
1499
- const driver = yield createFormDriver();
1500
- const request = yield driver.getSubmitRequest("/test", "POST", "keypress");
1501
- (0, fixtures_1.expect)(request.failure()).toBeNull();
1502
- }));
1503
- (0, fixtures_1.test)("user cannot submit with clientside errors present", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1504
- const { testStateDriver } = yield initTestBed(`
1505
- <Form onSubmit="testState = true">
1506
- <FormItem bindTo="name" required="true" />
1507
- </Form>
1508
- `);
1509
- const driver = yield createFormDriver();
1510
- // The onSubmit event should have been triggered if not for the client error of an empty required field
1511
- yield driver.submitForm("click");
1512
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(null);
1513
- }));
1514
- // --- backend validation summary
1515
- (0, fixtures_1.test)("submitting with errors shows validation summary", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1516
- yield initTestBed(`<Form submitUrl="/general-validation-error" submitMethod="post" />`, {
1517
- apiInterceptor: errorDisplayInterceptor,
1518
- });
1519
- const driver = yield createFormDriver();
1520
- yield driver.submitForm();
1521
- yield (0, fixtures_1.expect)(yield driver.getValidationSummary()).toBeVisible();
1522
- }));
1523
- (0, fixtures_1.test)("submitting without errors does not show summary", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, }) {
1524
- yield initTestBed(`<Form submitUrl="/no-validation-error" submitMethod="post" />`, {
1525
- apiInterceptor: errorDisplayInterceptor,
1526
- });
1527
- const driver = yield createFormDriver();
1528
- yield driver.submitForm();
1529
- yield (0, fixtures_1.expect)(yield driver.getValidationSummary()).not.toBeVisible();
1530
- }));
1531
- (0, fixtures_1.test)("general error messages are rendered in the summary", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createValidationDisplayDriver, }) {
1532
- yield initTestBed(`<Form submitUrl="/general-validation-error" submitMethod="post" />`, {
1533
- apiInterceptor: errorDisplayInterceptor,
1534
- });
1535
- const formDriver = yield createFormDriver();
1536
- yield formDriver.submitForm();
1537
- // TODO: strip this down -> it's verbose but hard to read
1538
- const warningDisplay = yield createValidationDisplayDriver(yield formDriver.getValidationDisplaysBySeverity("warning"));
1539
- const errorDisplay = yield createValidationDisplayDriver(yield formDriver.getValidationDisplaysBySeverity("error"));
1540
- (0, fixtures_1.expect)(yield warningDisplay.getText()).toContain("Warning for the whole form");
1541
- (0, fixtures_1.expect)(yield errorDisplay.getText()).toContain("Error for the whole form");
1542
- }));
1543
- (0, fixtures_1.test)("field-related errors are rendered at FormItems", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createFormItemDriver, }) {
1544
- yield initTestBed(`
1545
- <Form submitUrl="/field-validation-error" submitMethod="post">
1546
- <FormItem testId="testField" bindTo="test" label="test" />
1547
- </Form>`, {
1548
- apiInterceptor: errorDisplayInterceptor,
1549
- });
1550
- const formDriver = yield createFormDriver();
1551
- const fieldDriver = yield createFormItemDriver("testField");
1552
- yield formDriver.submitForm();
1553
- yield (0, fixtures_1.expect)(fieldDriver.validationStatusIndicator).toHaveAttribute(fieldDriver.validationStatusTag, "warning");
1554
- }));
1555
- (0, fixtures_1.test)("field-related errors map to correct FormItems", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createFormItemDriver, }) {
1556
- yield initTestBed(`
1557
- <Form submitUrl="/field-validation-error" submitMethod="post">
1558
- <FormItem testId="testField" bindTo="test" label="test" />
1559
- <FormItem testId="testField2" bindTo="test2" label="test2" />
1560
- </Form>`, {
1561
- apiInterceptor: errorDisplayInterceptor,
1562
- });
1563
- const formDriver = yield createFormDriver();
1564
- const fieldDriver = yield createFormItemDriver("testField");
1565
- yield formDriver.submitForm();
1566
- yield (0, fixtures_1.expect)(fieldDriver.validationStatusIndicator).toHaveAttribute(fieldDriver.validationStatusTag, "warning");
1567
- }));
1568
- fixtures_1.test.skip("field-related errors disappear if user updates FormItems", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, page, createFormItemDriver, }) {
1569
- yield initTestBed(`
1570
- <Form testId="form">
1571
- <FormItem testId="testField" bindTo="test" label="test" required />
1572
- <FormItem testId="testField2" bindTo="test2" label="test2" />
1573
- </Form>`);
1574
- const fieldDriver = yield createFormItemDriver("testField");
1575
- const fieldDriver2 = yield createFormItemDriver("testField2");
1576
- yield fieldDriver.component.focus();
1577
- yield fieldDriver.textBox.fill("a");
1578
- yield fieldDriver.textBox.fill("");
1579
- yield fieldDriver.textBox.blur();
1580
- // Should show required error now
1581
- yield (0, fixtures_1.expect)(fieldDriver.textBox).toHaveValue("");
1582
- yield (0, fixtures_1.expect)(fieldDriver.validationStatusIndicator).toHaveAttribute(fieldDriver.validationStatusTag, "error");
1583
- yield fieldDriver.textBox.fill("a");
1584
- yield fieldDriver.textBox.blur();
1585
- yield fieldDriver2.textBox.focus();
1586
- yield (0, fixtures_1.expect)(fieldDriver2.textBox).toBeFocused();
1587
- yield fieldDriver2.textBox.fill("b");
1588
- yield (0, fixtures_1.expect)(fieldDriver.validationStatusIndicator).not.toBeVisible();
1589
- }));
1590
- const smartCrudInterceptor = {
1591
- initialize: `
1592
- $state.items = {
1593
- [10]: { name: "Smith", id: 10 }
1594
- };
1595
- $state.currentId = 10;
1596
- `,
1597
- operations: {
1598
- create: {
1599
- url: "/entities",
1600
- method: "post",
1601
- handler: `() => {
1602
- $state.currentId++;
1603
- $state.items[$state.currentId] = $requestBody;
1604
- $state.items[$state.currentId].id = $state.currentId;
1605
-
1606
- return $state.items[$state.currentId];
1607
- }`,
1608
- },
1609
- read: {
1610
- url: "/entities/:id",
1611
- method: "get",
1612
- handler: `() => {
1613
- return $state.items[$pathParams.id];
1614
- }`,
1615
- },
1616
- update: {
1617
- url: "/entities/:id",
1618
- method: "put",
1619
- handler: `() => {
1620
- $state.items[$pathParams.id] = { ...$state.items[$pathParams.id], ...$requestBody };
1621
- return $state.items[$pathParams.id];
1622
- }`,
1623
- },
1624
- },
1625
- };
1626
- (0, fixtures_1.test)("create form works with submitUrl", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createFormItemDriver, createTextBoxDriver, }) {
1627
- yield initTestBed(`
1628
- <Form submitUrl="/entities">
1629
- <FormItem bindTo="name" testId="nameInput"/>
1630
- </Form>
1631
- `, { apiInterceptor: smartCrudInterceptor });
1632
- const formDriver = yield createFormDriver();
1633
- const inputElement = (yield createFormItemDriver("nameInput")).input;
1634
- const fieldDriver = yield createTextBoxDriver(inputElement);
1635
- yield fieldDriver.field.fill("John");
1636
- yield formDriver.submitForm("click");
1637
- const response = yield formDriver.getSubmitResponse();
1638
- (0, fixtures_1.expect)(yield response.json()).toEqual({
1639
- name: "John",
1640
- id: 11,
1641
- });
1642
- }));
1643
- (0, fixtures_1.test)("regression: data url through modal context", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createButtonDriver, createFormDriver, createFormItemDriver, createTextBoxDriver, }) {
1644
- yield initTestBed(`
1645
- <Fragment>
1646
- <Button testId="openModalButton" onClick="modal.open({data: '/entities/10'})"/>
1647
- <ModalDialog id="modal">
1648
- <Form testId="modalForm" data="{$param.data}" submitUrl="{$param.submitUrl}">
1649
- <FormItem bindTo="name" testId="nameInput"/>
1650
- </Form>
1651
- </ModalDialog>
1652
- </Fragment>
1653
- `, {
1654
- apiInterceptor: smartCrudInterceptor,
1655
- });
1656
- const formDriver = yield createFormDriver("modalForm");
1657
- const inputElement = (yield createFormItemDriver("nameInput")).input;
1658
- const inputDriver = yield createTextBoxDriver(inputElement);
1659
- yield (yield createButtonDriver("openModalButton")).click();
1660
- yield (0, fixtures_1.expect)(inputDriver.field).toHaveValue("Smith");
1661
- yield inputDriver.field.fill("EDITED-Smith");
1662
- yield formDriver.submitForm("click");
1663
- const response = yield formDriver.getSubmitResponse();
1664
- (0, fixtures_1.expect)(yield response.json()).toEqual({
1665
- name: "EDITED-Smith",
1666
- id: 10,
1667
- });
1668
- }));
1669
- // --- Conditional Rendering Cases
1670
- (0, fixtures_1.test)("can submit with invisible required field", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormDriver, createFormItemDriver, createTextBoxDriver, page, }) {
1671
- const { testStateDriver } = yield initTestBed(`
1672
- <Form onSubmit="testState = true">
1673
- <FormItem testId="select" bindTo="authenticationType"
1674
- type="select" label="Authentication Type:" initialValue="{0}">
1675
- <Option value="{0}" label="Password" />
1676
- <Option value="{1}" label="Public Key" />
1677
- </FormItem>
1678
- <FormItem label="name1" testId="name1" bindTo="name1"
1679
- required="true" when="{$data.authenticationType == 0}"/>
1680
- <FormItem label="name2" testId="name2" bindTo="name2"
1681
- required="true" when="{$data.authenticationType == 1}"/>
1682
- </Form>
1683
- `);
1684
- const formDriver = yield createFormDriver();
1685
- const selectDriver = yield createFormItemDriver("select");
1686
- const textfieldElement = (yield createFormItemDriver("name2")).input;
1687
- const textfieldDriver = yield createTextBoxDriver(textfieldElement);
1688
- yield selectDriver.component.click();
1689
- yield page.getByText("Public Key").click();
1690
- yield textfieldDriver.field.fill("John");
1691
- yield formDriver.submitForm();
1692
- yield fixtures_1.expect.poll(testStateDriver.testState).toEqual(true);
1693
- }));
1694
- (0, fixtures_1.test)("conditional fields keep the state", (_a) => __awaiter(void 0, [_a], void 0, function* ({ initTestBed, createFormItemDriver, createOptionDriver, createTextBoxDriver, }) {
1695
- yield initTestBed(`
1696
- <Form>
1697
- <FormItem testId="select" bindTo="authenticationType"
1698
- type="radioGroup" label="Authentication Type:" initialValue="{0}">
1699
- <Option value="{0}" label="Password" testId="password"/>
1700
- <Option value="{1}" label="Public Key" testId="publicKey" />
1701
- </FormItem>
1702
- <FormItem label="name1" testId="name1" bindTo="name1"
1703
- required="true" when="{$data.authenticationType == 0}"/>
1704
- <FormItem label="name2" testId="name2" bindTo="name2"
1705
- required="true" when="{$data.authenticationType == 1}"/>
1706
- </Form>
1707
- `);
1708
- const option1Driver = yield createFormItemDriver("password");
1709
- const option2Driver = yield createOptionDriver("publicKey");
1710
- const textfield1Element = (yield createFormItemDriver("name1")).input;
1711
- const textfield1Driver = yield createTextBoxDriver(textfield1Element);
1712
- const textfield2Element = (yield createFormItemDriver("name2")).input;
1713
- const textfield2Driver = yield createTextBoxDriver(textfield2Element);
1714
- yield textfield1Driver.field.fill("name1");
1715
- yield option2Driver.click();
1716
- yield textfield2Driver.field.fill("name2");
1717
- yield option1Driver.click();
1718
- yield (0, fixtures_1.expect)(textfield1Driver.field).toHaveValue("name1");
1719
- }));