xmlui 0.11.3 → 0.11.6

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