@api-client/ui 0.0.5 → 0.0.8

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 (326) hide show
  1. package/demo/elements/http/http-assertions.html +3 -0
  2. package/demo/elements/http/http-assertions.ts +1 -1
  3. package/demo/elements/http/http-flows.html +23 -0
  4. package/demo/elements/http/http-flows.ts +92 -0
  5. package/demo/elements/http/index.html +3 -0
  6. package/demo/pages/http-project/main.ts +5 -6
  7. package/dist/bindings/base/StoreBindings.js +4 -4
  8. package/dist/bindings/base/StoreBindings.js.map +1 -1
  9. package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
  10. package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
  11. package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
  12. package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
  13. package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
  14. package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
  15. package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
  16. package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
  17. package/dist/define/http/http-assertions.d.ts +1 -1
  18. package/dist/define/http/http-assertions.d.ts.map +1 -1
  19. package/dist/define/http/http-assertions.js +3 -3
  20. package/dist/define/http/http-assertions.js.map +1 -1
  21. package/dist/define/http/http-flows.d.ts +10 -0
  22. package/dist/define/http/http-flows.d.ts.map +1 -0
  23. package/dist/define/http/http-flows.js +13 -0
  24. package/dist/define/http/http-flows.js.map +1 -0
  25. package/dist/define/ui/ui-divider.d.ts +4 -1
  26. package/dist/define/ui/ui-divider.d.ts.map +1 -1
  27. package/dist/define/ui/ui-divider.js +11 -2
  28. package/dist/define/ui/ui-divider.js.map +1 -1
  29. package/dist/elements/ApiElement.d.ts +4 -0
  30. package/dist/elements/ApiElement.d.ts.map +1 -1
  31. package/dist/elements/ApiElement.js +6 -0
  32. package/dist/elements/ApiElement.js.map +1 -1
  33. package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -1
  34. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  35. package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
  36. package/dist/elements/amf/ApiOperationDocument.element.js +2 -1
  37. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  38. package/dist/elements/amf/ApiRequest.element.js +1 -1
  39. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  40. package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
  41. package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
  42. package/dist/elements/amf/ApiRequestEditor.element.js +0 -3
  43. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  44. package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
  45. package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
  46. package/dist/elements/authorization/ui/Authorization.js +0 -3
  47. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  48. package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
  49. package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
  50. package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
  51. package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
  52. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
  53. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
  54. package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
  55. package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
  56. package/dist/elements/dialog/Rename.d.ts +7 -6
  57. package/dist/elements/dialog/Rename.d.ts.map +1 -1
  58. package/dist/elements/dialog/Rename.js +7 -6
  59. package/dist/elements/dialog/Rename.js.map +1 -1
  60. package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
  61. package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
  62. package/dist/elements/dialog/SetCookieAction.element.js +173 -0
  63. package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
  64. package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
  65. package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  66. package/dist/elements/environment/EnvironmentEditor.js +69 -23
  67. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  68. package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
  69. package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
  70. package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  71. package/dist/elements/environment/ServerEditor.d.ts +3 -3
  72. package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
  73. package/dist/elements/environment/ServerEditor.js +3 -6
  74. package/dist/elements/environment/ServerEditor.js.map +1 -1
  75. package/dist/elements/environment/VariablesEditor.d.ts +0 -1
  76. package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
  77. package/dist/elements/environment/VariablesEditor.js +3 -6
  78. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  79. package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
  80. package/dist/elements/highlight/Prism.styles.js +12 -5
  81. package/dist/elements/highlight/Prism.styles.js.map +1 -1
  82. package/dist/elements/http/BodyEditor.d.ts +0 -4
  83. package/dist/elements/http/BodyEditor.d.ts.map +1 -1
  84. package/dist/elements/http/BodyEditor.js +10 -16
  85. package/dist/elements/http/BodyEditor.js.map +1 -1
  86. package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
  87. package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  88. package/dist/elements/http/BodyMultipartEditor.js +3 -19
  89. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  90. package/dist/elements/http/BodyTextEditor.d.ts +0 -1
  91. package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
  92. package/dist/elements/http/BodyTextEditor.js +0 -3
  93. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  94. package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
  95. package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  96. package/dist/elements/http/BodyUrlEncodedEditor.js +3 -5
  97. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  98. package/dist/elements/http/HeadersForm.d.ts +0 -4
  99. package/dist/elements/http/HeadersForm.d.ts.map +1 -1
  100. package/dist/elements/http/HeadersForm.js +0 -6
  101. package/dist/elements/http/HeadersForm.js.map +1 -1
  102. package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
  103. package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
  104. package/dist/elements/http/HttpAssertions.element.js +264 -0
  105. package/dist/elements/http/HttpAssertions.element.js.map +1 -0
  106. package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
  107. package/dist/elements/http/HttpAssertions.styles.js +7 -156
  108. package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
  109. package/dist/elements/http/HttpFlows.common.d.ts +3 -0
  110. package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
  111. package/dist/elements/http/HttpFlows.common.js +181 -0
  112. package/dist/elements/http/HttpFlows.common.js.map +1 -0
  113. package/dist/elements/http/HttpFlows.element.d.ts +97 -0
  114. package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
  115. package/dist/elements/http/HttpFlows.element.js +684 -0
  116. package/dist/elements/http/HttpFlows.element.js.map +1 -0
  117. package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
  118. package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
  119. package/dist/elements/http/HttpFlows.styles.js +28 -0
  120. package/dist/elements/http/HttpFlows.styles.js.map +1 -0
  121. package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
  122. package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
  123. package/dist/elements/http/HttpFlowsUi.js +1256 -0
  124. package/dist/elements/http/HttpFlowsUi.js.map +1 -0
  125. package/dist/elements/http/RequestConfigElement.d.ts +0 -1
  126. package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
  127. package/dist/elements/http/RequestConfigElement.js +8 -11
  128. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  129. package/dist/elements/http/RequestEditor.d.ts +10 -10
  130. package/dist/elements/http/RequestEditor.d.ts.map +1 -1
  131. package/dist/elements/http/RequestEditor.js +62 -23
  132. package/dist/elements/http/RequestEditor.js.map +1 -1
  133. package/dist/elements/http/UrlInput.d.ts +3 -3
  134. package/dist/elements/http/UrlInput.d.ts.map +1 -1
  135. package/dist/elements/http/UrlInput.js +2 -2
  136. package/dist/elements/http/UrlInput.js.map +1 -1
  137. package/dist/elements/http/UrlParamsForm.d.ts +0 -1
  138. package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
  139. package/dist/elements/http/UrlParamsForm.js +0 -3
  140. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  141. package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
  142. package/dist/elements/layout/SplitView.styles.js +1 -0
  143. package/dist/elements/layout/SplitView.styles.js.map +1 -1
  144. package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
  145. package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
  146. package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
  147. package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
  148. package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
  149. package/dist/elements/project/HttpProjectRequest.js +14 -5
  150. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  151. package/dist/elements/project/ProjectRunner.d.ts +0 -1
  152. package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
  153. package/dist/elements/project/ProjectRunner.js +1 -4
  154. package/dist/elements/project/ProjectRunner.js.map +1 -1
  155. package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
  156. package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
  157. package/dist/elements/schema-design/AssociationFormElement.js +2 -5
  158. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  159. package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
  160. package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
  161. package/dist/elements/schema-design/DataEntityEditorElement.js +5 -5
  162. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  163. package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
  164. package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
  165. package/dist/elements/schema-design/DataSchemaDocument.js +4 -7
  166. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  167. package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
  168. package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
  169. package/dist/elements/schema-design/EntityFormElement.js +4 -7
  170. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  171. package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
  172. package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
  173. package/dist/elements/schema-design/PropertyFormElement.js +8 -11
  174. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  175. package/dist/pages/ApplicationScreen.d.ts +1 -1
  176. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  177. package/dist/pages/ApplicationScreen.js +1 -1
  178. package/dist/pages/ApplicationScreen.js.map +1 -1
  179. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  180. package/dist/pages/api-client/ApiClient.styles.js +22 -3
  181. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  182. package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
  183. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  184. package/dist/pages/api-client/Authenticate.screen.js +19 -3
  185. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  186. package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
  187. package/dist/pages/api-client/StoreConfig.screen.js +4 -2
  188. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  189. package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
  190. package/dist/pages/api-client/StoreConfig.styles.js +5 -0
  191. package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
  192. package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
  193. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  194. package/dist/pages/api-client/pages/Files.page.js +2 -1
  195. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  196. package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
  197. package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
  198. package/dist/pages/http-project/HttpProject.screen.js +14 -15
  199. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  200. package/dist/pages/http-project/types.d.ts +8 -6
  201. package/dist/pages/http-project/types.d.ts.map +1 -1
  202. package/dist/pages/http-project/types.js.map +1 -1
  203. package/dist/styles/m3/surface.module.d.ts.map +1 -1
  204. package/dist/styles/m3/surface.module.js +11 -27
  205. package/dist/styles/m3/surface.module.js.map +1 -1
  206. package/dist/ui/UiElement.d.ts +4 -0
  207. package/dist/ui/UiElement.d.ts.map +1 -1
  208. package/dist/ui/UiElement.js +6 -0
  209. package/dist/ui/UiElement.js.map +1 -1
  210. package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
  211. package/dist/ui/button/SegmentedButton.styles.js +3 -1
  212. package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
  213. package/dist/ui/dialog/UiDialog.d.ts +3 -0
  214. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  215. package/dist/ui/dialog/UiDialog.js +3 -0
  216. package/dist/ui/dialog/UiDialog.js.map +1 -1
  217. package/dist/ui/effects/ripple.d.ts.map +1 -1
  218. package/dist/ui/effects/ripple.js +5 -1
  219. package/dist/ui/effects/ripple.js.map +1 -1
  220. package/dist/ui/icons/Icons.d.ts +3 -2
  221. package/dist/ui/icons/Icons.d.ts.map +1 -1
  222. package/dist/ui/icons/Icons.js +2 -1
  223. package/dist/ui/icons/Icons.js.map +1 -1
  224. package/dist/ui/input/CheckedElement.d.ts +1 -1
  225. package/dist/ui/input/CheckedElement.d.ts.map +1 -1
  226. package/dist/ui/input/CheckedElement.js +3 -3
  227. package/dist/ui/input/CheckedElement.js.map +1 -1
  228. package/dist/ui/input/Input.js +1 -1
  229. package/dist/ui/input/Input.js.map +1 -1
  230. package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
  231. package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
  232. package/dist/ui/list/UiDivider.element.js +39 -0
  233. package/dist/ui/list/UiDivider.element.js.map +1 -0
  234. package/dist/ui/list/UiDivider.styles.d.ts +3 -0
  235. package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
  236. package/dist/ui/list/UiDivider.styles.js +49 -0
  237. package/dist/ui/list/UiDivider.styles.js.map +1 -0
  238. package/dist/ui/tabs/UiTabs.d.ts +13 -1
  239. package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
  240. package/dist/ui/tabs/UiTabs.js +42 -13
  241. package/dist/ui/tabs/UiTabs.js.map +1 -1
  242. package/package.json +1 -1
  243. package/src/bindings/base/StoreBindings.ts +4 -4
  244. package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
  245. package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
  246. package/src/define/http/http-assertions.ts +3 -3
  247. package/src/define/http/http-flows.ts +15 -0
  248. package/src/define/ui/ui-divider.ts +7 -2
  249. package/src/elements/ApiElement.ts +7 -0
  250. package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
  251. package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
  252. package/src/elements/amf/ApiRequest.element.ts +1 -1
  253. package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
  254. package/src/elements/authorization/ui/Authorization.ts +3 -5
  255. package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
  256. package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
  257. package/src/elements/dialog/Rename.ts +8 -7
  258. package/src/elements/dialog/SetCookieAction.element.ts +183 -0
  259. package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
  260. package/src/elements/environment/EnvironmentEditor.ts +81 -22
  261. package/src/elements/environment/ServerEditor.ts +4 -8
  262. package/src/elements/environment/VariablesEditor.ts +3 -7
  263. package/src/elements/highlight/Prism.styles.ts +12 -5
  264. package/src/elements/http/BodyEditor.ts +10 -17
  265. package/src/elements/http/BodyMultipartEditor.ts +3 -20
  266. package/src/elements/http/BodyTextEditor.ts +0 -4
  267. package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
  268. package/src/elements/http/HeadersForm.ts +2 -9
  269. package/src/elements/http/HttpAssertions.element.ts +286 -0
  270. package/src/elements/http/HttpAssertions.styles.ts +7 -156
  271. package/src/elements/http/HttpFlows.common.ts +181 -0
  272. package/src/elements/http/HttpFlows.element.ts +722 -0
  273. package/src/elements/http/HttpFlows.styles.ts +29 -0
  274. package/src/elements/http/HttpFlowsUi.ts +1327 -0
  275. package/src/elements/http/RequestConfigElement.ts +10 -14
  276. package/src/elements/http/RequestEditor.ts +77 -35
  277. package/src/elements/http/UrlInput.ts +6 -6
  278. package/src/elements/http/UrlParamsForm.ts +2 -6
  279. package/src/elements/layout/SplitView.styles.ts +1 -0
  280. package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
  281. package/src/elements/project/HttpProjectRequest.ts +16 -5
  282. package/src/elements/project/ProjectRunner.ts +3 -7
  283. package/src/elements/schema-design/AssociationFormElement.ts +4 -8
  284. package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
  285. package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
  286. package/src/elements/schema-design/EntityFormElement.ts +6 -10
  287. package/src/elements/schema-design/PropertyFormElement.ts +11 -15
  288. package/src/pages/ApplicationScreen.ts +1 -1
  289. package/src/pages/api-client/ApiClient.styles.ts +22 -3
  290. package/src/pages/api-client/Authenticate.screen.ts +19 -3
  291. package/src/pages/api-client/StoreConfig.screen.ts +4 -2
  292. package/src/pages/api-client/StoreConfig.styles.ts +5 -0
  293. package/src/pages/api-client/pages/Files.page.ts +2 -1
  294. package/src/pages/http-project/HttpProject.screen.ts +14 -26
  295. package/src/pages/http-project/types.ts +8 -6
  296. package/src/styles/m3/surface.module.ts +11 -27
  297. package/src/styles/m3/theme.css +36 -0
  298. package/src/styles/m3/tokens.css +11 -0
  299. package/src/ui/UiElement.ts +7 -0
  300. package/src/ui/button/SegmentedButton.styles.ts +3 -1
  301. package/src/ui/dialog/UiDialog.ts +3 -0
  302. package/src/ui/effects/ripple.ts +6 -1
  303. package/src/ui/icons/Icons.ts +3 -2
  304. package/src/ui/input/CheckedElement.ts +3 -3
  305. package/src/ui/input/Input.ts +1 -1
  306. package/src/ui/list/UiDivider.element.ts +41 -0
  307. package/src/ui/list/UiDivider.styles.ts +49 -0
  308. package/src/ui/tabs/UiTabs.ts +55 -13
  309. package/test/amf/authorization/OAuth2Method.test.ts +1 -1
  310. package/test/elements/http/HttpAssertions.test.ts +5 -6
  311. package/test/elements/http/HttpFlows.test.ts +485 -0
  312. package/dist/elements/http/HttpAssertions.d.ts +0 -114
  313. package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
  314. package/dist/elements/http/HttpAssertions.js +0 -1146
  315. package/dist/elements/http/HttpAssertions.js.map +0 -1
  316. package/dist/elements/http/internals.d.ts +0 -150
  317. package/dist/elements/http/internals.d.ts.map +0 -1
  318. package/dist/elements/http/internals.js +0 -150
  319. package/dist/elements/http/internals.js.map +0 -1
  320. package/dist/ui/list/DividerElement.d.ts.map +0 -1
  321. package/dist/ui/list/DividerElement.js +0 -82
  322. package/dist/ui/list/DividerElement.js.map +0 -1
  323. package/src/elements/http/HttpAssertions.ts +0 -1187
  324. package/src/elements/http/internals.ts +0 -151
  325. package/src/http-client/docs/Files.md +0 -28
  326. package/src/ui/list/DividerElement.ts +0 -84
