@api-client/ui 0.0.4 → 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 (756) 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/amf/lib/AmfParameters.js +0 -4
  8. package/dist/amf/lib/AmfParameters.js.map +1 -1
  9. package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
  10. package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
  11. package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
  12. package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
  13. package/dist/amf/store/AmfGraphStore.js +0 -2
  14. package/dist/amf/store/AmfGraphStore.js.map +1 -1
  15. package/dist/amf/store/AmfStore.js +0 -7
  16. package/dist/amf/store/AmfStore.js.map +1 -1
  17. package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
  18. package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
  19. package/dist/bindings/base/PlatformBindings.js +6 -10
  20. package/dist/bindings/base/PlatformBindings.js.map +1 -1
  21. package/dist/bindings/base/ProxyBindings.js +9 -6
  22. package/dist/bindings/base/ProxyBindings.js.map +1 -1
  23. package/dist/bindings/base/SharedWorkerThread.js +4 -1
  24. package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
  25. package/dist/bindings/base/StoreBindings.js +162 -170
  26. package/dist/bindings/base/StoreBindings.js.map +1 -1
  27. package/dist/bindings/web/WebConfigurationBindings.js +22 -24
  28. package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
  29. package/dist/bindings/web/WebFileBindings.js +7 -4
  30. package/dist/bindings/web/WebFileBindings.js.map +1 -1
  31. package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
  32. package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
  33. package/dist/bindings/web/WebNavigationBindings.js +4 -1
  34. package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
  35. package/dist/bindings/web/WebProxyBindings.js +5 -6
  36. package/dist/bindings/web/WebProxyBindings.js.map +1 -1
  37. package/dist/bindings/web/WebStoreBindings.js +39 -44
  38. package/dist/bindings/web/WebStoreBindings.js.map +1 -1
  39. package/dist/contextual-menu/ContextualMenu.js +10 -19
  40. package/dist/contextual-menu/ContextualMenu.js.map +1 -1
  41. package/dist/contextual-menu/ContextualMenuElement.js +4 -32
  42. package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
  43. package/dist/contextual-menu/MenuItem.js +0 -12
  44. package/dist/contextual-menu/MenuItem.js.map +1 -1
  45. package/dist/define/amf/api-annotation-document.js +1 -1
  46. package/dist/define/amf/api-annotation-document.js.map +1 -1
  47. package/dist/define/amf/api-authorization-editor.js +1 -1
  48. package/dist/define/amf/api-authorization-editor.js.map +1 -1
  49. package/dist/define/amf/api-channel-document.js +1 -1
  50. package/dist/define/amf/api-channel-document.js.map +1 -1
  51. package/dist/define/amf/api-documentation-document.js +1 -1
  52. package/dist/define/amf/api-documentation-document.js.map +1 -1
  53. package/dist/define/amf/api-documentation.js +1 -1
  54. package/dist/define/amf/api-documentation.js.map +1 -1
  55. package/dist/define/amf/api-navigation.js +1 -1
  56. package/dist/define/amf/api-navigation.js.map +1 -1
  57. package/dist/define/amf/api-operation-document.js +1 -1
  58. package/dist/define/amf/api-operation-document.js.map +1 -1
  59. package/dist/define/amf/api-parameter-document.js +1 -1
  60. package/dist/define/amf/api-parameter-document.js.map +1 -1
  61. package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
  62. package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
  63. package/dist/define/amf/api-payload-document.js +1 -1
  64. package/dist/define/amf/api-payload-document.js.map +1 -1
  65. package/dist/define/amf/api-request-document.js +1 -1
  66. package/dist/define/amf/api-request-document.js.map +1 -1
  67. package/dist/define/amf/api-request-editor.js +1 -1
  68. package/dist/define/amf/api-request-editor.js.map +1 -1
  69. package/dist/define/amf/api-request.js +1 -1
  70. package/dist/define/amf/api-request.js.map +1 -1
  71. package/dist/define/amf/api-resource-document.js +1 -1
  72. package/dist/define/amf/api-resource-document.js.map +1 -1
  73. package/dist/define/amf/api-response-document.js +1 -1
  74. package/dist/define/amf/api-response-document.js.map +1 -1
  75. package/dist/define/amf/api-schema-document.js +1 -1
  76. package/dist/define/amf/api-schema-document.js.map +1 -1
  77. package/dist/define/amf/api-security-document.js +1 -1
  78. package/dist/define/amf/api-security-document.js.map +1 -1
  79. package/dist/define/amf/api-security-requirement-document.js +1 -1
  80. package/dist/define/amf/api-security-requirement-document.js.map +1 -1
  81. package/dist/define/amf/api-server-picker.js +1 -1
  82. package/dist/define/amf/api-server-picker.js.map +1 -1
  83. package/dist/define/amf/api-summary.js +1 -1
  84. package/dist/define/amf/api-summary.js.map +1 -1
  85. package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
  86. package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
  87. package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
  88. package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
  89. package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
  90. package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
  91. package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
  92. package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
  93. package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
  94. package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
  95. package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
  96. package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
  97. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
  98. package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
  99. package/dist/define/authorization/apikey-authorization.js +1 -1
  100. package/dist/define/authorization/apikey-authorization.js.map +1 -1
  101. package/dist/define/authorization/basic-authorization.js +1 -1
  102. package/dist/define/authorization/basic-authorization.js.map +1 -1
  103. package/dist/define/authorization/bearer-authorization.js +1 -1
  104. package/dist/define/authorization/bearer-authorization.js.map +1 -1
  105. package/dist/define/authorization/cc-authorization.js +1 -1
  106. package/dist/define/authorization/cc-authorization.js.map +1 -1
  107. package/dist/define/authorization/ntlm-authorization.js +1 -1
  108. package/dist/define/authorization/ntlm-authorization.js.map +1 -1
  109. package/dist/define/authorization/oauth2-authorization.js +1 -1
  110. package/dist/define/authorization/oauth2-authorization.js.map +1 -1
  111. package/dist/define/authorization/oidc-authorization.js +1 -1
  112. package/dist/define/authorization/oidc-authorization.js.map +1 -1
  113. package/dist/define/contextual-menu/contextual-menu.js +1 -1
  114. package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
  115. package/dist/define/dialog/confirm-delete-dialog.js +1 -1
  116. package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
  117. package/dist/define/dialog/delete-cookie-action-dialog.d.ts +10 -0
  118. package/dist/define/dialog/delete-cookie-action-dialog.d.ts.map +1 -0
  119. package/dist/define/dialog/delete-cookie-action-dialog.js +14 -0
  120. package/dist/define/dialog/delete-cookie-action-dialog.js.map +1 -0
  121. package/dist/define/dialog/rename-dialog.js +1 -1
  122. package/dist/define/dialog/rename-dialog.js.map +1 -1
  123. package/dist/define/dialog/set-cookie-action-dialog.d.ts +10 -0
  124. package/dist/define/dialog/set-cookie-action-dialog.d.ts.map +1 -0
  125. package/dist/define/dialog/set-cookie-action-dialog.js +14 -0
  126. package/dist/define/dialog/set-cookie-action-dialog.js.map +1 -0
  127. package/dist/define/files/share-file.js +1 -1
  128. package/dist/define/files/share-file.js.map +1 -1
  129. package/dist/define/har/har-viewer.js +1 -1
  130. package/dist/define/har/har-viewer.js.map +1 -1
  131. package/dist/define/highlight/marked-highlight.js +1 -1
  132. package/dist/define/highlight/marked-highlight.js.map +1 -1
  133. package/dist/define/highlight/prism-highlight.js +1 -1
  134. package/dist/define/highlight/prism-highlight.js.map +1 -1
  135. package/dist/define/http/http-assertions.d.ts +1 -1
  136. package/dist/define/http/http-assertions.d.ts.map +1 -1
  137. package/dist/define/http/http-assertions.js +3 -3
  138. package/dist/define/http/http-assertions.js.map +1 -1
  139. package/dist/define/http/http-body-editor.js +1 -1
  140. package/dist/define/http/http-body-editor.js.map +1 -1
  141. package/dist/define/http/http-body-multipart-editor.js +1 -1
  142. package/dist/define/http/http-body-multipart-editor.js.map +1 -1
  143. package/dist/define/http/http-body-text-editor.js +1 -1
  144. package/dist/define/http/http-body-text-editor.js.map +1 -1
  145. package/dist/define/http/http-body-urlencoded-editor.js +1 -1
  146. package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
  147. package/dist/define/http/http-flows.d.ts +10 -0
  148. package/dist/define/http/http-flows.d.ts.map +1 -0
  149. package/dist/define/http/http-flows.js +13 -0
  150. package/dist/define/http/http-flows.js.map +1 -0
  151. package/dist/define/http/http-headers-form.js +1 -1
  152. package/dist/define/http/http-headers-form.js.map +1 -1
  153. package/dist/define/http/http-log-body.js +1 -1
  154. package/dist/define/http/http-log-body.js.map +1 -1
  155. package/dist/define/http/http-log-headers.js +1 -1
  156. package/dist/define/http/http-log-headers.js.map +1 -1
  157. package/dist/define/http/http-log-timings.js +1 -1
  158. package/dist/define/http/http-log-timings.js.map +1 -1
  159. package/dist/define/http/http-request-config.js +1 -1
  160. package/dist/define/http/http-request-config.js.map +1 -1
  161. package/dist/define/http/http-request-editor.js +1 -1
  162. package/dist/define/http/http-request-editor.js.map +1 -1
  163. package/dist/define/http/http-request-log.js +1 -1
  164. package/dist/define/http/http-request-log.js.map +1 -1
  165. package/dist/define/http/http-snippets.js +1 -1
  166. package/dist/define/http/http-snippets.js.map +1 -1
  167. package/dist/define/http/http-url-input.js +1 -1
  168. package/dist/define/http/http-url-input.js.map +1 -1
  169. package/dist/define/http/http-url-params-form.js +1 -1
  170. package/dist/define/http/http-url-params-form.js.map +1 -1
  171. package/dist/define/http-project/http-project-request-history.js +1 -1
  172. package/dist/define/http-project/http-project-request-history.js.map +1 -1
  173. package/dist/define/http-project/http-project-request.js +2 -2
  174. package/dist/define/http-project/http-project-request.js.map +1 -1
  175. package/dist/define/http-project/project-navigation.js +1 -1
  176. package/dist/define/http-project/project-navigation.js.map +1 -1
  177. package/dist/define/http-project/project-run-report.js +1 -1
  178. package/dist/define/http-project/project-run-report.js.map +1 -1
  179. package/dist/define/http-project/project-runner.js +2 -2
  180. package/dist/define/http-project/project-runner.js.map +1 -1
  181. package/dist/define/layout/split-view.js +1 -1
  182. package/dist/define/layout/split-view.js.map +1 -1
  183. package/dist/define/schema-design/schema-design-navigation.js +1 -1
  184. package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
  185. package/dist/define/schema-design/schema-namespace-selector.js +1 -1
  186. package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
  187. package/dist/define/ui/ui-button.js +1 -1
  188. package/dist/define/ui/ui-button.js.map +1 -1
  189. package/dist/define/ui/ui-chip.js +1 -1
  190. package/dist/define/ui/ui-chip.js.map +1 -1
  191. package/dist/define/ui/ui-collapse.js +1 -1
  192. package/dist/define/ui/ui-collapse.js.map +1 -1
  193. package/dist/define/ui/ui-dialog.js +1 -1
  194. package/dist/define/ui/ui-dialog.js.map +1 -1
  195. package/dist/define/ui/ui-divider.d.ts +4 -1
  196. package/dist/define/ui/ui-divider.d.ts.map +1 -1
  197. package/dist/define/ui/ui-divider.js +11 -2
  198. package/dist/define/ui/ui-divider.js.map +1 -1
  199. package/dist/define/ui/ui-dropdown-list.js +1 -1
  200. package/dist/define/ui/ui-dropdown-list.js.map +1 -1
  201. package/dist/define/ui/ui-icon-button.js +1 -1
  202. package/dist/define/ui/ui-icon-button.js.map +1 -1
  203. package/dist/define/ui/ui-icon.js +1 -1
  204. package/dist/define/ui/ui-icon.js.map +1 -1
  205. package/dist/define/ui/ui-list-item.js +1 -1
  206. package/dist/define/ui/ui-list-item.js.map +1 -1
  207. package/dist/define/ui/ui-list.js +1 -1
  208. package/dist/define/ui/ui-list.js.map +1 -1
  209. package/dist/define/ui/ui-listbox.js +1 -1
  210. package/dist/define/ui/ui-listbox.js.map +1 -1
  211. package/dist/define/ui/ui-progress.js +1 -1
  212. package/dist/define/ui/ui-progress.js.map +1 -1
  213. package/dist/define/ui/ui-segmented-button-set.js +1 -1
  214. package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
  215. package/dist/define/ui/ui-segmented-button.js +1 -1
  216. package/dist/define/ui/ui-segmented-button.js.map +1 -1
  217. package/dist/define/ui/ui-snackbar.js +1 -1
  218. package/dist/define/ui/ui-snackbar.js.map +1 -1
  219. package/dist/define/ui/ui-tab.js +1 -1
  220. package/dist/define/ui/ui-tab.js.map +1 -1
  221. package/dist/define/ui/ui-tabs.js +1 -1
  222. package/dist/define/ui/ui-tabs.js.map +1 -1
  223. package/dist/directives/data-attr.js +0 -1
  224. package/dist/directives/data-attr.js.map +1 -1
  225. package/dist/elements/ApiElement.d.ts +4 -0
  226. package/dist/elements/ApiElement.d.ts.map +1 -1
  227. package/dist/elements/ApiElement.js +6 -7
  228. package/dist/elements/ApiElement.js.map +1 -1
  229. package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
  230. package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
  231. package/dist/elements/amf/ApiAuthorizationEditor.element.js +1 -33
  232. package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
  233. package/dist/elements/amf/ApiDocumentation.element.js +0 -91
  234. package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
  235. package/dist/elements/amf/ApiDocumentationBase.js +0 -9
  236. package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
  237. package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
  238. package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
  239. package/dist/elements/amf/ApiNavigation.element.js +0 -97
  240. package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
  241. package/dist/elements/amf/ApiOperationDocument.element.d.ts.map +1 -1
  242. package/dist/elements/amf/ApiOperationDocument.element.js +2 -77
  243. package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
  244. package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
  245. package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
  246. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
  247. package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
  248. package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
  249. package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
  250. package/dist/elements/amf/ApiRequest.element.js +1 -79
  251. package/dist/elements/amf/ApiRequest.element.js.map +1 -1
  252. package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
  253. package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
  254. package/dist/elements/amf/ApiRequestEditor.element.d.ts +0 -1
  255. package/dist/elements/amf/ApiRequestEditor.element.d.ts.map +1 -1
  256. package/dist/elements/amf/ApiRequestEditor.element.js +0 -121
  257. package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
  258. package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
  259. package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
  260. package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
  261. package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
  262. package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
  263. package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
  264. package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
  265. package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
  266. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
  267. package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
  268. package/dist/elements/amf/ApiServerPicker.element.js +2 -65
  269. package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
  270. package/dist/elements/amf/ApiSummary.element.js +0 -26
  271. package/dist/elements/amf/ApiSummary.element.js.map +1 -1
  272. package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
  273. package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
  274. package/dist/elements/amf/authorization/AmfBasic.js +0 -4
  275. package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
  276. package/dist/elements/amf/authorization/AmfBearer.js +0 -4
  277. package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
  278. package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
  279. package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
  280. package/dist/elements/amf/authorization/AmfOidc.js +0 -4
  281. package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
  282. package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
  283. package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
  284. package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
  285. package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
  286. package/dist/elements/authorization/OAuth2Authorize.js +0 -14
  287. package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
  288. package/dist/elements/authorization/OidcAuthorize.js +0 -14
  289. package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
  290. package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
  291. package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
  292. package/dist/elements/authorization/ui/Authorization.d.ts +2 -1
  293. package/dist/elements/authorization/ui/Authorization.d.ts.map +1 -1
  294. package/dist/elements/authorization/ui/Authorization.js +18 -35
  295. package/dist/elements/authorization/ui/Authorization.js.map +1 -1
  296. package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
  297. package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
  298. package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
  299. package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
  300. package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
  301. package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
  302. package/dist/elements/code/HttpSnippets.js +9 -8
  303. package/dist/elements/code/HttpSnippets.js.map +1 -1
  304. package/dist/elements/dialog/ConfirmDelete.js +0 -12
  305. package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
  306. package/dist/elements/dialog/DeleteCookieAction.element.d.ts +20 -0
  307. package/dist/elements/dialog/DeleteCookieAction.element.d.ts.map +1 -0
  308. package/dist/elements/dialog/DeleteCookieAction.element.js +93 -0
  309. package/dist/elements/dialog/DeleteCookieAction.element.js.map +1 -0
  310. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts +3 -0
  311. package/dist/elements/dialog/DeleteCookieAction.styles.d.ts.map +1 -0
  312. package/dist/elements/dialog/DeleteCookieAction.styles.js +13 -0
  313. package/dist/elements/dialog/DeleteCookieAction.styles.js.map +1 -0
  314. package/dist/elements/dialog/Rename.d.ts +7 -6
  315. package/dist/elements/dialog/Rename.d.ts.map +1 -1
  316. package/dist/elements/dialog/Rename.js +7 -12
  317. package/dist/elements/dialog/Rename.js.map +1 -1
  318. package/dist/elements/dialog/SetCookieAction.element.d.ts +22 -0
  319. package/dist/elements/dialog/SetCookieAction.element.d.ts.map +1 -0
  320. package/dist/elements/dialog/SetCookieAction.element.js +173 -0
  321. package/dist/elements/dialog/SetCookieAction.element.js.map +1 -0
  322. package/dist/elements/environment/EnvironmentEditor.d.ts +24 -3
  323. package/dist/elements/environment/EnvironmentEditor.d.ts.map +1 -1
  324. package/dist/elements/environment/EnvironmentEditor.js +73 -30
  325. package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
  326. package/dist/elements/environment/EnvironmentEditor.styles.d.ts.map +1 -1
  327. package/dist/elements/environment/EnvironmentEditor.styles.js +5 -0
  328. package/dist/elements/environment/EnvironmentEditor.styles.js.map +1 -1
  329. package/dist/elements/environment/ServerEditor.d.ts +3 -3
  330. package/dist/elements/environment/ServerEditor.d.ts.map +1 -1
  331. package/dist/elements/environment/ServerEditor.js +10 -51
  332. package/dist/elements/environment/ServerEditor.js.map +1 -1
  333. package/dist/elements/environment/VariablesEditor.d.ts +0 -1
  334. package/dist/elements/environment/VariablesEditor.d.ts.map +1 -1
  335. package/dist/elements/environment/VariablesEditor.js +10 -18
  336. package/dist/elements/environment/VariablesEditor.js.map +1 -1
  337. package/dist/elements/files/ShareFile.js +19 -57
  338. package/dist/elements/files/ShareFile.js.map +1 -1
  339. package/dist/elements/har/HarViewer.js +6 -7
  340. package/dist/elements/har/HarViewer.js.map +1 -1
  341. package/dist/elements/highlight/MarkedHighlight.js +4 -56
  342. package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
  343. package/dist/elements/highlight/Prism.styles.d.ts.map +1 -1
  344. package/dist/elements/highlight/Prism.styles.js +12 -5
  345. package/dist/elements/highlight/Prism.styles.js.map +1 -1
  346. package/dist/elements/highlight/PrismHighlight.js +9 -18
  347. package/dist/elements/highlight/PrismHighlight.js.map +1 -1
  348. package/dist/elements/highlight/PrismHighlighter.js +4 -6
  349. package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
  350. package/dist/elements/http/BodyEditor.d.ts +0 -4
  351. package/dist/elements/http/BodyEditor.d.ts.map +1 -1
  352. package/dist/elements/http/BodyEditor.js +31 -49
  353. package/dist/elements/http/BodyEditor.js.map +1 -1
  354. package/dist/elements/http/BodyMultipartEditor.d.ts +3 -16
  355. package/dist/elements/http/BodyMultipartEditor.d.ts.map +1 -1
  356. package/dist/elements/http/BodyMultipartEditor.js +20 -37
  357. package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
  358. package/dist/elements/http/BodyTextEditor.d.ts +0 -1
  359. package/dist/elements/http/BodyTextEditor.d.ts.map +1 -1
  360. package/dist/elements/http/BodyTextEditor.js +2 -18
  361. package/dist/elements/http/BodyTextEditor.js.map +1 -1
  362. package/dist/elements/http/BodyUrlEncodedEditor.d.ts +3 -3
  363. package/dist/elements/http/BodyUrlEncodedEditor.d.ts.map +1 -1
  364. package/dist/elements/http/BodyUrlEncodedEditor.js +23 -26
  365. package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
  366. package/dist/elements/http/HeadersForm.d.ts +0 -4
  367. package/dist/elements/http/HeadersForm.d.ts.map +1 -1
  368. package/dist/elements/http/HeadersForm.js +16 -23
  369. package/dist/elements/http/HeadersForm.js.map +1 -1
  370. package/dist/elements/http/HttpAssertions.element.d.ts +55 -0
  371. package/dist/elements/http/HttpAssertions.element.d.ts.map +1 -0
  372. package/dist/elements/http/HttpAssertions.element.js +264 -0
  373. package/dist/elements/http/HttpAssertions.element.js.map +1 -0
  374. package/dist/elements/http/HttpAssertions.styles.d.ts.map +1 -1
  375. package/dist/elements/http/HttpAssertions.styles.js +7 -156
  376. package/dist/elements/http/HttpAssertions.styles.js.map +1 -1
  377. package/dist/elements/http/HttpFlows.common.d.ts +3 -0
  378. package/dist/elements/http/HttpFlows.common.d.ts.map +1 -0
  379. package/dist/elements/http/HttpFlows.common.js +181 -0
  380. package/dist/elements/http/HttpFlows.common.js.map +1 -0
  381. package/dist/elements/http/HttpFlows.element.d.ts +97 -0
  382. package/dist/elements/http/HttpFlows.element.d.ts.map +1 -0
  383. package/dist/elements/http/HttpFlows.element.js +684 -0
  384. package/dist/elements/http/HttpFlows.element.js.map +1 -0
  385. package/dist/elements/http/HttpFlows.styles.d.ts +3 -0
  386. package/dist/elements/http/HttpFlows.styles.d.ts.map +1 -0
  387. package/dist/elements/http/HttpFlows.styles.js +28 -0
  388. package/dist/elements/http/HttpFlows.styles.js.map +1 -0
  389. package/dist/elements/http/HttpFlowsUi.d.ts +172 -0
  390. package/dist/elements/http/HttpFlowsUi.d.ts.map +1 -0
  391. package/dist/elements/http/HttpFlowsUi.js +1256 -0
  392. package/dist/elements/http/HttpFlowsUi.js.map +1 -0
  393. package/dist/elements/http/LogBody.js +10 -21
  394. package/dist/elements/http/LogBody.js.map +1 -1
  395. package/dist/elements/http/LogHeaders.js +4 -23
  396. package/dist/elements/http/LogHeaders.js.map +1 -1
  397. package/dist/elements/http/LogTimings.js +11 -13
  398. package/dist/elements/http/LogTimings.js.map +1 -1
  399. package/dist/elements/http/RequestConfigElement.d.ts +0 -1
  400. package/dist/elements/http/RequestConfigElement.d.ts.map +1 -1
  401. package/dist/elements/http/RequestConfigElement.js +15 -15
  402. package/dist/elements/http/RequestConfigElement.js.map +1 -1
  403. package/dist/elements/http/RequestEditor.d.ts +10 -10
  404. package/dist/elements/http/RequestEditor.d.ts.map +1 -1
  405. package/dist/elements/http/RequestEditor.js +116 -111
  406. package/dist/elements/http/RequestEditor.js.map +1 -1
  407. package/dist/elements/http/RequestLog.js +9 -14
  408. package/dist/elements/http/RequestLog.js.map +1 -1
  409. package/dist/elements/http/UrlInput.d.ts +3 -3
  410. package/dist/elements/http/UrlInput.d.ts.map +1 -1
  411. package/dist/elements/http/UrlInput.js +17 -27
  412. package/dist/elements/http/UrlInput.js.map +1 -1
  413. package/dist/elements/http/UrlParamsForm.d.ts +0 -1
  414. package/dist/elements/http/UrlParamsForm.d.ts.map +1 -1
  415. package/dist/elements/http/UrlParamsForm.js +16 -16
  416. package/dist/elements/http/UrlParamsForm.js.map +1 -1
  417. package/dist/elements/layout/LayoutManager.js +16 -24
  418. package/dist/elements/layout/LayoutManager.js.map +1 -1
  419. package/dist/elements/layout/LayoutPanelElement.js +17 -23
  420. package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
  421. package/dist/elements/layout/SplitItem.js +4 -12
  422. package/dist/elements/layout/SplitItem.js.map +1 -1
  423. package/dist/elements/layout/SplitLayout.js +18 -24
  424. package/dist/elements/layout/SplitLayout.js.map +1 -1
  425. package/dist/elements/layout/SplitPanel.js +10 -16
  426. package/dist/elements/layout/SplitPanel.js.map +1 -1
  427. package/dist/elements/layout/SplitView.js +17 -26
  428. package/dist/elements/layout/SplitView.js.map +1 -1
  429. package/dist/elements/layout/SplitView.styles.d.ts.map +1 -1
  430. package/dist/elements/layout/SplitView.styles.js +1 -0
  431. package/dist/elements/layout/SplitView.styles.js.map +1 -1
  432. package/dist/elements/navigation/AppNavigationElement.js +8 -47
  433. package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
  434. package/dist/elements/navigation/AppNavigationItem.styles.d.ts.map +1 -1
  435. package/dist/elements/navigation/AppNavigationItem.styles.js +2 -0
  436. package/dist/elements/navigation/AppNavigationItem.styles.js.map +1 -1
  437. package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
  438. package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
  439. package/dist/elements/project/HttpProjectRequest.d.ts +2 -1
  440. package/dist/elements/project/HttpProjectRequest.d.ts.map +1 -1
  441. package/dist/elements/project/HttpProjectRequest.js +14 -43
  442. package/dist/elements/project/HttpProjectRequest.js.map +1 -1
  443. package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
  444. package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
  445. package/dist/elements/project/ProjectNavigation.js +0 -4
  446. package/dist/elements/project/ProjectNavigation.js.map +1 -1
  447. package/dist/elements/project/ProjectRunReport.js +4 -15
  448. package/dist/elements/project/ProjectRunReport.js.map +1 -1
  449. package/dist/elements/project/ProjectRunner.d.ts +0 -1
  450. package/dist/elements/project/ProjectRunner.d.ts.map +1 -1
  451. package/dist/elements/project/ProjectRunner.js +3 -51
  452. package/dist/elements/project/ProjectRunner.js.map +1 -1
  453. package/dist/elements/schema-design/AssociationFormElement.d.ts +0 -1
  454. package/dist/elements/schema-design/AssociationFormElement.d.ts.map +1 -1
  455. package/dist/elements/schema-design/AssociationFormElement.js +2 -18
  456. package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
  457. package/dist/elements/schema-design/DataEntityEditorElement.d.ts +2 -2
  458. package/dist/elements/schema-design/DataEntityEditorElement.d.ts.map +1 -1
  459. package/dist/elements/schema-design/DataEntityEditorElement.js +5 -27
  460. package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
  461. package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
  462. package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
  463. package/dist/elements/schema-design/DataSchemaDocument.d.ts +0 -1
  464. package/dist/elements/schema-design/DataSchemaDocument.d.ts.map +1 -1
  465. package/dist/elements/schema-design/DataSchemaDocument.js +4 -43
  466. package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
  467. package/dist/elements/schema-design/EntityFormElement.d.ts +0 -1
  468. package/dist/elements/schema-design/EntityFormElement.d.ts.map +1 -1
  469. package/dist/elements/schema-design/EntityFormElement.js +4 -25
  470. package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
  471. package/dist/elements/schema-design/PropertyFormElement.d.ts +1 -2
  472. package/dist/elements/schema-design/PropertyFormElement.d.ts.map +1 -1
  473. package/dist/elements/schema-design/PropertyFormElement.js +8 -23
  474. package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
  475. package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
  476. package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
  477. package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
  478. package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
  479. package/dist/elements/user/UserAvatarElement.js +0 -9
  480. package/dist/elements/user/UserAvatarElement.js.map +1 -1
  481. package/dist/events/http-client/models/CertificatesEvents.js +2 -2
  482. package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
  483. package/dist/http-client/idb/Base.js +5 -10
  484. package/dist/http-client/idb/Base.js.map +1 -1
  485. package/dist/http-client/idb/LegacyMockedStore.js +0 -1
  486. package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
  487. package/dist/http-client/idb/MockedStore.js +3 -1
  488. package/dist/http-client/idb/MockedStore.js.map +1 -1
  489. package/dist/http-client/store/DataImportProcessor.js +0 -3
  490. package/dist/http-client/store/DataImportProcessor.js.map +1 -1
  491. package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
  492. package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
  493. package/dist/http-client/store/IdbThread.js +23 -20
  494. package/dist/http-client/store/IdbThread.js.map +1 -1
  495. package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
  496. package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
  497. package/dist/http-client/store/idb/IdbStore.js +0 -2
  498. package/dist/http-client/store/idb/IdbStore.js.map +1 -1
  499. package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
  500. package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
  501. package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
  502. package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
  503. package/dist/lib/chart/HttpHistoryChart.js +7 -8
  504. package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
  505. package/dist/mixins/FileDropMixin.js +0 -1
  506. package/dist/mixins/FileDropMixin.js.map +1 -1
  507. package/dist/mixins/RenderableMixin.js +11 -15
  508. package/dist/mixins/RenderableMixin.js.map +1 -1
  509. package/dist/pages/ApplicationScreen.d.ts +1 -1
  510. package/dist/pages/ApplicationScreen.d.ts.map +1 -1
  511. package/dist/pages/ApplicationScreen.js +35 -56
  512. package/dist/pages/ApplicationScreen.js.map +1 -1
  513. package/dist/pages/api-client/ApiClient.screen.js +11 -20
  514. package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
  515. package/dist/pages/api-client/ApiClient.styles.d.ts.map +1 -1
  516. package/dist/pages/api-client/ApiClient.styles.js +22 -3
  517. package/dist/pages/api-client/ApiClient.styles.js.map +1 -1
  518. package/dist/pages/api-client/Authenticate.screen.d.ts +2 -0
  519. package/dist/pages/api-client/Authenticate.screen.d.ts.map +1 -1
  520. package/dist/pages/api-client/Authenticate.screen.js +23 -9
  521. package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
  522. package/dist/pages/api-client/StoreConfig.screen.d.ts.map +1 -1
  523. package/dist/pages/api-client/StoreConfig.screen.js +25 -39
  524. package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
  525. package/dist/pages/api-client/StoreConfig.styles.d.ts.map +1 -1
  526. package/dist/pages/api-client/StoreConfig.styles.js +5 -0
  527. package/dist/pages/api-client/StoreConfig.styles.js.map +1 -1
  528. package/dist/pages/api-client/Telemetry.screen.js +1 -2
  529. package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
  530. package/dist/pages/api-client/pages/Files.page.d.ts +1 -0
  531. package/dist/pages/api-client/pages/Files.page.d.ts.map +1 -1
  532. package/dist/pages/api-client/pages/Files.page.js +8 -28
  533. package/dist/pages/api-client/pages/Files.page.js.map +1 -1
  534. package/dist/pages/api-client/pages/Settings.page.js +2 -4
  535. package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
  536. package/dist/pages/api-client/pages/Trash.page.js +2 -13
  537. package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
  538. package/dist/pages/demo/DemoPage.js +13 -13
  539. package/dist/pages/demo/DemoPage.js.map +1 -1
  540. package/dist/pages/http-project/HttpProject.screen.d.ts +0 -8
  541. package/dist/pages/http-project/HttpProject.screen.d.ts.map +1 -1
  542. package/dist/pages/http-project/HttpProject.screen.js +39 -50
  543. package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
  544. package/dist/pages/http-project/types.d.ts +8 -6
  545. package/dist/pages/http-project/types.d.ts.map +1 -1
  546. package/dist/pages/http-project/types.js.map +1 -1
  547. package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
  548. package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
  549. package/dist/store/HttpStore.js +0 -3
  550. package/dist/store/HttpStore.js.map +1 -1
  551. package/dist/store/UserCache.js +5 -5
  552. package/dist/store/UserCache.js.map +1 -1
  553. package/dist/styles/m3/surface.module.d.ts.map +1 -1
  554. package/dist/styles/m3/surface.module.js +11 -27
  555. package/dist/styles/m3/surface.module.js.map +1 -1
  556. package/dist/ui/UiElement.d.ts +4 -0
  557. package/dist/ui/UiElement.d.ts.map +1 -1
  558. package/dist/ui/UiElement.js +10 -5
  559. package/dist/ui/UiElement.js.map +1 -1
  560. package/dist/ui/button/SegmentedButton.js +9 -11
  561. package/dist/ui/button/SegmentedButton.js.map +1 -1
  562. package/dist/ui/button/SegmentedButton.styles.d.ts.map +1 -1
  563. package/dist/ui/button/SegmentedButton.styles.js +3 -1
  564. package/dist/ui/button/SegmentedButton.styles.js.map +1 -1
  565. package/dist/ui/button/SegmentedButtonsSet.js +6 -7
  566. package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
  567. package/dist/ui/button/UiButton.js +17 -39
  568. package/dist/ui/button/UiButton.js.map +1 -1
  569. package/dist/ui/button/UiIconButton.js +9 -35
  570. package/dist/ui/button/UiIconButton.js.map +1 -1
  571. package/dist/ui/chip/UiChip.js +9 -49
  572. package/dist/ui/chip/UiChip.js.map +1 -1
  573. package/dist/ui/collapse/UiCollapse.js +15 -20
  574. package/dist/ui/collapse/UiCollapse.js.map +1 -1
  575. package/dist/ui/controllers/ActionController.js +143 -144
  576. package/dist/ui/controllers/ActionController.js.map +1 -1
  577. package/dist/ui/controllers/RadioSelectionController.js +0 -1
  578. package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
  579. package/dist/ui/date/DateTime.js +3 -3
  580. package/dist/ui/date/DateTime.js.map +1 -1
  581. package/dist/ui/dialog/UiDialog.d.ts +3 -0
  582. package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
  583. package/dist/ui/dialog/UiDialog.js +17 -38
  584. package/dist/ui/dialog/UiDialog.js.map +1 -1
  585. package/dist/ui/effects/ripple.d.ts.map +1 -1
  586. package/dist/ui/effects/ripple.js +25 -19
  587. package/dist/ui/effects/ripple.js.map +1 -1
  588. package/dist/ui/effects/rippleDirective.js +6 -7
  589. package/dist/ui/effects/rippleDirective.js.map +1 -1
  590. package/dist/ui/icons/Icons.d.ts +3 -2
  591. package/dist/ui/icons/Icons.d.ts.map +1 -1
  592. package/dist/ui/icons/Icons.js +2 -1
  593. package/dist/ui/icons/Icons.js.map +1 -1
  594. package/dist/ui/icons/UiIcon.js +4 -3
  595. package/dist/ui/icons/UiIcon.js.map +1 -1
  596. package/dist/ui/input/CheckboxElement.js +12 -10
  597. package/dist/ui/input/CheckboxElement.js.map +1 -1
  598. package/dist/ui/input/CheckedElement.d.ts +1 -1
  599. package/dist/ui/input/CheckedElement.d.ts.map +1 -1
  600. package/dist/ui/input/CheckedElement.js +5 -16
  601. package/dist/ui/input/CheckedElement.js.map +1 -1
  602. package/dist/ui/input/Input.js +170 -235
  603. package/dist/ui/input/Input.js.map +1 -1
  604. package/dist/ui/input/RadioElement.js +13 -11
  605. package/dist/ui/input/RadioElement.js.map +1 -1
  606. package/dist/ui/input/SwitchElement.js +0 -18
  607. package/dist/ui/input/SwitchElement.js.map +1 -1
  608. package/dist/ui/input/TextAreaElement.js +0 -15
  609. package/dist/ui/input/TextAreaElement.js.map +1 -1
  610. package/dist/ui/list/{DividerElement.d.ts → UiDivider.element.d.ts} +6 -6
  611. package/dist/ui/list/UiDivider.element.d.ts.map +1 -0
  612. package/dist/ui/list/UiDivider.element.js +39 -0
  613. package/dist/ui/list/UiDivider.element.js.map +1 -0
  614. package/dist/ui/list/UiDivider.styles.d.ts +3 -0
  615. package/dist/ui/list/UiDivider.styles.d.ts.map +1 -0
  616. package/dist/ui/list/UiDivider.styles.js +49 -0
  617. package/dist/ui/list/UiDivider.styles.js.map +1 -0
  618. package/dist/ui/list/UiDropdownList.js +7 -48
  619. package/dist/ui/list/UiDropdownList.js.map +1 -1
  620. package/dist/ui/list/UiList.js +3 -15
  621. package/dist/ui/list/UiList.js.map +1 -1
  622. package/dist/ui/list/UiListItem.js +4 -17
  623. package/dist/ui/list/UiListItem.js.map +1 -1
  624. package/dist/ui/list/UiListbox.js +0 -1
  625. package/dist/ui/list/UiListbox.js.map +1 -1
  626. package/dist/ui/notification/SnackNotifications.js +1 -2
  627. package/dist/ui/notification/SnackNotifications.js.map +1 -1
  628. package/dist/ui/notification/Snackbar.js +27 -51
  629. package/dist/ui/notification/Snackbar.js.map +1 -1
  630. package/dist/ui/progress/Range.js +24 -23
  631. package/dist/ui/progress/Range.js.map +1 -1
  632. package/dist/ui/progress/UiProgress.js +0 -11
  633. package/dist/ui/progress/UiProgress.js.map +1 -1
  634. package/dist/ui/table/DataTable.js +7 -12
  635. package/dist/ui/table/DataTable.js.map +1 -1
  636. package/dist/ui/tabs/UiTab.js +24 -25
  637. package/dist/ui/tabs/UiTab.js.map +1 -1
  638. package/dist/ui/tabs/UiTabs.d.ts +13 -1
  639. package/dist/ui/tabs/UiTabs.d.ts.map +1 -1
  640. package/dist/ui/tabs/UiTabs.js +62 -47
  641. package/dist/ui/tabs/UiTabs.js.map +1 -1
  642. package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
  643. package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
  644. package/dist/visualization/lib/AssociationAnchors.js +16 -28
  645. package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
  646. package/dist/visualization/lib/Point.js +0 -2
  647. package/dist/visualization/lib/Point.js.map +1 -1
  648. package/dist/visualization/lib/SelectionManager.js +10 -11
  649. package/dist/visualization/lib/SelectionManager.js.map +1 -1
  650. package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
  651. package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
  652. package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
  653. package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
  654. package/dist/visualization/lib/WorkspaceEdges.js +17 -19
  655. package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
  656. package/dist/visualization/lib/WorkspaceGestures.js +0 -3
  657. package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
  658. package/dist/visualization/lib/WorkspaceSizing.js +4 -6
  659. package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
  660. package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
  661. package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
  662. package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
  663. package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
  664. package/dist/visualization/lib/tips/TipArtist.js +0 -3
  665. package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
  666. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
  667. package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
  668. package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
  669. package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
  670. package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
  671. package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
  672. package/package.json +3 -2
  673. package/src/define/dialog/delete-cookie-action-dialog.ts +16 -0
  674. package/src/define/dialog/set-cookie-action-dialog.ts +16 -0
  675. package/src/define/http/http-assertions.ts +3 -3
  676. package/src/define/http/http-flows.ts +15 -0
  677. package/src/define/ui/ui-divider.ts +7 -2
  678. package/src/elements/ApiElement.ts +7 -0
  679. package/src/elements/amf/ApiAuthorizationEditor.element.ts +1 -1
  680. package/src/elements/amf/ApiOperationDocument.element.ts +2 -1
  681. package/src/elements/amf/ApiRequest.element.ts +1 -1
  682. package/src/elements/amf/ApiRequestEditor.element.ts +0 -4
  683. package/src/elements/authorization/ui/Authorization.ts +3 -5
  684. package/src/elements/dialog/DeleteCookieAction.element.ts +100 -0
  685. package/src/elements/dialog/DeleteCookieAction.styles.ts +14 -0
  686. package/src/elements/dialog/Rename.ts +8 -7
  687. package/src/elements/dialog/SetCookieAction.element.ts +183 -0
  688. package/src/elements/environment/EnvironmentEditor.styles.ts +5 -0
  689. package/src/elements/environment/EnvironmentEditor.ts +81 -22
  690. package/src/elements/environment/ServerEditor.ts +4 -8
  691. package/src/elements/environment/VariablesEditor.ts +3 -7
  692. package/src/elements/highlight/Prism.styles.ts +12 -5
  693. package/src/elements/http/BodyEditor.ts +10 -17
  694. package/src/elements/http/BodyMultipartEditor.ts +3 -20
  695. package/src/elements/http/BodyTextEditor.ts +0 -4
  696. package/src/elements/http/BodyUrlEncodedEditor.ts +5 -8
  697. package/src/elements/http/HeadersForm.ts +2 -9
  698. package/src/elements/http/HttpAssertions.element.ts +286 -0
  699. package/src/elements/http/HttpAssertions.styles.ts +7 -156
  700. package/src/elements/http/HttpFlows.common.ts +181 -0
  701. package/src/elements/http/HttpFlows.element.ts +722 -0
  702. package/src/elements/http/HttpFlows.styles.ts +29 -0
  703. package/src/elements/http/HttpFlowsUi.ts +1327 -0
  704. package/src/elements/http/RequestConfigElement.ts +10 -14
  705. package/src/elements/http/RequestEditor.ts +77 -35
  706. package/src/elements/http/UrlInput.ts +6 -6
  707. package/src/elements/http/UrlParamsForm.ts +2 -6
  708. package/src/elements/layout/SplitView.styles.ts +1 -0
  709. package/src/elements/navigation/AppNavigationItem.styles.ts +2 -0
  710. package/src/elements/project/HttpProjectRequest.ts +16 -5
  711. package/src/elements/project/ProjectRunner.ts +3 -7
  712. package/src/elements/schema-design/AssociationFormElement.ts +4 -8
  713. package/src/elements/schema-design/DataEntityEditorElement.ts +8 -8
  714. package/src/elements/schema-design/DataSchemaDocument.ts +5 -9
  715. package/src/elements/schema-design/EntityFormElement.ts +6 -10
  716. package/src/elements/schema-design/PropertyFormElement.ts +11 -15
  717. package/src/pages/ApplicationScreen.ts +1 -1
  718. package/src/pages/api-client/ApiClient.styles.ts +22 -3
  719. package/src/pages/api-client/Authenticate.screen.ts +19 -3
  720. package/src/pages/api-client/StoreConfig.screen.ts +4 -2
  721. package/src/pages/api-client/StoreConfig.styles.ts +5 -0
  722. package/src/pages/api-client/pages/Files.page.ts +2 -1
  723. package/src/pages/http-project/HttpProject.screen.ts +14 -26
  724. package/src/pages/http-project/types.ts +8 -6
  725. package/src/styles/m3/surface.module.ts +11 -27
  726. package/src/styles/m3/theme.css +36 -0
  727. package/src/styles/m3/tokens.css +11 -0
  728. package/src/ui/UiElement.ts +7 -0
  729. package/src/ui/button/SegmentedButton.styles.ts +3 -1
  730. package/src/ui/dialog/UiDialog.ts +3 -0
  731. package/src/ui/effects/ripple.ts +6 -1
  732. package/src/ui/icons/Icons.ts +3 -2
  733. package/src/ui/input/CheckedElement.ts +3 -3
  734. package/src/ui/input/Input.ts +1 -1
  735. package/src/ui/list/UiDivider.element.ts +41 -0
  736. package/src/ui/list/UiDivider.styles.ts +49 -0
  737. package/src/ui/tabs/UiTabs.ts +55 -13
  738. package/test/amf/authorization/OAuth2Method.test.ts +1 -1
  739. package/test/elements/http/HttpAssertions.test.ts +5 -6
  740. package/test/elements/http/HttpFlows.test.ts +485 -0
  741. package/tsconfig.json +2 -2
  742. package/dist/elements/http/HttpAssertions.d.ts +0 -114
  743. package/dist/elements/http/HttpAssertions.d.ts.map +0 -1
  744. package/dist/elements/http/HttpAssertions.js +0 -1144
  745. package/dist/elements/http/HttpAssertions.js.map +0 -1
  746. package/dist/elements/http/internals.d.ts +0 -150
  747. package/dist/elements/http/internals.d.ts.map +0 -1
  748. package/dist/elements/http/internals.js +0 -150
  749. package/dist/elements/http/internals.js.map +0 -1
  750. package/dist/ui/list/DividerElement.d.ts.map +0 -1
  751. package/dist/ui/list/DividerElement.js +0 -87
  752. package/dist/ui/list/DividerElement.js.map +0 -1
  753. package/src/elements/http/HttpAssertions.ts +0 -1187
  754. package/src/elements/http/internals.ts +0 -151
  755. package/src/http-client/docs/Files.md +0 -28
  756. package/src/ui/list/DividerElement.ts +0 -84
