@api-client/ui 0.0.5 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) 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/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
  8. package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
  9. package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
  10. package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
  11. package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
  12. package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
  13. package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
  14. package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
  15. package/dist/define/http/http-assertions.d.ts +1 -1
  16. package/dist/define/http/http-assertions.d.ts.map +1 -1
  17. package/dist/define/http/http-assertions.js +3 -3
  18. package/dist/define/http/http-assertions.js.map +1 -1
  19. package/dist/define/http/http-flows.d.ts +10 -0
  20. package/dist/define/http/http-flows.d.ts.map +1 -0
  21. package/dist/define/http/http-flows.js +13 -0
  22. package/dist/define/http/http-flows.js.map +1 -0
  23. package/dist/define/ui/ui-divider.d.ts +4 -1
  24. package/dist/define/ui/ui-divider.d.ts.map +1 -1
  25. package/dist/define/ui/ui-divider.js +11 -2
  26. package/dist/define/ui/ui-divider.js.map +1 -1
  27. package/dist/elements/ApiElement.d.ts +4 -0
  28. package/dist/elements/ApiElement.d.ts.map +1 -1
  29. package/dist/elements/ApiElement.js +6 -0
  30. package/dist/elements/ApiElement.js.map +1 -1
  31. package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -1
  32. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  33. package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
  34. package/dist/elements/amf/ApiOperationDocument.element.js +2 -1
  35. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  36. package/dist/elements/amf/ApiRequest.element.js +1 -1
  37. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  38. package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
  39. package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
  40. package/dist/elements/amf/ApiRequestEditor.element.js +0 -3
  41. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  42. package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
  43. package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
  44. package/dist/elements/authorization/ui/Authorization.js +0 -3
  45. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  46. package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
  47. package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
  48. package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
  49. package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
  50. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
  51. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
  52. package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
  53. package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
  54. package/dist/elements/dialog/Rename.d.ts +7 -6
  55. package/dist/elements/dialog/Rename.d.ts.map +1 -1
  56. package/dist/elements/dialog/Rename.js +7 -6
  57. package/dist/elements/dialog/Rename.js.map +1 -1
  58. package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
  59. package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
  60. package/dist/elements/dialog/SetCookieAction.element.js +173 -0
  61. package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
  62. package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
  63. package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  64. package/dist/elements/environment/EnvironmentEditor.js +69 -23
  65. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  66. package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
  67. package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
  68. package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  69. package/dist/elements/environment/ServerEditor.d.ts +3 -3
  70. package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
  71. package/dist/elements/environment/ServerEditor.js +3 -6
  72. package/dist/elements/environment/ServerEditor.js.map +1 -1
  73. package/dist/elements/environment/VariablesEditor.d.ts +0 -1
  74. package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
  75. package/dist/elements/environment/VariablesEditor.js +3 -6
  76. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  77. package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
  78. package/dist/elements/highlight/Prism.styles.js +12 -5
  79. package/dist/elements/highlight/Prism.styles.js.map +1 -1
  80. package/dist/elements/http/BodyEditor.d.ts +0 -4
  81. package/dist/elements/http/BodyEditor.d.ts.map +1 -1
  82. package/dist/elements/http/BodyEditor.js +10 -16
  83. package/dist/elements/http/BodyEditor.js.map +1 -1
  84. package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
  85. package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  86. package/dist/elements/http/BodyMultipartEditor.js +3 -19
  87. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  88. package/dist/elements/http/BodyTextEditor.d.ts +0 -1
  89. package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
  90. package/dist/elements/http/BodyTextEditor.js +0 -3
  91. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  92. package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
  93. package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  94. package/dist/elements/http/BodyUrlEncodedEditor.js +3 -5
  95. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  96. package/dist/elements/http/HeadersForm.d.ts +0 -4
  97. package/dist/elements/http/HeadersForm.d.ts.map +1 -1
  98. package/dist/elements/http/HeadersForm.js +0 -6
  99. package/dist/elements/http/HeadersForm.js.map +1 -1
  100. package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
  101. package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
  102. package/dist/elements/http/HttpAssertions.element.js +264 -0
  103. package/dist/elements/http/HttpAssertions.element.js.map +1 -0
  104. package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
  105. package/dist/elements/http/HttpAssertions.styles.js +7 -156
  106. package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
  107. package/dist/elements/http/HttpFlows.common.d.ts +3 -0
  108. package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
  109. package/dist/elements/http/HttpFlows.common.js +181 -0
  110. package/dist/elements/http/HttpFlows.common.js.map +1 -0
  111. package/dist/elements/http/HttpFlows.element.d.ts +97 -0
  112. package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
  113. package/dist/elements/http/HttpFlows.element.js +684 -0
  114. package/dist/elements/http/HttpFlows.element.js.map +1 -0
  115. package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
  116. package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
  117. package/dist/elements/http/HttpFlows.styles.js +28 -0
  118. package/dist/elements/http/HttpFlows.styles.js.map +1 -0
  119. package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
  120. package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
  121. package/dist/elements/http/HttpFlowsUi.js +1256 -0
  122. package/dist/elements/http/HttpFlowsUi.js.map +1 -0
  123. package/dist/elements/http/RequestConfigElement.d.ts +0 -1
  124. package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
  125. package/dist/elements/http/RequestConfigElement.js +8 -11
  126. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  127. package/dist/elements/http/RequestEditor.d.ts +10 -10
  128. package/dist/elements/http/RequestEditor.d.ts.map +1 -1
  129. package/dist/elements/http/RequestEditor.js +62 -23
  130. package/dist/elements/http/RequestEditor.js.map +1 -1
  131. package/dist/elements/http/UrlInput.d.ts +3 -3
  132. package/dist/elements/http/UrlInput.d.ts.map +1 -1
  133. package/dist/elements/http/UrlInput.js +2 -2
  134. package/dist/elements/http/UrlInput.js.map +1 -1
  135. package/dist/elements/http/UrlParamsForm.d.ts +0 -1
  136. package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
  137. package/dist/elements/http/UrlParamsForm.js +0 -3
  138. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  139. package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
  140. package/dist/elements/layout/SplitView.styles.js +1 -0
  141. package/dist/elements/layout/SplitView.styles.js.map +1 -1
  142. package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
  143. package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
  144. package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
  145. package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
  146. package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
  147. package/dist/elements/project/HttpProjectRequest.js +14 -5
  148. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  149. package/dist/elements/project/ProjectRunner.d.ts +0 -1
  150. package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
  151. package/dist/elements/project/ProjectRunner.js +1 -4
  152. package/dist/elements/project/ProjectRunner.js.map +1 -1
  153. package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
  154. package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
  155. package/dist/elements/schema-design/AssociationFormElement.js +2 -5
  156. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  157. package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
  158. package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
  159. package/dist/elements/schema-design/DataEntityEditorElement.js +5 -5
  160. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  161. package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
  162. package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
  163. package/dist/elements/schema-design/DataSchemaDocument.js +4 -7
  164. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  165. package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
  166. package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
  167. package/dist/elements/schema-design/EntityFormElement.js +4 -7
  168. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  169. package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
  170. package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
  171. package/dist/elements/schema-design/PropertyFormElement.js +8 -11
  172. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  173. package/dist/pages/ApplicationScreen.d.ts +1 -1
  174. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  175. package/dist/pages/ApplicationScreen.js +1 -1
  176. package/dist/pages/ApplicationScreen.js.map +1 -1
  177. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  178. package/dist/pages/api-client/ApiClient.styles.js +22 -3
  179. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  180. package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
  181. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  182. package/dist/pages/api-client/Authenticate.screen.js +19 -3
  183. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  184. package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
  185. package/dist/pages/api-client/StoreConfig.screen.js +4 -2
  186. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  187. package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
  188. package/dist/pages/api-client/StoreConfig.styles.js +5 -0
  189. package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
  190. package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
  191. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  192. package/dist/pages/api-client/pages/Files.page.js +2 -1
  193. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  194. package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
  195. package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
  196. package/dist/pages/http-project/HttpProject.screen.js +14 -15
  197. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  198. package/dist/pages/http-project/types.d.ts +8 -6
  199. package/dist/pages/http-project/types.d.ts.map +1 -1
  200. package/dist/pages/http-project/types.js.map +1 -1
  201. package/dist/styles/m3/surface.module.d.ts.map +1 -1
  202. package/dist/styles/m3/surface.module.js +11 -27
  203. package/dist/styles/m3/surface.module.js.map +1 -1
  204. package/dist/ui/UiElement.d.ts +4 -0
  205. package/dist/ui/UiElement.d.ts.map +1 -1
  206. package/dist/ui/UiElement.js +6 -0
  207. package/dist/ui/UiElement.js.map +1 -1
  208. package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
  209. package/dist/ui/button/SegmentedButton.styles.js +3 -1
  210. package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
  211. package/dist/ui/dialog/UiDialog.d.ts +3 -0
  212. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  213. package/dist/ui/dialog/UiDialog.js +3 -0
  214. package/dist/ui/dialog/UiDialog.js.map +1 -1
  215. package/dist/ui/effects/ripple.d.ts.map +1 -1
  216. package/dist/ui/effects/ripple.js +5 -1
  217. package/dist/ui/effects/ripple.js.map +1 -1
  218. package/dist/ui/icons/Icons.d.ts +3 -2
  219. package/dist/ui/icons/Icons.d.ts.map +1 -1
  220. package/dist/ui/icons/Icons.js +2 -1
  221. package/dist/ui/icons/Icons.js.map +1 -1
  222. package/dist/ui/input/CheckedElement.d.ts +1 -1
  223. package/dist/ui/input/CheckedElement.d.ts.map +1 -1
  224. package/dist/ui/input/CheckedElement.js +3 -3
  225. package/dist/ui/input/CheckedElement.js.map +1 -1
  226. package/dist/ui/input/Input.js +1 -1
  227. package/dist/ui/input/Input.js.map +1 -1
  228. package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
  229. package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
  230. package/dist/ui/list/UiDivider.element.js +39 -0
  231. package/dist/ui/list/UiDivider.element.js.map +1 -0
  232. package/dist/ui/list/UiDivider.styles.d.ts +3 -0
  233. package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
  234. package/dist/ui/list/UiDivider.styles.js +49 -0
  235. package/dist/ui/list/UiDivider.styles.js.map +1 -0
  236. package/dist/ui/tabs/UiTabs.d.ts +13 -1
  237. package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
  238. package/dist/ui/tabs/UiTabs.js +42 -13
  239. package/dist/ui/tabs/UiTabs.js.map +1 -1
  240. package/package.json +1 -1
  241. package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
  242. package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
  243. package/src/define/http/http-assertions.ts +3 -3
  244. package/src/define/http/http-flows.ts +15 -0
  245. package/src/define/ui/ui-divider.ts +7 -2
  246. package/src/elements/ApiElement.ts +7 -0
  247. package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
  248. package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
  249. package/src/elements/amf/ApiRequest.element.ts +1 -1
  250. package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
  251. package/src/elements/authorization/ui/Authorization.ts +3 -5
  252. package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
  253. package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
  254. package/src/elements/dialog/Rename.ts +8 -7
  255. package/src/elements/dialog/SetCookieAction.element.ts +183 -0
  256. package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
  257. package/src/elements/environment/EnvironmentEditor.ts +81 -22
  258. package/src/elements/environment/ServerEditor.ts +4 -8
  259. package/src/elements/environment/VariablesEditor.ts +3 -7
  260. package/src/elements/highlight/Prism.styles.ts +12 -5
  261. package/src/elements/http/BodyEditor.ts +10 -17
  262. package/src/elements/http/BodyMultipartEditor.ts +3 -20
  263. package/src/elements/http/BodyTextEditor.ts +0 -4
  264. package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
  265. package/src/elements/http/HeadersForm.ts +2 -9
  266. package/src/elements/http/HttpAssertions.element.ts +286 -0
  267. package/src/elements/http/HttpAssertions.styles.ts +7 -156
  268. package/src/elements/http/HttpFlows.common.ts +181 -0
  269. package/src/elements/http/HttpFlows.element.ts +722 -0
  270. package/src/elements/http/HttpFlows.styles.ts +29 -0
  271. package/src/elements/http/HttpFlowsUi.ts +1327 -0
  272. package/src/elements/http/RequestConfigElement.ts +10 -14
  273. package/src/elements/http/RequestEditor.ts +77 -35
  274. package/src/elements/http/UrlInput.ts +6 -6
  275. package/src/elements/http/UrlParamsForm.ts +2 -6
  276. package/src/elements/layout/SplitView.styles.ts +1 -0
  277. package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
  278. package/src/elements/project/HttpProjectRequest.ts +16 -5
  279. package/src/elements/project/ProjectRunner.ts +3 -7
  280. package/src/elements/schema-design/AssociationFormElement.ts +4 -8
  281. package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
  282. package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
  283. package/src/elements/schema-design/EntityFormElement.ts +6 -10
  284. package/src/elements/schema-design/PropertyFormElement.ts +11 -15
  285. package/src/pages/ApplicationScreen.ts +1 -1
  286. package/src/pages/api-client/ApiClient.styles.ts +22 -3
  287. package/src/pages/api-client/Authenticate.screen.ts +19 -3
  288. package/src/pages/api-client/StoreConfig.screen.ts +4 -2
  289. package/src/pages/api-client/StoreConfig.styles.ts +5 -0
  290. package/src/pages/api-client/pages/Files.page.ts +2 -1
  291. package/src/pages/http-project/HttpProject.screen.ts +14 -26
  292. package/src/pages/http-project/types.ts +8 -6
  293. package/src/styles/m3/surface.module.ts +11 -27
  294. package/src/styles/m3/theme.css +36 -0
  295. package/src/styles/m3/tokens.css +11 -0
  296. package/src/ui/UiElement.ts +7 -0
  297. package/src/ui/button/SegmentedButton.styles.ts +3 -1
  298. package/src/ui/dialog/UiDialog.ts +3 -0
  299. package/src/ui/effects/ripple.ts +6 -1
  300. package/src/ui/icons/Icons.ts +3 -2
  301. package/src/ui/input/CheckedElement.ts +3 -3
  302. package/src/ui/input/Input.ts +1 -1
  303. package/src/ui/list/UiDivider.element.ts +41 -0
  304. package/src/ui/list/UiDivider.styles.ts +49 -0
  305. package/src/ui/tabs/UiTabs.ts +55 -13
  306. package/test/amf/authorization/OAuth2Method.test.ts +1 -1
  307. package/test/elements/http/HttpAssertions.test.ts +5 -6
  308. package/test/elements/http/HttpFlows.test.ts +485 -0
  309. package/dist/elements/http/HttpAssertions.d.ts +0 -114
  310. package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
  311. package/dist/elements/http/HttpAssertions.js +0 -1146
  312. package/dist/elements/http/HttpAssertions.js.map +0 -1
  313. package/dist/elements/http/internals.d.ts +0 -150
  314. package/dist/elements/http/internals.d.ts.map +0 -1
  315. package/dist/elements/http/internals.js +0 -150
  316. package/dist/elements/http/internals.js.map +0 -1
  317. package/dist/ui/list/DividerElement.d.ts.map +0 -1
  318. package/dist/ui/list/DividerElement.js +0 -82
  319. package/dist/ui/list/DividerElement.js.map +0 -1
  320. package/src/elements/http/HttpAssertions.ts +0 -1187
  321. package/src/elements/http/internals.ts +0 -151
  322. package/src/http-client/docs/Files.md +0 -28
  323. package/src/ui/list/DividerElement.ts +0 -84