@@ -0,0 +1,286 @@
1
+ import {
2
+ IHttpAssertion,
3
+ IHttpStep,
4
+ } from "@api-client/core/build/browser.js";
5
+ import { html, nothing, TemplateResult } from "lit";
6
+ import { property } from "lit/decorators.js";
7
+ import { HttpFlowsUi, StepsTarget } from "./HttpFlowsUi.js";
8
+ import type SwitchElement from "../../ui/input/SwitchElement.js";
9
+ import type Input from "../../ui/input/Input.js";
10
+ import UiDialog, { UiDialogClosingReason } from "../../ui/dialog/UiDialog.js";
11
+ import '../../define/ui/ui-button.js';
12
+ import '../../define/ui/ui-switch.js';
13
+ import '../../define/ui/ui-dialog.js';
14
+ import '../../define/ui/ui-divider.js';
15
+
16
+ /**
17
+ * @fires change When the model change
18
+ */
19
+ export default class HttpAssertions extends HttpFlowsUi {
20
+ /**
21
+ * The list of assertions.
22
+ * This is a live list. All changes are propagated in the model.
23
+ */
24
+ @property({ type: Array }) model: IHttpAssertion[] = [];
25
+
26
+ /**
27
+ * Adds a new empty assertion to the model.
28
+ * Note, this function won't notify the parent element
29
+ * about the change as empty rules can be discarded.
30
+ */
31
+ addAssertion(): void {
32
+ const { model } = this;
33
+ model.push({
34
+ enabled: true,
35
+ steps: [],
36
+ });
37
+ this.requestUpdate();
38
+ }
39
+
40
+ /**
41
+ * Removes an assertion at specified index.
42
+ * @param index The index of the assertion in the `model` to remove.
43
+ */
44
+ removeAssertion(index: number): void {
45
+ const { model } = this;
46
+ if (!model[index]) {
47
+ throw new RangeError(`Invalid index: ${index}`);
48
+ }
49
+ model.splice(index, 1);
50
+ this.requestUpdate();
51
+ this.notifyChange();
52
+ }
53
+
54
+ /**
55
+ * Toggles the enabled state of the assertion.
56
+ * @param index The index of the assertion on the `model` array
57
+ * @param value The `enabled` value.
58
+ */
59
+ toggleAssertion(index: number, value: boolean): void {
60
+ const { model } = this;
61
+ if (!model[index]) {
62
+ throw new RangeError(`Invalid index: ${index}`);
63
+ }
64
+ model[index].enabled = value;
65
+ this.requestUpdate();
66
+ this.notifyChange();
67
+ }
68
+
69
+ protected handleAdd(): void {
70
+ this.addAssertion();
71
+ }
72
+
73
+ protected handleRemove(e: Event): void {
74
+ const node = e.currentTarget as HTMLElement;
75
+ const index = Number(node.dataset.index);
76
+ if (Number.isNaN(index)) {
77
+ return;
78
+ }
79
+ this.removeAssertion(index);
80
+ }
81
+
82
+ protected handleToggle(e: Event): void {
83
+ const node = e.currentTarget as SwitchElement;
84
+ const index = Number(node.dataset.index);
85
+ if (Number.isNaN(index)) {
86
+ return;
87
+ }
88
+ this.toggleAssertion(index, node.checked);
89
+ }
90
+
91
+ protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {
92
+ if (Number.isNaN(assertionOrActionIndex)) {
93
+ return undefined;
94
+ }
95
+ return this.model[assertionOrActionIndex];
96
+ }
97
+
98
+ protected stepFromChangeEvent(e: Event): IHttpStep | undefined {
99
+ const input = e.target as Input;
100
+ input.checkValidity();
101
+ const assertionIndex = Number(input.dataset.assertionIndex);
102
+ const stepIndex = Number(input.dataset.stepIndex);
103
+ if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {
104
+ return undefined;
105
+ }
106
+ const assertion = this.model[assertionIndex];
107
+ if (!assertion) {
108
+ return undefined;
109
+ }
110
+ return assertion.steps[stepIndex];
111
+ }
112
+
113
+ protected handleRenameAssertion(e: Event): void {
114
+ const target = e.currentTarget as HTMLElement;
115
+ const assertionIndex = Number(target.dataset.assertionIndex);
116
+ if (Number.isNaN(assertionIndex)) {
117
+ return;
118
+ }
119
+ const assertion = this.model[assertionIndex];
120
+ if (!assertion) {
121
+ return;
122
+ }
123
+ const { description } = assertion;
124
+ const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null;
125
+ if (!dialog) {
126
+ return;
127
+ }
128
+ const input = dialog.querySelector('ui-text-field') as Input;
129
+ input.value = description || '';
130
+ dialog.open = true;
131
+ dialog.dataset.assertionIndex = target.dataset.assertionIndex;
132
+ }
133
+
134
+ protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {
135
+ if (e.detail.cancelled) {
136
+ return;
137
+ }
138
+ const dialog = e.currentTarget as UiDialog;
139
+ const assertionIndex = Number(dialog.dataset.assertionIndex);
140
+ if (Number.isNaN(assertionIndex)) {
141
+ return;
142
+ }
143
+ const assertion = this.model[assertionIndex];
144
+ if (!assertion) {
145
+ return;
146
+ }
147
+ const input = dialog.querySelector('ui-text-field') as Input;
148
+ assertion.description = input.value;
149
+ this.requestUpdate();
150
+ this.notifyChange();
151
+ input.value = '';
152
+ delete dialog.dataset.assertionIndex;
153
+ }
154
+
155
+ protected override render(): TemplateResult {
156
+ return html`
157
+ ${this.renderActionButtons()}
158
+ <div class="container">
159
+ ${this.renderEditor()}
160
+ <ui-divider vertical></ui-divider>
161
+ ${this.renderAssertions()}
162
+ </div>
163
+ ${this.renderRenameAssertionDialog()}
164
+ `;
165
+ }
166
+
167
+ protected renderActionButtons(): TemplateResult {
168
+ return html`
169
+ <div class="editor-actions">
170
+ <ui-button type="tonal" @click="${this.handleAdd}" class="add-button">Add</ui-button>
171
+ </div>
172
+ `;
173
+ }
174
+
175
+ protected renderAssertions(): TemplateResult {
176
+ return html`
177
+ <section aria-label="Assertion options" class="options">
178
+ ${this.renderResponseDataSourceSuggestions()}
179
+ ${this.renderTransformationSuggestions()}
180
+ ${this.renderAssertionSuggestions()}
181
+ </section>
182
+ `;
183
+ }
184
+
185
+ protected renderEditor(): TemplateResult {
186
+ const { model } = this;
187
+ const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage();
188
+ return html`
189
+ <section aria-label="Assertions editor" class="editor surface1">${content}</section>
190
+ `;
191
+ }
192
+
193
+ protected renderEmptyMessage(): TemplateResult {
194
+ return html`
195
+ <div class="empty-message">No assertions added</div>
196
+ `;
197
+ }
198
+
199
+ protected renderList(model: IHttpAssertion[]): TemplateResult {
200
+ return html`
201
+ ${model.map((item, index) => this.renderAssertion(item, index))}
202
+ `;
203
+ }
204
+
205
+ protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {
206
+ return html`
207
+ <div class="step-row">
208
+ ${this.renderAssertionDescription(item)}
209
+ <div class="param-row">
210
+ ${this.renderToggleButton(item, index)}
211
+ ${this.renderSteps(item, index)}
212
+ <div class="action-actions">
213
+ ${this.renderRenameAssertion(index)}
214
+ ${this.renderDeleteAssertion(index)}
215
+ </div>
216
+ </div>
217
+ </div>
218
+ `;
219
+ }
220
+
221
+ protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {
222
+ const { description } = item;
223
+ if (!description) {
224
+ return nothing;
225
+ }
226
+ return html`
227
+ <div class="assertion-description label-medium">${description}</div>
228
+ `;
229
+ }
230
+
231
+ protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {
232
+ return html`
233
+ <ui-switch
234
+ .checked="${!!item.enabled}"
235
+ @change="${this.handleToggle}"
236
+ aria-label="Toggle this assertion"
237
+ data-index="${assertionIndex}"
238
+ class="toggle-button"
239
+ ></ui-switch>
240
+ `;
241
+ }
242
+
243
+ protected renderRenameAssertion(assertionIndex: number): TemplateResult {
244
+ return html`
245
+ <ui-icon-button
246
+ aria-label="Rename this assertion"
247
+ title="Rename this assertion"
248
+ data-assertion-index="${assertionIndex}"
249
+ @click="${this.handleRenameAssertion}"
250
+ class="rename-button"
251
+ >
252
+ <ui-icon icon="rename" role="presentation"></ui-icon>
253
+ </ui-icon-button>
254
+ `;
255
+ }
256
+
257
+ protected renderDeleteAssertion(assertionIndex: number): TemplateResult {
258
+ return html`
259
+ <ui-icon-button
260
+ aria-label="Delete this assertion"
261
+ title="Delete this assertion"
262
+ data-index="${assertionIndex}"
263
+ @click="${this.handleRemove}"
264
+ class="delete-button"
265
+ >
266
+ <ui-icon icon="deleteOutline" role="presentation"></ui-icon>
267
+ </ui-icon-button>
268
+ `;
269
+ }
270
+
271
+ protected renderRenameAssertionDialog(): TemplateResult {
272
+ return html`
273
+ <ui-dialog modal class="rename-dialog" @close="${this.handleRenameDialogResult}" dismissLabel="Cancel" confirmLabel="Accept">
274
+ <ui-icon slot="icon" icon="rename"></ui-icon>
275
+ <span slot="title">Rename assertion</span>
276
+
277
+ <ui-text-field
278
+ name="rename"
279
+ label="Assertion description"
280
+ required
281
+ class="input"
282
+ ></ui-text-field>
283
+ </ui-dialog>
284
+ `;
285
+ }
286
+ }
@@ -1,165 +1,12 @@
1
1
  import { css } from 'lit';