@@ -70,9 +70,151 @@ export const WAIT_FOR_MOUSE_CLICK_MS = 500;
70
70
  * interaction.
71
71
  */
72
72
  export class ActionController {
73
- element;
74
73
  constructor(element) {
75
74
  this.element = element;
75
+ this.phase = Phase.INACTIVE;
76
+ this.touchTimer = null;
77
+ this.clickTimer = null;
78
+ this.lastPositionEvent = null;
79
+ this.pressed = false;
80
+ this.checkBoundsAfterContextMenu = false;
81
+ /**
82
+ * When set it cancels handled keyboard events (space, enter, num enter)
83
+ */
84
+ this.cancelKeyboardEvents = false;
85
+ // event listeners
86
+ /**
87
+ * Pointer down event handler.
88
+ */
89
+ this.pointerDown = (e) => {
90
+ if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {
91
+ return;
92
+ }
93
+ if (this.isTouch(e)) {
94
+ // after a longpress contextmenu event, an extra `pointerdown` can be
95
+ // dispatched to the pressed element. Check that the down is within
96
+ // bounds of the element in this case.
97
+ if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {
98
+ return;
99
+ }
100
+ this.checkBoundsAfterContextMenu = false;
101
+ this.lastPositionEvent = e;
102
+ this.setPhase(Phase.TOUCH_DELAY);
103
+ this.touchTimer = setTimeout(() => {
104
+ this.touchDelayFinished();
105
+ }, TOUCH_DELAY_MS);
106
+ }
107
+ else {
108
+ const leftButtonPressed = e.button === 0;
109
+ if (!leftButtonPressed ||
110
+ (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
111
+ return;
112
+ }
113
+ this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);
114
+ this.beginPress(e);
115
+ }
116
+ };
117
+ /**
118
+ * Pointer up event handler.
119
+ */
120
+ this.pointerUp = (e) => {
121
+ if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {
122
+ return;
123
+ }
124
+ if (this.phase === Phase.HOLDING) {
125
+ this.waitForClick();
126
+ }
127
+ else if (this.phase === Phase.TOUCH_DELAY) {
128
+ this.setPhase(Phase.RELEASING);
129
+ this.beginPress();
130
+ this.waitForClick();
131
+ }
132
+ };
133
+ /**
134
+ * Click event handler.
135
+ */
136
+ this.click = (e) => {
137
+ if (this.disabled ||
138
+ (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
139
+ return;
140
+ }
141
+ if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {
142
+ this.endPress();
143
+ this.setPhase(Phase.INACTIVE);
144
+ return;
145
+ }
146
+ // keyboard synthesized click event
147
+ if (this.phase === Phase.INACTIVE && !this.pressed) {
148
+ this.press();
149
+ }
150
+ };
151
+ /**
152
+ * Pointer leave event handler.
153
+ */
154
+ this.pointerLeave = (e) => {
155
+ // cancel a held press that moves outside the element
156
+ if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {
157
+ this.cancelPress();
158
+ }
159
+ };
160
+ /**
161
+ * Pointer cancel event handler.
162
+ */
163
+ this.pointerCancel = (e) => {
164
+ if (this.shouldRespondToEvent(e)) {
165
+ this.cancelPress();
166
+ }
167
+ };
168
+ /**
169
+ * Contextmenu event handler.
170
+ */
171
+ this.contextMenu = () => {
172
+ if (!this.disabled) {
173
+ this.checkBoundsAfterContextMenu = true;
174
+ this.cancelPress();
175
+ }
176
+ };
177
+ /**
178
+ * Keyboard down event handler
179
+ */
180
+ this.keyDown = (e) => {
181
+ if (this.disabled) {
182
+ return;
183
+ }
184
+ if (['Enter', 'NumpadEnter'].includes(e.code)) {
185
+ this.press('enter');
186
+ if (this.cancelKeyboardEvents) {
187
+ e.preventDefault();
188
+ }
189
+ }
190
+ else if (e.code === 'Space' || e.key === ' ') {
191
+ this.beginPress(/* positionEvent= */ null);
192
+ this.setPhase(Phase.INACTIVE);
193
+ if (this.cancelKeyboardEvents) {
194
+ e.preventDefault();
195
+ }
196
+ }
197
+ };
198
+ /**
199
+ * Keyboard up event handler
200
+ */
201
+ this.keyUp = (e) => {
202
+ if (this.disabled) {
203
+ return;
204
+ }
205
+ if (e.code === 'Space' || e.key === ' ') {
206
+ this.endPress('space');
207
+ if (this.cancelKeyboardEvents) {
208
+ e.preventDefault();
209
+ }
210
+ }
211
+ else if (e.code === 'Escape' && this.pressed) {
212
+ this.cancelPress();
213
+ if (this.cancelKeyboardEvents) {
214
+ e.preventDefault();
215
+ }
216
+ }
217
+ };
76
218
  this.element.addController(this);
77
219
  }
78
220
  get disabled() {
@@ -81,16 +223,6 @@ export class ActionController {
81
223
  get ignoreClicksWithModifiers() {
82
224
  return this.element.ignoreClicksWithModifiers ?? false;
83
225
  }
84
- phase = Phase.INACTIVE;
85
- touchTimer = null;
86
- clickTimer = null;
87
- lastPositionEvent = null;
88
- pressed = false;
89
- checkBoundsAfterContextMenu = false;
90
- /**
91
- * When set it cancels handled keyboard events (space, enter, num enter)
92
- */
93
- cancelKeyboardEvents = false;
94
226
  setPhase(newPhase) {
95
227
  this.phase = newPhase;
96
228
  }
@@ -195,138 +327,5 @@ export class ActionController {
195
327
  this.cancelPress();
196
328
  }
197
329
  }
198
- // event listeners
199
- /**
200
- * Pointer down event handler.
201
- */
202
- pointerDown = (e) => {
203
- if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {
204
- return;
205
- }
206
- if (this.isTouch(e)) {
207
- // after a longpress contextmenu event, an extra `pointerdown` can be
208
- // dispatched to the pressed element. Check that the down is within
209
- // bounds of the element in this case.
210
- if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {
211
- return;
212
- }
213
- this.checkBoundsAfterContextMenu = false;
214
- this.lastPositionEvent = e;
215
- this.setPhase(Phase.TOUCH_DELAY);
216
- this.touchTimer = setTimeout(() => {
217
- this.touchDelayFinished();
218
- }, TOUCH_DELAY_MS);
219
- }
220
- else {
221
- const leftButtonPressed = e.button === 0;
222
- if (!leftButtonPressed ||
223
- (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
224
- return;
225
- }
226
- this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);
227
- this.beginPress(e);
228
- }
229
- };
230
- /**
231
- * Pointer up event handler.
232
- */
233
- pointerUp = (e) => {
234
- if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {
235
- return;
236
- }
237
- if (this.phase === Phase.HOLDING) {
238
- this.waitForClick();
239
- }
240
- else if (this.phase === Phase.TOUCH_DELAY) {
241
- this.setPhase(Phase.RELEASING);
242
- this.beginPress();
243
- this.waitForClick();
244
- }
245
- };
246
- /**
247
- * Click event handler.
248
- */
249
- click = (e) => {
250
- if (this.disabled ||
251
- (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {
252
- return;
253
- }
254
- if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {
255
- this.endPress();
256
- this.setPhase(Phase.INACTIVE);
257
- return;
258
- }
259
- // keyboard synthesized click event
260
- if (this.phase === Phase.INACTIVE && !this.pressed) {
261
- this.press();
262
- }
263
- };
264
- /**
265
- * Pointer leave event handler.
266
- */
267
- pointerLeave = (e) => {
268
- // cancel a held press that moves outside the element
269
- if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {
270
- this.cancelPress();
271
- }
272
- };
273
- /**
274
- * Pointer cancel event handler.
275
- */
276
- pointerCancel = (e) => {
277
- if (this.shouldRespondToEvent(e)) {
278
- this.cancelPress();
279
- }
280
- };
281
- /**
282
- * Contextmenu event handler.
283
- */
284
- contextMenu = () => {
285
- if (!this.disabled) {
286
- this.checkBoundsAfterContextMenu = true;
287
- this.cancelPress();
288
- }
289
- };
290
- /**
291
- * Keyboard down event handler
292
- */
293
- keyDown = (e) => {
294
- if (this.disabled) {
295
- return;
296
- }
297
- if (['Enter', 'NumpadEnter'].includes(e.code)) {
298
- this.press('enter');
299
- if (this.cancelKeyboardEvents) {
300
- e.preventDefault();
301
- }
302
- }
303
- else if (e.code === 'Space' || e.key === ' ') {
304
- this.beginPress(/* positionEvent= */ null);
305
- this.setPhase(Phase.INACTIVE);
306
- if (this.cancelKeyboardEvents) {
307
- e.preventDefault();
308
- }
309
- }
310
- };
311
- /**
312
- * Keyboard up event handler
313
- */
314
- keyUp = (e) => {
315
- if (this.disabled) {
316
- return;
317
- }
318
- if (e.code === 'Space' || e.key === ' ') {
319
- this.endPress('space');
320
- if (this.cancelKeyboardEvents) {
321
- e.preventDefault();
322
- }
323
- }
324
- else if (e.code === 'Escape' && this.pressed) {
325
- this.cancelPress();
326
- if (this.cancelKeyboardEvents) {
327
- e.preventDefault();
328
- }
329
- }
330
- };
331
330
  }
332
331
  //# sourceMappingURL=ActionController.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/ActionController.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * Enumeration to keep track of the lifecycle of a touch event.\n */\n\n// State transition diagram:\n// +-----------------------------+\n// | v\n// | +------+------ WAITING_FOR_MOUSE_CLICK<----+\n// | | | ^ |\n// | V | | |\n// => INACTIVE -> TOUCH_DELAY -> RELEASING HOLDING\n// | ^\n// | |\n// +-----------------------------------+\nenum Phase {\n // Initial state of the control, no touch in progress.\n // Transitions:\n // on touch down: transition to TOUCH_DELAY.\n // on mouse down: transition to WAITING_FOR_MOUSE_CLICK.\n INACTIVE = 'INACTIVE',\n\n // Touch down has been received, waiting to determine if it's a swipe.\n // Transitions:\n // on touch up: beginPress(); transition to RELEASING.\n // on cancel: transition to INACTIVE.\n // after TOUCH_DELAY_MS: beginPress(); transition to HOLDING.\n TOUCH_DELAY = 'TOUCH_DELAY',\n\n // A touch has been deemed to be a press\n // Transitions:\n // on pointerup: endPress(); transition to WAITING_FOR_MOUSE_CLICK.\n HOLDING = 'HOLDING',\n\n // The user has released the mouse / touch, but we want to delay calling\n // endPress for a little bit to avoid double clicks.\n // Transitions:\n // mouse sequence after debounceDelay: endPress(); transition to INACTIVE\n // when in touch sequence: transitions directly to WAITING_FOR_MOUSE_CLICK\n RELEASING = 'RELEASING',\n\n // The user has touched, but we want to delay endPress until synthetic mouse\n // click event occurs. Stay in this state for a fixed amount of time before\n // giving up and transitioning into rest state.\n // Transitions:\n // on click: endPress(); transition to INACTIVE.\n // after WAIT_FOR_MOUSE_CLICK_MS: transition to INACTIVE.\n WAITING_FOR_MOUSE_CLICK = 'WAITING_FOR_MOUSE_CLICK'\n}\n\n/**\n * Delay time from touchstart to when element#beginPress is invoked.\n */\nexport const TOUCH_DELAY_MS = 150;\n\n/**\n * Delay time from beginning to wait for synthetic mouse events till giving up.\n */\nexport const WAIT_FOR_MOUSE_CLICK_MS = 500;\n\n/**\n * Interface for argument to beginPress.\n */\nexport interface BeginPressConfig {\n /**\n * Event that was recorded at the start of the interaction.\n * `null` if the press happened via keyboard.\n */\n positionEvent: Event | null;\n}\n\n/**\n * Interface for argument to endPress.\n */\nexport interface EndPressConfig {\n /**\n * `true` if the press was cancelled.\n */\n cancelled: boolean;\n /**\n * Data object to pass along to clients in the `action` event, if relevant.\n */\n actionData?: unknown;\n /**\n * Optional reason why the end is called.\n */\n reason?: IEndPressType;\n}\n\n/**\n * The necessary interface for using an ActionController\n */\nexport interface ActionControllerHost extends ReactiveControllerHost,\n HTMLElement {\n disabled: boolean;\n /**\n * Determines if pointerdown or click events containing modifier keys should\n * be ignored.\n */\n ignoreClicksWithModifiers?: boolean;\n /**\n * Called when a user interaction is determined to be a press.\n */\n beginPress(config: BeginPressConfig): void;\n /**\n * Called when a press ends or is cancelled.\n */\n endPress(config: EndPressConfig): void;\n}\n\ntype IEndPressType = 'space' | 'enter';\n\n/**\n * ActionController normalizes user interaction on components and distills it\n * into calling `beginPress` and `endPress` on the component.\n *\n * `beginPress` is a good hook to affect visuals for pressed state, including\n * ripple.\n *\n * `endPress` is a good hook for firing events based on user interaction, and\n * cleaning up the pressed visual state.\n *\n * A component using an ActionController need only implement the ActionElement\n * interface and add the ActionController's event listeners to understand user\n * interaction.\n */\nexport class ActionController implements ReactiveController {\n constructor(private readonly element: ActionControllerHost) {\n this.element.addController(this);\n }\n\n private get disabled(): boolean {\n return this.element.disabled;\n }\n\n private get ignoreClicksWithModifiers(): boolean {\n return this.element.ignoreClicksWithModifiers ?? false;\n }\n\n private phase = Phase.INACTIVE;\n\n private touchTimer: number | null = null;\n\n private clickTimer: number | null = null;\n\n private lastPositionEvent: PointerEvent | null = null;\n\n private pressed = false;\n\n private checkBoundsAfterContextMenu = false;\n\n /**\n * When set it cancels handled keyboard events (space, enter, num enter)\n */\n cancelKeyboardEvents = false;\n\n private setPhase(newPhase: Phase): void {\n this.phase = newPhase;\n }\n\n /**\n * Calls beginPress and then endPress. Allows us to programmatically click\n * on the element.\n */\n private press(reason?: IEndPressType): void {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n this.endPress(reason);\n }\n\n /**\n * Call `beginPress` on element with triggering event, if applicable.\n */\n private beginPress(positionEvent: Event | null = this.lastPositionEvent): void {\n this.pressed = true;\n this.element.beginPress({ positionEvent });\n }\n\n /**\n * Call `endPress` on element, and clean up timers.\n */\n private endPress(reason?: IEndPressType): void {\n this.pressed = false;\n this.element.endPress({ cancelled: false, reason });\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.touchTimer) {\n clearTimeout(this.touchTimer);\n }\n this.touchTimer = null;\n if (this.clickTimer) {\n clearTimeout(this.clickTimer);\n }\n this.clickTimer = null;\n this.lastPositionEvent = null;\n }\n\n /**\n * Call `endPress` with cancelled state on element, and cleanup timers.\n */\n private cancelPress(): void {\n this.pressed = false;\n this.cleanup();\n if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.INACTIVE);\n } else if (this.phase !== Phase.INACTIVE) {\n this.setPhase(Phase.INACTIVE);\n this.element.endPress({ cancelled: true });\n }\n }\n\n private isTouch(e: PointerEvent): boolean {\n return e.pointerType === 'touch';\n }\n\n private touchDelayFinished(): void {\n if (this.phase !== Phase.TOUCH_DELAY) {\n return;\n }\n this.setPhase(Phase.HOLDING);\n this.beginPress();\n }\n\n private waitForClick(): void {\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.clickTimer = setTimeout(() => {\n // If a click event does not occur, clean up the interaction state.\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.cancelPress();\n }\n }, WAIT_FOR_MOUSE_CLICK_MS) as unknown as number;\n }\n\n /**\n * Check if event should trigger actions on the element.\n */\n private shouldRespondToEvent(e: PointerEvent): boolean {\n return !this.disabled && e.isPrimary;\n }\n\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n private inBounds(ev: PointerEvent): boolean {\n const { top, left, bottom, right } = this.element.getBoundingClientRect();\n const { x, y } = ev;\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private eventHasModifiers(e: MouseEvent): boolean {\n return e.altKey || e.ctrlKey || e.shiftKey || e.metaKey;\n }\n\n /**\n * Cancel interactions if the element is removed from the DOM.\n */\n hostDisconnected(): void {\n this.cancelPress();\n }\n\n /**\n * If the element becomes disabled, cancel interactions.\n */\n hostUpdated(): void {\n if (this.disabled) {\n this.cancelPress();\n }\n }\n\n // event listeners\n /**\n * Pointer down event handler.\n */\n pointerDown = (e: PointerEvent): void => {\n if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {\n return;\n }\n if (this.isTouch(e)) {\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n this.lastPositionEvent = e;\n this.setPhase(Phase.TOUCH_DELAY);\n this.touchTimer = setTimeout(() => {\n this.touchDelayFinished();\n }, TOUCH_DELAY_MS) as unknown as number;\n } else {\n const leftButtonPressed = e.button === 0;\n if (!leftButtonPressed ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.beginPress(e);\n }\n }\n\n /**\n * Pointer up event handler.\n */\n pointerUp = (e: PointerEvent): void => {\n if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {\n return;\n }\n if (this.phase === Phase.HOLDING) {\n this.waitForClick();\n } else if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.RELEASING);\n this.beginPress();\n this.waitForClick();\n }\n }\n\n /**\n * Click event handler.\n */\n click = (e: MouseEvent): void => {\n if (this.disabled ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.endPress();\n this.setPhase(Phase.INACTIVE);\n return;\n }\n\n // keyboard synthesized click event\n if (this.phase === Phase.INACTIVE && !this.pressed) {\n this.press();\n }\n }\n\n /**\n * Pointer leave event handler.\n */\n pointerLeave = (e: PointerEvent): void => {\n // cancel a held press that moves outside the element\n if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {\n this.cancelPress();\n }\n }\n\n /**\n * Pointer cancel event handler.\n */\n pointerCancel = (e: PointerEvent): void => {\n if (this.shouldRespondToEvent(e)) {\n this.cancelPress();\n }\n }\n\n /**\n * Contextmenu event handler.\n */\n contextMenu = (): void => {\n if (!this.disabled) {\n this.checkBoundsAfterContextMenu = true;\n this.cancelPress();\n }\n }\n\n /**\n * Keyboard down event handler\n */\n keyDown = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (['Enter', 'NumpadEnter'].includes(e.code)) {\n this.press('enter');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Space' || e.key === ' ') {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n\n /**\n * Keyboard up event handler\n */\n keyUp = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (e.code === 'Space' || e.key === ' ') {\n this.endPress('space');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Escape' && this.pressed) {\n this.cancelPress();\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ActionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/ActionController.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright 2022 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ReactiveController, ReactiveControllerHost } from 'lit';\n\n/**\n * Enumeration to keep track of the lifecycle of a touch event.\n */\n\n// State transition diagram:\n// +-----------------------------+\n// | v\n// | +------+------ WAITING_FOR_MOUSE_CLICK<----+\n// | | | ^ |\n// | V | | |\n// => INACTIVE -> TOUCH_DELAY -> RELEASING HOLDING\n// | ^\n// | |\n// +-----------------------------------+\nenum Phase {\n // Initial state of the control, no touch in progress.\n // Transitions:\n // on touch down: transition to TOUCH_DELAY.\n // on mouse down: transition to WAITING_FOR_MOUSE_CLICK.\n INACTIVE = 'INACTIVE',\n\n // Touch down has been received, waiting to determine if it's a swipe.\n // Transitions:\n // on touch up: beginPress(); transition to RELEASING.\n // on cancel: transition to INACTIVE.\n // after TOUCH_DELAY_MS: beginPress(); transition to HOLDING.\n TOUCH_DELAY = 'TOUCH_DELAY',\n\n // A touch has been deemed to be a press\n // Transitions:\n // on pointerup: endPress(); transition to WAITING_FOR_MOUSE_CLICK.\n HOLDING = 'HOLDING',\n\n // The user has released the mouse / touch, but we want to delay calling\n // endPress for a little bit to avoid double clicks.\n // Transitions:\n // mouse sequence after debounceDelay: endPress(); transition to INACTIVE\n // when in touch sequence: transitions directly to WAITING_FOR_MOUSE_CLICK\n RELEASING = 'RELEASING',\n\n // The user has touched, but we want to delay endPress until synthetic mouse\n // click event occurs. Stay in this state for a fixed amount of time before\n // giving up and transitioning into rest state.\n // Transitions:\n // on click: endPress(); transition to INACTIVE.\n // after WAIT_FOR_MOUSE_CLICK_MS: transition to INACTIVE.\n WAITING_FOR_MOUSE_CLICK = 'WAITING_FOR_MOUSE_CLICK'\n}\n\n/**\n * Delay time from touchstart to when element#beginPress is invoked.\n */\nexport const TOUCH_DELAY_MS = 150;\n\n/**\n * Delay time from beginning to wait for synthetic mouse events till giving up.\n */\nexport const WAIT_FOR_MOUSE_CLICK_MS = 500;\n\n/**\n * Interface for argument to beginPress.\n */\nexport interface BeginPressConfig {\n /**\n * Event that was recorded at the start of the interaction.\n * `null` if the press happened via keyboard.\n */\n positionEvent: Event | null;\n}\n\n/**\n * Interface for argument to endPress.\n */\nexport interface EndPressConfig {\n /**\n * `true` if the press was cancelled.\n */\n cancelled: boolean;\n /**\n * Data object to pass along to clients in the `action` event, if relevant.\n */\n actionData?: unknown;\n /**\n * Optional reason why the end is called.\n */\n reason?: IEndPressType;\n}\n\n/**\n * The necessary interface for using an ActionController\n */\nexport interface ActionControllerHost extends ReactiveControllerHost,\n HTMLElement {\n disabled: boolean;\n /**\n * Determines if pointerdown or click events containing modifier keys should\n * be ignored.\n */\n ignoreClicksWithModifiers?: boolean;\n /**\n * Called when a user interaction is determined to be a press.\n */\n beginPress(config: BeginPressConfig): void;\n /**\n * Called when a press ends or is cancelled.\n */\n endPress(config: EndPressConfig): void;\n}\n\ntype IEndPressType = 'space' | 'enter';\n\n/**\n * ActionController normalizes user interaction on components and distills it\n * into calling `beginPress` and `endPress` on the component.\n *\n * `beginPress` is a good hook to affect visuals for pressed state, including\n * ripple.\n *\n * `endPress` is a good hook for firing events based on user interaction, and\n * cleaning up the pressed visual state.\n *\n * A component using an ActionController need only implement the ActionElement\n * interface and add the ActionController's event listeners to understand user\n * interaction.\n */\nexport class ActionController implements ReactiveController {\n constructor(private readonly element: ActionControllerHost) {\n this.element.addController(this);\n }\n\n private get disabled(): boolean {\n return this.element.disabled;\n }\n\n private get ignoreClicksWithModifiers(): boolean {\n return this.element.ignoreClicksWithModifiers ?? false;\n }\n\n private phase = Phase.INACTIVE;\n\n private touchTimer: number | null = null;\n\n private clickTimer: number | null = null;\n\n private lastPositionEvent: PointerEvent | null = null;\n\n private pressed = false;\n\n private checkBoundsAfterContextMenu = false;\n\n /**\n * When set it cancels handled keyboard events (space, enter, num enter)\n */\n cancelKeyboardEvents = false;\n\n private setPhase(newPhase: Phase): void {\n this.phase = newPhase;\n }\n\n /**\n * Calls beginPress and then endPress. Allows us to programmatically click\n * on the element.\n */\n private press(reason?: IEndPressType): void {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n this.endPress(reason);\n }\n\n /**\n * Call `beginPress` on element with triggering event, if applicable.\n */\n private beginPress(positionEvent: Event | null = this.lastPositionEvent): void {\n this.pressed = true;\n this.element.beginPress({ positionEvent });\n }\n\n /**\n * Call `endPress` on element, and clean up timers.\n */\n private endPress(reason?: IEndPressType): void {\n this.pressed = false;\n this.element.endPress({ cancelled: false, reason });\n this.cleanup();\n }\n\n private cleanup(): void {\n if (this.touchTimer) {\n clearTimeout(this.touchTimer);\n }\n this.touchTimer = null;\n if (this.clickTimer) {\n clearTimeout(this.clickTimer);\n }\n this.clickTimer = null;\n this.lastPositionEvent = null;\n }\n\n /**\n * Call `endPress` with cancelled state on element, and cleanup timers.\n */\n private cancelPress(): void {\n this.pressed = false;\n this.cleanup();\n if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.INACTIVE);\n } else if (this.phase !== Phase.INACTIVE) {\n this.setPhase(Phase.INACTIVE);\n this.element.endPress({ cancelled: true });\n }\n }\n\n private isTouch(e: PointerEvent): boolean {\n return e.pointerType === 'touch';\n }\n\n private touchDelayFinished(): void {\n if (this.phase !== Phase.TOUCH_DELAY) {\n return;\n }\n this.setPhase(Phase.HOLDING);\n this.beginPress();\n }\n\n private waitForClick(): void {\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.clickTimer = setTimeout(() => {\n // If a click event does not occur, clean up the interaction state.\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.cancelPress();\n }\n }, WAIT_FOR_MOUSE_CLICK_MS) as unknown as number;\n }\n\n /**\n * Check if event should trigger actions on the element.\n */\n private shouldRespondToEvent(e: PointerEvent): boolean {\n return !this.disabled && e.isPrimary;\n }\n\n /**\n * Check if the event is within the bounds of the element.\n *\n * This is only needed for the \"stuck\" contextmenu longpress on Chrome.\n */\n private inBounds(ev: PointerEvent): boolean {\n const { top, left, bottom, right } = this.element.getBoundingClientRect();\n const { x, y } = ev;\n return x >= left && x <= right && y >= top && y <= bottom;\n }\n\n private eventHasModifiers(e: MouseEvent): boolean {\n return e.altKey || e.ctrlKey || e.shiftKey || e.metaKey;\n }\n\n /**\n * Cancel interactions if the element is removed from the DOM.\n */\n hostDisconnected(): void {\n this.cancelPress();\n }\n\n /**\n * If the element becomes disabled, cancel interactions.\n */\n hostUpdated(): void {\n if (this.disabled) {\n this.cancelPress();\n }\n }\n\n // event listeners\n /**\n * Pointer down event handler.\n */\n pointerDown = (e: PointerEvent): void => {\n if (!this.shouldRespondToEvent(e) || this.phase !== Phase.INACTIVE) {\n return;\n }\n if (this.isTouch(e)) {\n // after a longpress contextmenu event, an extra `pointerdown` can be\n // dispatched to the pressed element. Check that the down is within\n // bounds of the element in this case.\n if (this.checkBoundsAfterContextMenu && !this.inBounds(e)) {\n return;\n }\n this.checkBoundsAfterContextMenu = false;\n this.lastPositionEvent = e;\n this.setPhase(Phase.TOUCH_DELAY);\n this.touchTimer = setTimeout(() => {\n this.touchDelayFinished();\n }, TOUCH_DELAY_MS) as unknown as number;\n } else {\n const leftButtonPressed = e.button === 0;\n if (!leftButtonPressed ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n this.setPhase(Phase.WAITING_FOR_MOUSE_CLICK);\n this.beginPress(e);\n }\n }\n\n /**\n * Pointer up event handler.\n */\n pointerUp = (e: PointerEvent): void => {\n if (!this.isTouch(e) || !this.shouldRespondToEvent(e)) {\n return;\n }\n if (this.phase === Phase.HOLDING) {\n this.waitForClick();\n } else if (this.phase === Phase.TOUCH_DELAY) {\n this.setPhase(Phase.RELEASING);\n this.beginPress();\n this.waitForClick();\n }\n }\n\n /**\n * Click event handler.\n */\n click = (e: MouseEvent): void => {\n if (this.disabled ||\n (this.ignoreClicksWithModifiers && this.eventHasModifiers(e))) {\n return;\n }\n if (this.phase === Phase.WAITING_FOR_MOUSE_CLICK) {\n this.endPress();\n this.setPhase(Phase.INACTIVE);\n return;\n }\n\n // keyboard synthesized click event\n if (this.phase === Phase.INACTIVE && !this.pressed) {\n this.press();\n }\n }\n\n /**\n * Pointer leave event handler.\n */\n pointerLeave = (e: PointerEvent): void => {\n // cancel a held press that moves outside the element\n if (this.shouldRespondToEvent(e) && !this.isTouch(e) && this.pressed) {\n this.cancelPress();\n }\n }\n\n /**\n * Pointer cancel event handler.\n */\n pointerCancel = (e: PointerEvent): void => {\n if (this.shouldRespondToEvent(e)) {\n this.cancelPress();\n }\n }\n\n /**\n * Contextmenu event handler.\n */\n contextMenu = (): void => {\n if (!this.disabled) {\n this.checkBoundsAfterContextMenu = true;\n this.cancelPress();\n }\n }\n\n /**\n * Keyboard down event handler\n */\n keyDown = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (['Enter', 'NumpadEnter'].includes(e.code)) {\n this.press('enter');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Space' || e.key === ' ') {\n this.beginPress(/* positionEvent= */ null);\n this.setPhase(Phase.INACTIVE);\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n\n /**\n * Keyboard up event handler\n */\n keyUp = (e: KeyboardEvent): void => {\n if (this.disabled) {\n return;\n }\n if (e.code === 'Space' || e.key === ' ') {\n this.endPress('space');\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n } else if (e.code === 'Escape' && this.pressed) {\n this.cancelPress();\n if (this.cancelKeyboardEvents) {\n e.preventDefault();\n }\n }\n }\n}\n"]}
@@ -13,7 +13,6 @@ const inputs = [];
13
13
  * in the group.
14
14
  */
15
15
  export class RadioSelectionController {
16
- element;
17
16
  constructor(element) {
18
17
  this.element = element;
19
18
  this.element.addController(this);
@@ -1 +1 @@
1
- {"version":3,"file":"RadioSelectionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/RadioSelectionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\n\nexport interface IRadioSelectionControllerHost extends ReactiveControllerHost, HTMLElement {\n checked?: boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n value?: string;\n readonly form: HTMLFormElement | null;\n}\n\n/**\n * An ordered list of inputs added to the document. Selection order depends on that list.\n */\nconst inputs: IRadioSelectionControllerHost[] = [];\n\n/**\n * A controller that groups radios by name and manages selection of a radio input in a group.\n * \n * A group is defined as:\n * - radio inputs with the same name associated with the same form\n * - radio inputs with the same name not associated with any form\n * \n * The radio input must call the `handleSelection()` method on this controller to manage the selection\n * in the group.\n */\nexport class RadioSelectionController implements ReactiveController {\n constructor(private readonly element: IRadioSelectionControllerHost) {\n this.element.addController(this);\n }\n\n hostConnected(): void {\n const { element } = this;\n inputs.push(element);\n }\n\n hostDisconnected(): void {\n const index = inputs.indexOf(this.element);\n if (index >= 0) {\n inputs.splice(index, 1);\n }\n }\n\n /**\n * Selects the current element and deselects other elements in the group.\n */\n handleSelection(): void {\n const { element } = this;\n const group = this._findGroup(element);\n const isRequired = group.some(i => !!i.required || typeof i.dataset.required === 'string');\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n item.checked = true;\n item.setAttribute('tabindex', '0');\n if (isRequired) {\n item.required = true;\n }\n } else {\n if (item.required) {\n item.required = false;\n }\n if (item.checked) {\n item.checked = false;\n }\n item.removeAttribute('tabindex');\n }\n }\n }\n\n /**\n * A handler for the keydown event. Changes the selection (when there's a selection in the group).\n */\n handleKeyDown(e: KeyboardEvent): void {\n if (['ArrowUp', 'ArrowLeft'].includes(e.code)) {\n e.preventDefault();\n this.selectPrevious();\n } else if (['ArrowDown', 'ArrowRight'].includes(e.code)) {\n e.preventDefault();\n this.selectNext();\n }\n }\n\n selectNext(): void {\n const { element } = this;\n const group = this._findGroup(element);\n if (group.length < 2) {\n // 0 or 1 input, no way to go.\n return;\n }\n const next = this.findNextInput(group, element);\n if (next) {\n next.click();\n }\n }\n\n selectPrevious(): void {\n const { element } = this;\n const group = this._findGroup(element);\n if (group.length < 2) {\n // 0 or 1 input, no way to go.\n return;\n }\n const previous = this.findPreviousInput(group, element);\n if (previous) {\n previous.click();\n }\n }\n\n findNextInput(group: IRadioSelectionControllerHost[], current: IRadioSelectionControllerHost): IRadioSelectionControllerHost | null {\n const currentIndex = group.indexOf(current);\n if (currentIndex < 0) {\n return null;\n }\n let i = currentIndex;\n let next: IRadioSelectionControllerHost | null = null;\n do {\n i++;\n if (i === currentIndex) {\n // looped back from the start, no active element to find.\n return null;\n }\n const item = group[i];\n if (!item) {\n i = -1;\n continue;\n }\n if (!item.disabled) {\n next = item;\n }\n } while (!next);\n return next;\n }\n\n findPreviousInput(group: IRadioSelectionControllerHost[], current: IRadioSelectionControllerHost): IRadioSelectionControllerHost | null {\n const currentIndex = group.indexOf(current);\n if (currentIndex < 0) {\n return null;\n }\n let i = currentIndex;\n let result: IRadioSelectionControllerHost | null = null;\n do {\n i--;\n if (i === currentIndex) {\n // looped back from the end, no active element to find.\n return null;\n }\n const item = group[i];\n if (!item) {\n i = group.length;\n continue;\n }\n if (!item.disabled) {\n result = item;\n }\n } while (!result);\n return result;\n }\n\n private _findGroup(element: IRadioSelectionControllerHost): IRadioSelectionControllerHost[] {\n let group: IRadioSelectionControllerHost[];\n if (element.form) {\n group = this._findFormGroup(element.name || '', element.form);\n } else {\n group = this._findDocumentGroup(element);\n }\n return group;\n }\n\n /**\n * @param name The name of the input\n * @param form The associated form\n * @returns Ordered list of input group for the same form.\n */\n private _findFormGroup(name: string, form: HTMLFormElement): IRadioSelectionControllerHost[] {\n const group = inputs.filter((node) => {\n if (node.name !== name) {\n return false;\n }\n if (node.form !== form) {\n return false;\n }\n return true;\n });\n return group;\n }\n\n /**\n * @param element The element to find its group\n * @returns Ordered list of inputs with the same name that don't belong to any form.\n */\n private _findDocumentGroup(element: IRadioSelectionControllerHost): IRadioSelectionControllerHost[] {\n const { name='' } = element;\n const group = inputs.filter((node) => {\n if (node.form) {\n return false;\n }\n return name === (node.name || '');\n });\n return group;\n }\n\n /**\n * When multiple inputs within the same group have the `required` attribute\n * then the validation is reported incorrectly on inputs where the `tabindex` was removed from.\n * This triggers a console error (not an error in a sense of stopping JS execution) that\n * the form control is not focusable.\n * This removes the `required` attribute from the input when there's another radio button that has the \n * required attribute.\n */\n clearRequired(): void {\n const { element } = this;\n if (!element.required) {\n return;\n }\n const group = this._findGroup(element);\n let hasPreviousRequired = false;\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n break;\n }\n if (item.required && !item.disabled) {\n hasPreviousRequired = true;\n break;\n }\n }\n if (hasPreviousRequired) {\n element.required = false;\n element.dataset.required = '';\n }\n }\n\n /**\n * Removes the tabindex attribute from the input when there's another input with\n * `tabindex` within the same group. This way the user can `tab` to the next input instead\n * of tabbing through all inputs in the group.\n * \n * Note, tabindex values within a group may be different but it has no semantic or logical \n * meaning as navigation within a group happens with arrows and not tab.\n * \n */\n clearTabindex(): void {\n const { element } = this;\n const elementIndex = this._readTabIndex(element);\n if (elementIndex < 0) {\n return;\n }\n const group = this._findGroup(element);\n if (group.length < 2) {\n // noting to clear.\n return;\n }\n let hasFocusableElement = false;\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n break;\n }\n if (item.disabled) {\n continue;\n }\n const index = this._readTabIndex(item);\n if (index >= 0) {\n hasFocusableElement = true;\n break;\n }\n }\n if (hasFocusableElement) {\n element.removeAttribute('tabindex');\n }\n }\n\n protected _readTabIndex(element: HTMLElement): number {\n const tIndex = element.getAttribute('tabindex');\n if (!tIndex) {\n return -1;\n }\n const num = Number(tIndex);\n if (!Number.isInteger(num)) {\n return -1;\n }\n return num;\n }\n}\n"]}
1
+ {"version":3,"file":"RadioSelectionController.js","sourceRoot":"","sources":["../../../src/ui/controllers/RadioSelectionController.ts"],"names":[],"mappings":"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","sourcesContent":["import { ReactiveController, ReactiveControllerHost } from 'lit';\n\nexport interface IRadioSelectionControllerHost extends ReactiveControllerHost, HTMLElement {\n checked?: boolean;\n required?: boolean;\n disabled?: boolean;\n name?: string;\n value?: string;\n readonly form: HTMLFormElement | null;\n}\n\n/**\n * An ordered list of inputs added to the document. Selection order depends on that list.\n */\nconst inputs: IRadioSelectionControllerHost[] = [];\n\n/**\n * A controller that groups radios by name and manages selection of a radio input in a group.\n * \n * A group is defined as:\n * - radio inputs with the same name associated with the same form\n * - radio inputs with the same name not associated with any form\n * \n * The radio input must call the `handleSelection()` method on this controller to manage the selection\n * in the group.\n */\nexport class RadioSelectionController implements ReactiveController {\n constructor(private readonly element: IRadioSelectionControllerHost) {\n this.element.addController(this);\n }\n\n hostConnected(): void {\n const { element } = this;\n inputs.push(element);\n }\n\n hostDisconnected(): void {\n const index = inputs.indexOf(this.element);\n if (index >= 0) {\n inputs.splice(index, 1);\n }\n }\n\n /**\n * Selects the current element and deselects other elements in the group.\n */\n handleSelection(): void {\n const { element } = this;\n const group = this._findGroup(element);\n const isRequired = group.some(i => !!i.required || typeof i.dataset.required === 'string');\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n item.checked = true;\n item.setAttribute('tabindex', '0');\n if (isRequired) {\n item.required = true;\n }\n } else {\n if (item.required) {\n item.required = false;\n }\n if (item.checked) {\n item.checked = false;\n }\n item.removeAttribute('tabindex');\n }\n }\n }\n\n /**\n * A handler for the keydown event. Changes the selection (when there's a selection in the group).\n */\n handleKeyDown(e: KeyboardEvent): void {\n if (['ArrowUp', 'ArrowLeft'].includes(e.code)) {\n e.preventDefault();\n this.selectPrevious();\n } else if (['ArrowDown', 'ArrowRight'].includes(e.code)) {\n e.preventDefault();\n this.selectNext();\n }\n }\n\n selectNext(): void {\n const { element } = this;\n const group = this._findGroup(element);\n if (group.length < 2) {\n // 0 or 1 input, no way to go.\n return;\n }\n const next = this.findNextInput(group, element);\n if (next) {\n next.click();\n }\n }\n\n selectPrevious(): void {\n const { element } = this;\n const group = this._findGroup(element);\n if (group.length < 2) {\n // 0 or 1 input, no way to go.\n return;\n }\n const previous = this.findPreviousInput(group, element);\n if (previous) {\n previous.click();\n }\n }\n\n findNextInput(group: IRadioSelectionControllerHost[], current: IRadioSelectionControllerHost): IRadioSelectionControllerHost | null {\n const currentIndex = group.indexOf(current);\n if (currentIndex < 0) {\n return null;\n }\n let i = currentIndex;\n let next: IRadioSelectionControllerHost | null = null;\n do {\n i++;\n if (i === currentIndex) {\n // looped back from the start, no active element to find.\n return null;\n }\n const item = group[i];\n if (!item) {\n i = -1;\n continue;\n }\n if (!item.disabled) {\n next = item;\n }\n } while (!next);\n return next;\n }\n\n findPreviousInput(group: IRadioSelectionControllerHost[], current: IRadioSelectionControllerHost): IRadioSelectionControllerHost | null {\n const currentIndex = group.indexOf(current);\n if (currentIndex < 0) {\n return null;\n }\n let i = currentIndex;\n let result: IRadioSelectionControllerHost | null = null;\n do {\n i--;\n if (i === currentIndex) {\n // looped back from the end, no active element to find.\n return null;\n }\n const item = group[i];\n if (!item) {\n i = group.length;\n continue;\n }\n if (!item.disabled) {\n result = item;\n }\n } while (!result);\n return result;\n }\n\n private _findGroup(element: IRadioSelectionControllerHost): IRadioSelectionControllerHost[] {\n let group: IRadioSelectionControllerHost[];\n if (element.form) {\n group = this._findFormGroup(element.name || '', element.form);\n } else {\n group = this._findDocumentGroup(element);\n }\n return group;\n }\n\n /**\n * @param name The name of the input\n * @param form The associated form\n * @returns Ordered list of input group for the same form.\n */\n private _findFormGroup(name: string, form: HTMLFormElement): IRadioSelectionControllerHost[] {\n const group = inputs.filter((node) => {\n if (node.name !== name) {\n return false;\n }\n if (node.form !== form) {\n return false;\n }\n return true;\n });\n return group;\n }\n\n /**\n * @param element The element to find its group\n * @returns Ordered list of inputs with the same name that don't belong to any form.\n */\n private _findDocumentGroup(element: IRadioSelectionControllerHost): IRadioSelectionControllerHost[] {\n const { name='' } = element;\n const group = inputs.filter((node) => {\n if (node.form) {\n return false;\n }\n return name === (node.name || '');\n });\n return group;\n }\n\n /**\n * When multiple inputs within the same group have the `required` attribute\n * then the validation is reported incorrectly on inputs where the `tabindex` was removed from.\n * This triggers a console error (not an error in a sense of stopping JS execution) that\n * the form control is not focusable.\n * This removes the `required` attribute from the input when there's another radio button that has the \n * required attribute.\n */\n clearRequired(): void {\n const { element } = this;\n if (!element.required) {\n return;\n }\n const group = this._findGroup(element);\n let hasPreviousRequired = false;\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n break;\n }\n if (item.required && !item.disabled) {\n hasPreviousRequired = true;\n break;\n }\n }\n if (hasPreviousRequired) {\n element.required = false;\n element.dataset.required = '';\n }\n }\n\n /**\n * Removes the tabindex attribute from the input when there's another input with\n * `tabindex` within the same group. This way the user can `tab` to the next input instead\n * of tabbing through all inputs in the group.\n * \n * Note, tabindex values within a group may be different but it has no semantic or logical \n * meaning as navigation within a group happens with arrows and not tab.\n * \n */\n clearTabindex(): void {\n const { element } = this;\n const elementIndex = this._readTabIndex(element);\n if (elementIndex < 0) {\n return;\n }\n const group = this._findGroup(element);\n if (group.length < 2) {\n // noting to clear.\n return;\n }\n let hasFocusableElement = false;\n for (let i = 0, len = group.length; i < len; i++) {\n const item = group[i];\n if (item === element) {\n break;\n }\n if (item.disabled) {\n continue;\n }\n const index = this._readTabIndex(item);\n if (index >= 0) {\n hasFocusableElement = true;\n break;\n }\n }\n if (hasFocusableElement) {\n element.removeAttribute('tabindex');\n }\n }\n\n protected _readTabIndex(element: HTMLElement): number {\n const tIndex = element.getAttribute('tabindex');\n if (!tIndex) {\n return -1;\n }\n const num = Number(tIndex);\n if (!Number.isInteger(num)) {\n return -1;\n }\n return num;\n }\n}\n"]}
@@ -45,9 +45,11 @@ export default class DateTime extends HTMLElement {
45
45
  'weekday', 'time-zone-name', 'era', 'time-zone', 'hour12', 'itemprop'
46
46
  ];
47
47
  }
48
- _observer = new MutationObserver(() => this._mutationHandler());
49
48
  constructor() {
50
49
  super();
50
+ this._observer = new MutationObserver(() => this._mutationHandler());
51
+ this.__hour12set = null;
52
+ this.__date = null;
51
53
  this.attachShadow({ mode: 'open' });
52
54
  }
53
55
  connectedCallback() {
@@ -312,7 +314,6 @@ export default class DateTime extends HTMLElement {
312
314
  this.removeAttribute('era');
313
315
  }
314
316
  }
315
- __hour12set = null;
316
317
  /**
317
318
  * Whether to use 12-hour time (as opposed to 24-hour time).
318
319
  * Possible values are `true` and `false`; the default is locale
@@ -338,7 +339,6 @@ export default class DateTime extends HTMLElement {
338
339
  this.removeAttribute('hour12');
339
340
  }
340
341
  }
341
- __date = null;
342
342
  /**
343
343
  * A date object to render.
344
344
  * It can be a `Date` object, number representing a timestamp
@@ -1 +1 @@
1
- {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../../../src/ui/date/DateTime.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable class-methods-use-this */\n/**\n@license\nCopyright 2016 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\n\nexport type DateTimeTextOptions = \"long\" | \"short\" | \"narrow\";\nexport type DateTimeNumberOptions = \"numeric\" | \"2-digit\";\nexport type DateTimeTimezoneOptions = \"long\" | \"short\";\nexport type DateTimeTextNumberOptions = DateTimeTextOptions | DateTimeNumberOptions;\n\n/**\n * An element to display formatted date and time.\n *\n * The `date` property accepts Date object, Number as a timestamp or string\n * that will be parsed to the Date object.\n *\n * This element uses the `Intl` interface which is available in IE 11+ browsers.\n *\n * To format the date use [Intl.DateTimeFormat]\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)\n * interface options.\n *\n * The default value for each date-time component property is undefined,\n * but if all component properties are undefined, then year, month, and day\n * are assumed to be \"numeric\" (per spec).\n *\n * ### Example\n *\n * ```html\n * <date-time date=\"2010-12-10T11:50:45Z\" year=\"numeric\" month=\"narrow\" day=\"numeric\"></date-time>\n * ```\n *\n * The element provides accessibility by using the `time` element and setting\n * the `datetime` attribute on it.\n */\nexport default class DateTime extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'locales', 'date', 'year', 'month', 'day', 'hour', 'minute', 'second',\n 'weekday', 'time-zone-name', 'era', 'time-zone', 'hour12', 'itemprop'\n ];\n }\n\n protected _observer = new MutationObserver(() => this._mutationHandler());\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n this._observer.observe(this.shadowRoot as ShadowRoot, {\n childList: true,\n characterData: true,\n subtree: true\n });\n this._updateLabel();\n }\n\n disconnectedCallback(): void {\n this._observer.disconnect();\n }\n\n _mutationHandler(): void {\n this.setAttribute('aria-label', (this.shadowRoot as ShadowRoot).textContent || '');\n }\n\n /**\n * A string with a BCP 47 language tag, or an array of such strings.\n * For the general form and interpretation of the locales argument,\n * see the Intl page.\n * The following Unicode extension keys are allowed:\n * - nu - Numbering system. Possible values include: \"arab\", \"arabext\",\n * \"bali\", \"beng\", \"deva\", \"fullwide\", \"gujr\", \"guru\", \"hanidec\", \"khmr\",\n * \"knda\", \"laoo\", \"latn\", \"limb\", \"mlym\", \"mong\", \"mymr\", \"orya\",\n * \"tamldec\", \"telu\", \"thai\", \"tibt\".\n * - ca - Calendar. Possible values include: \"buddhist\", \"chinese\",\n * \"coptic\", \"ethioaa\", \"ethiopic\", \"gregory\", \"hebrew\", \"indian\",\n * \"islamic\", \"islamicc\", \"iso8601\", \"japanese\", \"persian\", \"roc\".\n * @attribute\n */\n get locales(): string | null {\n return this.getAttribute('locales');\n }\n\n /**\n * A string with a BCP 47 language tag, or an array of such strings.\n * For the general form and interpretation of the locales argument,\n * see the Intl page.\n * The following Unicode extension keys are allowed:\n * - nu - Numbering system. Possible values include: \"arab\", \"arabext\",\n * \"bali\", \"beng\", \"deva\", \"fullwide\", \"gujr\", \"guru\", \"hanidec\", \"khmr\",\n * \"knda\", \"laoo\", \"latn\", \"limb\", \"mlym\", \"mong\", \"mymr\", \"orya\",\n * \"tamldec\", \"telu\", \"thai\", \"tibt\".\n * - ca - Calendar. Possible values include: \"buddhist\", \"chinese\",\n * \"coptic\", \"ethioaa\", \"ethiopic\", \"gregory\", \"hebrew\", \"indian\",\n * \"islamic\", \"islamicc\", \"iso8601\", \"japanese\", \"persian\", \"roc\".\n */\n set locales(v: string | null) {\n if (v) {\n this.setAttribute('locales', v);\n } else {\n this.removeAttribute('locales');\n }\n }\n\n /**\n * The representation of the year.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get year(): DateTimeNumberOptions | null {\n return this.getAttribute('year') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the year.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set year(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('year', v);\n } else {\n this.removeAttribute('year');\n }\n }\n\n /**\n * The representation of the month.\n * Possible values are \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get month(): DateTimeTextNumberOptions | null {\n return this.getAttribute('month') as DateTimeTextNumberOptions;\n }\n\n /**\n * The representation of the month.\n * @param v Possible values are \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\".\n */\n set month(v: DateTimeTextNumberOptions | null) {\n if (v) {\n this.setAttribute('month', v);\n } else {\n this.removeAttribute('month');\n }\n }\n\n /**\n * The representation of the day.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get day(): DateTimeNumberOptions | null {\n return this.getAttribute('day') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the day.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set day(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('day', v);\n } else {\n this.removeAttribute('day');\n }\n }\n\n /**\n * The representation of the hour.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get hour(): DateTimeNumberOptions | null {\n return this.getAttribute('hour') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the hour.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set hour(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('hour', v);\n } else {\n this.removeAttribute('hour');\n }\n }\n\n /**\n * The representation of the minute.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get minute(): DateTimeNumberOptions | null {\n return this.getAttribute('minute') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the minute.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set minute(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('minute', v);\n } else {\n this.removeAttribute('minute');\n }\n }\n\n /**\n * The representation of the second.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get second(): DateTimeNumberOptions | null {\n return this.getAttribute('second') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the second.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set second(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('second', v);\n } else {\n this.removeAttribute('second');\n }\n }\n\n /**\n * The representation of the weekday.\n * Possible values are \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get weekday(): DateTimeTextOptions | null {\n return this.getAttribute('weekday') as DateTimeTextOptions;\n }\n\n /**\n * The representation of the weekday.\n * @param v Possible values are \"narrow\", \"short\", \"long\".\n */\n set weekday(v: DateTimeTextOptions | null) {\n if (v) {\n this.setAttribute('weekday', v);\n } else {\n this.removeAttribute('weekday');\n }\n }\n\n /**\n * The representation of the time zone name.\n *\n * Possible values are \"short\", \"long\".\n * @attribute\n */\n get timeZoneName(): DateTimeTimezoneOptions | null {\n return this.getAttribute('time-zone-name') as DateTimeTimezoneOptions;\n }\n\n /**\n * The representation of the time zone name.\n *\n * @param v Possible values are \"short\", \"long\".\n */\n set timeZoneName(v: DateTimeTimezoneOptions | null) {\n if (v) {\n this.setAttribute('time-zone-name', v);\n } else {\n this.removeAttribute('time-zone-name');\n }\n }\n\n /**\n * The time zone to use. The only value implementations must recognize\n * is \"UTC\"; the default is the runtime's default time zone.\n * Implementations may also recognize the time zone names of the IANA\n * time zone database, such as \"Asia/Shanghai\", \"Asia/Kolkata\",\n * \"America/New_York\".\n * @attribute\n */\n get timeZone(): string | null {\n return this.getAttribute('time-zone');\n }\n\n /**\n * The time zone to use. The only value implementations must recognize\n * is \"UTC\"; the default is the runtime's default time zone.\n * Implementations may also recognize the time zone names of the IANA\n * time zone database, such as \"Asia/Shanghai\", \"Asia/Kolkata\",\n * \"America/New_York\".\n */\n set timeZone(v: string | null) {\n if (v) {\n this.setAttribute('time-zone', v);\n } else {\n this.removeAttribute('time-zone');\n }\n }\n\n /**\n * The representation of the era.\n *\n * Possible values are \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get era(): DateTimeTextOptions | null {\n return this.getAttribute('era') as DateTimeTextOptions;\n }\n\n /**\n * The representation of the era.\n *\n * @param v Possible values are \"narrow\", \"short\", \"long\".\n */\n set era(v: DateTimeTextOptions | null) {\n if (v) {\n this.setAttribute('era', v);\n } else {\n this.removeAttribute('era');\n }\n }\n\n private __hour12set: boolean | null = null;\n\n /**\n * Whether to use 12-hour time (as opposed to 24-hour time).\n * Possible values are `true` and `false`; the default is locale\n * dependent.\n */\n get hour12(): boolean | null {\n if (!this.hasAttribute('hour12') && !this.__hour12set) {\n return null;\n }\n return this.hasAttribute('hour12');\n }\n\n /**\n * Whether to use 12-hour time (as opposed to 24-hour time).\n * Possible values are `true` and `false`; the default is locale\n * dependent.\n */\n set hour12(v: boolean | null) {\n this.__hour12set = true;\n if (v) {\n this.setAttribute('hour12', '');\n } else {\n this.removeAttribute('hour12');\n }\n }\n\n private __date: Date | string | number | null = null;\n\n /**\n * A date object to render.\n * It can be a `Date` object, number representing a timestamp\n * or valid date string. The argument is parsed by `Date` constructor\n * to produce the value.\n * @attribute\n */\n get date(): Date | string | number | null {\n if (this.__date) {\n return this.__date;\n }\n return this.getAttribute('date');\n }\n\n /**\n * A date object to render.\n * It can be a `Date` object, number representing a timestamp\n * or valid date string. The argument is parsed by `Date` constructor\n * to produce the value.\n *\n * @param {Date|string|number} v The date to render\n */\n set date(v: Date | string | number | null) {\n this.__date = v;\n if (typeof v === 'string') {\n this.setAttribute('date', v);\n } else {\n this._updateLabel();\n }\n }\n\n get itemprop(): string | null {\n return this._getTimeNode().getAttribute('itemprop');\n }\n\n set itemprop(value: string | null) {\n const old = this.itemprop;\n if (old === value) {\n return;\n }\n if (old && value === null) {\n // This setter moves attribute from this element to \"<time>\" element.\n // When the attribute is removed from this then it becomes null.\n return;\n }\n const node = this._getTimeNode();\n if (value) {\n node.setAttribute('itemprop', value);\n this.removeAttribute('itemprop');\n } else {\n node.removeAttribute('itemprop');\n }\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (name === 'itemprop') {\n this[name] = newValue;\n return;\n }\n this._updateLabel();\n }\n\n /**\n * Parses input `date` to a Date object.\n * @param date A date to parse\n */\n protected _getParsableDate(date: string | number | Date | null): Date {\n if (!date) {\n date = new Date();\n } else if (typeof date === 'string') {\n try {\n date = new Date(date);\n if (Number.isNaN(date.getDate())) {\n date = new Date();\n }\n } catch (e) {\n date = new Date();\n }\n } else if (!Number.isNaN(date)) {\n date = new Date(date);\n } else if (!(date instanceof Date)) {\n date = new Date();\n }\n return date;\n }\n\n _getIntlOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n if (this.year) {\n options.year = this.year;\n }\n if (this.month) {\n options.month = this.month;\n }\n if (this.day) {\n options.day = this.day;\n }\n if (this.hour) {\n options.hour = this.hour;\n }\n if (this.minute) {\n options.minute = this.minute;\n }\n if (this.second) {\n options.second = this.second;\n }\n if (this.weekday) {\n options.weekday = this.weekday;\n }\n if (this.era) {\n options.era = this.era;\n }\n if (this.timeZoneName) {\n options.timeZoneName = this.timeZoneName;\n }\n if (this.timeZone) {\n options.timeZone = this.timeZone;\n }\n if (this.hour12 !== undefined && this.hour12 !== null) {\n options.hour12 = this.hour12;\n }\n return options;\n }\n\n /**\n * @returns A reference to a `<time>` element that is in the shadow DOM of this element.\n */\n _getTimeNode(): HTMLTimeElement {\n const root = this.shadowRoot as ShadowRoot;\n let node = root.querySelector('time');\n if (!node) {\n node = document.createElement('time');\n root.appendChild(node);\n }\n return node;\n }\n\n _updateLabel(): void {\n if (!this.parentElement) {\n return;\n }\n const date = this._getParsableDate(this.date);\n const node = this._getTimeNode();\n node.setAttribute('datetime', date.toISOString());\n /* istanbul ignore if */\n if (typeof Intl === 'undefined') {\n node.innerText = date.toString();\n return;\n }\n let locales;\n if (this.locales) {\n locales = this.locales;\n }\n const options = this._getIntlOptions();\n const value = new Intl.DateTimeFormat(locales, options).format(date);\n node.innerText = value;\n }\n}\n"]}
1
+ {"version":3,"file":"DateTime.js","sourceRoot":"","sources":["../../../src/ui/date/DateTime.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-param-reassign */\n/* eslint-disable class-methods-use-this */\n/**\n@license\nCopyright 2016 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\n\nexport type DateTimeTextOptions = \"long\" | \"short\" | \"narrow\";\nexport type DateTimeNumberOptions = \"numeric\" | \"2-digit\";\nexport type DateTimeTimezoneOptions = \"long\" | \"short\";\nexport type DateTimeTextNumberOptions = DateTimeTextOptions | DateTimeNumberOptions;\n\n/**\n * An element to display formatted date and time.\n *\n * The `date` property accepts Date object, Number as a timestamp or string\n * that will be parsed to the Date object.\n *\n * This element uses the `Intl` interface which is available in IE 11+ browsers.\n *\n * To format the date use [Intl.DateTimeFormat]\n * (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat)\n * interface options.\n *\n * The default value for each date-time component property is undefined,\n * but if all component properties are undefined, then year, month, and day\n * are assumed to be \"numeric\" (per spec).\n *\n * ### Example\n *\n * ```html\n * <date-time date=\"2010-12-10T11:50:45Z\" year=\"numeric\" month=\"narrow\" day=\"numeric\"></date-time>\n * ```\n *\n * The element provides accessibility by using the `time` element and setting\n * the `datetime` attribute on it.\n */\nexport default class DateTime extends HTMLElement {\n static get observedAttributes(): string[] {\n return [\n 'locales', 'date', 'year', 'month', 'day', 'hour', 'minute', 'second',\n 'weekday', 'time-zone-name', 'era', 'time-zone', 'hour12', 'itemprop'\n ];\n }\n\n protected _observer = new MutationObserver(() => this._mutationHandler());\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback(): void {\n this._observer.observe(this.shadowRoot as ShadowRoot, {\n childList: true,\n characterData: true,\n subtree: true\n });\n this._updateLabel();\n }\n\n disconnectedCallback(): void {\n this._observer.disconnect();\n }\n\n _mutationHandler(): void {\n this.setAttribute('aria-label', (this.shadowRoot as ShadowRoot).textContent || '');\n }\n\n /**\n * A string with a BCP 47 language tag, or an array of such strings.\n * For the general form and interpretation of the locales argument,\n * see the Intl page.\n * The following Unicode extension keys are allowed:\n * - nu - Numbering system. Possible values include: \"arab\", \"arabext\",\n * \"bali\", \"beng\", \"deva\", \"fullwide\", \"gujr\", \"guru\", \"hanidec\", \"khmr\",\n * \"knda\", \"laoo\", \"latn\", \"limb\", \"mlym\", \"mong\", \"mymr\", \"orya\",\n * \"tamldec\", \"telu\", \"thai\", \"tibt\".\n * - ca - Calendar. Possible values include: \"buddhist\", \"chinese\",\n * \"coptic\", \"ethioaa\", \"ethiopic\", \"gregory\", \"hebrew\", \"indian\",\n * \"islamic\", \"islamicc\", \"iso8601\", \"japanese\", \"persian\", \"roc\".\n * @attribute\n */\n get locales(): string | null {\n return this.getAttribute('locales');\n }\n\n /**\n * A string with a BCP 47 language tag, or an array of such strings.\n * For the general form and interpretation of the locales argument,\n * see the Intl page.\n * The following Unicode extension keys are allowed:\n * - nu - Numbering system. Possible values include: \"arab\", \"arabext\",\n * \"bali\", \"beng\", \"deva\", \"fullwide\", \"gujr\", \"guru\", \"hanidec\", \"khmr\",\n * \"knda\", \"laoo\", \"latn\", \"limb\", \"mlym\", \"mong\", \"mymr\", \"orya\",\n * \"tamldec\", \"telu\", \"thai\", \"tibt\".\n * - ca - Calendar. Possible values include: \"buddhist\", \"chinese\",\n * \"coptic\", \"ethioaa\", \"ethiopic\", \"gregory\", \"hebrew\", \"indian\",\n * \"islamic\", \"islamicc\", \"iso8601\", \"japanese\", \"persian\", \"roc\".\n */\n set locales(v: string | null) {\n if (v) {\n this.setAttribute('locales', v);\n } else {\n this.removeAttribute('locales');\n }\n }\n\n /**\n * The representation of the year.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get year(): DateTimeNumberOptions | null {\n return this.getAttribute('year') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the year.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set year(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('year', v);\n } else {\n this.removeAttribute('year');\n }\n }\n\n /**\n * The representation of the month.\n * Possible values are \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get month(): DateTimeTextNumberOptions | null {\n return this.getAttribute('month') as DateTimeTextNumberOptions;\n }\n\n /**\n * The representation of the month.\n * @param v Possible values are \"numeric\", \"2-digit\", \"narrow\", \"short\", \"long\".\n */\n set month(v: DateTimeTextNumberOptions | null) {\n if (v) {\n this.setAttribute('month', v);\n } else {\n this.removeAttribute('month');\n }\n }\n\n /**\n * The representation of the day.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get day(): DateTimeNumberOptions | null {\n return this.getAttribute('day') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the day.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set day(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('day', v);\n } else {\n this.removeAttribute('day');\n }\n }\n\n /**\n * The representation of the hour.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get hour(): DateTimeNumberOptions | null {\n return this.getAttribute('hour') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the hour.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set hour(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('hour', v);\n } else {\n this.removeAttribute('hour');\n }\n }\n\n /**\n * The representation of the minute.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get minute(): DateTimeNumberOptions | null {\n return this.getAttribute('minute') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the minute.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set minute(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('minute', v);\n } else {\n this.removeAttribute('minute');\n }\n }\n\n /**\n * The representation of the second.\n * Possible values are \"numeric\", \"2-digit\".\n * @attribute\n */\n get second(): DateTimeNumberOptions | null {\n return this.getAttribute('second') as DateTimeNumberOptions;\n }\n\n /**\n * The representation of the second.\n * @param v Possible values are \"numeric\", \"2-digit\".\n */\n set second(v: DateTimeNumberOptions | null) {\n if (v) {\n this.setAttribute('second', v);\n } else {\n this.removeAttribute('second');\n }\n }\n\n /**\n * The representation of the weekday.\n * Possible values are \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get weekday(): DateTimeTextOptions | null {\n return this.getAttribute('weekday') as DateTimeTextOptions;\n }\n\n /**\n * The representation of the weekday.\n * @param v Possible values are \"narrow\", \"short\", \"long\".\n */\n set weekday(v: DateTimeTextOptions | null) {\n if (v) {\n this.setAttribute('weekday', v);\n } else {\n this.removeAttribute('weekday');\n }\n }\n\n /**\n * The representation of the time zone name.\n *\n * Possible values are \"short\", \"long\".\n * @attribute\n */\n get timeZoneName(): DateTimeTimezoneOptions | null {\n return this.getAttribute('time-zone-name') as DateTimeTimezoneOptions;\n }\n\n /**\n * The representation of the time zone name.\n *\n * @param v Possible values are \"short\", \"long\".\n */\n set timeZoneName(v: DateTimeTimezoneOptions | null) {\n if (v) {\n this.setAttribute('time-zone-name', v);\n } else {\n this.removeAttribute('time-zone-name');\n }\n }\n\n /**\n * The time zone to use. The only value implementations must recognize\n * is \"UTC\"; the default is the runtime's default time zone.\n * Implementations may also recognize the time zone names of the IANA\n * time zone database, such as \"Asia/Shanghai\", \"Asia/Kolkata\",\n * \"America/New_York\".\n * @attribute\n */\n get timeZone(): string | null {\n return this.getAttribute('time-zone');\n }\n\n /**\n * The time zone to use. The only value implementations must recognize\n * is \"UTC\"; the default is the runtime's default time zone.\n * Implementations may also recognize the time zone names of the IANA\n * time zone database, such as \"Asia/Shanghai\", \"Asia/Kolkata\",\n * \"America/New_York\".\n */\n set timeZone(v: string | null) {\n if (v) {\n this.setAttribute('time-zone', v);\n } else {\n this.removeAttribute('time-zone');\n }\n }\n\n /**\n * The representation of the era.\n *\n * Possible values are \"narrow\", \"short\", \"long\".\n * @attribute\n */\n get era(): DateTimeTextOptions | null {\n return this.getAttribute('era') as DateTimeTextOptions;\n }\n\n /**\n * The representation of the era.\n *\n * @param v Possible values are \"narrow\", \"short\", \"long\".\n */\n set era(v: DateTimeTextOptions | null) {\n if (v) {\n this.setAttribute('era', v);\n } else {\n this.removeAttribute('era');\n }\n }\n\n private __hour12set: boolean | null = null;\n\n /**\n * Whether to use 12-hour time (as opposed to 24-hour time).\n * Possible values are `true` and `false`; the default is locale\n * dependent.\n */\n get hour12(): boolean | null {\n if (!this.hasAttribute('hour12') && !this.__hour12set) {\n return null;\n }\n return this.hasAttribute('hour12');\n }\n\n /**\n * Whether to use 12-hour time (as opposed to 24-hour time).\n * Possible values are `true` and `false`; the default is locale\n * dependent.\n */\n set hour12(v: boolean | null) {\n this.__hour12set = true;\n if (v) {\n this.setAttribute('hour12', '');\n } else {\n this.removeAttribute('hour12');\n }\n }\n\n private __date: Date | string | number | null = null;\n\n /**\n * A date object to render.\n * It can be a `Date` object, number representing a timestamp\n * or valid date string. The argument is parsed by `Date` constructor\n * to produce the value.\n * @attribute\n */\n get date(): Date | string | number | null {\n if (this.__date) {\n return this.__date;\n }\n return this.getAttribute('date');\n }\n\n /**\n * A date object to render.\n * It can be a `Date` object, number representing a timestamp\n * or valid date string. The argument is parsed by `Date` constructor\n * to produce the value.\n *\n * @param {Date|string|number} v The date to render\n */\n set date(v: Date | string | number | null) {\n this.__date = v;\n if (typeof v === 'string') {\n this.setAttribute('date', v);\n } else {\n this._updateLabel();\n }\n }\n\n get itemprop(): string | null {\n return this._getTimeNode().getAttribute('itemprop');\n }\n\n set itemprop(value: string | null) {\n const old = this.itemprop;\n if (old === value) {\n return;\n }\n if (old && value === null) {\n // This setter moves attribute from this element to \"<time>\" element.\n // When the attribute is removed from this then it becomes null.\n return;\n }\n const node = this._getTimeNode();\n if (value) {\n node.setAttribute('itemprop', value);\n this.removeAttribute('itemprop');\n } else {\n node.removeAttribute('itemprop');\n }\n }\n\n attributeChangedCallback(name: string, oldValue: string, newValue: string): void {\n if (name === 'itemprop') {\n this[name] = newValue;\n return;\n }\n this._updateLabel();\n }\n\n /**\n * Parses input `date` to a Date object.\n * @param date A date to parse\n */\n protected _getParsableDate(date: string | number | Date | null): Date {\n if (!date) {\n date = new Date();\n } else if (typeof date === 'string') {\n try {\n date = new Date(date);\n if (Number.isNaN(date.getDate())) {\n date = new Date();\n }\n } catch (e) {\n date = new Date();\n }\n } else if (!Number.isNaN(date)) {\n date = new Date(date);\n } else if (!(date instanceof Date)) {\n date = new Date();\n }\n return date;\n }\n\n _getIntlOptions(): Intl.DateTimeFormatOptions {\n const options: Intl.DateTimeFormatOptions = {};\n if (this.year) {\n options.year = this.year;\n }\n if (this.month) {\n options.month = this.month;\n }\n if (this.day) {\n options.day = this.day;\n }\n if (this.hour) {\n options.hour = this.hour;\n }\n if (this.minute) {\n options.minute = this.minute;\n }\n if (this.second) {\n options.second = this.second;\n }\n if (this.weekday) {\n options.weekday = this.weekday;\n }\n if (this.era) {\n options.era = this.era;\n }\n if (this.timeZoneName) {\n options.timeZoneName = this.timeZoneName;\n }\n if (this.timeZone) {\n options.timeZone = this.timeZone;\n }\n if (this.hour12 !== undefined && this.hour12 !== null) {\n options.hour12 = this.hour12;\n }\n return options;\n }\n\n /**\n * @returns A reference to a `<time>` element that is in the shadow DOM of this element.\n */\n _getTimeNode(): HTMLTimeElement {\n const root = this.shadowRoot as ShadowRoot;\n let node = root.querySelector('time');\n if (!node) {\n node = document.createElement('time');\n root.appendChild(node);\n }\n return node;\n }\n\n _updateLabel(): void {\n if (!this.parentElement) {\n return;\n }\n const date = this._getParsableDate(this.date);\n const node = this._getTimeNode();\n node.setAttribute('datetime', date.toISOString());\n /* istanbul ignore if */\n if (typeof Intl === 'undefined') {\n node.innerText = date.toString();\n return;\n }\n let locales;\n if (this.locales) {\n locales = this.locales;\n }\n const options = this._getIntlOptions();\n const value = new Intl.DateTimeFormat(locales, options).format(date);\n node.innerText = value;\n }\n}\n"]}
@@ -69,6 +69,9 @@ export default class UiDialog extends UiElement {
69
69
  set disabled(value: boolean);
70
70
  /**
71
71
  * Opens the dialog as modal when toggling dialog's open state.
72
+ *
73
+ * Setting this value after the dialog was opened has no effect.
74
+ *
72
75
  * @attribute
73
76
  */
74
77
  modal: boolean;