@api-client/ui 0.0.3 → 0.0.5
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.
- package/demo/amf/api-annotation.html +1 -0
- package/demo/amf/api-channel.html +1 -0
- package/demo/amf/api-console.html +1 -0
- package/demo/amf/api-documentation-document.html +1 -0
- package/demo/amf/api-documentation.html +1 -0
- package/demo/amf/api-editor.html +1 -0
- package/demo/amf/api-navigation.html +1 -0
- package/demo/amf/api-operation.html +1 -0
- package/demo/amf/api-payload.html +1 -0
- package/demo/amf/api-request.html +1 -0
- package/demo/amf/api-resource.html +1 -0
- package/demo/amf/api-schema-documentation.html +1 -0
- package/demo/amf/api-security-documentation.html +1 -0
- package/demo/amf/api-server-picker.html +1 -0
- package/demo/amf/api-summary.html +1 -0
- package/demo/amf/bare-components.html +2 -0
- package/demo/amf/index.html +2 -0
- package/demo/amf/oauth-authorize.html +2 -0
- package/demo/amf/request-editor.html +1 -0
- package/demo/elements/authorization/api-key.html +1 -0
- package/demo/elements/authorization/basic.html +1 -0
- package/demo/elements/authorization/bearer.html +1 -0
- package/demo/elements/authorization/cc.html +1 -0
- package/demo/elements/authorization/index.html +2 -0
- package/demo/elements/authorization/ntlm.html +1 -0
- package/demo/elements/authorization/oauth-error.html +2 -0
- package/demo/elements/authorization/oauth-popup.html +2 -0
- package/demo/elements/authorization/oauth2.html +1 -0
- package/demo/elements/authorization/oidc.html +1 -0
- package/demo/elements/authorization/redirect.html +3 -1
- package/demo/elements/context-menu/basic.html +2 -1
- package/demo/elements/context-menu/custom-data.html +2 -1
- package/demo/elements/context-menu/enabled-state.html +2 -1
- package/demo/elements/context-menu/icons.html +2 -1
- package/demo/elements/context-menu/index.html +2 -0
- package/demo/elements/context-menu/nested.html +2 -1
- package/demo/elements/context-menu/no-execute.html +2 -1
- package/demo/elements/context-menu/radio-menu.html +2 -1
- package/demo/elements/context-menu/separators.html +2 -1
- package/demo/elements/environment/environment-editor.html +1 -0
- package/demo/elements/environment/index.html +1 -0
- package/demo/elements/environment/server-editor.html +1 -1
- package/demo/elements/environment/variables-editor.html +1 -1
- package/demo/elements/har/har-viewer.html +1 -0
- package/demo/elements/highlight/index.html +1 -0
- package/demo/elements/highlight/marked-highlight.html +1 -0
- package/demo/elements/highlight/prism-highlight.html +1 -0
- package/demo/elements/http/body-editor.html +1 -0
- package/demo/elements/http/headers.html +1 -0
- package/demo/elements/http/http-assertions.html +1 -0
- package/demo/elements/http/request-editor.html +1 -0
- package/demo/elements/http/request-log.html +1 -0
- package/demo/elements/http/url-editing.html +1 -0
- package/demo/elements/icons/index.html +1 -0
- package/demo/elements/project/project-run-report.html +1 -0
- package/demo/elements/project/request-editor.html +1 -0
- package/demo/elements/ui/buttons/api-button.html +2 -1
- package/demo/elements/ui/buttons/api-icon-button.html +2 -1
- package/demo/elements/ui/buttons/segmented-buttons.html +2 -1
- package/demo/elements/ui/chip/api-chip.html +2 -1
- package/demo/elements/ui/collapse/ui-collapse.html +2 -1
- package/demo/elements/ui/dialog/ui-dialog.html +2 -1
- package/demo/elements/ui/inputs/api-checkbox.html +2 -1
- package/demo/elements/ui/inputs/api-input.html +2 -1
- package/demo/elements/ui/inputs/api-radio.html +2 -1
- package/demo/elements/ui/inputs/api-switch.html +2 -1
- package/demo/elements/ui/list/dropdown-list.html +2 -1
- package/demo/elements/ui/list/list.html +2 -1
- package/demo/elements/ui/notification/snack.html +2 -1
- package/demo/elements/ui/progress/ui-progress.html +2 -1
- package/demo/elements/ui/tabs/tabs.html +2 -1
- package/dist/amf/lib/AmfParameters.js +0 -4
- package/dist/amf/lib/AmfParameters.js.map +1 -1
- package/dist/amf/lib/navigation-layout/EndpointsTree.js +0 -2
- package/dist/amf/lib/navigation-layout/EndpointsTree.js.map +1 -1
- package/dist/amf/lib/navigation-layout/NaturalTree.js +0 -2
- package/dist/amf/lib/navigation-layout/NaturalTree.js.map +1 -1
- package/dist/amf/store/AmfGraphStore.js +0 -2
- package/dist/amf/store/AmfGraphStore.js.map +1 -1
- package/dist/amf/store/AmfStore.js +0 -7
- package/dist/amf/store/AmfStore.js.map +1 -1
- package/dist/bindings/base/HttpClientStoreBindings.js +4 -1
- package/dist/bindings/base/HttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/base/PlatformBindings.js +6 -10
- package/dist/bindings/base/PlatformBindings.js.map +1 -1
- package/dist/bindings/base/ProxyBindings.js +9 -6
- package/dist/bindings/base/ProxyBindings.js.map +1 -1
- package/dist/bindings/base/SharedWorkerThread.js +4 -1
- package/dist/bindings/base/SharedWorkerThread.js.map +1 -1
- package/dist/bindings/base/StoreBindings.js +162 -170
- package/dist/bindings/base/StoreBindings.js.map +1 -1
- package/dist/bindings/web/WebConfigurationBindings.js +22 -24
- package/dist/bindings/web/WebConfigurationBindings.js.map +1 -1
- package/dist/bindings/web/WebFileBindings.js +7 -4
- package/dist/bindings/web/WebFileBindings.js.map +1 -1
- package/dist/bindings/web/WebHttpClientStoreBindings.js +19 -21
- package/dist/bindings/web/WebHttpClientStoreBindings.js.map +1 -1
- package/dist/bindings/web/WebNavigationBindings.js +4 -1
- package/dist/bindings/web/WebNavigationBindings.js.map +1 -1
- package/dist/bindings/web/WebProxyBindings.js +5 -6
- package/dist/bindings/web/WebProxyBindings.js.map +1 -1
- package/dist/bindings/web/WebStoreBindings.js +39 -44
- package/dist/bindings/web/WebStoreBindings.js.map +1 -1
- package/dist/contextual-menu/ContextualMenu.js +10 -19
- package/dist/contextual-menu/ContextualMenu.js.map +1 -1
- package/dist/contextual-menu/ContextualMenuElement.js +4 -32
- package/dist/contextual-menu/ContextualMenuElement.js.map +1 -1
- package/dist/contextual-menu/MenuItem.js +0 -12
- package/dist/contextual-menu/MenuItem.js.map +1 -1
- package/dist/define/amf/api-annotation-document.js +1 -1
- package/dist/define/amf/api-annotation-document.js.map +1 -1
- package/dist/define/amf/api-authorization-editor.js +1 -1
- package/dist/define/amf/api-authorization-editor.js.map +1 -1
- package/dist/define/amf/api-channel-document.js +1 -1
- package/dist/define/amf/api-channel-document.js.map +1 -1
- package/dist/define/amf/api-documentation-document.js +1 -1
- package/dist/define/amf/api-documentation-document.js.map +1 -1
- package/dist/define/amf/api-documentation.js +1 -1
- package/dist/define/amf/api-documentation.js.map +1 -1
- package/dist/define/amf/api-navigation.js +1 -1
- package/dist/define/amf/api-navigation.js.map +1 -1
- package/dist/define/amf/api-operation-document.js +1 -1
- package/dist/define/amf/api-operation-document.js.map +1 -1
- package/dist/define/amf/api-parameter-document.js +1 -1
- package/dist/define/amf/api-parameter-document.js.map +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js +1 -1
- package/dist/define/amf/api-parametrized-security-scheme.js.map +1 -1
- package/dist/define/amf/api-payload-document.js +1 -1
- package/dist/define/amf/api-payload-document.js.map +1 -1
- package/dist/define/amf/api-request-document.js +1 -1
- package/dist/define/amf/api-request-document.js.map +1 -1
- package/dist/define/amf/api-request-editor.js +1 -1
- package/dist/define/amf/api-request-editor.js.map +1 -1
- package/dist/define/amf/api-request.js +1 -1
- package/dist/define/amf/api-request.js.map +1 -1
- package/dist/define/amf/api-resource-document.js +1 -1
- package/dist/define/amf/api-resource-document.js.map +1 -1
- package/dist/define/amf/api-response-document.js +1 -1
- package/dist/define/amf/api-response-document.js.map +1 -1
- package/dist/define/amf/api-schema-document.js +1 -1
- package/dist/define/amf/api-schema-document.js.map +1 -1
- package/dist/define/amf/api-security-document.js +1 -1
- package/dist/define/amf/api-security-document.js.map +1 -1
- package/dist/define/amf/api-security-requirement-document.js +1 -1
- package/dist/define/amf/api-security-requirement-document.js.map +1 -1
- package/dist/define/amf/api-server-picker.js +1 -1
- package/dist/define/amf/api-server-picker.js.map +1 -1
- package/dist/define/amf/api-summary.js +1 -1
- package/dist/define/amf/api-summary.js.map +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-apikey-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-basic-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-bearer-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oauth2-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-oidc-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-passthrough-authorization.js.map +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js +1 -1
- package/dist/define/amf/authorization/amf-ramlcustom-authorization.js.map +1 -1
- package/dist/define/authorization/apikey-authorization.js +1 -1
- package/dist/define/authorization/apikey-authorization.js.map +1 -1
- package/dist/define/authorization/basic-authorization.js +1 -1
- package/dist/define/authorization/basic-authorization.js.map +1 -1
- package/dist/define/authorization/bearer-authorization.js +1 -1
- package/dist/define/authorization/bearer-authorization.js.map +1 -1
- package/dist/define/authorization/cc-authorization.js +1 -1
- package/dist/define/authorization/cc-authorization.js.map +1 -1
- package/dist/define/authorization/ntlm-authorization.js +1 -1
- package/dist/define/authorization/ntlm-authorization.js.map +1 -1
- package/dist/define/authorization/oauth2-authorization.js +1 -1
- package/dist/define/authorization/oauth2-authorization.js.map +1 -1
- package/dist/define/authorization/oidc-authorization.js +1 -1
- package/dist/define/authorization/oidc-authorization.js.map +1 -1
- package/dist/define/contextual-menu/contextual-menu.js +1 -1
- package/dist/define/contextual-menu/contextual-menu.js.map +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js +1 -1
- package/dist/define/dialog/confirm-delete-dialog.js.map +1 -1
- package/dist/define/dialog/rename-dialog.js +1 -1
- package/dist/define/dialog/rename-dialog.js.map +1 -1
- package/dist/define/files/share-file.js +1 -1
- package/dist/define/files/share-file.js.map +1 -1
- package/dist/define/har/har-viewer.js +1 -1
- package/dist/define/har/har-viewer.js.map +1 -1
- package/dist/define/highlight/marked-highlight.js +1 -1
- package/dist/define/highlight/marked-highlight.js.map +1 -1
- package/dist/define/highlight/prism-highlight.js +1 -1
- package/dist/define/highlight/prism-highlight.js.map +1 -1
- package/dist/define/http/http-assertions.js +1 -1
- package/dist/define/http/http-assertions.js.map +1 -1
- package/dist/define/http/http-body-editor.js +1 -1
- package/dist/define/http/http-body-editor.js.map +1 -1
- package/dist/define/http/http-body-multipart-editor.js +1 -1
- package/dist/define/http/http-body-multipart-editor.js.map +1 -1
- package/dist/define/http/http-body-text-editor.js +1 -1
- package/dist/define/http/http-body-text-editor.js.map +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js +1 -1
- package/dist/define/http/http-body-urlencoded-editor.js.map +1 -1
- package/dist/define/http/http-headers-form.js +1 -1
- package/dist/define/http/http-headers-form.js.map +1 -1
- package/dist/define/http/http-log-body.js +1 -1
- package/dist/define/http/http-log-body.js.map +1 -1
- package/dist/define/http/http-log-headers.js +1 -1
- package/dist/define/http/http-log-headers.js.map +1 -1
- package/dist/define/http/http-log-timings.js +1 -1
- package/dist/define/http/http-log-timings.js.map +1 -1
- package/dist/define/http/http-request-config.js +1 -1
- package/dist/define/http/http-request-config.js.map +1 -1
- package/dist/define/http/http-request-editor.js +1 -1
- package/dist/define/http/http-request-editor.js.map +1 -1
- package/dist/define/http/http-request-log.js +1 -1
- package/dist/define/http/http-request-log.js.map +1 -1
- package/dist/define/http/http-snippets.js +1 -1
- package/dist/define/http/http-snippets.js.map +1 -1
- package/dist/define/http/http-url-input.js +1 -1
- package/dist/define/http/http-url-input.js.map +1 -1
- package/dist/define/http/http-url-params-form.js +1 -1
- package/dist/define/http/http-url-params-form.js.map +1 -1
- package/dist/define/http-project/http-project-request-history.js +1 -1
- package/dist/define/http-project/http-project-request-history.js.map +1 -1
- package/dist/define/http-project/http-project-request.js +2 -2
- package/dist/define/http-project/http-project-request.js.map +1 -1
- package/dist/define/http-project/project-navigation.js +1 -1
- package/dist/define/http-project/project-navigation.js.map +1 -1
- package/dist/define/http-project/project-run-report.js +1 -1
- package/dist/define/http-project/project-run-report.js.map +1 -1
- package/dist/define/http-project/project-runner.js +2 -2
- package/dist/define/http-project/project-runner.js.map +1 -1
- package/dist/define/layout/split-view.js +1 -1
- package/dist/define/layout/split-view.js.map +1 -1
- package/dist/define/schema-design/schema-design-navigation.js +1 -1
- package/dist/define/schema-design/schema-design-navigation.js.map +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js +1 -1
- package/dist/define/schema-design/schema-namespace-selector.js.map +1 -1
- package/dist/define/ui/ui-button.js +1 -1
- package/dist/define/ui/ui-button.js.map +1 -1
- package/dist/define/ui/ui-chip.js +1 -1
- package/dist/define/ui/ui-chip.js.map +1 -1
- package/dist/define/ui/ui-collapse.js +1 -1
- package/dist/define/ui/ui-collapse.js.map +1 -1
- package/dist/define/ui/ui-dialog.js +1 -1
- package/dist/define/ui/ui-dialog.js.map +1 -1
- package/dist/define/ui/ui-dropdown-list.js +1 -1
- package/dist/define/ui/ui-dropdown-list.js.map +1 -1
- package/dist/define/ui/ui-icon-button.js +1 -1
- package/dist/define/ui/ui-icon-button.js.map +1 -1
- package/dist/define/ui/ui-icon.js +1 -1
- package/dist/define/ui/ui-icon.js.map +1 -1
- package/dist/define/ui/ui-list-item.js +1 -1
- package/dist/define/ui/ui-list-item.js.map +1 -1
- package/dist/define/ui/ui-list.js +1 -1
- package/dist/define/ui/ui-list.js.map +1 -1
- package/dist/define/ui/ui-listbox.js +1 -1
- package/dist/define/ui/ui-listbox.js.map +1 -1
- package/dist/define/ui/ui-progress.js +1 -1
- package/dist/define/ui/ui-progress.js.map +1 -1
- package/dist/define/ui/ui-segmented-button-set.js +1 -1
- package/dist/define/ui/ui-segmented-button-set.js.map +1 -1
- package/dist/define/ui/ui-segmented-button.js +1 -1
- package/dist/define/ui/ui-segmented-button.js.map +1 -1
- package/dist/define/ui/ui-snackbar.js +1 -1
- package/dist/define/ui/ui-snackbar.js.map +1 -1
- package/dist/define/ui/ui-tab.js +1 -1
- package/dist/define/ui/ui-tab.js.map +1 -1
- package/dist/define/ui/ui-tabs.js +1 -1
- package/dist/define/ui/ui-tabs.js.map +1 -1
- package/dist/directives/data-attr.js +0 -1
- package/dist/directives/data-attr.js.map +1 -1
- package/dist/elements/ApiElement.js +0 -7
- package/dist/elements/ApiElement.js.map +1 -1
- package/dist/elements/amf/ApiAnnotationDocument.element.js +0 -2
- package/dist/elements/amf/ApiAnnotationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiAuthorizationEditor.element.js +0 -32
- package/dist/elements/amf/ApiAuthorizationEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentation.element.js +0 -91
- package/dist/elements/amf/ApiDocumentation.element.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationBase.js +0 -9
- package/dist/elements/amf/ApiDocumentationBase.js.map +1 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js +0 -1
- package/dist/elements/amf/ApiDocumentationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiNavigation.element.js +0 -97
- package/dist/elements/amf/ApiNavigation.element.js.map +1 -1
- package/dist/elements/amf/ApiOperationDocument.element.js +0 -76
- package/dist/elements/amf/ApiOperationDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParameterDocument.element.js +0 -3
- package/dist/elements/amf/ApiParameterDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js +0 -1
- package/dist/elements/amf/ApiParametrizedSecurityScheme.element.js.map +1 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js +0 -1
- package/dist/elements/amf/ApiPayloadDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequest.element.js +0 -78
- package/dist/elements/amf/ApiRequest.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestDocument.element.js +0 -38
- package/dist/elements/amf/ApiRequestDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiRequestEditor.element.js +0 -118
- package/dist/elements/amf/ApiRequestEditor.element.js.map +1 -1
- package/dist/elements/amf/ApiResourceDocument.element.js +0 -75
- package/dist/elements/amf/ApiResourceDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiResponseDocument.element.js +0 -17
- package/dist/elements/amf/ApiResponseDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSchemaDocument.element.js +0 -28
- package/dist/elements/amf/ApiSchemaDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityDocument.element.js +0 -28
- package/dist/elements/amf/ApiSecurityDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js +0 -1
- package/dist/elements/amf/ApiSecurityRequirementDocument.element.js.map +1 -1
- package/dist/elements/amf/ApiServerPicker.element.js +2 -65
- package/dist/elements/amf/ApiServerPicker.element.js.map +1 -1
- package/dist/elements/amf/ApiSummary.element.js +0 -26
- package/dist/elements/amf/ApiSummary.element.js.map +1 -1
- package/dist/elements/amf/authorization/AmfApiKey.js +0 -5
- package/dist/elements/amf/authorization/AmfApiKey.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBasic.js +0 -4
- package/dist/elements/amf/authorization/AmfBasic.js.map +1 -1
- package/dist/elements/amf/authorization/AmfBearer.js +0 -4
- package/dist/elements/amf/authorization/AmfBearer.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOauth2.js +0 -13
- package/dist/elements/amf/authorization/AmfOauth2.js.map +1 -1
- package/dist/elements/amf/authorization/AmfOidc.js +0 -4
- package/dist/elements/amf/authorization/AmfOidc.js.map +1 -1
- package/dist/elements/amf/authorization/AmfPassThrough.js +0 -6
- package/dist/elements/amf/authorization/AmfPassThrough.js.map +1 -1
- package/dist/elements/amf/authorization/AmfRamlCustom.js +0 -6
- package/dist/elements/amf/authorization/AmfRamlCustom.js.map +1 -1
- package/dist/elements/authorization/OAuth2Authorize.js +0 -14
- package/dist/elements/authorization/OAuth2Authorize.js.map +1 -1
- package/dist/elements/authorization/OidcAuthorize.js +0 -14
- package/dist/elements/authorization/OidcAuthorize.js.map +1 -1
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js +0 -2
- package/dist/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/Authorization.js +18 -32
- package/dist/elements/authorization/ui/Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/CcAuthorization.js +1 -3
- package/dist/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/dist/elements/authorization/ui/OAuth2Authorization.js +21 -50
- package/dist/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/dist/elements/authorization/ui/OidcAuthorization.js +4 -6
- package/dist/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/dist/elements/code/HttpSnippets.js +9 -8
- package/dist/elements/code/HttpSnippets.js.map +1 -1
- package/dist/elements/dialog/ConfirmDelete.js +0 -12
- package/dist/elements/dialog/ConfirmDelete.js.map +1 -1
- package/dist/elements/dialog/Rename.js +0 -6
- package/dist/elements/dialog/Rename.js.map +1 -1
- package/dist/elements/environment/EnvironmentEditor.js +8 -11
- package/dist/elements/environment/EnvironmentEditor.js.map +1 -1
- package/dist/elements/environment/ServerEditor.js +7 -45
- package/dist/elements/environment/ServerEditor.js.map +1 -1
- package/dist/elements/environment/VariablesEditor.js +7 -12
- package/dist/elements/environment/VariablesEditor.js.map +1 -1
- package/dist/elements/files/ShareFile.js +19 -57
- package/dist/elements/files/ShareFile.js.map +1 -1
- package/dist/elements/har/HarViewer.js +6 -7
- package/dist/elements/har/HarViewer.js.map +1 -1
- package/dist/elements/highlight/MarkedHighlight.js +4 -56
- package/dist/elements/highlight/MarkedHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlight.js +9 -18
- package/dist/elements/highlight/PrismHighlight.js.map +1 -1
- package/dist/elements/highlight/PrismHighlighter.js +4 -6
- package/dist/elements/highlight/PrismHighlighter.js.map +1 -1
- package/dist/elements/http/BodyEditor.js +21 -33
- package/dist/elements/http/BodyEditor.js.map +1 -1
- package/dist/elements/http/BodyMultipartEditor.js +17 -18
- package/dist/elements/http/BodyMultipartEditor.js.map +1 -1
- package/dist/elements/http/BodyTextEditor.js +2 -15
- package/dist/elements/http/BodyTextEditor.js.map +1 -1
- package/dist/elements/http/BodyUrlEncodedEditor.js +20 -21
- package/dist/elements/http/BodyUrlEncodedEditor.js.map +1 -1
- package/dist/elements/http/HeadersForm.js +16 -17
- package/dist/elements/http/HeadersForm.js.map +1 -1
- package/dist/elements/http/HttpAssertions.js +8 -6
- package/dist/elements/http/HttpAssertions.js.map +1 -1
- package/dist/elements/http/LogBody.js +10 -21
- package/dist/elements/http/LogBody.js.map +1 -1
- package/dist/elements/http/LogHeaders.js +4 -23
- package/dist/elements/http/LogHeaders.js.map +1 -1
- package/dist/elements/http/LogTimings.js +11 -13
- package/dist/elements/http/LogTimings.js.map +1 -1
- package/dist/elements/http/RequestConfigElement.js +7 -4
- package/dist/elements/http/RequestConfigElement.js.map +1 -1
- package/dist/elements/http/RequestEditor.js +54 -88
- package/dist/elements/http/RequestEditor.js.map +1 -1
- package/dist/elements/http/RequestLog.js +9 -14
- package/dist/elements/http/RequestLog.js.map +1 -1
- package/dist/elements/http/UrlInput.js +15 -25
- package/dist/elements/http/UrlInput.js.map +1 -1
- package/dist/elements/http/UrlParamsForm.js +16 -13
- package/dist/elements/http/UrlParamsForm.js.map +1 -1
- package/dist/elements/layout/LayoutManager.js +16 -24
- package/dist/elements/layout/LayoutManager.js.map +1 -1
- package/dist/elements/layout/LayoutPanelElement.js +17 -23
- package/dist/elements/layout/LayoutPanelElement.js.map +1 -1
- package/dist/elements/layout/SplitItem.js +4 -12
- package/dist/elements/layout/SplitItem.js.map +1 -1
- package/dist/elements/layout/SplitLayout.js +18 -24
- package/dist/elements/layout/SplitLayout.js.map +1 -1
- package/dist/elements/layout/SplitPanel.js +10 -16
- package/dist/elements/layout/SplitPanel.js.map +1 -1
- package/dist/elements/layout/SplitView.js +17 -26
- package/dist/elements/layout/SplitView.js.map +1 -1
- package/dist/elements/navigation/AppNavigationElement.js +8 -47
- package/dist/elements/navigation/AppNavigationElement.js.map +1 -1
- package/dist/elements/navigation/AppNavigationItemElement.js +19 -24
- package/dist/elements/navigation/AppNavigationItemElement.js.map +1 -1
- package/dist/elements/project/HttpProjectRequest.js +0 -38
- package/dist/elements/project/HttpProjectRequest.js.map +1 -1
- package/dist/elements/project/HttpProjectRequestHistory.js +9 -35
- package/dist/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/dist/elements/project/ProjectNavigation.js +0 -4
- package/dist/elements/project/ProjectNavigation.js.map +1 -1
- package/dist/elements/project/ProjectRunReport.js +4 -15
- package/dist/elements/project/ProjectRunReport.js.map +1 -1
- package/dist/elements/project/ProjectRunner.js +2 -47
- package/dist/elements/project/ProjectRunner.js.map +1 -1
- package/dist/elements/schema-design/AssociationFormElement.js +0 -13
- package/dist/elements/schema-design/AssociationFormElement.js.map +1 -1
- package/dist/elements/schema-design/DataEntityEditorElement.js +0 -22
- package/dist/elements/schema-design/DataEntityEditorElement.js.map +1 -1
- package/dist/elements/schema-design/DataModelVisualizationElement.js +0 -16
- package/dist/elements/schema-design/DataModelVisualizationElement.js.map +1 -1
- package/dist/elements/schema-design/DataSchemaDocument.js +0 -36
- package/dist/elements/schema-design/DataSchemaDocument.js.map +1 -1
- package/dist/elements/schema-design/EntityFormElement.js +0 -18
- package/dist/elements/schema-design/EntityFormElement.js.map +1 -1
- package/dist/elements/schema-design/PropertyFormElement.js +0 -12
- package/dist/elements/schema-design/PropertyFormElement.js.map +1 -1
- package/dist/elements/schema-design/SchemaDesignNavigation.js +0 -9
- package/dist/elements/schema-design/SchemaDesignNavigation.js.map +1 -1
- package/dist/elements/schema-design/SchemaNamespaceSelector.js +0 -9
- package/dist/elements/schema-design/SchemaNamespaceSelector.js.map +1 -1
- package/dist/elements/user/UserAvatarElement.js +0 -9
- package/dist/elements/user/UserAvatarElement.js.map +1 -1
- package/dist/events/http-client/models/CertificatesEvents.js +2 -2
- package/dist/events/http-client/models/CertificatesEvents.js.map +1 -1
- package/dist/http-client/idb/Base.js +5 -10
- package/dist/http-client/idb/Base.js.map +1 -1
- package/dist/http-client/idb/LegacyMockedStore.js +0 -1
- package/dist/http-client/idb/LegacyMockedStore.js.map +1 -1
- package/dist/http-client/idb/MockedStore.js +3 -1
- package/dist/http-client/idb/MockedStore.js.map +1 -1
- package/dist/http-client/store/DataImportProcessor.js +0 -3
- package/dist/http-client/store/DataImportProcessor.js.map +1 -1
- package/dist/http-client/store/HttpClientIdbDatabase.js +8 -7
- package/dist/http-client/store/HttpClientIdbDatabase.js.map +1 -1
- package/dist/http-client/store/IdbThread.js +23 -20
- package/dist/http-client/store/IdbThread.js.map +1 -1
- package/dist/http-client/store/idb/IdbProjectUi.js +4 -1
- package/dist/http-client/store/idb/IdbProjectUi.js.map +1 -1
- package/dist/http-client/store/idb/IdbStore.js +0 -2
- package/dist/http-client/store/idb/IdbStore.js.map +1 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js +4 -1
- package/dist/http-client/store/idb/IdbUrlHistory.js.map +1 -1
- package/dist/http-client/store/idb/IdbWsHistory.js +4 -1
- package/dist/http-client/store/idb/IdbWsHistory.js.map +1 -1
- package/dist/lib/chart/HttpHistoryChart.js +7 -8
- package/dist/lib/chart/HttpHistoryChart.js.map +1 -1
- package/dist/mixins/FileDropMixin.js +0 -1
- package/dist/mixins/FileDropMixin.js.map +1 -1
- package/dist/mixins/RenderableMixin.js +11 -15
- package/dist/mixins/RenderableMixin.js.map +1 -1
- package/dist/pages/ApplicationScreen.js +34 -55
- package/dist/pages/ApplicationScreen.js.map +1 -1
- package/dist/pages/api-client/ApiClient.screen.js +11 -20
- package/dist/pages/api-client/ApiClient.screen.js.map +1 -1
- package/dist/pages/api-client/Authenticate.screen.js +4 -6
- package/dist/pages/api-client/Authenticate.screen.js.map +1 -1
- package/dist/pages/api-client/StoreConfig.screen.js +21 -37
- package/dist/pages/api-client/StoreConfig.screen.js.map +1 -1
- package/dist/pages/api-client/Telemetry.screen.js +1 -2
- package/dist/pages/api-client/Telemetry.screen.js.map +1 -1
- package/dist/pages/api-client/pages/Files.page.js +6 -27
- package/dist/pages/api-client/pages/Files.page.js.map +1 -1
- package/dist/pages/api-client/pages/Settings.page.js +2 -4
- package/dist/pages/api-client/pages/Settings.page.js.map +1 -1
- package/dist/pages/api-client/pages/Trash.page.js +2 -13
- package/dist/pages/api-client/pages/Trash.page.js.map +1 -1
- package/dist/pages/demo/DemoPage.d.ts.map +1 -1
- package/dist/pages/demo/DemoPage.js +25 -24
- package/dist/pages/demo/DemoPage.js.map +1 -1
- package/dist/pages/http-project/HttpProject.screen.js +25 -35
- package/dist/pages/http-project/HttpProject.screen.js.map +1 -1
- package/dist/pages/schema-design/SchemaDesigner.screen.js +14 -27
- package/dist/pages/schema-design/SchemaDesigner.screen.js.map +1 -1
- package/dist/store/HttpStore.js +0 -3
- package/dist/store/HttpStore.js.map +1 -1
- package/dist/store/UserCache.js +5 -5
- package/dist/store/UserCache.js.map +1 -1
- package/dist/ui/UiElement.js +4 -5
- package/dist/ui/UiElement.js.map +1 -1
- package/dist/ui/button/SegmentedButton.js +9 -11
- package/dist/ui/button/SegmentedButton.js.map +1 -1
- package/dist/ui/button/SegmentedButtonsSet.js +6 -7
- package/dist/ui/button/SegmentedButtonsSet.js.map +1 -1
- package/dist/ui/button/UiButton.js +17 -39
- package/dist/ui/button/UiButton.js.map +1 -1
- package/dist/ui/button/UiIconButton.js +9 -35
- package/dist/ui/button/UiIconButton.js.map +1 -1
- package/dist/ui/chip/UiChip.js +9 -49
- package/dist/ui/chip/UiChip.js.map +1 -1
- package/dist/ui/collapse/UiCollapse.js +15 -20
- package/dist/ui/collapse/UiCollapse.js.map +1 -1
- package/dist/ui/controllers/ActionController.js +143 -144
- package/dist/ui/controllers/ActionController.js.map +1 -1
- package/dist/ui/controllers/RadioSelectionController.js +0 -1
- package/dist/ui/controllers/RadioSelectionController.js.map +1 -1
- package/dist/ui/date/DateTime.js +3 -3
- package/dist/ui/date/DateTime.js.map +1 -1
- package/dist/ui/dialog/UiDialog.d.ts +1 -1
- package/dist/ui/dialog/UiDialog.d.ts.map +1 -1
- package/dist/ui/dialog/UiDialog.js +19 -41
- package/dist/ui/dialog/UiDialog.js.map +1 -1
- package/dist/ui/effects/ripple.js +20 -18
- package/dist/ui/effects/ripple.js.map +1 -1
- package/dist/ui/effects/rippleDirective.js +6 -7
- package/dist/ui/effects/rippleDirective.js.map +1 -1
- package/dist/ui/icons/UiIcon.js +4 -3
- package/dist/ui/icons/UiIcon.js.map +1 -1
- package/dist/ui/input/CheckboxElement.js +12 -10
- package/dist/ui/input/CheckboxElement.js.map +1 -1
- package/dist/ui/input/CheckedElement.js +2 -13
- package/dist/ui/input/CheckedElement.js.map +1 -1
- package/dist/ui/input/Input.js +169 -234
- package/dist/ui/input/Input.js.map +1 -1
- package/dist/ui/input/RadioElement.js +13 -11
- package/dist/ui/input/RadioElement.js.map +1 -1
- package/dist/ui/input/SwitchElement.js +0 -18
- package/dist/ui/input/SwitchElement.js.map +1 -1
- package/dist/ui/input/TextAreaElement.js +0 -15
- package/dist/ui/input/TextAreaElement.js.map +1 -1
- package/dist/ui/list/DividerElement.js +5 -10
- package/dist/ui/list/DividerElement.js.map +1 -1
- package/dist/ui/list/UiDropdownList.js +7 -48
- package/dist/ui/list/UiDropdownList.js.map +1 -1
- package/dist/ui/list/UiList.js +3 -15
- package/dist/ui/list/UiList.js.map +1 -1
- package/dist/ui/list/UiListItem.js +4 -17
- package/dist/ui/list/UiListItem.js.map +1 -1
- package/dist/ui/list/UiListbox.js +0 -1
- package/dist/ui/list/UiListbox.js.map +1 -1
- package/dist/ui/notification/SnackNotifications.js +1 -2
- package/dist/ui/notification/SnackNotifications.js.map +1 -1
- package/dist/ui/notification/Snackbar.js +27 -51
- package/dist/ui/notification/Snackbar.js.map +1 -1
- package/dist/ui/progress/Range.js +24 -23
- package/dist/ui/progress/Range.js.map +1 -1
- package/dist/ui/progress/UiProgress.js +0 -11
- package/dist/ui/progress/UiProgress.js.map +1 -1
- package/dist/ui/table/DataTable.js +7 -12
- package/dist/ui/table/DataTable.js.map +1 -1
- package/dist/ui/tabs/UiTab.js +24 -25
- package/dist/ui/tabs/UiTab.js.map +1 -1
- package/dist/ui/tabs/UiTabs.js +21 -35
- package/dist/ui/tabs/UiTabs.js.map +1 -1
- package/dist/visualization/elements/VizWorkspaceElement.js +12 -21
- package/dist/visualization/elements/VizWorkspaceElement.js.map +1 -1
- package/dist/visualization/lib/AssociationAnchors.js +16 -28
- package/dist/visualization/lib/AssociationAnchors.js.map +1 -1
- package/dist/visualization/lib/Point.js +0 -2
- package/dist/visualization/lib/Point.js.map +1 -1
- package/dist/visualization/lib/SelectionManager.js +10 -11
- package/dist/visualization/lib/SelectionManager.js.map +1 -1
- package/dist/visualization/lib/WorkspaceAlignment.js +0 -1
- package/dist/visualization/lib/WorkspaceAlignment.js.map +1 -1
- package/dist/visualization/lib/WorkspaceDebugging.js +5 -8
- package/dist/visualization/lib/WorkspaceDebugging.js.map +1 -1
- package/dist/visualization/lib/WorkspaceEdges.js +17 -19
- package/dist/visualization/lib/WorkspaceEdges.js.map +1 -1
- package/dist/visualization/lib/WorkspaceGestures.js +0 -3
- package/dist/visualization/lib/WorkspaceGestures.js.map +1 -1
- package/dist/visualization/lib/WorkspaceSizing.js +4 -6
- package/dist/visualization/lib/WorkspaceSizing.js.map +1 -1
- package/dist/visualization/lib/lines/RectilinearLine.js +8 -34
- package/dist/visualization/lib/lines/RectilinearLine.js.map +1 -1
- package/dist/visualization/lib/tips/RectilinearTip.js +0 -1
- package/dist/visualization/lib/tips/RectilinearTip.js.map +1 -1
- package/dist/visualization/lib/tips/TipArtist.js +0 -3
- package/dist/visualization/lib/tips/TipArtist.js.map +1 -1
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js +3 -5
- package/dist/visualization/plugin/dnd/DragAndDropPlugin.js.map +1 -1
- package/dist/visualization/plugin/group-selection/GroupSelection.js +19 -19
- package/dist/visualization/plugin/group-selection/GroupSelection.js.map +1 -1
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js +21 -38
- package/dist/visualization/plugin/positioning/WorkspaceLayout.js.map +1 -1
- package/package.json +3 -2
- package/src/pages/demo/DemoPage.ts +12 -11
- package/src/ui/dialog/UiDialog.ts +6 -4
- package/test/ui/dialog/UiDialog.test.ts +236 -0
- package/tsconfig.json +2 -2
- package/demo/themes/default.css +0 -0
- package/demo/themes/m3/theme.dark.css +0 -40
- package/demo/themes/m3/theme.light.css +0 -40
- package/demo/themes/m3/tokens.css +0 -291
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogHeaders.js","sourceRoot":"","sources":["../../../src/elements/http/LogHeaders.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { LitElement, html, TemplateResult, PropertyValues } from \"lit\";\nimport { IRequestLog, RequestLog, SentRequest, Response, ErrorResponse, Headers, Events as CoreEvents } from \"@api-client/core/build/browser.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from 'lit/directives/class-map.js';\nimport { statusTemplate } from \"./HttpStatus.js\";\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-divider.js';\n\n/**\n * An element that renders summary headers view for an HTTP response.\n */\nexport default class LogHeaders extends LitElement {\n private httpLogInternal?: IRequestLog | RequestLog;\n\n /**\n * This property is set when the `httpLog` is set. It always represent an instance of the `RequestLog` (or undefined) regardless of the input format.\n */\n @state() protected effectiveLog?: RequestLog;\n\n /**\n * The request log to render. When not set it renders nothing.\n */\n @property({ type: Object })\n get httpLog(): IRequestLog | RequestLog | undefined {\n return this.httpLogInternal;\n }\n\n set httpLog(value: IRequestLog | RequestLog | undefined) {\n const old = this.httpLogInternal;\n if (old === value) {\n return;\n }\n this.httpLogInternal = value;\n if (value) {\n if (typeof (value as RequestLog).toJSON === 'function') {\n this.effectiveLog = value as RequestLog;\n } else {\n this.effectiveLog = new RequestLog(value as IRequestLog);\n }\n } else {\n this.effectiveLog = undefined;\n }\n this.parseHeaders();\n }\n\n @state() protected activeItem?: string;\n\n @state() protected focusedItem?: string;\n\n /**\n * The currently focused node.\n */\n protected focusedElement?: HTMLElement;\n\n /**\n * Parsed request headers, when the request is set.\n */\n @state() protected requestHeaders?: Headers;\n\n /**\n * Parsed response headers, when the response is set.\n */\n @state() protected responseHeaders?: Headers;\n\n /**\n * The list of ids of tree parents that are opened.\n */\n protected openedParents: string [] = ['general', 'response-headers', 'request-headers'];\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeydown.bind(this));\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('dblclick', this.handleDblclick.bind(this));\n this.addEventListener('focus', this.handleFocus.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.manageTabindex();\n }\n\n protected override updated(cp: PropertyValues): void {\n super.updated(cp);\n if (cp.has('focusedItem')) {\n this.manageTabindex();\n }\n }\n\n /**\n * Manages the state of the tabindex attribute of the element.\n * When the user changes the focus in the tree then the tabindex is removed from the element \n * and moved to the focused element.\n * When there's no focused element, the tabindex is again set on the element.\n */\n protected manageTabindex(): void {\n const id = this.focusedItem;\n if (id && this.hasAttribute('tabindex')) {\n this.removeAttribute('tabindex');\n } else if (!id && !this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n if (id) {\n const node = this.shadowRoot?.querySelector(`[data-id=\"${id}\"]`) as HTMLElement | null;\n if (node) {\n node.focus();\n }\n }\n }\n\n /**\n * Processes the request and response headers when the setter is invoked.\n * This way we can cache results instead of generating the headers in the \n * template.\n */\n protected parseHeaders(): void {\n const { effectiveLog } = this;\n if (!effectiveLog) {\n this.requestHeaders = undefined;\n this.responseHeaders = undefined;\n return;\n }\n const { request, response } = effectiveLog;\n if (request && request.headers) {\n this.requestHeaders = new Headers(request.headers);\n }\n if (response && response.headers) {\n this.responseHeaders = new Headers(response.headers);\n }\n }\n\n protected handleFocus(): void {\n let node: HTMLLIElement | undefined | null;\n if (this.focusedItem) {\n node = this.shadowRoot?.querySelector(`[data-id=\"${this.focusedItem}\"]`) as HTMLLIElement;\n } else {\n node = this.shadowRoot?.querySelector(`[data-id=\"general\"]`) as HTMLLIElement;\n }\n if (node) {\n node.focus();\n }\n }\n\n protected handleKeydown(e: KeyboardEvent): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight': this.handleItemRight(node); break;\n case 'ArrowLeft': this.handleItemLeft(node); break;\n case 'ArrowDown': this.handleItemDown(node); break;\n case 'ArrowUp': this.handleItemUp(node); break;\n case 'Home': this.handleHome(); break;\n case 'End': this.handleEnd(); break;\n case 'Enter': this.handleItemEnter(node); break;\n case 'c': this.handleItemC(e, node); break;\n default:\n }\n }\n\n protected async handleItemC(e: KeyboardEvent, node: HTMLElement): Promise<void> {\n if (!e.ctrlKey || !navigator.clipboard) {\n return;\n }\n const txt = node.textContent?.trim();\n if (txt) {\n await navigator.clipboard.writeText(txt);\n }\n CoreEvents.Telemetry.event({\n category: 'Usage',\n action: 'Click',\n label: 'Response header clipboard copy',\n }, this);\n }\n\n protected handleClick(e: Event): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n this.focusListItem(node);\n }\n\n protected handleDblclick(e: Event): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n if (!node.classList.contains('tree-parent')) {\n return;\n }\n const key = node.dataset.id as string;\n this.toggleParent(key);\n this.requestUpdate();\n }\n\n protected toggleParent(key: string): void {\n const index = this.openedParents.indexOf(key);\n if (index >= 0) {\n this.openedParents.splice(index, 1);\n } else {\n this.openedParents.push(key);\n }\n }\n\n protected findClosestListItem(e: Event): HTMLElement | undefined {\n const path = e.composedPath();\n while (path.length) {\n const target = path.shift() as Node;\n if (!target) {\n break;\n }\n if (target.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const elm = target as HTMLElement;\n if (elm.classList.contains('tree-item') || elm.classList.contains('tree-parent')) {\n return elm;\n }\n }\n return undefined;\n }\n\n /**\n * 1. When focus is on a closed node, opens the node; focus does not move.\n * 2. When focus is on a open node, moves focus to the first child node.\n * 3. When focus is on an end node (a tree item with no children), does nothing.\n */\n protected handleItemRight(node: HTMLElement): void {\n // #3\n if (!node.classList.contains('tree-parent')) {\n return;\n }\n const key = node.dataset.id as string;\n const opened = this.openedParents.includes(key);\n if (!opened) {\n // #1\n this.openedParents.push(key);\n this.requestUpdate();\n return;\n }\n // #2\n const list = node.nextElementSibling as HTMLOListElement | null;\n if (list) {\n this.focusFirstDescendant(list);\n }\n }\n\n /**\n * 1. When focus is on an open node, closes the node.\n * 2. When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.\n * 3. When focus is on a closed `tree`, does nothing.\n */\n protected handleItemLeft(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n const key = node.dataset.id as string;\n if (isParent) {\n const opened = this.openedParents.includes(key);\n if (opened) {\n // #1\n const index = this.openedParents.indexOf(key);\n this.openedParents.splice(index, 1);\n this.requestUpdate();\n return;\n }\n // #3\n return;\n }\n const list = node.parentElement as HTMLOListElement | null;\n if (!list) {\n return;\n }\n // #2\n const item = list.previousElementSibling as HTMLLIElement | null;\n if (item) {\n this.focusListItem(item);\n }\n }\n\n /**\n * Moves focus to the next node that is focusable without opening or closing a node.\n */\n protected handleItemDown(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (!isParent) {\n if (this.focusNextSibling(node)) {\n return;\n }\n // focus on the next parent\n const myParent = this.findParentListItem(node);\n if (!myParent) {\n return;\n }\n let firstParent: HTMLLIElement | undefined;\n let current = myParent.nextElementSibling as HTMLElement | null;\n while (current) {\n const isList = current.localName === 'li';\n if (isList) {\n firstParent = current as HTMLLIElement;\n break;\n }\n current = current.nextElementSibling as HTMLElement | null;\n }\n if (firstParent) {\n this.focusListItem(firstParent);\n }\n return;\n }\n const key = node.dataset.id as string;\n // if we are opened then we focus on the first child.\n // otherwise we focus on the next parent\n const opened = this.openedParents.includes(key);\n if (opened && this.focusFirstDescendant(node.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusNextSibling(node);\n }\n\n /**\n * Moves focus to the previous node that is focusable without opening or closing a node.\n */\n protected handleItemUp(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (isParent) {\n // focuses on a last item of the first opened previous parent\n // or when the parent is closed then just on the parent.\n let firstParent: HTMLLIElement | undefined;\n let current = node.previousElementSibling as HTMLElement | null;\n while (current) {\n if (current.localName === 'li') {\n firstParent = current as HTMLLIElement;\n break;\n }\n current = current.previousElementSibling as HTMLElement | null;\n }\n if (firstParent) {\n if (firstParent.classList.contains('opened') && this.focusLastDescendant(firstParent.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusListItem(firstParent);\n }\n return;\n }\n if (this.focusPreviousSibling(node)) {\n return;\n }\n this.focusFirstParent(node);\n }\n\n protected handleHome(): void {\n const node = this.shadowRoot?.querySelector(`[data-id=\"general\"]`) as HTMLLIElement | null;\n if (!node) {\n return;\n }\n this.focusListItem(node);\n }\n\n protected handleEnd(): void {\n const first = this.shadowRoot?.querySelector('ol');\n if (!first) {\n return;\n }\n const children = Array.from(first.children).reverse() as HTMLElement[];\n for (const node of children) {\n if (node.localName === 'li') {\n if (this.focusLastDescendant(node.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusListItem(node);\n return;\n }\n }\n }\n\n /**\n * Performs the default action of the currently focused node. \n * For parent nodes, it opens or closes the node. \n * In single-select trees, if the node has no children, selects the current node \n * if not already selected (which is the default action).\n */\n protected handleItemEnter(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (!isParent) {\n return;\n }\n const key = node.dataset.id as string;\n this.toggleParent(key);\n this.requestUpdate();\n }\n\n /**\n * Focuses on the first descendant of a folder item.\n * \n * @param node The list containing children to focus on.\n * @returns true when focused on any of the descendants\n */\n protected focusFirstDescendant(node: HTMLOListElement): boolean {\n if (!node) {\n return false;\n }\n const items = Array.from(node.children).filter(n => n.localName === 'li') as HTMLLIElement[];\n if (!items || !items.length) {\n return false;\n }\n for (const child of items) {\n if (child.hasAttribute('disabled')) {\n continue;\n }\n this.focusListItem(child);\n return true;\n }\n return false;\n }\n\n /**\n * Focuses on the last descendant of a folder item.\n * \n * @param node The list containing children to focus on.\n * @returns true when focused on any of the descendants\n */\n protected focusLastDescendant(node: HTMLOListElement): boolean {\n if (!node) {\n return false;\n }\n const items = Array.from(node.children).filter(n => n.localName === 'li') as HTMLLIElement[];\n if (!items || !items.length) {\n return false;\n }\n items.reverse();\n for (const child of items) {\n if (child.hasAttribute('disabled')) {\n continue;\n }\n this.focusListItem(child);\n return true;\n }\n return false;\n }\n\n protected focusListItem(node: HTMLElement): void {\n node.focus();\n this.activeItem = node.dataset.id as string;\n this.focusedItem = node.dataset.id as string;\n this.focusedElement = node;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n /**\n * Focuses on the next node relative to the passed node.\n * \n * @param node The node to use as a mark. When not set it uses the currently focused node.\n * @returns true when focused on any of the next siblings\n */\n protected focusNextSibling(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n let current = node.nextElementSibling as HTMLElement;\n while (current) {\n if (current.localName !== 'li' || current.hasAttribute('disabled')) {\n current = current.nextElementSibling as HTMLElement;\n continue;\n }\n this.focusListItem(current);\n return true;\n }\n return false;\n }\n\n protected focusPreviousSibling(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n let current = node.previousElementSibling as HTMLElement;\n while (current) {\n if (current.localName !== 'li' || current.hasAttribute('disabled')) {\n current = current.previousElementSibling as HTMLElement;\n continue;\n }\n this.focusListItem(current);\n return true;\n }\n return false;\n }\n\n /**\n * Focuses on a first parent list item that accepts focus relative to the given node.\n * \n * @param node The node to use as a reference.\n * @returns true when focused on any of the parents\n */\n protected focusFirstParent(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n const parent = this.findParentListItem(node);\n if (parent) {\n this.focusListItem(parent);\n return true;\n }\n return false;\n }\n\n protected findParentListItem(node: HTMLElement): HTMLLIElement | undefined {\n let parent = node.parentElement as HTMLElement;\n while (parent) {\n if (parent === this) {\n return undefined;\n }\n if (parent.localName === 'ol') {\n const item = parent.previousElementSibling as HTMLLIElement | null;\n return item || undefined;\n }\n parent = parent.parentElement as HTMLElement;\n }\n return undefined;\n }\n\n protected override render(): TemplateResult {\n const { effectiveLog } = this;\n if (!effectiveLog) {\n return html``;\n }\n const { request, response } = effectiveLog;\n return html`\n <ol role=\"tree\" tabindex=\"-1\" class=\"tree\" aria-multiselectable=\"false\">\n ${this.RenderRequestGeneral(request, response)}\n ${this.renderResponseHeaders()}\n ${this.renderRequestHeaders()}\n </ol>\n `;\n }\n\n protected renderListItem(name: string, value: string | TemplateResult, id: string): TemplateResult {\n const active = this.activeItem === id;\n const focused = this.focusedItem === id;\n const classes = {\n active,\n 'tree-item': true,\n };\n const label = typeof value === 'string' ? `${name}: ${value}` : [name, value];\n return html`\n <li \n role=\"treeitem\" \n class=\"${classMap(classes)}\" \n data-id=\"${id}\" \n tabindex=\"${focused ? '0' : '-1'}\" \n aria-selected=\"${active ? 'true' : 'false'}\"\n ><span class=\"item-content\">${label}</span></li>\n `;\n }\n\n protected renderParentListItem(label: string, id: string): TemplateResult {\n const active = this.activeItem === id;\n const focused = this.focusedItem === id;\n const opened = this.openedParents.includes(id);\n const classes = {\n active,\n opened,\n closed: !opened,\n focused,\n 'tree-parent': true,\n };\n return html`\n <li \n title=\"${label}\" \n class=\"${classMap(classes)}\" \n data-id=\"${id}\" \n role=\"treeitem\" \n tabindex=\"${focused ? '0' : '-1'}\" \n aria-expanded=\"${opened ? 'true' : 'false'}\" \n aria-selected=\"${active ? 'true' : 'false'}\"\n >\n <ui-icon icon=\"arrowDropDown\" role=\"presentation\" class=\"toggle-icon\"></ui-icon>\n <span class=\"tree-element-title\">${label}</span>\n </li>\n `;\n }\n\n protected renderChildrenItems(id: string, items: TemplateResult | TemplateResult[]): TemplateResult {\n const opened = this.openedParents.includes(id);\n const classes = {\n expanded: opened,\n collapsed: !opened,\n children: true,\n };\n return html`\n <ol class=\"${classMap(classes)}\" role=\"group\">\n ${items}\n </ol>\n <ui-divider type=\"inset\"></ui-divider>\n `;\n }\n\n protected RenderRequestGeneral(sent?: SentRequest, response?: Response | ErrorResponse): TemplateResult {\n if (!sent) {\n return html``;\n }\n const id = 'general';\n const items = html`\n ${this.renderListItem('Request URL', sent.url, `${id}-request-url`)}\n ${this.renderListItem('Request Method', sent.method, `${id}-request-method`)}\n ${this.renderResponseStatus(id, response)}\n `;\n return html`\n ${this.renderParentListItem('General', id)}\n ${this.renderChildrenItems(id, items)}\n `;\n }\n\n protected renderResponseStatus(id: string, response?: Response | ErrorResponse): TemplateResult | string {\n if (!response) {\n return '';\n }\n const { status = 0, statusText = '' } = response;\n const tpl = statusTemplate(status, statusText);\n return this.renderListItem('Status Code', tpl, `${id}-status-code`);\n }\n\n protected renderRequestHeaders(): TemplateResult {\n const id = 'request-headers';\n return html`\n ${this.renderParentListItem('Request headers', id)}\n ${this.renderChildrenItems(id, this.renderHeadersList(id, this.requestHeaders))}\n `;\n }\n\n protected renderResponseHeaders(): TemplateResult {\n const id = 'response-headers';\n return html`\n ${this.renderParentListItem('Response headers', id)}\n ${this.renderChildrenItems(id, this.renderHeadersList(id, this.responseHeaders))}\n `;\n }\n\n protected renderHeadersList(prefix: string, headers?: Headers): TemplateResult {\n if (!headers) {\n return html`<p class=\"no-data\">No headers</p>`;\n }\n let i = 0;\n const templates = headers.map((value: string, name: string) => {\n const id = `${prefix}-${i}`;\n i += 1;\n return this.renderListItem(name, value, id);\n });\n return html`${templates}`;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"LogHeaders.js","sourceRoot":"","sources":["../../../src/elements/http/LogHeaders.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable class-methods-use-this */\nimport { LitElement, html, TemplateResult, PropertyValues } from \"lit\";\nimport { IRequestLog, RequestLog, SentRequest, Response, ErrorResponse, Headers, Events as CoreEvents } from \"@api-client/core/build/browser.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { classMap } from 'lit/directives/class-map.js';\nimport { statusTemplate } from \"./HttpStatus.js\";\nimport '../../define/ui/ui-icon.js';\nimport '../../define/ui/ui-divider.js';\n\n/**\n * An element that renders summary headers view for an HTTP response.\n */\nexport default class LogHeaders extends LitElement {\n private httpLogInternal?: IRequestLog | RequestLog;\n\n /**\n * This property is set when the `httpLog` is set. It always represent an instance of the `RequestLog` (or undefined) regardless of the input format.\n */\n @state() protected effectiveLog?: RequestLog;\n\n /**\n * The request log to render. When not set it renders nothing.\n */\n @property({ type: Object })\n get httpLog(): IRequestLog | RequestLog | undefined {\n return this.httpLogInternal;\n }\n\n set httpLog(value: IRequestLog | RequestLog | undefined) {\n const old = this.httpLogInternal;\n if (old === value) {\n return;\n }\n this.httpLogInternal = value;\n if (value) {\n if (typeof (value as RequestLog).toJSON === 'function') {\n this.effectiveLog = value as RequestLog;\n } else {\n this.effectiveLog = new RequestLog(value as IRequestLog);\n }\n } else {\n this.effectiveLog = undefined;\n }\n this.parseHeaders();\n }\n\n @state() protected activeItem?: string;\n\n @state() protected focusedItem?: string;\n\n /**\n * The currently focused node.\n */\n protected focusedElement?: HTMLElement;\n\n /**\n * Parsed request headers, when the request is set.\n */\n @state() protected requestHeaders?: Headers;\n\n /**\n * Parsed response headers, when the response is set.\n */\n @state() protected responseHeaders?: Headers;\n\n /**\n * The list of ids of tree parents that are opened.\n */\n protected openedParents: string [] = ['general', 'response-headers', 'request-headers'];\n\n constructor() {\n super();\n this.addEventListener('keydown', this.handleKeydown.bind(this));\n this.addEventListener('click', this.handleClick.bind(this));\n this.addEventListener('dblclick', this.handleDblclick.bind(this));\n this.addEventListener('focus', this.handleFocus.bind(this));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.manageTabindex();\n }\n\n protected override updated(cp: PropertyValues): void {\n super.updated(cp);\n if (cp.has('focusedItem')) {\n this.manageTabindex();\n }\n }\n\n /**\n * Manages the state of the tabindex attribute of the element.\n * When the user changes the focus in the tree then the tabindex is removed from the element \n * and moved to the focused element.\n * When there's no focused element, the tabindex is again set on the element.\n */\n protected manageTabindex(): void {\n const id = this.focusedItem;\n if (id && this.hasAttribute('tabindex')) {\n this.removeAttribute('tabindex');\n } else if (!id && !this.hasAttribute('tabindex')) {\n this.setAttribute('tabindex', '0');\n }\n if (id) {\n const node = this.shadowRoot?.querySelector(`[data-id=\"${id}\"]`) as HTMLElement | null;\n if (node) {\n node.focus();\n }\n }\n }\n\n /**\n * Processes the request and response headers when the setter is invoked.\n * This way we can cache results instead of generating the headers in the \n * template.\n */\n protected parseHeaders(): void {\n const { effectiveLog } = this;\n if (!effectiveLog) {\n this.requestHeaders = undefined;\n this.responseHeaders = undefined;\n return;\n }\n const { request, response } = effectiveLog;\n if (request && request.headers) {\n this.requestHeaders = new Headers(request.headers);\n }\n if (response && response.headers) {\n this.responseHeaders = new Headers(response.headers);\n }\n }\n\n protected handleFocus(): void {\n let node: HTMLLIElement | undefined | null;\n if (this.focusedItem) {\n node = this.shadowRoot?.querySelector(`[data-id=\"${this.focusedItem}\"]`) as HTMLLIElement;\n } else {\n node = this.shadowRoot?.querySelector(`[data-id=\"general\"]`) as HTMLLIElement;\n }\n if (node) {\n node.focus();\n }\n }\n\n protected handleKeydown(e: KeyboardEvent): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n switch (e.key) {\n case 'ArrowRight': this.handleItemRight(node); break;\n case 'ArrowLeft': this.handleItemLeft(node); break;\n case 'ArrowDown': this.handleItemDown(node); break;\n case 'ArrowUp': this.handleItemUp(node); break;\n case 'Home': this.handleHome(); break;\n case 'End': this.handleEnd(); break;\n case 'Enter': this.handleItemEnter(node); break;\n case 'c': this.handleItemC(e, node); break;\n default:\n }\n }\n\n protected async handleItemC(e: KeyboardEvent, node: HTMLElement): Promise<void> {\n if (!e.ctrlKey || !navigator.clipboard) {\n return;\n }\n const txt = node.textContent?.trim();\n if (txt) {\n await navigator.clipboard.writeText(txt);\n }\n CoreEvents.Telemetry.event({\n category: 'Usage',\n action: 'Click',\n label: 'Response header clipboard copy',\n }, this);\n }\n\n protected handleClick(e: Event): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n this.focusListItem(node);\n }\n\n protected handleDblclick(e: Event): void {\n const node = this.findClosestListItem(e);\n if (!node) {\n return;\n }\n if (!node.classList.contains('tree-parent')) {\n return;\n }\n const key = node.dataset.id as string;\n this.toggleParent(key);\n this.requestUpdate();\n }\n\n protected toggleParent(key: string): void {\n const index = this.openedParents.indexOf(key);\n if (index >= 0) {\n this.openedParents.splice(index, 1);\n } else {\n this.openedParents.push(key);\n }\n }\n\n protected findClosestListItem(e: Event): HTMLElement | undefined {\n const path = e.composedPath();\n while (path.length) {\n const target = path.shift() as Node;\n if (!target) {\n break;\n }\n if (target.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n const elm = target as HTMLElement;\n if (elm.classList.contains('tree-item') || elm.classList.contains('tree-parent')) {\n return elm;\n }\n }\n return undefined;\n }\n\n /**\n * 1. When focus is on a closed node, opens the node; focus does not move.\n * 2. When focus is on a open node, moves focus to the first child node.\n * 3. When focus is on an end node (a tree item with no children), does nothing.\n */\n protected handleItemRight(node: HTMLElement): void {\n // #3\n if (!node.classList.contains('tree-parent')) {\n return;\n }\n const key = node.dataset.id as string;\n const opened = this.openedParents.includes(key);\n if (!opened) {\n // #1\n this.openedParents.push(key);\n this.requestUpdate();\n return;\n }\n // #2\n const list = node.nextElementSibling as HTMLOListElement | null;\n if (list) {\n this.focusFirstDescendant(list);\n }\n }\n\n /**\n * 1. When focus is on an open node, closes the node.\n * 2. When focus is on a child node that is also either an end node or a closed node, moves focus to its parent node.\n * 3. When focus is on a closed `tree`, does nothing.\n */\n protected handleItemLeft(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n const key = node.dataset.id as string;\n if (isParent) {\n const opened = this.openedParents.includes(key);\n if (opened) {\n // #1\n const index = this.openedParents.indexOf(key);\n this.openedParents.splice(index, 1);\n this.requestUpdate();\n return;\n }\n // #3\n return;\n }\n const list = node.parentElement as HTMLOListElement | null;\n if (!list) {\n return;\n }\n // #2\n const item = list.previousElementSibling as HTMLLIElement | null;\n if (item) {\n this.focusListItem(item);\n }\n }\n\n /**\n * Moves focus to the next node that is focusable without opening or closing a node.\n */\n protected handleItemDown(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (!isParent) {\n if (this.focusNextSibling(node)) {\n return;\n }\n // focus on the next parent\n const myParent = this.findParentListItem(node);\n if (!myParent) {\n return;\n }\n let firstParent: HTMLLIElement | undefined;\n let current = myParent.nextElementSibling as HTMLElement | null;\n while (current) {\n const isList = current.localName === 'li';\n if (isList) {\n firstParent = current as HTMLLIElement;\n break;\n }\n current = current.nextElementSibling as HTMLElement | null;\n }\n if (firstParent) {\n this.focusListItem(firstParent);\n }\n return;\n }\n const key = node.dataset.id as string;\n // if we are opened then we focus on the first child.\n // otherwise we focus on the next parent\n const opened = this.openedParents.includes(key);\n if (opened && this.focusFirstDescendant(node.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusNextSibling(node);\n }\n\n /**\n * Moves focus to the previous node that is focusable without opening or closing a node.\n */\n protected handleItemUp(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (isParent) {\n // focuses on a last item of the first opened previous parent\n // or when the parent is closed then just on the parent.\n let firstParent: HTMLLIElement | undefined;\n let current = node.previousElementSibling as HTMLElement | null;\n while (current) {\n if (current.localName === 'li') {\n firstParent = current as HTMLLIElement;\n break;\n }\n current = current.previousElementSibling as HTMLElement | null;\n }\n if (firstParent) {\n if (firstParent.classList.contains('opened') && this.focusLastDescendant(firstParent.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusListItem(firstParent);\n }\n return;\n }\n if (this.focusPreviousSibling(node)) {\n return;\n }\n this.focusFirstParent(node);\n }\n\n protected handleHome(): void {\n const node = this.shadowRoot?.querySelector(`[data-id=\"general\"]`) as HTMLLIElement | null;\n if (!node) {\n return;\n }\n this.focusListItem(node);\n }\n\n protected handleEnd(): void {\n const first = this.shadowRoot?.querySelector('ol');\n if (!first) {\n return;\n }\n const children = Array.from(first.children).reverse() as HTMLElement[];\n for (const node of children) {\n if (node.localName === 'li') {\n if (this.focusLastDescendant(node.nextElementSibling as HTMLOListElement)) {\n return;\n }\n this.focusListItem(node);\n return;\n }\n }\n }\n\n /**\n * Performs the default action of the currently focused node. \n * For parent nodes, it opens or closes the node. \n * In single-select trees, if the node has no children, selects the current node \n * if not already selected (which is the default action).\n */\n protected handleItemEnter(node: HTMLElement): void {\n const isParent = node.classList.contains('tree-parent');\n if (!isParent) {\n return;\n }\n const key = node.dataset.id as string;\n this.toggleParent(key);\n this.requestUpdate();\n }\n\n /**\n * Focuses on the first descendant of a folder item.\n * \n * @param node The list containing children to focus on.\n * @returns true when focused on any of the descendants\n */\n protected focusFirstDescendant(node: HTMLOListElement): boolean {\n if (!node) {\n return false;\n }\n const items = Array.from(node.children).filter(n => n.localName === 'li') as HTMLLIElement[];\n if (!items || !items.length) {\n return false;\n }\n for (const child of items) {\n if (child.hasAttribute('disabled')) {\n continue;\n }\n this.focusListItem(child);\n return true;\n }\n return false;\n }\n\n /**\n * Focuses on the last descendant of a folder item.\n * \n * @param node The list containing children to focus on.\n * @returns true when focused on any of the descendants\n */\n protected focusLastDescendant(node: HTMLOListElement): boolean {\n if (!node) {\n return false;\n }\n const items = Array.from(node.children).filter(n => n.localName === 'li') as HTMLLIElement[];\n if (!items || !items.length) {\n return false;\n }\n items.reverse();\n for (const child of items) {\n if (child.hasAttribute('disabled')) {\n continue;\n }\n this.focusListItem(child);\n return true;\n }\n return false;\n }\n\n protected focusListItem(node: HTMLElement): void {\n node.focus();\n this.activeItem = node.dataset.id as string;\n this.focusedItem = node.dataset.id as string;\n this.focusedElement = node;\n node.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n }\n\n /**\n * Focuses on the next node relative to the passed node.\n * \n * @param node The node to use as a mark. When not set it uses the currently focused node.\n * @returns true when focused on any of the next siblings\n */\n protected focusNextSibling(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n let current = node.nextElementSibling as HTMLElement;\n while (current) {\n if (current.localName !== 'li' || current.hasAttribute('disabled')) {\n current = current.nextElementSibling as HTMLElement;\n continue;\n }\n this.focusListItem(current);\n return true;\n }\n return false;\n }\n\n protected focusPreviousSibling(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n let current = node.previousElementSibling as HTMLElement;\n while (current) {\n if (current.localName !== 'li' || current.hasAttribute('disabled')) {\n current = current.previousElementSibling as HTMLElement;\n continue;\n }\n this.focusListItem(current);\n return true;\n }\n return false;\n }\n\n /**\n * Focuses on a first parent list item that accepts focus relative to the given node.\n * \n * @param node The node to use as a reference.\n * @returns true when focused on any of the parents\n */\n protected focusFirstParent(node: HTMLElement): boolean {\n if (!node) {\n return false;\n }\n const parent = this.findParentListItem(node);\n if (parent) {\n this.focusListItem(parent);\n return true;\n }\n return false;\n }\n\n protected findParentListItem(node: HTMLElement): HTMLLIElement | undefined {\n let parent = node.parentElement as HTMLElement;\n while (parent) {\n if (parent === this) {\n return undefined;\n }\n if (parent.localName === 'ol') {\n const item = parent.previousElementSibling as HTMLLIElement | null;\n return item || undefined;\n }\n parent = parent.parentElement as HTMLElement;\n }\n return undefined;\n }\n\n protected override render(): TemplateResult {\n const { effectiveLog } = this;\n if (!effectiveLog) {\n return html``;\n }\n const { request, response } = effectiveLog;\n return html`\n <ol role=\"tree\" tabindex=\"-1\" class=\"tree\" aria-multiselectable=\"false\">\n ${this.RenderRequestGeneral(request, response)}\n ${this.renderResponseHeaders()}\n ${this.renderRequestHeaders()}\n </ol>\n `;\n }\n\n protected renderListItem(name: string, value: string | TemplateResult, id: string): TemplateResult {\n const active = this.activeItem === id;\n const focused = this.focusedItem === id;\n const classes = {\n active,\n 'tree-item': true,\n };\n const label = typeof value === 'string' ? `${name}: ${value}` : [name, value];\n return html`\n <li \n role=\"treeitem\" \n class=\"${classMap(classes)}\" \n data-id=\"${id}\" \n tabindex=\"${focused ? '0' : '-1'}\" \n aria-selected=\"${active ? 'true' : 'false'}\"\n ><span class=\"item-content\">${label}</span></li>\n `;\n }\n\n protected renderParentListItem(label: string, id: string): TemplateResult {\n const active = this.activeItem === id;\n const focused = this.focusedItem === id;\n const opened = this.openedParents.includes(id);\n const classes = {\n active,\n opened,\n closed: !opened,\n focused,\n 'tree-parent': true,\n };\n return html`\n <li \n title=\"${label}\" \n class=\"${classMap(classes)}\" \n data-id=\"${id}\" \n role=\"treeitem\" \n tabindex=\"${focused ? '0' : '-1'}\" \n aria-expanded=\"${opened ? 'true' : 'false'}\" \n aria-selected=\"${active ? 'true' : 'false'}\"\n >\n <ui-icon icon=\"arrowDropDown\" role=\"presentation\" class=\"toggle-icon\"></ui-icon>\n <span class=\"tree-element-title\">${label}</span>\n </li>\n `;\n }\n\n protected renderChildrenItems(id: string, items: TemplateResult | TemplateResult[]): TemplateResult {\n const opened = this.openedParents.includes(id);\n const classes = {\n expanded: opened,\n collapsed: !opened,\n children: true,\n };\n return html`\n <ol class=\"${classMap(classes)}\" role=\"group\">\n ${items}\n </ol>\n <ui-divider type=\"inset\"></ui-divider>\n `;\n }\n\n protected RenderRequestGeneral(sent?: SentRequest, response?: Response | ErrorResponse): TemplateResult {\n if (!sent) {\n return html``;\n }\n const id = 'general';\n const items = html`\n ${this.renderListItem('Request URL', sent.url, `${id}-request-url`)}\n ${this.renderListItem('Request Method', sent.method, `${id}-request-method`)}\n ${this.renderResponseStatus(id, response)}\n `;\n return html`\n ${this.renderParentListItem('General', id)}\n ${this.renderChildrenItems(id, items)}\n `;\n }\n\n protected renderResponseStatus(id: string, response?: Response | ErrorResponse): TemplateResult | string {\n if (!response) {\n return '';\n }\n const { status = 0, statusText = '' } = response;\n const tpl = statusTemplate(status, statusText);\n return this.renderListItem('Status Code', tpl, `${id}-status-code`);\n }\n\n protected renderRequestHeaders(): TemplateResult {\n const id = 'request-headers';\n return html`\n ${this.renderParentListItem('Request headers', id)}\n ${this.renderChildrenItems(id, this.renderHeadersList(id, this.requestHeaders))}\n `;\n }\n\n protected renderResponseHeaders(): TemplateResult {\n const id = 'response-headers';\n return html`\n ${this.renderParentListItem('Response headers', id)}\n ${this.renderChildrenItems(id, this.renderHeadersList(id, this.responseHeaders))}\n `;\n }\n\n protected renderHeadersList(prefix: string, headers?: Headers): TemplateResult {\n if (!headers) {\n return html`<p class=\"no-data\">No headers</p>`;\n }\n let i = 0;\n const templates = headers.map((value: string, name: string) => {\n const id = `${prefix}-${i}`;\n i += 1;\n return this.renderListItem(name, value, id);\n });\n return html`${templates}`;\n }\n}\n"]}
|
|
@@ -6,19 +6,17 @@ import ApiElement from '../ApiElement.js';
|
|
|
6
6
|
import '../../define/ui/ui-date-time.js';
|
|
7
7
|
import '../../define/ui/ui-progress.js';
|
|
8
8
|
export default class LogTimings extends ApiElement {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
viewData = [];
|
|
21
|
-
totalTime = 0;
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
/**
|
|
12
|
+
* When set it renders mobile friendly view
|
|
13
|
+
* @attribute
|
|
14
|
+
*/
|
|
15
|
+
this.narrow = false;
|
|
16
|
+
this.withRedirects = false;
|
|
17
|
+
this.viewData = [];
|
|
18
|
+
this.totalTime = 0;
|
|
19
|
+
}
|
|
22
20
|
willUpdate(cp) {
|
|
23
21
|
super.updated(cp);
|
|
24
22
|
if (cp.has('timings')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogTimings.js","sourceRoot":"","sources":["../../../src/elements/http/LogTimings.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAwC,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAC1C,OAAO,iCAAiC,CAAA;AACxC,OAAO,gCAAgC,CAAA;AAGvC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,UAAU;
|
|
1
|
+
{"version":3,"file":"LogTimings.js","sourceRoot":"","sources":["../../../src/elements/http/LogTimings.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, PropertyValues } from 'lit';\nimport { RequestTime, IRequestTime } from \"@api-client/core/build/browser.js\";\nimport { property, state } from \"lit/decorators.js\";\nimport { ITimingViewData, ITimingProgressInfo, computeTimingsViewData } from '../../lib/http/Har.js';\nimport ApiElement from '../ApiElement.js';\nimport '../../define/ui/ui-date-time.js'\nimport '../../define/ui/ui-progress.js'\n\n\nexport default class LogTimings extends ApiElement {\n /**\n * The ordered list of timings for each redirect.\n * The last timing is the final request.\n */\n @property({ type: Array }) timings?: (RequestTime | IRequestTime)[];\n\n /**\n * When set it renders mobile friendly view\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) narrow = false;\n\n @state() protected withRedirects = false;\n\n @state() protected viewData: ITimingViewData[] = [];\n\n @state() protected totalTime = 0;\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n super.updated(cp);\n if (cp.has('timings')) {\n this.processTimings();\n }\n }\n\n protected processTimings(): void {\n const { timings } = this;\n if (!timings) {\n this.viewData = [];\n this.withRedirects = false;\n this.totalTime = 0;\n return;\n }\n this.withRedirects = timings.length > 1;\n this.viewData = computeTimingsViewData(timings);\n this.totalTime = this.viewData.reduce((prev, current) => prev + current.duration, 0);\n }\n\n protected override render(): TemplateResult {\n const { viewData, withRedirects } = this;\n if (!Array.isArray(viewData) || !viewData.length) {\n return this.renderNoData();\n }\n if (withRedirects) {\n return this.renderRedirectsTable();\n }\n return this.renderTiming(viewData[0]);\n }\n\n protected renderNoData(): TemplateResult {\n return html`\n <div class=\"no-data\">No data available.</div>\n `;\n }\n\n protected renderRedirectsTable(): TemplateResult {\n const { totalTime, viewData } = this;\n const items = [...viewData];\n const last = items.pop() as ITimingViewData;\n return html`\n <section class=\"redirects\">\n <h3 class=\"sub-title\">Redirects</h3>\n ${items.map((item, index) => this.renderRedirectItem(item, index))}\n <h3 class=\"sub-title\">Final request</h3>\n <div class=\"timings-row\">\n <div class=\"redirect-value\">\n ${this.renderTiming(last)}\n </div>\n </div>\n <div class=\"status-row\">\n <div class=\"flex\"></div>\n <span class=\"timing-value total text\">Total: ${totalTime} ms</span>\n </div>\n </section>\n `;\n }\n\n protected renderRedirectItem(item: ITimingViewData, index: number): TemplateResult {\n return html`\n <div class=\"timings-row\">\n <div class=\"status-label text\">#<span>${index + 1}</span></div>\n <div class=\"redirect-value\">\n ${this.renderTiming(item)}\n </div>\n </div>\n `;\n }\n\n /**\n * @returns The template for a single timing item.\n */\n protected renderTiming(info: ITimingViewData): TemplateResult {\n const { data, duration } = info;\n const { blocked, connect, dns, receive, send, wait, ssl } = data;\n return html`\n ${this.renderTimingRow(duration, blocked)}\n ${this.renderTimingRow(duration, dns)}\n ${this.renderTimingRow(duration, connect)}\n ${this.renderTimingRow(duration, ssl)}\n ${this.renderTimingRow(duration, send)}\n ${this.renderTimingRow(duration, wait)}\n ${this.renderTimingRow(duration, receive)}\n <div class=\"row is-total\">\n <span class=\"timing-value total\">${info.duration} ms</span>\n </div>\n `;\n }\n\n /**\n * Renders a single timing row.\n * @param duration Max value of the progress\n * @param info The computed timing values.\n */\n protected renderTimingRow(duration: number, info?: ITimingProgressInfo): TemplateResult | string {\n if (!info || typeof info.label === 'undefined') {\n return '';\n }\n return html`\n <div class=\"row\" data-type=\"${info.type}-time\">\n <div class=\"timing-label label\">${info.title}</div>\n <ui-progress\n aria-label=\"${info.ariaLabel}\"\n .value=\"${info.previous}\"\n .secondaryProgress=\"${info.value}\"\n .max=\"${duration}\"\n step=\"0.0001\"\n ></ui-progress>\n <span class=\"timing-value\">${info.label} ms</span>\n </div>\n `;\n }\n\n /**\n * Renders the start time row\n * @param time The timestamp of the request\n */\n protected renderStartTime(time: number): TemplateResult | string {\n if (typeof time !== 'number') {\n return '';\n }\n return html`\n <div class=\"row\" data-type=\"start-time\">\n <span class=\"label\">Start date:</span>\n <ui-date-time\n year=\"numeric\"\n month=\"numeric\"\n day=\"numeric\"\n hour=\"numeric\"\n minute=\"numeric\"\n second=\"numeric\"\n class=\"date-value\"\n .date=\"${time}\"\n ></ui-date-time>\n </div>`;\n }\n}\n"]}
|
|
@@ -10,10 +10,13 @@ import '../../define/ui/ui-text-field.js';
|
|
|
10
10
|
* @fires change - when the configuration object changed.
|
|
11
11
|
*/
|
|
12
12
|
export default class RequestConfigElement extends ApiElement {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
/**
|
|
16
|
+
* HTTP request configuration for the transport.
|
|
17
|
+
*/
|
|
18
|
+
this.config = new RequestConfig().toJSON();
|
|
19
|
+
}
|
|
17
20
|
handleEnabledToggle(e) {
|
|
18
21
|
const node = e.currentTarget;
|
|
19
22
|
this.config.enabled = node.checked;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestConfigElement.js","sourceRoot":"","sources":["../../../src/elements/http/RequestConfigElement.ts"],"names":[],"mappings":"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","sourcesContent":["import { RequestConfig } from \"@api-client/core/build/browser.js\";\nimport { html, nothing, TemplateResult } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport SwitchElement from \"../../ui/input/SwitchElement.js\";\nimport Input from \"../../ui/input/Input.js\";\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-text-field.js';\n\n/**\n * @fires change - when the configuration object changed.\n */\nexport default class RequestConfigElement extends ApiElement {\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) config = new RequestConfig().toJSON();\n\n protected handleEnabledToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.enabled = node.checked;\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleFollowRedirects(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.followRedirects = node.checked;\n this.notifyChanged();\n }\n\n protected handleIgnoreCookies(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.ignoreSessionCookies = node.checked;\n this.notifyChanged();\n }\n\n protected handleValidateCertificates(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.validateCertificates = node.checked;\n this.notifyChanged();\n }\n\n protected handleDefaultHeaders(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.defaultHeaders = node.checked;\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleTimeoutChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n delete this.config.timeout;\n this.requestUpdate();\n } else {\n const num = Number(raw);\n if (Number.isNaN(num)) {\n input.setCustomValidity('Invalid input.');\n input.checkValidity();\n return;\n }\n if (this.config.timeout === num) {\n return;\n }\n this.config.timeout = num;\n }\n input.setCustomValidity('');\n input.checkValidity();\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleDefaultUserAgentChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n if (!this.config.defaultUserAgent) {\n this.requestUpdate();\n return;\n }\n delete this.config.defaultUserAgent;\n this.requestUpdate();\n } else {\n if (this.config.defaultUserAgent === raw) {\n return;\n }\n this.config.defaultUserAgent = raw;\n }\n this.notifyChanged();\n }\n\n protected handleDefaultAcceptChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n if (!this.config.defaultAccept) {\n this.requestUpdate();\n return;\n }\n delete this.config.defaultAccept;\n this.requestUpdate();\n } else {\n if (this.config.defaultAccept === raw) {\n return;\n }\n this.config.defaultAccept = raw;\n }\n this.notifyChanged();\n }\n\n protected notifyChanged(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderPanelTitle()}\n ${this.renderEnableSwitch()}\n ${this.renderRedirectsConfig()}\n ${this.renderIgnoreSessionCookiesConfig()}\n ${this.renderValidateCertificatesConfig()}\n ${this.renderDefaultHeadersConfig()}\n ${this.renderDefaultUserAgentConfig()}\n ${this.renderDefaultAcceptConfig()}\n ${this.renderTimeoutConfig()}\n `;\n }\n\n protected renderPanelTitle(): TemplateResult {\n return html`\n <div class=\"title-medium\">Request options</div>\n <p class=\"body-medium\">This overrides other configurations defined in the application.</p>\n `;\n }\n\n protected renderEnableSwitch(): TemplateResult {\n const { enabled = false } = this.config;\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"enabled\"\n .checked=\"${enabled}\" \n @change=\"${this.handleEnabledToggle}\" \n title=\"Toggle options enabled\"\n aria-label=\"Toggle options enabled\"\n id=\"enable\"\n ></ui-switch>\n <label class=\"label-large\" for=\"enable\">\n Enable custom request options\n </label>\n </div>\n `;\n }\n\n protected renderRedirectsConfig(): TemplateResult | typeof nothing {\n const { enabled = false, followRedirects = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"followRedirects\"\n id=\"followRedirects\"\n .checked=\"${followRedirects}\" \n @change=\"${this.handleFollowRedirects}\" \n title=\"Toggle follow redirects\"\n aria-label=\"Toggle follow redirects\"\n ></ui-switch>\n <label class=\"label-large\" for=\"followRedirects\">\n Follow redirects\n </label>\n </div>\n `;\n }\n\n protected renderTimeoutConfig(): TemplateResult | typeof nothing {\n const { enabled = false, timeout = 90 } = this.config;\n if (!enabled) {\n return nothing;\n }\n const value = typeof timeout === 'number' ? String(timeout) : '';\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"timeout\"\n label=\"Request timeout\"\n .value=\"${live(value)}\"\n @change=\"${this.handleTimeoutChange}\"\n supportingText=\"0 for no timeout, clear for default.\"\n inputMode=\"numeric\"\n invalidText=\"Enter a positive integer or zero.\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderDefaultUserAgentConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultUserAgent = 'api-client', defaultHeaders = false } = this.config;\n if (!enabled || !defaultHeaders) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"defaultUserAgent\"\n label=\"Default user agent\"\n .value=\"${live(defaultUserAgent)}\"\n @change=\"${this.handleDefaultUserAgentChange}\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderDefaultAcceptConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultAccept = '*/*', defaultHeaders = false } = this.config;\n if (!enabled || !defaultHeaders) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"defaultAccept\"\n label=\"Default accept\"\n .value=\"${live(defaultAccept)}\"\n @change=\"${this.handleDefaultAcceptChange}\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderIgnoreSessionCookiesConfig(): TemplateResult | typeof nothing {\n const { enabled = false, ignoreSessionCookies = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"ignoreSessionCookies\"\n id=\"ignoreSessionCookies\"\n .checked=\"${ignoreSessionCookies}\" \n @change=\"${this.handleIgnoreCookies}\" \n title=\"Toggle ignore cookies\"\n aria-label=\"Toggle ignore cookies\"\n ></ui-switch>\n <label class=\"label-large\" for=\"ignoreSessionCookies\">\n Ignore cookies\n </label>\n </div>\n `;\n }\n\n protected renderValidateCertificatesConfig(): TemplateResult | typeof nothing {\n const { enabled = false, validateCertificates = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"validateCertificates\"\n id=\"validateCertificates\"\n .checked=\"${validateCertificates}\" \n @change=\"${this.handleValidateCertificates}\" \n title=\"Toggle validate certificates\"\n aria-label=\"Toggle validate certificates\"\n ></ui-switch>\n <label class=\"label-large\" for=\"validateCertificates\">\n Validate certificates\n </label>\n </div>\n `;\n }\n\n protected renderDefaultHeadersConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultHeaders = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"defaultHeaders\"\n id=\"defaultHeaders\"\n .checked=\"${defaultHeaders}\" \n @change=\"${this.handleDefaultHeaders}\" \n title=\"Toggle validate certificates\"\n aria-label=\"Toggle validate certificates\"\n ></ui-switch>\n <label class=\"label-large\" for=\"defaultHeaders\">\n Add default headers to the request (accept and user agent)\n </label>\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RequestConfigElement.js","sourceRoot":"","sources":["../../../src/elements/http/RequestConfigElement.ts"],"names":[],"mappings":"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","sourcesContent":["import { RequestConfig } from \"@api-client/core/build/browser.js\";\nimport { html, nothing, TemplateResult } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { live } from \"lit/directives/live.js\";\nimport ApiElement from \"../ApiElement.js\";\nimport SwitchElement from \"../../ui/input/SwitchElement.js\";\nimport Input from \"../../ui/input/Input.js\";\nimport '../../define/ui/ui-switch.js';\nimport '../../define/ui/ui-text-field.js';\n\n/**\n * @fires change - when the configuration object changed.\n */\nexport default class RequestConfigElement extends ApiElement {\n /**\n * HTTP request configuration for the transport.\n */\n @property({ type: Object }) config = new RequestConfig().toJSON();\n\n protected handleEnabledToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.enabled = node.checked;\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleFollowRedirects(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.followRedirects = node.checked;\n this.notifyChanged();\n }\n\n protected handleIgnoreCookies(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.ignoreSessionCookies = node.checked;\n this.notifyChanged();\n }\n\n protected handleValidateCertificates(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.validateCertificates = node.checked;\n this.notifyChanged();\n }\n\n protected handleDefaultHeaders(e: Event): void {\n const node = e.currentTarget as SwitchElement;\n this.config.defaultHeaders = node.checked;\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleTimeoutChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n delete this.config.timeout;\n this.requestUpdate();\n } else {\n const num = Number(raw);\n if (Number.isNaN(num)) {\n input.setCustomValidity('Invalid input.');\n input.checkValidity();\n return;\n }\n if (this.config.timeout === num) {\n return;\n }\n this.config.timeout = num;\n }\n input.setCustomValidity('');\n input.checkValidity();\n this.notifyChanged();\n this.requestUpdate();\n }\n\n protected handleDefaultUserAgentChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n if (!this.config.defaultUserAgent) {\n this.requestUpdate();\n return;\n }\n delete this.config.defaultUserAgent;\n this.requestUpdate();\n } else {\n if (this.config.defaultUserAgent === raw) {\n return;\n }\n this.config.defaultUserAgent = raw;\n }\n this.notifyChanged();\n }\n\n protected handleDefaultAcceptChange(e: Event): void {\n const input = e.target as Input;\n const raw = input.value.trim();\n if (!raw) {\n if (!this.config.defaultAccept) {\n this.requestUpdate();\n return;\n }\n delete this.config.defaultAccept;\n this.requestUpdate();\n } else {\n if (this.config.defaultAccept === raw) {\n return;\n }\n this.config.defaultAccept = raw;\n }\n this.notifyChanged();\n }\n\n protected notifyChanged(): void {\n this.dispatchEvent(new Event('change'));\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderPanelTitle()}\n ${this.renderEnableSwitch()}\n ${this.renderRedirectsConfig()}\n ${this.renderIgnoreSessionCookiesConfig()}\n ${this.renderValidateCertificatesConfig()}\n ${this.renderDefaultHeadersConfig()}\n ${this.renderDefaultUserAgentConfig()}\n ${this.renderDefaultAcceptConfig()}\n ${this.renderTimeoutConfig()}\n `;\n }\n\n protected renderPanelTitle(): TemplateResult {\n return html`\n <div class=\"title-medium\">Request options</div>\n <p class=\"body-medium\">This overrides other configurations defined in the application.</p>\n `;\n }\n\n protected renderEnableSwitch(): TemplateResult {\n const { enabled = false } = this.config;\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"enabled\"\n .checked=\"${enabled}\" \n @change=\"${this.handleEnabledToggle}\" \n title=\"Toggle options enabled\"\n aria-label=\"Toggle options enabled\"\n id=\"enable\"\n ></ui-switch>\n <label class=\"label-large\" for=\"enable\">\n Enable custom request options\n </label>\n </div>\n `;\n }\n\n protected renderRedirectsConfig(): TemplateResult | typeof nothing {\n const { enabled = false, followRedirects = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"followRedirects\"\n id=\"followRedirects\"\n .checked=\"${followRedirects}\" \n @change=\"${this.handleFollowRedirects}\" \n title=\"Toggle follow redirects\"\n aria-label=\"Toggle follow redirects\"\n ></ui-switch>\n <label class=\"label-large\" for=\"followRedirects\">\n Follow redirects\n </label>\n </div>\n `;\n }\n\n protected renderTimeoutConfig(): TemplateResult | typeof nothing {\n const { enabled = false, timeout = 90 } = this.config;\n if (!enabled) {\n return nothing;\n }\n const value = typeof timeout === 'number' ? String(timeout) : '';\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"timeout\"\n label=\"Request timeout\"\n .value=\"${live(value)}\"\n @change=\"${this.handleTimeoutChange}\"\n supportingText=\"0 for no timeout, clear for default.\"\n inputMode=\"numeric\"\n invalidText=\"Enter a positive integer or zero.\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderDefaultUserAgentConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultUserAgent = 'api-client', defaultHeaders = false } = this.config;\n if (!enabled || !defaultHeaders) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"defaultUserAgent\"\n label=\"Default user agent\"\n .value=\"${live(defaultUserAgent)}\"\n @change=\"${this.handleDefaultUserAgentChange}\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderDefaultAcceptConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultAccept = '*/*', defaultHeaders = false } = this.config;\n if (!enabled || !defaultHeaders) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-text-field\n name=\"defaultAccept\"\n label=\"Default accept\"\n .value=\"${live(defaultAccept)}\"\n @change=\"${this.handleDefaultAcceptChange}\"\n ></ui-text-field>\n </div>\n `;\n }\n\n protected renderIgnoreSessionCookiesConfig(): TemplateResult | typeof nothing {\n const { enabled = false, ignoreSessionCookies = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"ignoreSessionCookies\"\n id=\"ignoreSessionCookies\"\n .checked=\"${ignoreSessionCookies}\" \n @change=\"${this.handleIgnoreCookies}\" \n title=\"Toggle ignore cookies\"\n aria-label=\"Toggle ignore cookies\"\n ></ui-switch>\n <label class=\"label-large\" for=\"ignoreSessionCookies\">\n Ignore cookies\n </label>\n </div>\n `;\n }\n\n protected renderValidateCertificatesConfig(): TemplateResult | typeof nothing {\n const { enabled = false, validateCertificates = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"validateCertificates\"\n id=\"validateCertificates\"\n .checked=\"${validateCertificates}\" \n @change=\"${this.handleValidateCertificates}\" \n title=\"Toggle validate certificates\"\n aria-label=\"Toggle validate certificates\"\n ></ui-switch>\n <label class=\"label-large\" for=\"validateCertificates\">\n Validate certificates\n </label>\n </div>\n `;\n }\n\n protected renderDefaultHeadersConfig(): TemplateResult | typeof nothing {\n const { enabled = false, defaultHeaders = false } = this.config;\n if (!enabled) {\n return nothing;\n }\n return html`\n <div class=\"form-row\">\n <ui-switch\n name=\"defaultHeaders\"\n id=\"defaultHeaders\"\n .checked=\"${defaultHeaders}\" \n @change=\"${this.handleDefaultHeaders}\" \n title=\"Toggle validate certificates\"\n aria-label=\"Toggle validate certificates\"\n ></ui-switch>\n <label class=\"label-large\" for=\"defaultHeaders\">\n Add default headers to the request (accept and user agent)\n </label>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -42,83 +42,6 @@ export const NonPayloadMethods = ['GET', 'HEAD'];
|
|
|
42
42
|
* @fires uichange - When the UI model change.
|
|
43
43
|
*/
|
|
44
44
|
export default class RequestEditor extends ApiElement {
|
|
45
|
-
/**
|
|
46
|
-
* A promise set when reading payload from the `request` object.
|
|
47
|
-
* It is resolved after the payload is read anf the `payload` property is set.
|
|
48
|
-
*/
|
|
49
|
-
readingPayloadPromise = Promise.resolve();
|
|
50
|
-
/**
|
|
51
|
-
* A promise set when the payload is being written to the `request` object.
|
|
52
|
-
* It is resolved after the `payload` is set on the request as a serializable object.
|
|
53
|
-
*/
|
|
54
|
-
writingPayloadPromise = Promise.resolve();
|
|
55
|
-
/**
|
|
56
|
-
* A flag used to determine when the payload is being read for the synchronous code.
|
|
57
|
-
*/
|
|
58
|
-
readingPayload = false;
|
|
59
|
-
/**
|
|
60
|
-
* The base request object.
|
|
61
|
-
*/
|
|
62
|
-
request = new HttpRequest().toJSON();
|
|
63
|
-
/**
|
|
64
|
-
* The request payload.
|
|
65
|
-
* It can be just a string or an object with the payload data depending on the content type.
|
|
66
|
-
*/
|
|
67
|
-
payload;
|
|
68
|
-
/**
|
|
69
|
-
* The current content type value.
|
|
70
|
-
*/
|
|
71
|
-
contentType;
|
|
72
|
-
authorization;
|
|
73
|
-
assertions;
|
|
74
|
-
/**
|
|
75
|
-
* Redirect URL for the OAuth2 authorization.
|
|
76
|
-
* If can be also set by dispatching `oauth2-redirect-url-changed`
|
|
77
|
-
* with `value` property on the `detail` object.
|
|
78
|
-
*/
|
|
79
|
-
oauth2RedirectUri;
|
|
80
|
-
/**
|
|
81
|
-
* When set the editor is in read only mode.
|
|
82
|
-
*/
|
|
83
|
-
readOnly = false;
|
|
84
|
-
/**
|
|
85
|
-
* A value to be passed to the OAuth 2 `authorizationUri` property in case
|
|
86
|
-
* if current configuration has no value.
|
|
87
|
-
* This is to be used as a default value.
|
|
88
|
-
*/
|
|
89
|
-
oauth2AuthorizationUri;
|
|
90
|
-
/**
|
|
91
|
-
* A value to be passed to the OAuth 2 `accessTokenUri` property in case
|
|
92
|
-
* if current configuration has no value.
|
|
93
|
-
* This is to be used as a default value.
|
|
94
|
-
*/
|
|
95
|
-
oauth2AccessTokenUri;
|
|
96
|
-
/**
|
|
97
|
-
* When set it ignores all `content-*` headers when the request method is `GET`.
|
|
98
|
-
* When not set or `false` it renders a warning message.
|
|
99
|
-
*/
|
|
100
|
-
ignoreContentOnGet = false;
|
|
101
|
-
/**
|
|
102
|
-
* When set the `content-` headers warning dialog is rendered.
|
|
103
|
-
*/
|
|
104
|
-
contentHeadersDialogOpened = false;
|
|
105
|
-
/**
|
|
106
|
-
* To be set when the request is being transported.
|
|
107
|
-
*/
|
|
108
|
-
loading = false;
|
|
109
|
-
/**
|
|
110
|
-
* An index of currently opened tab.
|
|
111
|
-
* @default 0
|
|
112
|
-
*/
|
|
113
|
-
selectedTab = 'parameters';
|
|
114
|
-
/**
|
|
115
|
-
* Optional instance of the `RequestUiMeta` to store the UI state.
|
|
116
|
-
*/
|
|
117
|
-
ui;
|
|
118
|
-
/**
|
|
119
|
-
* HTTP request configuration for the transport.
|
|
120
|
-
*/
|
|
121
|
-
config = new RequestConfig().toJSON();
|
|
122
45
|
/**
|
|
123
46
|
* @returns True when the request cannot have the payload on the message.
|
|
124
47
|
*/
|
|
@@ -129,19 +52,62 @@ export default class RequestEditor extends ApiElement {
|
|
|
129
52
|
}
|
|
130
53
|
return !NonPayloadMethods.includes(request.method);
|
|
131
54
|
}
|
|
132
|
-
_awaitingOAuth2authorization = false;
|
|
133
|
-
/**
|
|
134
|
-
* This is set by the internal logic. When `ignoreContentOnGet` is set and the headers have `content-` headers
|
|
135
|
-
* a dialog is rendered when trying to send the request. When the user chooses to ignore the warning this
|
|
136
|
-
* flag makes sure that `send()` does not check headers.
|
|
137
|
-
*
|
|
138
|
-
* @todo(pawel): This should be done in the request logic module plugin.
|
|
139
|
-
* Plugins can stop request indefinitely or cancel it.
|
|
140
|
-
*/
|
|
141
|
-
ignoreValidationOnGet = false;
|
|
142
|
-
snippets;
|
|
143
55
|
constructor() {
|
|
144
56
|
super();
|
|
57
|
+
/**
|
|
58
|
+
* A promise set when reading payload from the `request` object.
|
|
59
|
+
* It is resolved after the payload is read anf the `payload` property is set.
|
|
60
|
+
*/
|
|
61
|
+
this.readingPayloadPromise = Promise.resolve();
|
|
62
|
+
/**
|
|
63
|
+
* A promise set when the payload is being written to the `request` object.
|
|
64
|
+
* It is resolved after the `payload` is set on the request as a serializable object.
|
|
65
|
+
*/
|
|
66
|
+
this.writingPayloadPromise = Promise.resolve();
|
|
67
|
+
/**
|
|
68
|
+
* A flag used to determine when the payload is being read for the synchronous code.
|
|
69
|
+
*/
|
|
70
|
+
this.readingPayload = false;
|
|
71
|
+
/**
|
|
72
|
+
* The base request object.
|
|
73
|
+
*/
|
|
74
|
+
this.request = new HttpRequest().toJSON();
|
|
75
|
+
/**
|
|
76
|
+
* When set the editor is in read only mode.
|
|
77
|
+
*/
|
|
78
|
+
this.readOnly = false;
|
|
79
|
+
/**
|
|
80
|
+
* When set it ignores all `content-*` headers when the request method is `GET`.
|
|
81
|
+
* When not set or `false` it renders a warning message.
|
|
82
|
+
*/
|
|
83
|
+
this.ignoreContentOnGet = false;
|
|
84
|
+
/**
|
|
85
|
+
* When set the `content-` headers warning dialog is rendered.
|
|
86
|
+
*/
|
|
87
|
+
this.contentHeadersDialogOpened = false;
|
|
88
|
+
/**
|
|
89
|
+
* To be set when the request is being transported.
|
|
90
|
+
*/
|
|
91
|
+
this.loading = false;
|
|
92
|
+
/**
|
|
93
|
+
* An index of currently opened tab.
|
|
94
|
+
* @default 0
|
|
95
|
+
*/
|
|
96
|
+
this.selectedTab = 'parameters';
|
|
97
|
+
/**
|
|
98
|
+
* HTTP request configuration for the transport.
|
|
99
|
+
*/
|
|
100
|
+
this.config = new RequestConfig().toJSON();
|
|
101
|
+
this._awaitingOAuth2authorization = false;
|
|
102
|
+
/**
|
|
103
|
+
* This is set by the internal logic. When `ignoreContentOnGet` is set and the headers have `content-` headers
|
|
104
|
+
* a dialog is rendered when trying to send the request. When the user chooses to ignore the warning this
|
|
105
|
+
* flag makes sure that `send()` does not check headers.
|
|
106
|
+
*
|
|
107
|
+
* @todo(pawel): This should be done in the request logic module plugin.
|
|
108
|
+
* Plugins can stop request indefinitely or cancel it.
|
|
109
|
+
*/
|
|
110
|
+
this.ignoreValidationOnGet = false;
|
|
145
111
|
this.config.enabled = false;
|
|
146
112
|
this.handleInternalSend = this.handleInternalSend.bind(this);
|
|
147
113
|
}
|