2
2
 
3
3
  export default css`
4
- :host {
5
- display: block;
6
- }
7
-
8
- .editor-actions {
9
- display: flex;
10
- align-items: center;
11
- margin-bottom: 20px;
12
- }
13
-
14
- .editor-actions > * {
15
- margin-right: 20px;
16
- }
17
-
18
- .empty-message {
19
- text-align: center;
20
- font-family: var(--md-sys-typescale-body-medium-font-family-name);
21
- font-style: var(--md-sys-typescale-body-medium-font-family-style);
22
- font-weight: var(--md-sys-typescale-body-medium-font-weight);
23
- font-size: var(--md-sys-typescale-body-medium-font-size);
24
- letter-spacing: var(--md-sys-typescale-body-medium-tracking);
25
- line-height: var(--md-sys-typescale-body-medium-height);
26
- text-transform: var(--md-sys-typescale-body-medium-text-transform);
27
- text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
28
- color: var(--md-sys-color-on-surface);
29
- }
30
-
31
4
  .param-row {
32
- display: flex;
33
- align-items: start;
34
- min-height: 56px;
35
5
  margin-bottom: 24px;
6
+ border-radius: var(--md-sys-shape-corner-small);
36
7
  }
37
8
 
38
- .param-row > :first-child,
39
- .param-row > :last-child {
40
- margin-top: 8px;
41
- }
42
-
43
- .steps {
44
- flex: 1;
45
- display: flex;
46
- flex-wrap: wrap;
47
- align-items: center;
48
- border-radius: 8px;
49
- padding-top: 8px;
50
- border: 1px transparent dashed;
51
- }
52
-
53
- .step-unit {
54
- display: flex;
55
- align-items: center;
56
- }
57
-
58
- .step-pill {
59
- background-color: var(--md-sys-color-surface-variant);
60
- height: 56px;
61
- display: flex;
62
- align-items: center;
63
- padding: 0 12px;
64
- border-radius: 8px;
65
-
66
- font-family: var(--md-sys-typescale-body-medium-font-family-name);
67
- font-style: var(--md-sys-typescale-body-medium-font-family-style);
68
- font-weight: var(--md-sys-typescale-body-medium-font-weight);
69
- font-size: var(--md-sys-typescale-body-medium-font-size);
70
- letter-spacing: var(--md-sys-typescale-body-medium-tracking);
71
- line-height: var(--md-sys-typescale-body-medium-height);
72
- text-transform: var(--md-sys-typescale-body-medium-text-transform);
73
- text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
74
- }
75
-
76
- .drop-info {
77
- font-family: var(--md-sys-typescale-body-medium-font-family-name);
78
- font-style: var(--md-sys-typescale-body-medium-font-family-style);
79
- font-weight: var(--md-sys-typescale-body-medium-font-weight);
80
- font-size: var(--md-sys-typescale-body-medium-font-size);
81
- letter-spacing: var(--md-sys-typescale-body-medium-tracking);
82
- line-height: var(--md-sys-typescale-body-medium-height);
83
- text-transform: var(--md-sys-typescale-body-medium-text-transform);
84
- text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
85
- }
86
-
87
- .step-pill.with-icon {
88
- padding-right: 0;
89
- }
90
-
91
- .step-pill.empty {
92
- border: 1px var(--md-sys-color-outline-variant) dashed;
93
- }
94
-
95
- .steps > * {
96
- margin-bottom: 8px;
97
- }
98
-
99
- .container {
100
- display: flex;
101
- }
102
-
103
- .container > .editor {
104
- flex: 8;
105
- }
106
-
107
- .container > .options {
108
- flex: 4;
109
- }
110
-
111
- .assertion-group summary {
112
- font-family: var(--md-sys-typescale-label-medium-font-family-name);
113
- font-style: var(--md-sys-typescale-label-medium-font-family-style);
114
- font-weight: var(--md-sys-typescale-label-medium-font-weight);
115
- font-size: var(--md-sys-typescale-label-medium-font-size);
116
- letter-spacing: var(--md-sys-typescale-label-medium-tracking);
117
- line-height: var(--md-sys-typescale-label-medium-height);
118
- text-transform: var(--md-sys-typescale-label-medium-text-transform);
119
- text-decoration: var(--md-sys-typescale-label-medium-text-decoration);
120
- padding: 16px 0px;
121
- }
122
-
123
- .group-content {
124
- display: flex;
125
- flex-wrap: wrap;
126
- flex-direction: row;
127
- align-items: center;
128
- }
129
-
130
- .group-content > ui-chip {
131
- margin: 4px;
132
- }
133
-
134
- .drop-target.spacer {
135
- width: 8px;
136
- height: 56px;
137
- transition: width 120ms cubic-bezier(0.4, 0, 0.6, 1);
138
- }
139
-
140
- .drop-target.spacer.dragover {
141
- width: 40px;
142
- border: 1px var(--md-sys-color-outline-variant) dashed;
143
- background-color: var(--md-sys-color-surface-variant);
144
- border-radius: 8px;
145
- margin: 0 4px;
146
- }
147
-
148
- .steps.dragover {
149
- background-color: var(--md-sys-color-surface);
150
- border-color: var(--md-sys-color-outline-variant);
151
- border-radius: 8px;
152
- }
153
-
154
- .space-step-left {
155
- margin-left: 8px;
156
- }
157
-
158
- .number-input {
159
- min-width: 120px;
160
- }
161
-
162
- .assertion-actions {
9
+ .action-actions {
163
10
  display: flex;
164
11
  align-items: center;
165
12
  }
@@ -168,7 +15,11 @@ export default css`
168
15
  --ui-dialog--width: 420px;