@@ -1 +1 @@
1
- {"version":3,"file":"HeadersForm.js","sourceRoot":"","sources":["../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { html, PropertyValues, TemplateResult } from \"lit\";\nimport { Events as CoreEvents, Property, HeadersArray, HttpDefinitions, IProperty } from '@api-client/core/build/browser.js';\nimport { property, state } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport Input from \"../../ui/input/Input.js\";\nimport SwitchElement from \"../../ui/input/SwitchElement.js\";\nimport { EventTypes } from \"../../events/EventTypes.js\";\nimport { SnackNotifications } from \"../../ui/notification/SnackNotifications.js\";\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-icon-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-icon.js';\n\nconst nameSuggestions = HttpDefinitions.queryRequestHeaders().map(item => item.key);\n\n/**\n * An editor that creates HTTP headers as a data model that can be translated into a headers string.\n */\nexport default class HeadersForm extends ApiElement {\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) text = false;\n\n /**\n * The headers model.\n */\n @property({ type: Array }) model: IProperty[] = [];\n\n @state() protected internalModel = new HeadersArray();\n\n @state() protected textValue?: string;\n\n protected autocompleteMap: Record<string, string[]> = {};\n\n constructor() {\n super();\n this.handleGlobalContentType = this.handleGlobalContentType.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.State.contentTypeChange, this.handleGlobalContentType as EventListener);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.eventsTarget.removeEventListener(EventTypes.Http.Request.State.contentTypeChange, this.handleGlobalContentType as EventListener);\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('model')) {\n if (this.model) {\n this.internalModel = HeadersArray.from(this.model);\n this.model.forEach((item, index) => this.setupValueAutocomplete(item.name, index));\n } else {\n this.internalModel = new HeadersArray();\n }\n }\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.internalModel.toRawString();\n } else {\n this.textValue = undefined;\n }\n }\n \n super.update(cp);\n }\n\n protected setupHeaders(headers?: string): void {\n this.autocompleteMap = {};\n if (headers) {\n this.internalModel = HeadersArray.fromHeaders(headers);\n this.model = this.internalModel.toJSON();\n } else {\n this.internalModel = new HeadersArray();\n this.model = [];\n }\n this.requestUpdate();\n }\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value Header value\n */\n updateHeaderValue(index: number, value: string): void;\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value Header value\n */\n updateHeaderValue(name: string, value: string): void;\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex Header name or index\n * @param value Header value\n */\n updateHeaderValue(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index === -1) {\n if (typeof nameOrIndex === 'string') {\n this.addHeader(nameOrIndex, value);\n } else {\n this.addHeader('', value);\n }\n this.propagateModelChange();\n return;\n }\n internalModel[index].value = value;\n this.model[index].value = value;\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value The header name\n */\n updateHeaderName(index: number, value: string): void;\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value The header name\n */\n updateHeaderName(name: string, value: string): void;\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex The header name or index\n * @param value The header name\n */\n updateHeaderName(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index === -1) {\n this.addHeader(value);\n return;\n }\n internalModel[index].name = value;\n this.model[index].name = value;\n this.setupValueAutocomplete(value, index);\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n protected setupValueAutocomplete(name: string, index: number): void {\n const query = name.toLowerCase();\n const items = HttpDefinitions.queryRequestHeaders(query);\n const item = items.find(i => i.key.toLowerCase() === query);\n if (item && item.autocomplete) {\n this.autocompleteMap[`header-value-${index}`] = item.autocomplete;\n } else {\n delete this.autocompleteMap[`header-value-${index}`];\n }\n }\n\n /**\n * Removes a header from the list.\n * @param name The name of the header to remove\n */\n removeHeader(name: string): void;\n\n /**\n * Removes a header from the list.\n * @param index The position of the header to remove\n */\n removeHeader(index: number): void\n\n /**\n * Removes a header from the list.\n * @param nameOrIndex Header name or its index.\n */\n removeHeader(nameOrIndex: string | number): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index < 0) {\n return;\n }\n internalModel.splice(index, 1);\n this.model.splice(index, 1);\n delete this.autocompleteMap[`header-value-${index}`];\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n /**\n * Adds a header to the list of headers\n */\n addHeader(name = '', value = ''): void {\n const prop = Property.String(name, value);\n this.internalModel.push(prop);\n this.model.push(prop.toJSON());\n // the value hasn't actually changed here so no events\n this.requestUpdate();\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model.splice(0);\n this.internalModel.splice(0);\n this.propagateModelChange();\n this.autocompleteMap = {};\n if (this.text) {\n this.textValue = '';\n }\n this.requestUpdate();\n }\n\n /**\n * Toggles enabled state of a header.\n */\n toggleHeader(index: number, enabled: boolean): void {\n this.model[index].enabled = enabled;\n this.internalModel[index].enabled = enabled;\n if (this.text) {\n this.textValue = this.internalModel.toRawString();\n }\n this.propagateModelChange();\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text;\n }\n\n async copyToClipboard(): Promise<void> {\n if (!navigator.clipboard) {\n throw new Error(`Clipboard API not supported.`);\n }\n await navigator.clipboard.writeText(this.internalModel.toString());\n SnackNotifications.notify('Headers copied to clipboard.', 2000);\n CoreEvents.Telemetry.event({\n category: 'Usage',\n action: 'Click',\n label: 'Headers editor clipboard copy',\n }, this);\n }\n\n /**\n * Dispatches the `change` event to notify about the value change\n */\n protected notifyChange(): void {\n this.dispatchEvent(new Event('change'))\n }\n\n protected handleGlobalContentType(e: CustomEvent): void {\n const { value } = e.detail;\n this.updateHeaderValue('content-type', value);\n }\n\n /**\n * Updates the `value` from the current model and dispatches the value change event\n */\n protected propagateModelChange(): void {\n this.notifyChange();\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete;\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type');\n if (!row) {\n return;\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined;\n if (node) {\n node.focus();\n }\n } catch (e) {\n // ...\n }\n }\n\n protected handleAdd(): void {\n this.addHeader();\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement;\n const { option } = element.dataset;\n if (!option) {\n return;\n }\n if (option === 'clear') {\n this.clear();\n } else if (option === 'text-editor') {\n this.toggle();\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateHeaderName(index, input.value);\n input.checkValidity();\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateHeaderValue(index, input.value);\n input.checkValidity();\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.removeHeader(index);\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.toggleHeader(index, node.checked);\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement;\n const { value } = input;\n this.setupHeaders(value);\n this.textValue = value;\n this.notifyChange();\n }\n\n protected handleCopy(): void {\n this.copyToClipboard();\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n ${this.renderEditor()}\n ${this.renderNamesList()}\n ${this.renderAutocompleteLists()}\n `;\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button type=\"tonal\" @click=\"${this.handleAdd}\">Add</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleCopy}\">Copy</ui-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" data-option=\"text-editor\" image=\"icon\" title=\"Toggles between a text editor and a form\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item role=\"menuitem\" data-option=\"clear\" image=\"icon\" title=\"Removes all parameters from the editor\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `;\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText();\n }\n return this.renderList();\n }\n\n protected renderText(): TemplateResult {\n const { textValue = '' } = this;\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea \n .value=\"${live(textValue)}\"\n data-enable-grammarly=\"false\"\n @change=\"${this.handleText}\"\n ></textarea>\n </div>\n `;\n }\n\n protected renderList(): TemplateResult {\n const items = this.internalModel;\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage();\n }\n return this.renderParams(items);\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">No parameters added</div>\n `;\n }\n\n protected renderParams(items: HeadersArray): TemplateResult {\n return html`\n ${items.map((item, index) => this.renderParam(item, index))}\n `;\n }\n\n protected renderParam(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)}\n ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)}\n ${this.renderDeleteParameter(index)}\n </div>\n `;\n }\n\n protected renderToggleButton(item: Property, index: number): TemplateResult {\n return html`\n <ui-switch \n .checked=\"${!!item.enabled}\" \n @change=\"${this.handleToggle}\" \n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ></ui-switch>\n `;\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button aria-label=\"Delete this parameter\" data-index=\"${index}\" @click=\"${this.handleRemove}\">\n <ui-icon icon=\"deleteOutline\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderNameField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n list=\"names-list\"\n />\n </div>\n `;\n }\n\n protected renderValueField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value as string)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n list=\"header-value-${index}\"\n />\n </div>\n `;\n }\n\n protected renderNamesList(): TemplateResult {\n return html`\n <datalist id=\"names-list\">\n ${nameSuggestions.map(i => html`<option value=\"${i}\">`)}\n </datalist>\n `;\n }\n\n protected renderAutocompleteLists(): TemplateResult[] {\n const { autocompleteMap } = this;\n return Object.keys(autocompleteMap).map(key => html`\n <datalist id=\"${key}\">\n ${autocompleteMap[key].map(i => html`<option value=\"${i}\">`)}\n </datalist>\n `)\n }\n}\n"]}
1
+ {"version":3,"file":"HeadersForm.js","sourceRoot":"","sources":["../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\nimport { html, PropertyValues, TemplateResult } from \"lit\";\nimport { Events as CoreEvents, Property, HeadersArray, HttpDefinitions, IProperty } from '@api-client/core/build/browser.js';\nimport { property, state } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport type Input from \"../../ui/input/Input.js\";\nimport type SwitchElement from \"../../ui/input/SwitchElement.js\";\nimport { EventTypes } from \"../../events/EventTypes.js\";\nimport { SnackNotifications } from \"../../ui/notification/SnackNotifications.js\";\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-icon-button.js';\nimport '../../define/ui/ui-dropdown-list.js';\nimport '../../define/ui/ui-list.js';\nimport '../../define/ui/ui-list-item.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-divider.js';\nimport '../../define/ui/ui-icon.js';\n\nconst nameSuggestions = HttpDefinitions.queryRequestHeaders().map(item => item.key);\n\n/**\n * An editor that creates HTTP headers as a data model that can be translated into a headers string.\n */\nexport default class HeadersForm extends ApiElement {\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) readOnly = false;\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) text = false;\n\n /**\n * The headers model.\n */\n @property({ type: Array }) model: IProperty[] = [];\n\n @state() protected internalModel = new HeadersArray();\n\n @state() protected textValue?: string;\n\n protected autocompleteMap: Record<string, string[]> = {};\n\n constructor() {\n super();\n this.handleGlobalContentType = this.handleGlobalContentType.bind(this);\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.eventsTarget.addEventListener(EventTypes.Http.Request.State.contentTypeChange, this.handleGlobalContentType as EventListener);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.eventsTarget.removeEventListener(EventTypes.Http.Request.State.contentTypeChange, this.handleGlobalContentType as EventListener);\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('model')) {\n if (this.model) {\n this.internalModel = HeadersArray.from(this.model);\n this.model.forEach((item, index) => this.setupValueAutocomplete(item.name, index));\n } else {\n this.internalModel = new HeadersArray();\n }\n }\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.internalModel.toRawString();\n } else {\n this.textValue = undefined;\n }\n }\n \n super.update(cp);\n }\n\n protected setupHeaders(headers?: string): void {\n this.autocompleteMap = {};\n if (headers) {\n this.internalModel = HeadersArray.fromHeaders(headers);\n this.model = this.internalModel.toJSON();\n } else {\n this.internalModel = new HeadersArray();\n this.model = [];\n }\n this.requestUpdate();\n }\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value Header value\n */\n updateHeaderValue(index: number, value: string): void;\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value Header value\n */\n updateHeaderValue(name: string, value: string): void;\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex Header name or index\n * @param value Header value\n */\n updateHeaderValue(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index === -1) {\n if (typeof nameOrIndex === 'string') {\n this.addHeader(nameOrIndex, value);\n } else {\n this.addHeader('', value);\n }\n this.propagateModelChange();\n return;\n }\n internalModel[index].value = value;\n this.model[index].value = value;\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value The header name\n */\n updateHeaderName(index: number, value: string): void;\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value The header name\n */\n updateHeaderName(name: string, value: string): void;\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex The header name or index\n * @param value The header name\n */\n updateHeaderName(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index === -1) {\n this.addHeader(value);\n return;\n }\n internalModel[index].name = value;\n this.model[index].name = value;\n this.setupValueAutocomplete(value, index);\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n protected setupValueAutocomplete(name: string, index: number): void {\n const query = name.toLowerCase();\n const items = HttpDefinitions.queryRequestHeaders(query);\n const item = items.find(i => i.key.toLowerCase() === query);\n if (item && item.autocomplete) {\n this.autocompleteMap[`header-value-${index}`] = item.autocomplete;\n } else {\n delete this.autocompleteMap[`header-value-${index}`];\n }\n }\n\n /**\n * Removes a header from the list.\n * @param name The name of the header to remove\n */\n removeHeader(name: string): void;\n\n /**\n * Removes a header from the list.\n * @param index The position of the header to remove\n */\n removeHeader(index: number): void\n\n /**\n * Removes a header from the list.\n * @param nameOrIndex Header name or its index.\n */\n removeHeader(nameOrIndex: string | number): void {\n const { internalModel } = this;\n let index: number;\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex;\n } else {\n const lowerName = nameOrIndex.toLowerCase();\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName);\n }\n if (index < 0) {\n return;\n }\n internalModel.splice(index, 1);\n this.model.splice(index, 1);\n delete this.autocompleteMap[`header-value-${index}`];\n if (this.text) {\n this.textValue = internalModel.toRawString();\n }\n this.propagateModelChange();\n this.requestUpdate();\n }\n\n /**\n * Adds a header to the list of headers\n */\n addHeader(name = '', value = ''): void {\n const prop = Property.String(name, value);\n this.internalModel.push(prop);\n this.model.push(prop.toJSON());\n // the value hasn't actually changed here so no events\n this.requestUpdate();\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model.splice(0);\n this.internalModel.splice(0);\n this.propagateModelChange();\n this.autocompleteMap = {};\n if (this.text) {\n this.textValue = '';\n }\n this.requestUpdate();\n }\n\n /**\n * Toggles enabled state of a header.\n */\n toggleHeader(index: number, enabled: boolean): void {\n this.model[index].enabled = enabled;\n this.internalModel[index].enabled = enabled;\n if (this.text) {\n this.textValue = this.internalModel.toRawString();\n }\n this.propagateModelChange();\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text;\n }\n\n async copyToClipboard(): Promise<void> {\n if (!navigator.clipboard) {\n throw new Error(`Clipboard API not supported.`);\n }\n await navigator.clipboard.writeText(this.internalModel.toString());\n SnackNotifications.notify('Headers copied to clipboard.', 2000);\n CoreEvents.Telemetry.event({\n category: 'Usage',\n action: 'Click',\n label: 'Headers editor clipboard copy',\n }, this);\n }\n\n protected handleGlobalContentType(e: CustomEvent): void {\n const { value } = e.detail;\n this.updateHeaderValue('content-type', value);\n }\n\n /**\n * Updates the `value` from the current model and dispatches the value change event\n */\n protected propagateModelChange(): void {\n this.notifyChange();\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete;\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type');\n if (!row) {\n return;\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined;\n if (node) {\n node.focus();\n }\n } catch (e) {\n // ...\n }\n }\n\n protected handleAdd(): void {\n this.addHeader();\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement;\n const { option } = element.dataset;\n if (!option) {\n return;\n }\n if (option === 'clear') {\n this.clear();\n } else if (option === 'text-editor') {\n this.toggle();\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateHeaderName(index, input.value);\n input.checkValidity();\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input;\n const index = Number(input.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.updateHeaderValue(index, input.value);\n input.checkValidity();\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.removeHeader(index);\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.toggleHeader(index, node.checked);\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement;\n const { value } = input;\n this.setupHeaders(value);\n this.textValue = value;\n this.notifyChange();\n }\n\n protected handleCopy(): void {\n this.copyToClipboard();\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n ${this.renderEditor()}\n ${this.renderNamesList()}\n ${this.renderAutocompleteLists()}\n `;\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button type=\"tonal\" @click=\"${this.handleAdd}\">Add</ui-button>\n <ui-button type=\"tonal\" @click=\"${this.handleCopy}\">Copy</ui-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item role=\"menuitem\" data-option=\"text-editor\" image=\"icon\" title=\"Toggles between a text editor and a form\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item role=\"menuitem\" data-option=\"clear\" image=\"icon\" title=\"Removes all parameters from the editor\">\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `;\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText();\n }\n return this.renderList();\n }\n\n protected renderText(): TemplateResult {\n const { textValue = '' } = this;\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea \n .value=\"${live(textValue)}\"\n data-enable-grammarly=\"false\"\n @change=\"${this.handleText}\"\n ></textarea>\n </div>\n `;\n }\n\n protected renderList(): TemplateResult {\n const items = this.internalModel;\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage();\n }\n return this.renderParams(items);\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">No parameters added</div>\n `;\n }\n\n protected renderParams(items: HeadersArray): TemplateResult {\n return html`\n ${items.map((item, index) => this.renderParam(item, index))}\n `;\n }\n\n protected renderParam(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)}\n ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)}\n ${this.renderDeleteParameter(index)}\n </div>\n `;\n }\n\n protected renderToggleButton(item: Property, index: number): TemplateResult {\n return html`\n <ui-switch \n .checked=\"${!!item.enabled}\" \n @change=\"${this.handleToggle}\" \n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ></ui-switch>\n `;\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button aria-label=\"Delete this parameter\" data-index=\"${index}\" @click=\"${this.handleRemove}\">\n <ui-icon icon=\"deleteOutline\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderNameField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n pattern=\"\\\\S*\" \n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n list=\"names-list\"\n />\n </div>\n `;\n }\n\n protected renderValueField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value as string)}\" \n data-index=\"${index}\" \n ?readOnly=\"${this.readOnly}\" \n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n list=\"header-value-${index}\"\n />\n </div>\n `;\n }\n\n protected renderNamesList(): TemplateResult {\n return html`\n <datalist id=\"names-list\">\n ${nameSuggestions.map(i => html`<option value=\"${i}\">`)}\n </datalist>\n `;\n }\n\n protected renderAutocompleteLists(): TemplateResult[] {\n const { autocompleteMap } = this;\n return Object.keys(autocompleteMap).map(key => html`\n <datalist id=\"${key}\">\n ${autocompleteMap[key].map(i => html`<option value=\"${i}\">`)}\n </datalist>\n `)\n }\n}\n"]}
@@ -0,0 +1,55 @@
1
+ import { IHttpAssertion, IHttpStep } from "@api-client/core/build/browser.js";
2
+ import { nothing, TemplateResult } from "lit";
3
+ import { HttpFlowsUi, StepsTarget } from "./HttpFlowsUi.js";
4
+ import { UiDialogClosingReason } from "../../ui/dialog/UiDialog.js";
5
+ import '../../define/ui/ui-button.js';
6
+ import '../../define/ui/ui-switch.js';
7
+ import '../../define/ui/ui-dialog.js';
8
+ import '../../define/ui/ui-divider.js';
9
+ /**
10
+ * @fires change When the model change
11
+ */
12
+ export default class HttpAssertions extends HttpFlowsUi {
13
+ /**
14
+ * The list of assertions.
15
+ * This is a live list. All changes are propagated in the model.
16
+ */
17
+ model: IHttpAssertion[];
18
+ /**
19
+ * Adds a new empty assertion to the model.
20
+ * Note, this function won't notify the parent element
21
+ * about the change as empty rules can be discarded.
22
+ */
23
+ addAssertion(): void;
24
+ /**
25
+ * Removes an assertion at specified index.
26
+ * @param index The index of the assertion in the `model` to remove.
27
+ */
28
+ removeAssertion(index: number): void;
29
+ /**
30
+ * Toggles the enabled state of the assertion.
31
+ * @param index The index of the assertion on the `model` array
32
+ * @param value The `enabled` value.
33
+ */
34
+ toggleAssertion(index: number, value: boolean): void;
35
+ protected handleAdd(): void;
36
+ protected handleRemove(e: Event): void;
37
+ protected handleToggle(e: Event): void;
38
+ protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined;
39
+ protected stepFromChangeEvent(e: Event): IHttpStep | undefined;
40
+ protected handleRenameAssertion(e: Event): void;
41
+ protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void;
42
+ protected render(): TemplateResult;
43
+ protected renderActionButtons(): TemplateResult;
44
+ protected renderAssertions(): TemplateResult;
45
+ protected renderEditor(): TemplateResult;
46
+ protected renderEmptyMessage(): TemplateResult;
47
+ protected renderList(model: IHttpAssertion[]): TemplateResult;
48
+ protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult;
49
+ protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing;
50
+ protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult;
51
+ protected renderRenameAssertion(assertionIndex: number): TemplateResult;
52
+ protected renderDeleteAssertion(assertionIndex: number): TemplateResult;
53
+ protected renderRenameAssertionDialog(): TemplateResult;
54
+ }
55
+ //# sourceMappingURL=HttpAssertions.element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpAssertions.element.d.ts","sourceRoot":"","sources":["../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACV,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAQ,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAiB,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,8BAA8B,CAAC;AACtC,OAAO,+BAA+B,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD;;;OAGG;IACwB,KAAK,EAAE,cAAc,EAAE,CAAM;IAExD;;;;OAIG;IACH,YAAY,IAAI,IAAI;IASpB;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUpC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAUpD,SAAS,CAAC,SAAS,IAAI,IAAI;IAI3B,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAStC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAStC,SAAS,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAOjF,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAe9D,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAqB/C,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,IAAI;cAqB5D,MAAM,IAAI,cAAc;IAY3C,SAAS,CAAC,mBAAmB,IAAI,cAAc;IAQ/C,SAAS,CAAC,gBAAgB,IAAI,cAAc;IAU5C,SAAS,CAAC,YAAY,IAAI,cAAc;IAQxC,SAAS,CAAC,kBAAkB,IAAI,cAAc;IAM9C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc;IAM7D,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAgB9E,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,OAAO;IAU3F,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,GAAG,cAAc;IAY1F,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAcvE,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAcvE,SAAS,CAAC,2BAA2B,IAAI,cAAc;CAexD"}
@@ -0,0 +1,264 @@
1
+ import { __decorate } from "tslib";
2
+ import { html, nothing } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ import { HttpFlowsUi } from "./HttpFlowsUi.js";
5
+ import '../../define/ui/ui-button.js';
6
+ import '../../define/ui/ui-switch.js';
7
+ import '../../define/ui/ui-dialog.js';
8
+ import '../../define/ui/ui-divider.js';
9
+ /**
10
+ * @fires change When the model change
11
+ */
12
+ export default class HttpAssertions extends HttpFlowsUi {
13
+ constructor() {
14
+ super(...arguments);
15
+ /**
16
+ * The list of assertions.
17
+ * This is a live list. All changes are propagated in the model.
18
+ */
19
+ this.model = [];
20
+ }
21
+ /**
22
+ * Adds a new empty assertion to the model.
23
+ * Note, this function won't notify the parent element
24
+ * about the change as empty rules can be discarded.
25
+ */
26
+ addAssertion() {
27
+ const { model } = this;
28
+ model.push({
29
+ enabled: true,
30
+ steps: [],
31
+ });
32
+ this.requestUpdate();
33
+ }
34
+ /**
35
+ * Removes an assertion at specified index.
36
+ * @param index The index of the assertion in the `model` to remove.
37
+ */
38
+ removeAssertion(index) {
39
+ const { model } = this;
40
+ if (!model[index]) {
41
+ throw new RangeError(`Invalid index: ${index}`);
42
+ }
43
+ model.splice(index, 1);
44
+ this.requestUpdate();
45
+ this.notifyChange();
46
+ }
47
+ /**
48
+ * Toggles the enabled state of the assertion.
49
+ * @param index The index of the assertion on the `model` array
50
+ * @param value The `enabled` value.
51
+ */
52
+ toggleAssertion(index, value) {
53
+ const { model } = this;
54
+ if (!model[index]) {
55
+ throw new RangeError(`Invalid index: ${index}`);
56
+ }
57
+ model[index].enabled = value;
58
+ this.requestUpdate();
59
+ this.notifyChange();
60
+ }
61
+ handleAdd() {
62
+ this.addAssertion();
63
+ }
64
+ handleRemove(e) {
65
+ const node = e.currentTarget;
66
+ const index = Number(node.dataset.index);
67
+ if (Number.isNaN(index)) {
68
+ return;
69
+ }
70
+ this.removeAssertion(index);
71
+ }
72
+ handleToggle(e) {
73
+ const node = e.currentTarget;
74
+ const index = Number(node.dataset.index);
75
+ if (Number.isNaN(index)) {
76
+ return;
77
+ }
78
+ this.toggleAssertion(index, node.checked);
79
+ }
80
+ getStepsTarget(assertionOrActionIndex) {
81
+ if (Number.isNaN(assertionOrActionIndex)) {
82
+ return undefined;
83
+ }
84
+ return this.model[assertionOrActionIndex];
85
+ }
86
+ stepFromChangeEvent(e) {
87
+ const input = e.target;
88
+ input.checkValidity();
89
+ const assertionIndex = Number(input.dataset.assertionIndex);
90
+ const stepIndex = Number(input.dataset.stepIndex);
91
+ if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {
92
+ return undefined;
93
+ }
94
+ const assertion = this.model[assertionIndex];
95
+ if (!assertion) {
96
+ return undefined;
97
+ }
98
+ return assertion.steps[stepIndex];
99
+ }
100
+ handleRenameAssertion(e) {
101
+ const target = e.currentTarget;
102
+ const assertionIndex = Number(target.dataset.assertionIndex);
103
+ if (Number.isNaN(assertionIndex)) {
104
+ return;
105
+ }
106
+ const assertion = this.model[assertionIndex];
107
+ if (!assertion) {
108
+ return;
109
+ }
110
+ const { description } = assertion;
111
+ const dialog = this.shadowRoot?.querySelector('.rename-dialog');
112
+ if (!dialog) {
113
+ return;
114
+ }
115
+ const input = dialog.querySelector('ui-text-field');
116
+ input.value = description || '';
117
+ dialog.open = true;
118
+ dialog.dataset.assertionIndex = target.dataset.assertionIndex;
119
+ }
120
+ handleRenameDialogResult(e) {
121
+ if (e.detail.cancelled) {
122
+ return;
123
+ }
124
+ const dialog = e.currentTarget;
125
+ const assertionIndex = Number(dialog.dataset.assertionIndex);
126
+ if (Number.isNaN(assertionIndex)) {
127
+ return;
128
+ }
129
+ const assertion = this.model[assertionIndex];
130
+ if (!assertion) {
131
+ return;
132
+ }
133
+ const input = dialog.querySelector('ui-text-field');
134
+ assertion.description = input.value;
135
+ this.requestUpdate();
136
+ this.notifyChange();
137
+ input.value = '';
138
+ delete dialog.dataset.assertionIndex;
139
+ }
140
+ render() {
141
+ return html `
142
+ ${this.renderActionButtons()}
143
+ <div class="container">
144
+ ${this.renderEditor()}
145
+ <ui-divider vertical></ui-divider>
146
+ ${this.renderAssertions()}
147
+ </div>
148
+ ${this.renderRenameAssertionDialog()}
149
+ `;
150
+ }
151
+ renderActionButtons() {
152
+ return html `
153
+ <div class="editor-actions">
154
+ <ui-button type="tonal" @click="${this.handleAdd}" class="add-button">Add</ui-button>
155
+ </div>
156
+ `;
157
+ }
158
+ renderAssertions() {
159
+ return html `
160
+ <section aria-label="Assertion options" class="options">
161
+ ${this.renderResponseDataSourceSuggestions()}
162
+ ${this.renderTransformationSuggestions()}
163
+ ${this.renderAssertionSuggestions()}
164
+ </section>
165
+ `;
166
+ }
167
+ renderEditor() {
168
+ const { model } = this;
169
+ const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage();
170
+ return html `
171
+ <section aria-label="Assertions editor" class="editor surface1">${content}</section>
172
+ `;
173
+ }
174
+ renderEmptyMessage() {
175
+ return html `
176
+ <div class="empty-message">No assertions added</div>
177
+ `;
178
+ }
179
+ renderList(model) {
180
+ return html `
181
+ ${model.map((item, index) => this.renderAssertion(item, index))}
182
+ `;
183
+ }
184
+ renderAssertion(item, index) {
185
+ return html `
186
+ <div class="step-row">
187
+ ${this.renderAssertionDescription(item)}
188
+ <div class="param-row">
189
+ ${this.renderToggleButton(item, index)}
190
+ ${this.renderSteps(item, index)}
191
+ <div class="action-actions">
192
+ ${this.renderRenameAssertion(index)}
193
+ ${this.renderDeleteAssertion(index)}
194
+ </div>
195
+ </div>
196
+ </div>
197
+ `;
198
+ }
199
+ renderAssertionDescription(item) {
200
+ const { description } = item;
201
+ if (!description) {
202
+ return nothing;
203
+ }
204
+ return html `
205
+ <div class="assertion-description label-medium">${description}</div>
206
+ `;
207
+ }
208
+ renderToggleButton(item, assertionIndex) {
209
+ return html `
210
+ <ui-switch
211
+ .checked="${!!item.enabled}"
212
+ @change="${this.handleToggle}"
213
+ aria-label="Toggle this assertion"
214
+ data-index="${assertionIndex}"
215
+ class="toggle-button"
216
+ ></ui-switch>
217
+ `;
218
+ }
219
+ renderRenameAssertion(assertionIndex) {
220
+ return html `
221
+ <ui-icon-button
222
+ aria-label="Rename this assertion"
223
+ title="Rename this assertion"
224
+ data-assertion-index="${assertionIndex}"
225
+ @click="${this.handleRenameAssertion}"
226
+ class="rename-button"
227
+ >
228
+ <ui-icon icon="rename" role="presentation"></ui-icon>
229
+ </ui-icon-button>
230
+ `;
231
+ }
232
+ renderDeleteAssertion(assertionIndex) {
233
+ return html `
234
+ <ui-icon-button
235
+ aria-label="Delete this assertion"
236
+ title="Delete this assertion"
237
+ data-index="${assertionIndex}"
238
+ @click="${this.handleRemove}"
239
+ class="delete-button"
240
+ >
241
+ <ui-icon icon="deleteOutline" role="presentation"></ui-icon>
242
+ </ui-icon-button>
243
+ `;
244
+ }
245
+ renderRenameAssertionDialog() {
246
+ return html `
247
+ <ui-dialog modal class="rename-dialog" @close="${this.handleRenameDialogResult}" dismissLabel="Cancel" confirmLabel="Accept">
248
+ <ui-icon slot="icon" icon="rename"></ui-icon>
249
+ <span slot="title">Rename assertion</span>
250
+
251
+ <ui-text-field
252
+ name="rename"
253
+ label="Assertion description"
254
+ required
255
+ class="input"
256
+ ></ui-text-field>
257
+ </ui-dialog>
258
+ `;
259
+ }
260
+ }
261
+ __decorate([
262
+ property({ type: Array })
263
+ ], HttpAssertions.prototype, "model", void 0);
264
+ //# sourceMappingURL=HttpAssertions.element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpAssertions.element.js","sourceRoot":"","sources":["../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { \n IHttpAssertion,\n IHttpStep,\n} from \"@api-client/core/build/browser.js\";\nimport { html, nothing, TemplateResult } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { HttpFlowsUi, StepsTarget } from \"./HttpFlowsUi.js\";\nimport type SwitchElement from \"../../ui/input/SwitchElement.js\";\nimport type Input from \"../../ui/input/Input.js\";\nimport UiDialog, { UiDialogClosingReason } from \"../../ui/dialog/UiDialog.js\";\nimport '../../define/ui/ui-button.js';\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-dialog.js';\nimport '../../define/ui/ui-divider.js';\n\n/**\n * @fires change When the model change\n */\nexport default class HttpAssertions extends HttpFlowsUi {\n /**\n * The list of assertions.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) model: IHttpAssertion[] = [];\n\n /**\n * Adds a new empty assertion to the model.\n * Note, this function won't notify the parent element\n * about the change as empty rules can be discarded.\n */\n addAssertion(): void {\n const { model } = this;\n model.push({\n enabled: true,\n steps: [],\n });\n this.requestUpdate();\n }\n\n /**\n * Removes an assertion at specified index.\n * @param index The index of the assertion in the `model` to remove.\n */\n removeAssertion(index: number): void {\n const { model } = this;\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`);\n }\n model.splice(index, 1);\n this.requestUpdate();\n this.notifyChange();\n }\n\n /**\n * Toggles the enabled state of the assertion.\n * @param index The index of the assertion on the `model` array\n * @param value The `enabled` value.\n */\n toggleAssertion(index: number, value: boolean): void {\n const { model } = this;\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`);\n }\n model[index].enabled = value;\n this.requestUpdate();\n this.notifyChange();\n }\n\n protected handleAdd(): void {\n this.addAssertion();\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.removeAssertion(index);\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n const index = Number(node.dataset.index);\n if (Number.isNaN(index)) {\n return;\n }\n this.toggleAssertion(index, node.checked);\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined;\n }\n return this.model[assertionOrActionIndex];\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input;\n input.checkValidity();\n const assertionIndex = Number(input.dataset.assertionIndex);\n const stepIndex = Number(input.dataset.stepIndex);\n if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {\n return undefined;\n }\n const assertion = this.model[assertionIndex];\n if (!assertion) {\n return undefined;\n }\n return assertion.steps[stepIndex];\n }\n\n protected handleRenameAssertion(e: Event): void {\n const target = e.currentTarget as HTMLElement;\n const assertionIndex = Number(target.dataset.assertionIndex);\n if (Number.isNaN(assertionIndex)) {\n return;\n }\n const assertion = this.model[assertionIndex];\n if (!assertion) {\n return;\n }\n const { description } = assertion;\n const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null;\n if (!dialog) {\n return;\n }\n const input = dialog.querySelector('ui-text-field') as Input;\n input.value = description || '';\n dialog.open = true;\n dialog.dataset.assertionIndex = target.dataset.assertionIndex;\n }\n\n protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return;\n }\n const dialog = e.currentTarget as UiDialog;\n const assertionIndex = Number(dialog.dataset.assertionIndex);\n if (Number.isNaN(assertionIndex)) {\n return;\n }\n const assertion = this.model[assertionIndex];\n if (!assertion) {\n return;\n }\n const input = dialog.querySelector('ui-text-field') as Input;\n assertion.description = input.value;\n this.requestUpdate();\n this.notifyChange();\n input.value = '';\n delete dialog.dataset.assertionIndex;\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderAssertions()}\n </div>\n ${this.renderRenameAssertionDialog()}\n `;\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button type=\"tonal\" @click=\"${this.handleAdd}\" class=\"add-button\">Add</ui-button>\n </div>\n `;\n }\n\n protected renderAssertions(): TemplateResult {\n return html`\n <section aria-label=\"Assertion options\" class=\"options\">\n ${this.renderResponseDataSourceSuggestions()}\n ${this.renderTransformationSuggestions()}\n ${this.renderAssertionSuggestions()}\n </section>\n `;\n }\n\n protected renderEditor(): TemplateResult {\n const { model } = this;\n const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage();\n return html`\n <section aria-label=\"Assertions editor\" class=\"editor surface1\">${content}</section>\n `;\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">No assertions added</div>\n `;\n }\n\n protected renderList(model: IHttpAssertion[]): TemplateResult {\n return html`\n ${model.map((item, index) => this.renderAssertion(item, index))}\n `;\n }\n\n protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {\n return html`\n <div class=\"step-row\">\n ${this.renderAssertionDescription(item)}\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)}\n ${this.renderSteps(item, index)}\n <div class=\"action-actions\">\n ${this.renderRenameAssertion(index)}\n ${this.renderDeleteAssertion(index)}\n </div>\n </div>\n </div>\n `;\n }\n\n protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {\n const { description } = item;\n if (!description) {\n return nothing;\n }\n return html`\n <div class=\"assertion-description label-medium\">${description}</div>\n `;\n }\n\n protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {\n return html`\n <ui-switch \n .checked=\"${!!item.enabled}\" \n @change=\"${this.handleToggle}\" \n aria-label=\"Toggle this assertion\"\n data-index=\"${assertionIndex}\"\n class=\"toggle-button\"\n ></ui-switch>\n `;\n }\n\n protected renderRenameAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button \n aria-label=\"Rename this assertion\" \n title=\"Rename this assertion\" \n data-assertion-index=\"${assertionIndex}\" \n @click=\"${this.handleRenameAssertion}\"\n class=\"rename-button\"\n >\n <ui-icon icon=\"rename\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderDeleteAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button \n aria-label=\"Delete this assertion\" \n title=\"Delete this assertion\" \n data-index=\"${assertionIndex}\" \n @click=\"${this.handleRemove}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `;\n }\n\n protected renderRenameAssertionDialog(): TemplateResult {\n return html`\n <ui-dialog modal class=\"rename-dialog\" @close=\"${this.handleRenameDialogResult}\" dismissLabel=\"Cancel\" confirmLabel=\"Accept\">\n <ui-icon slot=\"icon\" icon=\"rename\"></ui-icon>\n <span slot=\"title\">Rename assertion</span>\n \n <ui-text-field\n name=\"rename\"\n label=\"Assertion description\"\n required\n class=\"input\"\n ></ui-text-field>\n </ui-dialog>\n `;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HttpAssertions.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/http/HttpAssertions.styles.ts"],"names":[],"mappings":";AAEA,wBA2KE"}
1
+ {"version":3,"file":"HttpAssertions.styles.d.ts","sourceRoot":"","sources":["../../../src/elements/http/HttpAssertions.styles.ts"],"names":[],"mappings":";AAEA,wBAsBE"}