169
16
  }
170
17
 
171
- .rename-dialog ui-text-field {
18
+ .rename-dialog .input {
172
19
  width: 100%;
173
20
  }
21
+
22
+ .toggle-button {
23
+ margin-left: 12px;
24
+ }
174
25
  `;
@@ -0,0 +1,181 @@
1
+ import { css } from 'lit';
2
+ import typographyStyles from '../../styles/m3/typography.module.js';
3
+ import dialogStyles from '../../styles/m3/dialog.module.js';
4
+ import surfaceStyles from '../../styles/m3/surface.module.js';
5
+
6
+ export default [typographyStyles, dialogStyles, surfaceStyles, css`
7
+ :host {
8
+ display: block;
9
+ }
10
+
11
+ .surface1,
12
+ .surface2 {
13
+ z-index: 0;
14
+ }
15
+
16
+ .editor-actions {
17
+ display: flex;
18
+ align-items: center;
19
+ margin-bottom: 20px;
20
+ }
21
+
22
+ .editor-actions > * {
23
+ margin-right: 20px;
24
+ }
25
+
26
+ .empty-message {
27
+ margin-top: 16px;
28
+ text-align: center;
29
+ font-family: var(--md-sys-typescale-body-medium-font-family-name);
30
+ font-style: var(--md-sys-typescale-body-medium-font-family-style);
31
+ font-weight: var(--md-sys-typescale-body-medium-font-weight);
32
+ font-size: var(--md-sys-typescale-body-medium-font-size);
33
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
34
+ line-height: var(--md-sys-typescale-body-medium-height);
35
+ text-transform: var(--md-sys-typescale-body-medium-text-transform);
36
+ text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
37
+ color: var(--md-sys-color-on-surface);
38
+ }
39
+
40
+ .container {
41
+ display: flex;
42
+ }
43
+
44
+ .container > .editor {
45
+ flex: 8;
46
+ }
47
+
48
+ .container > .options {
49
+ flex: 4;
50
+ }
51
+
52
+ .action-group summary {
53
+ font-family: var(--md-sys-typescale-label-medium-font-family-name);
54
+ font-style: var(--md-sys-typescale-label-medium-font-family-style);
55
+ font-weight: var(--md-sys-typescale-label-medium-font-weight);
56
+ font-size: var(--md-sys-typescale-label-medium-font-size);
57
+ letter-spacing: var(--md-sys-typescale-label-medium-tracking);
58
+ line-height: var(--md-sys-typescale-label-medium-height);
59
+ text-transform: var(--md-sys-typescale-label-medium-text-transform);
60
+ text-decoration: var(--md-sys-typescale-label-medium-text-decoration);
61
+ padding: 16px 0px;
62
+ cursor: default;
63
+ }
64
+
65
+ .group-content {
66
+ display: flex;
67
+ flex-wrap: wrap;
68
+ flex-direction: row;
69
+ align-items: center;
70
+ }
71
+
72
+ .group-content > ui-chip {
73
+ margin: 4px;
74
+ }
75
+
76
+ .param-row {
77
+ display: flex;
78
+ align-items: start;
79
+ min-height: 56px;
80
+ }
81
+
82
+ .param-row > :first-child,
83
+ .param-row > :last-child {
84
+ margin-top: 8px;
85
+ margin-bottom: 8px;
86
+ }
87
+
88
+ .action-tab,
89
+ .param-row {
90
+ background-color: var(--md-sys-color-surface);
91
+ color: var(--md-sys-color-on-surface);
92
+ }
93
+
94
+ .steps {
95
+ flex: 1;
96
+ display: flex;
97
+ flex-wrap: wrap;
98
+ align-items: center;
99
+ border-radius: 8px;
100
+ padding-top: 8px;
101
+ border: 1px transparent dashed;
102
+ }
103
+
104
+ .steps > * {
105
+ margin-bottom: 8px;
106
+ }
107
+
108
+ .steps.dragover {
109
+ background-color: var(--md-sys-color-surface);
110
+ border-color: var(--md-sys-color-outline-variant);
111
+ border-radius: 8px;
112
+ }
113
+
114
+ .step-unit {
115
+ display: flex;
116
+ align-items: center;
117
+ }
118
+
119
+ .step-pill {
120
+ background-color: var(--md-sys-color-surface-variant);
121
+ height: 56px;
122
+ display: flex;
123
+ align-items: center;
124
+ padding: 0 12px;
125
+ border-radius: 8px;
126
+
127
+ font-family: var(--md-sys-typescale-body-medium-font-family-name);
128
+ font-style: var(--md-sys-typescale-body-medium-font-family-style);
129
+ font-weight: var(--md-sys-typescale-body-medium-font-weight);
130
+ font-size: var(--md-sys-typescale-body-medium-font-size);
131
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
132
+ line-height: var(--md-sys-typescale-body-medium-height);
133
+ text-transform: var(--md-sys-typescale-body-medium-text-transform);
134
+ text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
135
+ }
136
+
137
+ .drop-info {
138
+ font-family: var(--md-sys-typescale-body-medium-font-family-name);
139
+ font-style: var(--md-sys-typescale-body-medium-font-family-style);
140
+ font-weight: var(--md-sys-typescale-body-medium-font-weight);
141
+ font-size: var(--md-sys-typescale-body-medium-font-size);
142
+ letter-spacing: var(--md-sys-typescale-body-medium-tracking);
143
+ line-height: var(--md-sys-typescale-body-medium-height);
144
+ text-transform: var(--md-sys-typescale-body-medium-text-transform);
145
+ text-decoration: var(--md-sys-typescale-body-medium-text-decoration);
146
+ }
147
+
148
+ .step-pill.with-icon {
149
+ padding-right: 0;
150
+ }
151
+
152
+ .step-pill.empty {
153
+ border: 1px var(--md-sys-color-outline-variant) dashed;
154
+ }
155
+
156
+ .drop-target.spacer {
157
+ width: 8px;
158
+ height: 56px;
159
+ transition: width 120ms cubic-bezier(0.4, 0, 0.6, 1);
160
+ }
161
+
162
+ .drop-target.spacer.dragover {
163
+ width: 40px;
164
+ border: 1px var(--md-sys-color-outline-variant) dashed;
165
+ background-color: var(--md-sys-color-surface-variant);
166
+ border-radius: 8px;
167
+ margin: 0 4px;
168
+ }
169
+
170
+ .space-step-left {
171
+ margin-left: 8px;
172
+ }
173
+
174
+ .number-input {
175
+ min-width: 120px;
176
+ }
177
+
178
+ .step-row {
179
+ margin: 20px;
180
+ }
181
+ `];