@api-client/ui 0.2.13 → 0.3.1
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/.vscode/settings.json +1 -0
- package/build/src/core/ModalActivity.d.ts +1 -1
- package/build/src/core/ModalActivity.d.ts.map +1 -1
- package/build/src/core/ModalActivity.js +6 -5
- package/build/src/core/ModalActivity.js.map +1 -1
- package/build/src/core/ThemeManager.d.ts +4 -2
- package/build/src/core/ThemeManager.d.ts.map +1 -1
- package/build/src/core/ThemeManager.js.map +1 -1
- package/build/src/demo/DemoPage.d.ts +1 -4
- package/build/src/demo/DemoPage.d.ts.map +1 -1
- package/build/src/demo/DemoPage.js +2 -5
- package/build/src/demo/DemoPage.js.map +1 -1
- package/build/src/elements/authorization/ui/CcAuthorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/CcAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/CcAuthorization.js +2 -2
- package/build/src/elements/authorization/ui/CcAuthorization.js.map +1 -1
- package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/OAuth2Authorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/OAuth2Authorization.js +11 -5
- package/build/src/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/build/src/elements/authorization/ui/OidcAuthorization.d.ts +1 -2
- package/build/src/elements/authorization/ui/OidcAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/OidcAuthorization.js +10 -8
- package/build/src/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/build/src/elements/code/HttpSnippets.d.ts +1 -1
- package/build/src/elements/code/HttpSnippets.d.ts.map +1 -1
- package/build/src/elements/code/HttpSnippets.js +5 -5
- package/build/src/elements/code/HttpSnippets.js.map +1 -1
- package/build/src/elements/dialog/internals/ConfirmDelete.d.ts +1 -1
- package/build/src/elements/dialog/internals/ConfirmDelete.d.ts.map +1 -1
- package/build/src/elements/dialog/internals/ConfirmDelete.js +5 -5
- package/build/src/elements/dialog/internals/ConfirmDelete.js.map +1 -1
- package/build/src/elements/dialog/internals/Rename.d.ts +1 -1
- package/build/src/elements/dialog/internals/Rename.d.ts.map +1 -1
- package/build/src/elements/dialog/internals/Rename.js +6 -5
- package/build/src/elements/dialog/internals/Rename.js.map +1 -1
- package/build/src/elements/environment/EnvironmentEditor.d.ts +1 -1
- package/build/src/elements/environment/EnvironmentEditor.d.ts.map +1 -1
- package/build/src/elements/environment/EnvironmentEditor.js +5 -4
- package/build/src/elements/environment/EnvironmentEditor.js.map +1 -1
- package/build/src/elements/http/BodyEditor.d.ts +1 -3
- package/build/src/elements/http/BodyEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyEditor.js +25 -20
- package/build/src/elements/http/BodyEditor.js.map +1 -1
- package/build/src/elements/http/BodyMultipartEditor.d.ts +1 -1
- package/build/src/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyMultipartEditor.js +3 -3
- package/build/src/elements/http/BodyMultipartEditor.js.map +1 -1
- package/build/src/elements/http/CertificateAdd.element.d.ts +1 -3
- package/build/src/elements/http/CertificateAdd.element.d.ts.map +1 -1
- package/build/src/elements/http/CertificateAdd.element.js +6 -10
- package/build/src/elements/http/CertificateAdd.element.js.map +1 -1
- package/build/src/elements/http/HeadersForm.d.ts +1 -1
- package/build/src/elements/http/HeadersForm.d.ts.map +1 -1
- package/build/src/elements/http/HeadersForm.js +3 -3
- package/build/src/elements/http/HeadersForm.js.map +1 -1
- package/build/src/elements/http/HttpAssertions.element.d.ts +1 -1
- package/build/src/elements/http/HttpAssertions.element.d.ts.map +1 -1
- package/build/src/elements/http/HttpAssertions.element.js +2 -2
- package/build/src/elements/http/HttpAssertions.element.js.map +1 -1
- package/build/src/elements/http/HttpFlows.element.d.ts +1 -1
- package/build/src/elements/http/HttpFlows.element.d.ts.map +1 -1
- package/build/src/elements/http/HttpFlows.element.js +6 -6
- package/build/src/elements/http/HttpFlows.element.js.map +1 -1
- package/build/src/elements/http/RequestEditor.d.ts +1 -3
- package/build/src/elements/http/RequestEditor.d.ts.map +1 -1
- package/build/src/elements/http/RequestEditor.js +10 -11
- package/build/src/elements/http/RequestEditor.js.map +1 -1
- package/build/src/elements/http/UrlParamsForm.d.ts +1 -1
- package/build/src/elements/http/UrlParamsForm.d.ts.map +1 -1
- package/build/src/elements/http/UrlParamsForm.js +4 -4
- package/build/src/elements/http/UrlParamsForm.js.map +1 -1
- package/build/src/elements/project/HttpProjectRequest.d.ts +1 -1
- package/build/src/elements/project/HttpProjectRequest.d.ts.map +1 -1
- package/build/src/elements/project/HttpProjectRequest.js +3 -3
- package/build/src/elements/project/HttpProjectRequest.js.map +1 -1
- package/build/src/elements/project/HttpProjectRequestHistory.d.ts +1 -2
- package/build/src/elements/project/HttpProjectRequestHistory.d.ts.map +1 -1
- package/build/src/elements/project/HttpProjectRequestHistory.js +5 -6
- package/build/src/elements/project/HttpProjectRequestHistory.js.map +1 -1
- package/build/src/elements/project/ProjectRunReport.d.ts +1 -1
- package/build/src/elements/project/ProjectRunReport.d.ts.map +1 -1
- package/build/src/elements/project/ProjectRunReport.js +7 -7
- package/build/src/elements/project/ProjectRunReport.js.map +1 -1
- package/build/src/elements/project/ProjectRunner.d.ts +1 -2
- package/build/src/elements/project/ProjectRunner.d.ts.map +1 -1
- package/build/src/elements/project/ProjectRunner.js +4 -5
- package/build/src/elements/project/ProjectRunner.js.map +1 -1
- package/build/src/md/button/internals/base.d.ts +98 -0
- package/build/src/md/button/internals/base.d.ts.map +1 -0
- package/build/src/md/button/internals/base.js +353 -0
- package/build/src/md/button/internals/base.js.map +1 -0
- package/build/src/md/button/internals/button.d.ts +7 -75
- package/build/src/md/button/internals/button.d.ts.map +1 -1
- package/build/src/md/button/internals/button.js +18 -247
- package/build/src/md/button/internals/button.js.map +1 -1
- package/build/src/md/button/internals/{button-styles.d.ts → button.styles.d.ts} +1 -1
- package/build/src/md/button/internals/button.styles.d.ts.map +1 -0
- package/build/src/md/button/internals/button.styles.js +319 -0
- package/build/src/md/button/internals/button.styles.js.map +1 -0
- package/build/src/md/button/internals/group.d.ts +54 -0
- package/build/src/md/button/internals/group.d.ts.map +1 -0
- package/build/src/md/button/internals/group.js +157 -0
- package/build/src/md/button/internals/group.js.map +1 -0
- package/build/src/md/button/internals/{text-button.styles.d.ts → group.styles.d.ts} +1 -1
- package/build/src/md/button/internals/group.styles.d.ts.map +1 -0
- package/build/src/md/button/internals/group.styles.js +102 -0
- package/build/src/md/button/internals/group.styles.js.map +1 -0
- package/build/src/md/button/ui-button-group.d.ts +11 -0
- package/build/src/md/button/ui-button-group.d.ts.map +1 -0
- package/build/src/md/{icon-button/ui-filled-icon-button.js → button/ui-button-group.js} +10 -11
- package/build/src/md/button/ui-button-group.js.map +1 -0
- package/build/src/md/button/ui-button.d.ts +14 -0
- package/build/src/md/button/ui-button.d.ts.map +1 -0
- package/build/src/md/button/{ui-text-button.js → ui-button.js} +10 -11
- package/build/src/md/button/ui-button.js.map +1 -0
- package/build/src/md/dialog/internals/Dialog.d.ts +5 -5
- package/build/src/md/dialog/internals/Dialog.d.ts.map +1 -1
- package/build/src/md/dialog/internals/Dialog.js +14 -9
- package/build/src/md/dialog/internals/Dialog.js.map +1 -1
- package/build/src/md/dropdown-list/internals/UiDropdownList.d.ts +1 -1
- package/build/src/md/dropdown-list/internals/UiDropdownList.js +1 -1
- package/build/src/md/dropdown-list/internals/UiDropdownList.js.map +1 -1
- package/build/src/md/icon-button/internals/IconButton.d.ts +12 -36
- package/build/src/md/icon-button/internals/IconButton.d.ts.map +1 -1
- package/build/src/md/icon-button/internals/IconButton.js +32 -144
- package/build/src/md/icon-button/internals/IconButton.js.map +1 -1
- package/build/src/md/{button/internals/filled-button.styles.d.ts → icon-button/internals/IconButton.styles.d.ts} +1 -1
- package/build/src/md/icon-button/internals/IconButton.styles.d.ts.map +1 -0
- package/build/src/md/icon-button/internals/IconButton.styles.js +286 -0
- package/build/src/md/icon-button/internals/IconButton.styles.js.map +1 -0
- package/build/src/md/icon-button/ui-icon-button.d.ts.map +1 -1
- package/build/src/md/icon-button/ui-icon-button.js +2 -3
- package/build/src/md/icon-button/ui-icon-button.js.map +1 -1
- package/build/src/md/input/Input.d.ts +4 -3
- package/build/src/md/input/Input.d.ts.map +1 -1
- package/build/src/md/input/Input.js +15 -11
- package/build/src/md/input/Input.js.map +1 -1
- package/build/src/md/ripple/internals/ripple.d.ts +2 -0
- package/build/src/md/ripple/internals/ripple.d.ts.map +1 -1
- package/build/src/md/ripple/internals/ripple.js +20 -10
- package/build/src/md/ripple/internals/ripple.js.map +1 -1
- package/build/src/md/ripple/internals/ripple.styles.d.ts.map +1 -1
- package/build/src/md/ripple/internals/ripple.styles.js +8 -20
- package/build/src/md/ripple/internals/ripple.styles.js.map +1 -1
- package/build/src/md/snackbar/internals/Snackbar.d.ts +1 -1
- package/build/src/md/snackbar/internals/Snackbar.d.ts.map +1 -1
- package/build/src/md/snackbar/internals/Snackbar.js +4 -2
- package/build/src/md/snackbar/internals/Snackbar.js.map +1 -1
- package/build/src/md/text-field/internals/common.styles.d.ts.map +1 -1
- package/build/src/md/text-field/internals/common.styles.js +11 -5
- package/build/src/md/text-field/internals/common.styles.js.map +1 -1
- package/build/src/md/text-field/internals/filled.styles.d.ts.map +1 -1
- package/build/src/md/text-field/internals/filled.styles.js +7 -0
- package/build/src/md/text-field/internals/filled.styles.js.map +1 -1
- package/build/src/md/text-field/internals/outlined.styles.d.ts.map +1 -1
- package/build/src/md/text-field/internals/outlined.styles.js +29 -9
- package/build/src/md/text-field/internals/outlined.styles.js.map +1 -1
- package/build/src/styles/m3/dialog.module.d.ts +2 -2
- package/build/src/styles/m3/dialog.module.js +2 -2
- package/build/src/styles/m3/dialog.module.js.map +1 -1
- package/build/src/styles/m3/tokens.d.ts.map +1 -1
- package/build/src/styles/m3/tokens.js +208 -182
- package/build/src/styles/m3/tokens.js.map +1 -1
- package/demo/elements/authorization/oauth-authorize.html +1 -1
- package/demo/elements/authorization/oauth-authorize.ts +1 -1
- package/demo/elements/environment/variables-editor.ts +2 -2
- package/demo/elements/http/url-editing.ts +3 -3
- package/demo/elements/project/request-editor.ts +4 -4
- package/demo/layout/index.ts +5 -5
- package/demo/md/buttons/button.html +121 -0
- package/demo/md/buttons/button.ts +246 -0
- package/demo/md/buttons/{index.html → group.html} +15 -2
- package/demo/md/buttons/group.ts +171 -0
- package/demo/md/checkbox/index.ts +1 -1
- package/demo/md/dialog/dialog.ts +8 -9
- package/demo/md/dropdown-list/index.ts +68 -71
- package/demo/md/icon-button/index.html +97 -7
- package/demo/md/icon-button/index.ts +97 -201
- package/demo/md/index.html +3 -1
- package/demo/md/inputs/input.html +39 -0
- package/demo/md/inputs/input.ts +204 -419
- package/demo/md/inputs/radio.ts +1 -1
- package/demo/md/inputs/switch.ts +1 -1
- package/demo/md/notification/snack.ts +5 -5
- package/demo/md/progress/progress.ts +4 -3
- package/package.json +2 -2
- package/src/core/ModalActivity.ts +6 -5
- package/src/core/ThemeManager.ts +5 -4
- package/src/demo/DemoPage.ts +2 -5
- package/src/elements/authorization/ui/CcAuthorization.ts +2 -2
- package/src/elements/authorization/ui/OAuth2Authorization.ts +11 -5
- package/src/elements/authorization/ui/OidcAuthorization.ts +10 -8
- package/src/elements/code/HttpSnippets.ts +5 -5
- package/src/elements/dialog/internals/ConfirmDelete.ts +5 -5
- package/src/elements/dialog/internals/Rename.ts +6 -5
- package/src/elements/environment/EnvironmentEditor.ts +5 -4
- package/src/elements/http/BodyEditor.ts +25 -20
- package/src/elements/http/BodyMultipartEditor.ts +3 -3
- package/src/elements/http/CertificateAdd.element.ts +6 -10
- package/src/elements/http/HeadersForm.ts +3 -3
- package/src/elements/http/HttpAssertions.element.ts +2 -2
- package/src/elements/http/HttpFlows.element.ts +6 -6
- package/src/elements/http/RequestEditor.ts +10 -11
- package/src/elements/http/UrlParamsForm.ts +4 -4
- package/src/elements/project/HttpProjectRequest.ts +3 -3
- package/src/elements/project/HttpProjectRequestHistory.ts +5 -6
- package/src/elements/project/ProjectRunReport.ts +7 -7
- package/src/elements/project/ProjectRunner.ts +4 -5
- package/src/md/button/internals/base.ts +299 -0
- package/src/md/button/internals/button.styles.ts +319 -0
- package/src/md/button/internals/button.ts +8 -234
- package/src/md/button/internals/group.styles.ts +102 -0
- package/src/md/button/internals/group.ts +121 -0
- package/src/md/button/ui-button-group.ts +15 -0
- package/src/md/button/ui-button.ts +18 -0
- package/src/md/dialog/internals/Dialog.ts +14 -9
- package/src/md/dropdown-list/internals/UiDropdownList.ts +1 -1
- package/src/md/icon-button/internals/IconButton.styles.ts +286 -0
- package/src/md/icon-button/internals/IconButton.ts +15 -139
- package/src/md/icon-button/ui-icon-button.ts +2 -3
- package/src/md/input/Input.ts +16 -11
- package/src/md/ripple/internals/ripple.styles.ts +8 -20
- package/src/md/ripple/internals/ripple.ts +21 -13
- package/src/md/snackbar/internals/Snackbar.ts +4 -2
- package/src/md/text-field/internals/common.styles.ts +11 -5
- package/src/md/text-field/internals/filled.styles.ts +7 -0
- package/src/md/text-field/internals/outlined.styles.ts +29 -9
- package/src/styles/m3/dialog.module.ts +2 -2
- package/src/styles/m3/native.css +270 -0
- package/src/styles/m3/tokens.css +208 -182
- package/src/styles/m3/tokens.ts +208 -182
- package/test/ui/button/UiButton.test.ts +51 -29
- package/test/ui/button/UiIconButton.test.ts +25 -19
- package/test/ui/dialog/UiDialog.test.ts +10 -10
- package/build/src/md/button/internals/button-styles.d.ts.map +0 -1
- package/build/src/md/button/internals/button-styles.js +0 -143
- package/build/src/md/button/internals/button-styles.js.map +0 -1
- package/build/src/md/button/internals/elevated-button.d.ts +0 -4
- package/build/src/md/button/internals/elevated-button.d.ts.map +0 -1
- package/build/src/md/button/internals/elevated-button.js +0 -4
- package/build/src/md/button/internals/elevated-button.js.map +0 -1
- package/build/src/md/button/internals/elevated-button.styles.d.ts +0 -3
- package/build/src/md/button/internals/elevated-button.styles.d.ts.map +0 -1
- package/build/src/md/button/internals/elevated-button.styles.js +0 -38
- package/build/src/md/button/internals/elevated-button.styles.js.map +0 -1
- package/build/src/md/button/internals/filled-button.d.ts +0 -4
- package/build/src/md/button/internals/filled-button.d.ts.map +0 -1
- package/build/src/md/button/internals/filled-button.js +0 -4
- package/build/src/md/button/internals/filled-button.js.map +0 -1
- package/build/src/md/button/internals/filled-button.styles.d.ts.map +0 -1
- package/build/src/md/button/internals/filled-button.styles.js +0 -30
- package/build/src/md/button/internals/filled-button.styles.js.map +0 -1
- package/build/src/md/button/internals/filled-tonal-button.d.ts +0 -4
- package/build/src/md/button/internals/filled-tonal-button.d.ts.map +0 -1
- package/build/src/md/button/internals/filled-tonal-button.js +0 -4
- package/build/src/md/button/internals/filled-tonal-button.js.map +0 -1
- package/build/src/md/button/internals/filled-tonal-button.styles.d.ts +0 -3
- package/build/src/md/button/internals/filled-tonal-button.styles.d.ts.map +0 -1
- package/build/src/md/button/internals/filled-tonal-button.styles.js +0 -30
- package/build/src/md/button/internals/filled-tonal-button.styles.js.map +0 -1
- package/build/src/md/button/internals/outlined-button.d.ts +0 -4
- package/build/src/md/button/internals/outlined-button.d.ts.map +0 -1
- package/build/src/md/button/internals/outlined-button.js +0 -4
- package/build/src/md/button/internals/outlined-button.js.map +0 -1
- package/build/src/md/button/internals/outlined-button.styles.d.ts +0 -3
- package/build/src/md/button/internals/outlined-button.styles.d.ts.map +0 -1
- package/build/src/md/button/internals/outlined-button.styles.js +0 -31
- package/build/src/md/button/internals/outlined-button.styles.js.map +0 -1
- package/build/src/md/button/internals/text-button.d.ts +0 -4
- package/build/src/md/button/internals/text-button.d.ts.map +0 -1
- package/build/src/md/button/internals/text-button.js +0 -4
- package/build/src/md/button/internals/text-button.js.map +0 -1
- package/build/src/md/button/internals/text-button.styles.d.ts.map +0 -1
- package/build/src/md/button/internals/text-button.styles.js +0 -30
- package/build/src/md/button/internals/text-button.styles.js.map +0 -1
- package/build/src/md/button/ui-elevated-button.d.ts +0 -14
- package/build/src/md/button/ui-elevated-button.d.ts.map +0 -1
- package/build/src/md/button/ui-elevated-button.js +0 -31
- package/build/src/md/button/ui-elevated-button.js.map +0 -1
- package/build/src/md/button/ui-filled-button.d.ts +0 -14
- package/build/src/md/button/ui-filled-button.d.ts.map +0 -1
- package/build/src/md/button/ui-filled-button.js +0 -31
- package/build/src/md/button/ui-filled-button.js.map +0 -1
- package/build/src/md/button/ui-filled-tonal-button.d.ts +0 -14
- package/build/src/md/button/ui-filled-tonal-button.d.ts.map +0 -1
- package/build/src/md/button/ui-filled-tonal-button.js +0 -31
- package/build/src/md/button/ui-filled-tonal-button.js.map +0 -1
- package/build/src/md/button/ui-outlined-button.d.ts +0 -14
- package/build/src/md/button/ui-outlined-button.d.ts.map +0 -1
- package/build/src/md/button/ui-outlined-button.js +0 -31
- package/build/src/md/button/ui-outlined-button.js.map +0 -1
- package/build/src/md/button/ui-text-button.d.ts +0 -14
- package/build/src/md/button/ui-text-button.d.ts.map +0 -1
- package/build/src/md/button/ui-text-button.js.map +0 -1
- package/build/src/md/icon-button/ui-filled-icon-button.d.ts +0 -11
- package/build/src/md/icon-button/ui-filled-icon-button.d.ts.map +0 -1
- package/build/src/md/icon-button/ui-filled-icon-button.js.map +0 -1
- package/build/src/md/icon-button/ui-filled-tonal-icon-button.d.ts +0 -11
- package/build/src/md/icon-button/ui-filled-tonal-icon-button.d.ts.map +0 -1
- package/build/src/md/icon-button/ui-filled-tonal-icon-button.js +0 -28
- package/build/src/md/icon-button/ui-filled-tonal-icon-button.js.map +0 -1
- package/build/src/md/icon-button/ui-outlined-icon-button.d.ts +0 -11
- package/build/src/md/icon-button/ui-outlined-icon-button.d.ts.map +0 -1
- package/build/src/md/icon-button/ui-outlined-icon-button.js +0 -28
- package/build/src/md/icon-button/ui-outlined-icon-button.js.map +0 -1
- package/demo/md/buttons/index.ts +0 -279
- package/src/md/button/internals/button-styles.ts +0 -143
- package/src/md/button/internals/elevated-button.styles.ts +0 -38
- package/src/md/button/internals/elevated-button.ts +0 -3
- package/src/md/button/internals/filled-button.styles.ts +0 -30
- package/src/md/button/internals/filled-button.ts +0 -3
- package/src/md/button/internals/filled-tonal-button.styles.ts +0 -30
- package/src/md/button/internals/filled-tonal-button.ts +0 -3
- package/src/md/button/internals/outlined-button.styles.ts +0 -31
- package/src/md/button/internals/outlined-button.ts +0 -3
- package/src/md/button/internals/text-button.styles.ts +0 -30
- package/src/md/button/internals/text-button.ts +0 -3
- package/src/md/button/ui-elevated-button.ts +0 -19
- package/src/md/button/ui-filled-button.ts +0 -19
- package/src/md/button/ui-filled-tonal-button.ts +0 -19
- package/src/md/button/ui-outlined-button.ts +0 -19
- package/src/md/button/ui-text-button.ts +0 -19
- package/src/md/icon-button/ui-filled-icon-button.ts +0 -16
- package/src/md/icon-button/ui-filled-tonal-icon-button.ts +0 -16
- package/src/md/icon-button/ui-outlined-icon-button.ts +0 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateAdd.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAQ,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG9D,OAAO,EAAe,KAAK,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAGhG,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAGzC,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4DAA4D,CAAA;AAKjH,OAAO,kDAAkD,CAAA;AACzD,OAAO,sDAAsD,CAAA;AAC7D,OAAO,6CAA6C,CAAA;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"CertificateAdd.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,7 @@ import { SnackNotifications } from '../../md/notification/SnackNotifications.js'
|
|
|
13
13
|
import '../../md/segmented-button/ui-segmented-button.js';
|
|
14
14
|
import '../../md/segmented-button/ui-segmented-button-set.js';
|
|
15
15
|
import '../../md/text-field/ui-filled-text-field.js';
|
|
16
|
-
import '../../md/button/ui-
|
|
17
|
-
import '../../md/button/ui-filled-button.js';
|
|
18
|
-
import '../../md/button/ui-filled-tonal-button.js';
|
|
16
|
+
import '../../md/button/ui-button.js';
|
|
19
17
|
import '../../md/icons/ui-icon.js';
|
|
20
18
|
import '../../md/progress/ui-progress.js';
|
|
21
19
|
let CertificateAdd = (() => {
|
|
@@ -379,8 +377,8 @@ let CertificateAdd = (() => {
|
|
|
379
377
|
@drop="${this.handleFileDrop}"
|
|
380
378
|
>
|
|
381
379
|
<p class="body-medium">Select or drop a certificate file here.</p>
|
|
382
|
-
<ui-
|
|
383
|
-
>Select certificate file</ui-
|
|
380
|
+
<ui-button color="tonal" @click="${this.handleSelectCertificate}" class="select-button"
|
|
381
|
+
>Select certificate file</ui-button
|
|
384
382
|
>
|
|
385
383
|
${certificateFile
|
|
386
384
|
? html `<span class="cert-info body-medium">${certificateFile.fileName}</span>`
|
|
@@ -424,9 +422,7 @@ let CertificateAdd = (() => {
|
|
|
424
422
|
@drop="${this.handleFileDrop}"
|
|
425
423
|
>
|
|
426
424
|
<p class="body-medium">Select or drop a key file here.</p>
|
|
427
|
-
<ui-
|
|
428
|
-
>Select key file</ui-filled-tonal-button
|
|
429
|
-
>
|
|
425
|
+
<ui-button color="tonal" @click="${this.handleSelectKey}" class="select-button">Select key file</ui-button>
|
|
430
426
|
${keyFile
|
|
431
427
|
? html `<span class="cert-info body-medium">${keyFile.fileName}</span>`
|
|
432
428
|
: html `<span class="missing body-medium"
|
|
@@ -456,8 +452,8 @@ let CertificateAdd = (() => {
|
|
|
456
452
|
renderImportButton() {
|
|
457
453
|
return html `
|
|
458
454
|
<div class="form-action">
|
|
459
|
-
<ui-
|
|
460
|
-
<ui-
|
|
455
|
+
<ui-button color="filled" @click="${this.handleImport}">Import</ui-button>
|
|
456
|
+
<ui-button color="text" @click="${this.handleCancel}">Cancel</ui-button>
|
|
461
457
|
</div>
|
|
462
458
|
`;
|
|
463
459
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateAdd.element.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport { Certificate, type CertificateType } from '@api-client/core/models/ClientCertificate.js'\nimport { CertificateFile } from '@api-client/core/models/CertificateFile.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport styles from './CertificateAdd.styles.js'\nimport { getFileName } from '../../lib/files/Utils.js'\nimport type { ISegmentedButtonSelectionDetail } from '../../md/segmented-button/internals/SegmentedButtonsSet.js'\nimport type SegmentedButton from '../../md/segmented-button/internals/SegmentedButton.js'\nimport type Input from '../../md/input/Input.js'\n// import type { IFileFilter, IOpenFileDialogInit } from '../../bindings/base/FileBindings.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/segmented-button/ui-segmented-button.js'\nimport '../../md/segmented-button/ui-segmented-button-set.js'\nimport '../../md/text-field/ui-filled-text-field.js'\nimport '../../md/button/ui-text-button.js'\nimport '../../md/button/ui-filled-button.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/progress/ui-progress.js'\n\ninterface CertificateInfo {\n fileName: string\n contents: ArrayBuffer\n}\n\n/**\n * An element that renders a certificate import UI.\n *\n * Notes for implementation:\n * - `p12` is a single file, may have a passphrase\n * - `pem` is 2 files: the certificate and the key\n * - `pem` may have a `passphrase` on the key but not on the certificate.\n */\nexport default class CertificateAdd extends ApiElement {\n static override get styles(): CSSResult[] {\n return styles\n }\n\n /**\n * The type of the certificate to import.\n * @attribute\n */\n @property({ type: String }) accessor importType: CertificateType = 'pem'\n\n /**\n * The parent folder where to insert the imported certificate.\n * @attribute\n */\n @property({ type: String }) accessor folder: string | undefined\n\n /**\n * The current workspace for the file.\n * @attribute\n */\n @property({ type: String }) accessor space: string | undefined\n\n /**\n * When an IO operation is in progress.\n */\n @state() accessor working: boolean | undefined\n\n @state() accessor certificateFile: CertificateInfo | undefined\n\n @state() accessor keyFile: CertificateInfo | undefined\n\n /**\n * The password for the certificate\n */\n certificatePassword?: string\n\n /**\n * The password for the key.\n */\n keyPassword?: string\n\n /**\n * The user entered certificate name.\n */\n protected certificateName?: string\n\n get hasKeyImport(): boolean {\n return this.importType === 'pem'\n }\n\n get hasCertificatePasswordInput(): boolean {\n return this.importType === 'p12'\n }\n\n protected handleViewSelection(e: CustomEvent<ISegmentedButtonSelectionDetail>): void {\n if (!e.detail.selected) {\n return\n }\n const button = e.detail.button as SegmentedButton\n const type = button.dataset.value as CertificateType | undefined\n if (type) {\n this.importType = type\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n this.certificateName = input.value\n }\n\n protected handleCertificatePasswordChange(e: Event): void {\n const input = e.target as Input\n this.certificatePassword = input.value\n }\n\n protected handleKeyPasswordChange(e: Event): void {\n const input = e.target as Input\n this.keyPassword = input.value\n }\n\n protected handleSelectCertificate(): void {\n this.selectCertificateFLow()\n }\n\n protected handleSelectKey(): void {\n this.selectKeyFLow()\n }\n\n async selectCertificateFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a certificate file',\n // filters: [\n // {\n // description: 'Certificate files',\n // accept: {},\n // },\n // ],\n // }\n // const filters = options.filters as IFileFilter[]\n // if (this.importType === 'p12') {\n // filters[0].accept = {\n // 'application/x-pkcs12': ['.p12', '.pfx'],\n // }\n // } else {\n // filters[0].accept = {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // }\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.certificateFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n async selectKeyFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a key file',\n // filters: [\n // {\n // description: 'Certificate key files',\n // accept: {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // },\n // },\n // ],\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.keyFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n protected isValidDropTarget(dt: DataTransfer): boolean {\n const types = Array.from(dt.types)\n return types.includes('Files')\n }\n\n protected handleFileDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'copy'\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDragLeave(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'none'\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n }\n\n protected handleFileDragOver(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDrop(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n const file = dt.files[0]\n if (!file) {\n return\n }\n const { kind } = node.dataset\n if (!kind) {\n return\n }\n this.processDroppedFile(file, kind as 'certificate' | 'key')\n }\n\n async processDroppedFile(file: File, kind: 'certificate' | 'key'): Promise<void> {\n this.working = true\n const buff = await file.arrayBuffer()\n const fileName = getFileName(file.name)\n if (kind === 'certificate') {\n this.certificateFile = {\n fileName,\n contents: buff,\n }\n } else if (kind === 'key') {\n this.keyFile = {\n fileName,\n contents: buff,\n }\n }\n this.working = false\n }\n\n protected handleCancel(): void {\n this.dispatchEvent(new Event('close'))\n }\n\n protected handleImport(): void {\n this.submit()\n }\n\n async submit(): Promise<void> {\n const invalid = this.reportValidity()\n if (invalid) {\n return\n }\n const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, folder } = this\n const cert =\n this.importType === 'p12'\n ? Certificate.fromP12(certificateFile?.contents as ArrayBuffer, certificateName as string, certificatePassword)\n : Certificate.fromPem(\n certificateFile?.contents as ArrayBuffer,\n keyFile?.contents as ArrayBuffer,\n certificateName as string,\n keyPassword\n )\n const file = CertificateFile.fromCertificate(cert)\n await Events.Store.File.create(file.toJSON(), cert.toJSON(), { parent: folder }, this)\n this.handleCancel()\n }\n\n reportValidity(): boolean {\n const inputs = Array.from((this.shadowRoot as ShadowRoot).querySelectorAll('ui-filled-text-field'))\n let invalid = false\n inputs.forEach((input) => {\n const inputResult = input.reportValidity()\n if (!inputResult) {\n invalid = true\n }\n })\n\n if (!invalid) {\n if (!this.certificateFile) {\n invalid = true\n SnackNotifications.notify(`Certificate file is required.`)\n }\n if (!invalid && this.hasKeyImport && !this.keyFile) {\n invalid = true\n SnackNotifications.notify(`The key file is required.`)\n }\n }\n return invalid\n }\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"form\">\n ${this.renderProgress()} ${this.renderViewToggle()} ${this.renderNameInput()} ${this.renderCertificateFile()}\n ${this.renderCertificatePasswordInput()} ${this.renderKeyFile()} ${this.renderKeyPasswordInput()}\n ${this.renderImportButton()}\n </div>\n `\n }\n\n protected renderViewToggle(): TemplateResult {\n const { importType } = this\n return html`\n <div class=\"view-toggle\">\n <ui-segmented-button-set @select=\"${this.handleViewSelection}\">\n <ui-segmented-button\n .selected=\"${importType === 'pem'}\"\n title=\"Import a certificate in PEM format\"\n data-value=\"pem\"\n >PEM</ui-segmented-button\n >\n <ui-segmented-button\n .selected=\"${importType === 'p12'}\"\n title=\"Import a bundled PFX or PKCS12 encoded private key and certificate\"\n data-value=\"p12\"\n >PFX or PKCS12</ui-segmented-button\n >\n </ui-segmented-button-set>\n </div>\n `\n }\n\n protected renderNameInput(): TemplateResult {\n const { certificateName = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n required\n name=\"name\"\n .value=\"${live(certificateName)}\"\n label=\"Certificate name\"\n @change=\"${this.handleNameChange}\"\n invalidText=\"The name is required\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderCertificateFile(): TemplateResult {\n const { certificateFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"certificate\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a certificate file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectCertificate}\" class=\"select-button\"\n >Select certificate file</ui-filled-tonal-button\n >\n ${certificateFile\n ? html`<span class=\"cert-info body-medium\">${certificateFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Certificate is not\n selected</span\n >`}\n </div>\n `\n }\n\n protected renderCertificatePasswordInput(): TemplateResult | typeof nothing {\n const { certificatePassword = '' } = this\n if (!this.hasCertificatePasswordInput) {\n return nothing\n }\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"certificatePassword\"\n type=\"password\"\n .value=\"${live(certificatePassword)}\"\n label=\"Certificate password\"\n @change=\"${this.handleCertificatePasswordChange}\"\n supportingText=\"Optional password for the certificate\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderKeyFile(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"key\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a key file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectKey}\" class=\"select-button\"\n >Select key file</ui-filled-tonal-button\n >\n ${keyFile\n ? html`<span class=\"cert-info body-medium\">${keyFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Key is not selected</span\n >`}\n </div>\n `\n }\n\n protected renderKeyPasswordInput(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyPassword = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"keyPassword\"\n type=\"password\"\n .value=\"${live(keyPassword)}\"\n label=\"Key password\"\n @change=\"${this.handleKeyPasswordChange}\"\n supportingText=\"Optional password for the key\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderImportButton(): TemplateResult {\n return html`\n <div class=\"form-action\">\n <ui-filled-button @click=\"${this.handleImport}\">Import</ui-filled-button>\n <ui-text-button @click=\"${this.handleCancel}\">Cancel</ui-text-button>\n </div>\n `\n }\n\n protected renderProgress(): TemplateResult | typeof nothing {\n if (!this.working) {\n return nothing\n }\n return html`<ui-progress indeterminate class=\"working\"></ui-progress>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CertificateAdd.element.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport { Certificate, type CertificateType } from '@api-client/core/models/ClientCertificate.js'\nimport { CertificateFile } from '@api-client/core/models/CertificateFile.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport styles from './CertificateAdd.styles.js'\nimport { getFileName } from '../../lib/files/Utils.js'\nimport type { ISegmentedButtonSelectionDetail } from '../../md/segmented-button/internals/SegmentedButtonsSet.js'\nimport type SegmentedButton from '../../md/segmented-button/internals/SegmentedButton.js'\nimport type Input from '../../md/input/Input.js'\n// import type { IFileFilter, IOpenFileDialogInit } from '../../bindings/base/FileBindings.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/segmented-button/ui-segmented-button.js'\nimport '../../md/segmented-button/ui-segmented-button-set.js'\nimport '../../md/text-field/ui-filled-text-field.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/progress/ui-progress.js'\n\ninterface CertificateInfo {\n fileName: string\n contents: ArrayBuffer\n}\n\n/**\n * An element that renders a certificate import UI.\n *\n * Notes for implementation:\n * - `p12` is a single file, may have a passphrase\n * - `pem` is 2 files: the certificate and the key\n * - `pem` may have a `passphrase` on the key but not on the certificate.\n */\nexport default class CertificateAdd extends ApiElement {\n static override get styles(): CSSResult[] {\n return styles\n }\n\n /**\n * The type of the certificate to import.\n * @attribute\n */\n @property({ type: String }) accessor importType: CertificateType = 'pem'\n\n /**\n * The parent folder where to insert the imported certificate.\n * @attribute\n */\n @property({ type: String }) accessor folder: string | undefined\n\n /**\n * The current workspace for the file.\n * @attribute\n */\n @property({ type: String }) accessor space: string | undefined\n\n /**\n * When an IO operation is in progress.\n */\n @state() accessor working: boolean | undefined\n\n @state() accessor certificateFile: CertificateInfo | undefined\n\n @state() accessor keyFile: CertificateInfo | undefined\n\n /**\n * The password for the certificate\n */\n certificatePassword?: string\n\n /**\n * The password for the key.\n */\n keyPassword?: string\n\n /**\n * The user entered certificate name.\n */\n protected certificateName?: string\n\n get hasKeyImport(): boolean {\n return this.importType === 'pem'\n }\n\n get hasCertificatePasswordInput(): boolean {\n return this.importType === 'p12'\n }\n\n protected handleViewSelection(e: CustomEvent<ISegmentedButtonSelectionDetail>): void {\n if (!e.detail.selected) {\n return\n }\n const button = e.detail.button as SegmentedButton\n const type = button.dataset.value as CertificateType | undefined\n if (type) {\n this.importType = type\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n this.certificateName = input.value\n }\n\n protected handleCertificatePasswordChange(e: Event): void {\n const input = e.target as Input\n this.certificatePassword = input.value\n }\n\n protected handleKeyPasswordChange(e: Event): void {\n const input = e.target as Input\n this.keyPassword = input.value\n }\n\n protected handleSelectCertificate(): void {\n this.selectCertificateFLow()\n }\n\n protected handleSelectKey(): void {\n this.selectKeyFLow()\n }\n\n async selectCertificateFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a certificate file',\n // filters: [\n // {\n // description: 'Certificate files',\n // accept: {},\n // },\n // ],\n // }\n // const filters = options.filters as IFileFilter[]\n // if (this.importType === 'p12') {\n // filters[0].accept = {\n // 'application/x-pkcs12': ['.p12', '.pfx'],\n // }\n // } else {\n // filters[0].accept = {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // }\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.certificateFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n async selectKeyFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a key file',\n // filters: [\n // {\n // description: 'Certificate key files',\n // accept: {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // },\n // },\n // ],\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.keyFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n protected isValidDropTarget(dt: DataTransfer): boolean {\n const types = Array.from(dt.types)\n return types.includes('Files')\n }\n\n protected handleFileDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'copy'\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDragLeave(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'none'\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n }\n\n protected handleFileDragOver(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDrop(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n const file = dt.files[0]\n if (!file) {\n return\n }\n const { kind } = node.dataset\n if (!kind) {\n return\n }\n this.processDroppedFile(file, kind as 'certificate' | 'key')\n }\n\n async processDroppedFile(file: File, kind: 'certificate' | 'key'): Promise<void> {\n this.working = true\n const buff = await file.arrayBuffer()\n const fileName = getFileName(file.name)\n if (kind === 'certificate') {\n this.certificateFile = {\n fileName,\n contents: buff,\n }\n } else if (kind === 'key') {\n this.keyFile = {\n fileName,\n contents: buff,\n }\n }\n this.working = false\n }\n\n protected handleCancel(): void {\n this.dispatchEvent(new Event('close'))\n }\n\n protected handleImport(): void {\n this.submit()\n }\n\n async submit(): Promise<void> {\n const invalid = this.reportValidity()\n if (invalid) {\n return\n }\n const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, folder } = this\n const cert =\n this.importType === 'p12'\n ? Certificate.fromP12(certificateFile?.contents as ArrayBuffer, certificateName as string, certificatePassword)\n : Certificate.fromPem(\n certificateFile?.contents as ArrayBuffer,\n keyFile?.contents as ArrayBuffer,\n certificateName as string,\n keyPassword\n )\n const file = CertificateFile.fromCertificate(cert)\n await Events.Store.File.create(file.toJSON(), cert.toJSON(), { parent: folder }, this)\n this.handleCancel()\n }\n\n reportValidity(): boolean {\n const inputs = Array.from((this.shadowRoot as ShadowRoot).querySelectorAll('ui-filled-text-field'))\n let invalid = false\n inputs.forEach((input) => {\n const inputResult = input.reportValidity()\n if (!inputResult) {\n invalid = true\n }\n })\n\n if (!invalid) {\n if (!this.certificateFile) {\n invalid = true\n SnackNotifications.notify(`Certificate file is required.`)\n }\n if (!invalid && this.hasKeyImport && !this.keyFile) {\n invalid = true\n SnackNotifications.notify(`The key file is required.`)\n }\n }\n return invalid\n }\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"form\">\n ${this.renderProgress()} ${this.renderViewToggle()} ${this.renderNameInput()} ${this.renderCertificateFile()}\n ${this.renderCertificatePasswordInput()} ${this.renderKeyFile()} ${this.renderKeyPasswordInput()}\n ${this.renderImportButton()}\n </div>\n `\n }\n\n protected renderViewToggle(): TemplateResult {\n const { importType } = this\n return html`\n <div class=\"view-toggle\">\n <ui-segmented-button-set @select=\"${this.handleViewSelection}\">\n <ui-segmented-button\n .selected=\"${importType === 'pem'}\"\n title=\"Import a certificate in PEM format\"\n data-value=\"pem\"\n >PEM</ui-segmented-button\n >\n <ui-segmented-button\n .selected=\"${importType === 'p12'}\"\n title=\"Import a bundled PFX or PKCS12 encoded private key and certificate\"\n data-value=\"p12\"\n >PFX or PKCS12</ui-segmented-button\n >\n </ui-segmented-button-set>\n </div>\n `\n }\n\n protected renderNameInput(): TemplateResult {\n const { certificateName = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n required\n name=\"name\"\n .value=\"${live(certificateName)}\"\n label=\"Certificate name\"\n @change=\"${this.handleNameChange}\"\n invalidText=\"The name is required\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderCertificateFile(): TemplateResult {\n const { certificateFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"certificate\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a certificate file here.</p>\n <ui-button color=\"tonal\" @click=\"${this.handleSelectCertificate}\" class=\"select-button\"\n >Select certificate file</ui-button\n >\n ${certificateFile\n ? html`<span class=\"cert-info body-medium\">${certificateFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Certificate is not\n selected</span\n >`}\n </div>\n `\n }\n\n protected renderCertificatePasswordInput(): TemplateResult | typeof nothing {\n const { certificatePassword = '' } = this\n if (!this.hasCertificatePasswordInput) {\n return nothing\n }\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"certificatePassword\"\n type=\"password\"\n .value=\"${live(certificatePassword)}\"\n label=\"Certificate password\"\n @change=\"${this.handleCertificatePasswordChange}\"\n supportingText=\"Optional password for the certificate\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderKeyFile(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"key\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a key file here.</p>\n <ui-button color=\"tonal\" @click=\"${this.handleSelectKey}\" class=\"select-button\">Select key file</ui-button>\n ${keyFile\n ? html`<span class=\"cert-info body-medium\">${keyFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Key is not selected</span\n >`}\n </div>\n `\n }\n\n protected renderKeyPasswordInput(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyPassword = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"keyPassword\"\n type=\"password\"\n .value=\"${live(keyPassword)}\"\n label=\"Key password\"\n @change=\"${this.handleKeyPasswordChange}\"\n supportingText=\"Optional password for the key\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderImportButton(): TemplateResult {\n return html`\n <div class=\"form-action\">\n <ui-button color=\"filled\" @click=\"${this.handleImport}\">Import</ui-button>\n <ui-button color=\"text\" @click=\"${this.handleCancel}\">Cancel</ui-button>\n </div>\n `\n }\n\n protected renderProgress(): TemplateResult | typeof nothing {\n if (!this.working) {\n return nothing\n }\n return html`<ui-progress indeterminate class=\"working\"></ui-progress>`\n }\n}\n"]}
|
|
@@ -2,7 +2,7 @@ import { PropertyValues, TemplateResult } from 'lit';
|
|
|
2
2
|
import { type IProperty, Property } from '@api-client/core/models/Property.js';
|
|
3
3
|
import { HeadersArray } from '@api-client/core/models/HeadersArray.js';
|
|
4
4
|
import ApiElement from '../ApiElement.js';
|
|
5
|
-
import '../../md/button/ui-
|
|
5
|
+
import '../../md/button/ui-button.js';
|
|
6
6
|
import '../../md/icon-button/ui-icon-button.js';
|
|
7
7
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
8
8
|
import '../../md/list/ui-list.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersForm.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAG1D,OAAO,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AAGtE,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAKzC,OAAO,
|
|
1
|
+
{"version":3,"file":"HeadersForm.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ import { live } from 'lit/directives/live.js';
|
|
|
10
10
|
import ApiElement from '../ApiElement.js';
|
|
11
11
|
import { EventTypes } from '../../events/EventTypes.js';
|
|
12
12
|
import { SnackNotifications } from '../../md/notification/SnackNotifications.js';
|
|
13
|
-
import '../../md/button/ui-
|
|
13
|
+
import '../../md/button/ui-button.js';
|
|
14
14
|
import '../../md/icon-button/ui-icon-button.js';
|
|
15
15
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
16
16
|
import '../../md/list/ui-list.js';
|
|
@@ -377,8 +377,8 @@ let HeadersForm = (() => {
|
|
|
377
377
|
renderActionButtons() {
|
|
378
378
|
return html `
|
|
379
379
|
<div class="editor-actions">
|
|
380
|
-
<ui-
|
|
381
|
-
<ui-
|
|
380
|
+
<ui-button color="tonal" @click="${this.handleAdd}">Add</ui-button>
|
|
381
|
+
<ui-button color="tonal" @click="${this.handleCopy}">Copy</ui-button>
|
|
382
382
|
<ui-dropdown-list @select="${this.handleOption}" closeOnOutsideClick class="dropdown">
|
|
383
383
|
<ui-icon-button aria-label="Additional options"
|
|
384
384
|
><ui-icon icon="moreVert" role="presentation"></ui-icon
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadersForm.js","sourceRoot":"","sources":["../../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":";AAAA,0DAA0D;AAC1D,OAAO,EAAE,IAAI,EAAkC,MAAM,KAAK,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAA;AACzF,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAkB,QAAQ,EAAE,MAAM,qCAAqC,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAC7C,OAAO,UAAU,MAAM,kBAAkB,CAAA;AAGzC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAChF,OAAO,2CAA2C,CAAA;AAClD,OAAO,wCAAwC,CAAA;AAC/C,OAAO,4CAA4C,CAAA;AACnD,OAAO,0BAA0B,CAAA;AACjC,OAAO,+BAA+B,CAAA;AACtC,OAAO,8BAA8B,CAAA;AACrC,OAAO,gCAAgC,CAAA;AACvC,OAAO,2BAA2B,CAAA;AAElC,MAAM,eAAe,GAAG,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;sBAK5B,UAAU;;;;;;;;;;;;;;;;iBAA9B,WAAY,SAAQ,WAAU;;;oCAKhD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gCAM1C,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;iCAK1C,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;yCAEzB,KAAK,EAAE;qCAEP,KAAK,EAAE;YAfoC,6KAAS,QAAQ,6BAAR,QAAQ,2FAAQ;YAMzB,iKAAS,IAAI,6BAAJ,IAAI,mFAAQ;YAKtC,oKAAS,KAAK,6BAAL,KAAK,qFAAkB;YAElD,4LAAmB,aAAa,6BAAb,aAAa,qGAAqB;YAErD,gLAAmB,SAAS,6BAAT,SAAS,6FAAoB;;;QAfb,6EAAoB,KAAK;QAErE;;;WAGG;UALkE;QAJrE;;;WAGG;QACyC,IAAS,QAAQ,8CAAQ;QAAzB,IAAS,QAAQ,oDAAQ;QAMzB,4HAAgB,KAAK;QAEjE;;WAEG;WAJ8D;QAJjE;;;WAGG;QACyC,IAAS,IAAI,0CAAQ;QAArB,IAAS,IAAI,gDAAQ;QAKtC,0HAA8B,EAAE,GAAA;QAH3D;;WAEG;QACwB,IAAS,KAAK,2CAAkB;QAAhC,IAAS,KAAK,iDAAkB;QAElD,2IAAmC,IAAI,YAAY,EAAE,GAAA;QAArD,IAAmB,aAAa,mDAAqB;QAArD,IAAmB,aAAa,yDAAqB;QAErD,oJAAgD;QAAhD,IAAmB,SAAS,+CAAoB;QAAhD,IAAmB,SAAS,qDAAoB;QAE/C,eAAe,2DAA6B,EAAE,EAAA;QAExD;YACE,KAAK,EAAE,CAAA;YACP,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxE,CAAC;QAEQ,iBAAiB;YACxB,KAAK,CAAC,iBAAiB,EAAE,CAAA;YACzB,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAChC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAC/C,IAAI,CAAC,uBAAwC,CAC9C,CAAA;QACH,CAAC;QAEQ,oBAAoB;YAC3B,KAAK,CAAC,oBAAoB,EAAE,CAAA;YAC5B,IAAI,CAAC,YAAY,CAAC,mBAAmB,CACnC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAC/C,IAAI,CAAC,uBAAwC,CAC9C,CAAA;QACH,CAAC;QAEkB,MAAM,CAAC,EAAwB;YAChD,IAAI,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAA;gBACpF,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAA;gBACzC,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;gBAC5B,CAAC;YACH,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClB,CAAC;QAES,YAAY,CAAC,OAAgB;YACrC,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;YACzB,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;gBACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAA;YAC1C,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAE,CAAA;gBACvC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;YACjB,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAgBD;;;;WAIG;QACH,iBAAiB,CAAC,WAA4B,EAAE,KAAa;YAC3D,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,KAAa,CAAA;YACjB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,WAAW,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;gBAC3C,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,SAAS,CAAC,CAAA;YAChG,CAAC;YACD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBACpC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;gBACpC,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAA;gBAC3B,CAAC;gBACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;gBAC3B,OAAM;YACR,CAAC;YACD,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAClC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAA;YAC/B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;YAC9C,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAgBD;;;;WAIG;QACH,gBAAgB,CAAC,WAA4B,EAAE,KAAa;YAC1D,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,KAAa,CAAA;YACjB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,WAAW,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;gBAC3C,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,SAAS,CAAC,CAAA;YAChG,CAAC;YACD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACrB,OAAM;YACR,CAAC;YACD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAA;YACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAA;YAC9B,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;YACzC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;YAC9C,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAES,sBAAsB,CAAC,IAAY,EAAE,KAAa;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;YAChC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAA;YAC7D,IAAI,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,CAAC,gBAAgB,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAA;YACnE,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAA;YACtD,CAAC;QACH,CAAC;QAcD;;;WAGG;QACH,YAAY,CAAC,WAA4B;YACvC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;YAC9B,IAAI,KAAa,CAAA;YACjB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,KAAK,GAAG,WAAW,CAAA;YACrB,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;gBAC3C,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,iBAAiB,EAAE,KAAK,SAAS,CAAC,CAAA;YAChG,CAAC;YACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,OAAM;YACR,CAAC;YACD,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;YAC3B,gEAAgE;YAChE,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAA;YACpD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW,EAAE,CAAA;YAC9C,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACH,SAAS,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE;YAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC9B,sDAAsD;YACtD,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACH,KAAK;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,oBAAoB,EAAE,CAAA;YAC3B,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;YACrB,CAAC;YACD,IAAI,CAAC,aAAa,EAAE,CAAA;QACtB,CAAC;QAED;;WAEG;QACH,YAAY,CAAC,KAAa,EAAE,OAAgB;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAA;YACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,OAAO,CAAA;YAC3C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;YACnD,CAAC;YACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAC7B,CAAC;QAED;;WAEG;QACH,MAAM;YACJ,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAA;QACxB,CAAC;QAED,KAAK,CAAC,eAAe;YACnB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;YACjD,CAAC;YACD,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAA;YAClE,kBAAkB,CAAC,MAAM,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAA;YAC/D,UAAU,CAAC,SAAS,CAAC,KAAK,CACxB;gBACE,QAAQ,EAAE,OAAO;gBACjB,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,+BAA+B;aACvC,EACD,IAAI,CACL,CAAA;QACH,CAAC;QAES,uBAAuB,CAAC,CAAc;YAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAA;YAC1B,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAA;QAC/C,CAAC;QAED;;WAEG;QACO,oBAAoB;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAES,KAAK,CAAC,SAAS;YACvB,MAAM,IAAI,CAAC,cAAc,CAAA;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,yBAAyB,CAAC,CAAA;YACrE,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAM;YACR,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,mBAAmB,CAAiC,CAAA;gBACnF,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,CAAC,KAAK,EAAE,CAAA;gBACd,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM;YACR,CAAC;QACH,CAAC;QAES,SAAS;YACjB,IAAI,CAAC,SAAS,EAAE,CAAA;QAClB,CAAC;QAES,YAAY,CAAC,CAAc;YACnC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,IAAmB,CAAA;YAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAA;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAM;YACR,CAAC;YACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,EAAE,CAAA;YACd,CAAC;iBAAM,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,EAAE,CAAA;YACf,CAAC;QACH,CAAC;QAES,gBAAgB,CAAC,CAAQ;YACjC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAA;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACzC,KAAK,CAAC,aAAa,EAAE,CAAA;QACvB,CAAC;QAES,iBAAiB,CAAC,CAAQ;YAClC,MAAM,KAAK,GAAG,CAAC,CAAC,MAAe,CAAA;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACzC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YAC1C,KAAK,CAAC,aAAa,EAAE,CAAA;QACvB,CAAC;QAES,YAAY,CAAC,CAAQ;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA4B,CAAA;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;QAES,YAAY,CAAC,CAAQ;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,aAA8B,CAAA;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YACxC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxB,OAAM;YACR,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,CAAC;QAES,UAAU,CAAC,CAAQ;YAC3B,MAAM,KAAK,GAAG,CAAC,CAAC,MAA6B,CAAA;YAC7C,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;YACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;YACtB,IAAI,CAAC,YAAY,EAAE,CAAA;QACrB,CAAC;QAES,UAAU;YAClB,IAAI,CAAC,eAAe,EAAE,CAAA;QACxB,CAAC;QAEkB,MAAM;YACvB,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,mBAAmB,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,uBAAuB,EAAE;KAChH,CAAA;QACH,CAAC;QAES,mBAAmB;YAC3B,OAAO,IAAI,CAAA;;0CAE2B,IAAI,CAAC,SAAS;0CACd,IAAI,CAAC,UAAU;qCACpB,IAAI,CAAC,YAAY;;;;;;;;;;;gEAWU,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe;;;;;;;;;;;;;;;;KAgBnG,CAAA;QACH,CAAC;QAES,YAAY;YACpB,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;YAC1B,CAAC;YACD,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;QAC1B,CAAC;QAES,UAAU;YAClB,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;YAC/B,OAAO,IAAI,CAAA;;;;4BAIa,IAAI,CAAC,SAAS,CAAC,4CAA4C,IAAI,CAAC,UAAU;;KAEjG,CAAA;QACH,CAAC;QAES,UAAU;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAClC,CAAC;YACD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QACjC,CAAC;QAES,kBAAkB;YAC1B,OAAO,IAAI,CAAA,wDAAwD,CAAA;QACrE,CAAC;QAES,YAAY,CAAC,KAAmB;YACxC,OAAO,IAAI,CAAA,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,GAAG,CAAA;QAC7E,CAAC;QAES,WAAW,CAAC,IAAc,EAAE,KAAa;YACjD,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC;UACzE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;;KAE5E,CAAA;QACH,CAAC;QAES,kBAAkB,CAAC,IAAc,EAAE,KAAa;YACxD,OAAO,IAAI,CAAA;;oBAEK,CAAC,CAAC,IAAI,CAAC,OAAO;mBACf,IAAI,CAAC,YAAY;;sBAEd,KAAK;;KAEtB,CAAA;QACH,CAAC;QAES,qBAAqB,CAAC,KAAa;YAC3C,OAAO,IAAI,CAAA;uEACwD,KAAK,aAAa,IAAI,CAAC,YAAY;;;KAGrG,CAAA;QACH,CAAC;QAES,eAAe,CAAC,IAAc,EAAE,KAAa;YACrD,OAAO,IAAI,CAAA;;;;;;;;oBAQK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;wBACX,KAAK;uBACN,IAAI,CAAC,QAAQ;;;qBAGf,IAAI,CAAC,gBAAgB;;;;KAIrC,CAAA;QACH,CAAC;QAES,gBAAgB,CAAC,IAAc,EAAE,KAAa;YACtD,OAAO,IAAI,CAAA;;;;;;;oBAOK,IAAI,CAAC,IAAI,CAAC,KAAe,CAAC;wBACtB,KAAK;uBACN,IAAI,CAAC,QAAQ;;qBAEf,IAAI,CAAC,iBAAiB;+BACZ,KAAK;;;KAG/B,CAAA;QACH,CAAC;QAES,eAAe;YACvB,OAAO,IAAI,CAAA;kCACmB,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,kBAAkB,CAAC,aAAa,CAAC;KAC7F,CAAA;QACH,CAAC;QAES,uBAAuB;YAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAA;YAChC,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CACrC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAA;wBACK,GAAG,KAAK,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAA,kBAAkB,CAAC,aAAa,CAAC;OAC9F,CACF,CAAA;QACH,CAAC;;;AAlhBH;;GAEG;AACH,2BAghBC","sourcesContent":["/* eslint-disable @typescript-eslint/unified-signatures */\nimport { html, PropertyValues, TemplateResult } from 'lit'\nimport { queryRequestHeaders } from '@api-client/core/lib/definitions/HttpDefinitions.js'\nimport { Events as CoreEvents } from '@api-client/core/events/Events.js'\nimport { type IProperty, Property } from '@api-client/core/models/Property.js'\nimport { HeadersArray } from '@api-client/core/models/HeadersArray.js'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport ApiElement from '../ApiElement.js'\nimport type Input from '../../md/input/Input.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport { EventTypes } from '../../events/EventTypes.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/icon-button/ui-icon-button.js'\nimport '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/icons/ui-icon.js'\n\nconst nameSuggestions = queryRequestHeaders().map((item) => item.key)\n\n/**\n * An editor that creates HTTP headers as a data model that can be translated into a headers string.\n */\nexport default class HeadersForm extends ApiElement {\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor readOnly = false\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor text = false\n\n /**\n * The headers model.\n */\n @property({ type: Array }) accessor model: IProperty[] = []\n\n @state() protected accessor internalModel = new HeadersArray()\n\n @state() protected accessor textValue: string | undefined\n\n protected autocompleteMap: Record<string, string[]> = {}\n\n constructor() {\n super()\n this.handleGlobalContentType = this.handleGlobalContentType.bind(this)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.eventsTarget.addEventListener(\n EventTypes.Http.Request.State.contentTypeChange,\n this.handleGlobalContentType as EventListener\n )\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n this.eventsTarget.removeEventListener(\n EventTypes.Http.Request.State.contentTypeChange,\n this.handleGlobalContentType as EventListener\n )\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('model')) {\n if (this.model) {\n this.internalModel = HeadersArray.from(this.model)\n this.model.forEach((item, index) => this.setupValueAutocomplete(item.name, index))\n } else {\n this.internalModel = new HeadersArray()\n }\n }\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.internalModel.toRawString()\n } else {\n this.textValue = undefined\n }\n }\n\n super.update(cp)\n }\n\n protected setupHeaders(headers?: string): void {\n this.autocompleteMap = {}\n if (headers) {\n this.internalModel = HeadersArray.fromHeaders(headers)\n this.model = this.internalModel.toJSON()\n } else {\n this.internalModel = new HeadersArray()\n this.model = []\n }\n this.requestUpdate()\n }\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value Header value\n */\n updateHeaderValue(index: number, value: string): void\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value Header value\n */\n updateHeaderValue(name: string, value: string): void\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex Header name or index\n * @param value Header value\n */\n updateHeaderValue(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index === -1) {\n if (typeof nameOrIndex === 'string') {\n this.addHeader(nameOrIndex, value)\n } else {\n this.addHeader('', value)\n }\n this.propagateModelChange()\n return\n }\n internalModel[index].value = value\n this.model[index].value = value\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value The header name\n */\n updateHeaderName(index: number, value: string): void\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value The header name\n */\n updateHeaderName(name: string, value: string): void\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex The header name or index\n * @param value The header name\n */\n updateHeaderName(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index === -1) {\n this.addHeader(value)\n return\n }\n internalModel[index].name = value\n this.model[index].name = value\n this.setupValueAutocomplete(value, index)\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n protected setupValueAutocomplete(name: string, index: number): void {\n const query = name.toLowerCase()\n const items = queryRequestHeaders(query)\n const item = items.find((i) => i.key.toLowerCase() === query)\n if (item && item.autocomplete) {\n this.autocompleteMap[`header-value-${index}`] = item.autocomplete\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.autocompleteMap[`header-value-${index}`]\n }\n }\n\n /**\n * Removes a header from the list.\n * @param name The name of the header to remove\n */\n removeHeader(name: string): void\n\n /**\n * Removes a header from the list.\n * @param index The position of the header to remove\n */\n removeHeader(index: number): void\n\n /**\n * Removes a header from the list.\n * @param nameOrIndex Header name or its index.\n */\n removeHeader(nameOrIndex: string | number): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index < 0) {\n return\n }\n internalModel.splice(index, 1)\n this.model.splice(index, 1)\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.autocompleteMap[`header-value-${index}`]\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n /**\n * Adds a header to the list of headers\n */\n addHeader(name = '', value = ''): void {\n const prop = Property.String(name, value)\n this.internalModel.push(prop)\n this.model.push(prop.toJSON())\n // the value hasn't actually changed here so no events\n this.requestUpdate()\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model.splice(0)\n this.internalModel.splice(0)\n this.propagateModelChange()\n this.autocompleteMap = {}\n if (this.text) {\n this.textValue = ''\n }\n this.requestUpdate()\n }\n\n /**\n * Toggles enabled state of a header.\n */\n toggleHeader(index: number, enabled: boolean): void {\n this.model[index].enabled = enabled\n this.internalModel[index].enabled = enabled\n if (this.text) {\n this.textValue = this.internalModel.toRawString()\n }\n this.propagateModelChange()\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text\n }\n\n async copyToClipboard(): Promise<void> {\n if (!navigator.clipboard) {\n throw new Error(`Clipboard API not supported.`)\n }\n await navigator.clipboard.writeText(this.internalModel.toString())\n SnackNotifications.notify('Headers copied to clipboard.', 2000)\n CoreEvents.Telemetry.event(\n {\n category: 'Usage',\n action: 'Click',\n label: 'Headers editor clipboard copy',\n },\n this\n )\n }\n\n protected handleGlobalContentType(e: CustomEvent): void {\n const { value } = e.detail\n this.updateHeaderValue('content-type', value)\n }\n\n /**\n * Updates the `value` from the current model and dispatches the value change event\n */\n protected propagateModelChange(): void {\n this.notifyChange()\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type')\n if (!row) {\n return\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined\n if (node) {\n node.focus()\n }\n } catch {\n // ...\n }\n }\n\n protected handleAdd(): void {\n this.addHeader()\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement\n const { option } = element.dataset\n if (!option) {\n return\n }\n if (option === 'clear') {\n this.clear()\n } else if (option === 'text-editor') {\n this.toggle()\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n const index = Number(input.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.updateHeaderName(index, input.value)\n input.checkValidity()\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input\n const index = Number(input.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.updateHeaderValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeHeader(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleHeader(index, !!node.checked)\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement\n const { value } = input\n this.setupHeaders(value)\n this.textValue = value\n this.notifyChange()\n }\n\n protected handleCopy(): void {\n this.copyToClipboard()\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()} ${this.renderEditor()} ${this.renderNamesList()} ${this.renderAutocompleteLists()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-filled-tonal-button @click=\"${this.handleAdd}\">Add</ui-filled-tonal-button>\n <ui-filled-tonal-button @click=\"${this.handleCopy}\">Copy</ui-filled-tonal-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"\n ><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon\n ></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item\n role=\"menuitem\"\n data-option=\"text-editor\"\n image=\"icon\"\n title=\"Toggles between a text editor and a form\"\n >\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item\n role=\"menuitem\"\n data-option=\"clear\"\n image=\"icon\"\n title=\"Removes all parameters from the editor\"\n >\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText()\n }\n return this.renderList()\n }\n\n protected renderText(): TemplateResult {\n const { textValue = '' } = this\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea .value=\"${live(textValue)}\" data-enable-grammarly=\"false\" @change=\"${this.handleText}\"></textarea>\n </div>\n `\n }\n\n protected renderList(): TemplateResult {\n const items = this.internalModel\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage()\n }\n return this.renderParams(items)\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No parameters added</div> `\n }\n\n protected renderParams(items: HeadersArray): TemplateResult {\n return html` ${items.map((item, index) => this.renderParam(item, index))} `\n }\n\n protected renderParam(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderToggleButton(item: Property, index: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ></ui-switch>\n `\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button aria-label=\"Delete this parameter\" data-index=\"${index}\" @click=\"${this.handleRemove}\">\n <ui-icon icon=\"deleteOutline\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderNameField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n pattern=\"\\\\S*\"\n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n list=\"names-list\"\n />\n </div>\n `\n }\n\n protected renderValueField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value as string)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n list=\"header-value-${index}\"\n />\n </div>\n `\n }\n\n protected renderNamesList(): TemplateResult {\n return html`\n <datalist id=\"names-list\">${nameSuggestions.map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n }\n\n protected renderAutocompleteLists(): TemplateResult[] {\n const { autocompleteMap } = this\n return Object.keys(autocompleteMap).map(\n (key) => html`\n <datalist id=\"${key}\">${autocompleteMap[key].map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HeadersForm.js","sourceRoot":"","sources":["../../../../src/elements/http/HeadersForm.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/unified-signatures */\nimport { html, PropertyValues, TemplateResult } from 'lit'\nimport { queryRequestHeaders } from '@api-client/core/lib/definitions/HttpDefinitions.js'\nimport { Events as CoreEvents } from '@api-client/core/events/Events.js'\nimport { type IProperty, Property } from '@api-client/core/models/Property.js'\nimport { HeadersArray } from '@api-client/core/models/HeadersArray.js'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport ApiElement from '../ApiElement.js'\nimport type Input from '../../md/input/Input.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport { EventTypes } from '../../events/EventTypes.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/icon-button/ui-icon-button.js'\nimport '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/icons/ui-icon.js'\n\nconst nameSuggestions = queryRequestHeaders().map((item) => item.key)\n\n/**\n * An editor that creates HTTP headers as a data model that can be translated into a headers string.\n */\nexport default class HeadersForm extends ApiElement {\n /**\n * When set the editor is in read only mode.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor readOnly = false\n\n /**\n * Whether the text editor is rendered instead of the form.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor text = false\n\n /**\n * The headers model.\n */\n @property({ type: Array }) accessor model: IProperty[] = []\n\n @state() protected accessor internalModel = new HeadersArray()\n\n @state() protected accessor textValue: string | undefined\n\n protected autocompleteMap: Record<string, string[]> = {}\n\n constructor() {\n super()\n this.handleGlobalContentType = this.handleGlobalContentType.bind(this)\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.eventsTarget.addEventListener(\n EventTypes.Http.Request.State.contentTypeChange,\n this.handleGlobalContentType as EventListener\n )\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback()\n this.eventsTarget.removeEventListener(\n EventTypes.Http.Request.State.contentTypeChange,\n this.handleGlobalContentType as EventListener\n )\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('model')) {\n if (this.model) {\n this.internalModel = HeadersArray.from(this.model)\n this.model.forEach((item, index) => this.setupValueAutocomplete(item.name, index))\n } else {\n this.internalModel = new HeadersArray()\n }\n }\n if (cp.has('text')) {\n if (this.text) {\n this.textValue = this.internalModel.toRawString()\n } else {\n this.textValue = undefined\n }\n }\n\n super.update(cp)\n }\n\n protected setupHeaders(headers?: string): void {\n this.autocompleteMap = {}\n if (headers) {\n this.internalModel = HeadersArray.fromHeaders(headers)\n this.model = this.internalModel.toJSON()\n } else {\n this.internalModel = new HeadersArray()\n this.model = []\n }\n this.requestUpdate()\n }\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value Header value\n */\n updateHeaderValue(index: number, value: string): void\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value Header value\n */\n updateHeaderValue(name: string, value: string): void\n\n /**\n * Updates header value. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex Header name or index\n * @param value Header value\n */\n updateHeaderValue(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index === -1) {\n if (typeof nameOrIndex === 'string') {\n this.addHeader(nameOrIndex, value)\n } else {\n this.addHeader('', value)\n }\n this.propagateModelChange()\n return\n }\n internalModel[index].value = value\n this.model[index].value = value\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param index The position at which the header is located\n * @param value The header name\n */\n updateHeaderName(index: number, value: string): void\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param name The name of the header to update.\n * @param value The header name\n */\n updateHeaderName(name: string, value: string): void\n\n /**\n * Updates header name. It the header does not exists at the position it adds a new header.\n * @param nameOrIndex The header name or index\n * @param value The header name\n */\n updateHeaderName(nameOrIndex: string | number, value: string): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index === -1) {\n this.addHeader(value)\n return\n }\n internalModel[index].name = value\n this.model[index].name = value\n this.setupValueAutocomplete(value, index)\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n protected setupValueAutocomplete(name: string, index: number): void {\n const query = name.toLowerCase()\n const items = queryRequestHeaders(query)\n const item = items.find((i) => i.key.toLowerCase() === query)\n if (item && item.autocomplete) {\n this.autocompleteMap[`header-value-${index}`] = item.autocomplete\n } else {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.autocompleteMap[`header-value-${index}`]\n }\n }\n\n /**\n * Removes a header from the list.\n * @param name The name of the header to remove\n */\n removeHeader(name: string): void\n\n /**\n * Removes a header from the list.\n * @param index The position of the header to remove\n */\n removeHeader(index: number): void\n\n /**\n * Removes a header from the list.\n * @param nameOrIndex Header name or its index.\n */\n removeHeader(nameOrIndex: string | number): void {\n const { internalModel } = this\n let index: number\n if (typeof nameOrIndex === 'number') {\n index = nameOrIndex\n } else {\n const lowerName = nameOrIndex.toLowerCase()\n index = internalModel.findIndex((item) => (item.name || '').toLocaleLowerCase() === lowerName)\n }\n if (index < 0) {\n return\n }\n internalModel.splice(index, 1)\n this.model.splice(index, 1)\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.autocompleteMap[`header-value-${index}`]\n if (this.text) {\n this.textValue = internalModel.toRawString()\n }\n this.propagateModelChange()\n this.requestUpdate()\n }\n\n /**\n * Adds a header to the list of headers\n */\n addHeader(name = '', value = ''): void {\n const prop = Property.String(name, value)\n this.internalModel.push(prop)\n this.model.push(prop.toJSON())\n // the value hasn't actually changed here so no events\n this.requestUpdate()\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model.splice(0)\n this.internalModel.splice(0)\n this.propagateModelChange()\n this.autocompleteMap = {}\n if (this.text) {\n this.textValue = ''\n }\n this.requestUpdate()\n }\n\n /**\n * Toggles enabled state of a header.\n */\n toggleHeader(index: number, enabled: boolean): void {\n this.model[index].enabled = enabled\n this.internalModel[index].enabled = enabled\n if (this.text) {\n this.textValue = this.internalModel.toRawString()\n }\n this.propagateModelChange()\n }\n\n /**\n * Toggles the state between form and text editors.\n */\n toggle(): void {\n this.text = !this.text\n }\n\n async copyToClipboard(): Promise<void> {\n if (!navigator.clipboard) {\n throw new Error(`Clipboard API not supported.`)\n }\n await navigator.clipboard.writeText(this.internalModel.toString())\n SnackNotifications.notify('Headers copied to clipboard.', 2000)\n CoreEvents.Telemetry.event(\n {\n category: 'Usage',\n action: 'Click',\n label: 'Headers editor clipboard copy',\n },\n this\n )\n }\n\n protected handleGlobalContentType(e: CustomEvent): void {\n const { value } = e.detail\n this.updateHeaderValue('content-type', value)\n }\n\n /**\n * Updates the `value` from the current model and dispatches the value change event\n */\n protected propagateModelChange(): void {\n this.notifyChange()\n }\n\n protected async focusLast(): Promise<void> {\n await this.updateComplete\n const row = this.shadowRoot?.querySelector('.param-row:last-of-type')\n if (!row) {\n return\n }\n try {\n const node = row.querySelector('.name-input input') as HTMLInputElement | undefined\n if (node) {\n node.focus()\n }\n } catch {\n // ...\n }\n }\n\n protected handleAdd(): void {\n this.addHeader()\n }\n\n protected handleOption(e: CustomEvent): void {\n const element = e.detail.item as HTMLElement\n const { option } = element.dataset\n if (!option) {\n return\n }\n if (option === 'clear') {\n this.clear()\n } else if (option === 'text-editor') {\n this.toggle()\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n const index = Number(input.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.updateHeaderName(index, input.value)\n input.checkValidity()\n }\n\n protected handleValueChange(e: Event): void {\n const input = e.target as Input\n const index = Number(input.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.updateHeaderValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeHeader(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleHeader(index, !!node.checked)\n }\n\n protected handleText(e: Event): void {\n const input = e.target as HTMLTextAreaElement\n const { value } = input\n this.setupHeaders(value)\n this.textValue = value\n this.notifyChange()\n }\n\n protected handleCopy(): void {\n this.copyToClipboard()\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()} ${this.renderEditor()} ${this.renderNamesList()} ${this.renderAutocompleteLists()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button color=\"tonal\" @click=\"${this.handleAdd}\">Add</ui-button>\n <ui-button color=\"tonal\" @click=\"${this.handleCopy}\">Copy</ui-button>\n <ui-dropdown-list @select=\"${this.handleOption}\" closeOnOutsideClick class=\"dropdown\">\n <ui-icon-button aria-label=\"Additional options\"\n ><ui-icon icon=\"moreVert\" role=\"presentation\"></ui-icon\n ></ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item\n role=\"menuitem\"\n data-option=\"text-editor\"\n image=\"icon\"\n title=\"Toggles between a text editor and a form\"\n >\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"${this.text ? 'checkBox' : 'checkBoxBlank'}\"></ui-icon>\n Text editor\n </ui-list-item>\n <ui-divider type=\"inset\"></ui-divider>\n <ui-list-item\n role=\"menuitem\"\n data-option=\"clear\"\n image=\"icon\"\n title=\"Removes all parameters from the editor\"\n >\n <ui-icon role=\"presentation\" slot=\"start\" icon=\"deleteOutline\"></ui-icon>\n Clear form\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n </div>\n `\n }\n\n protected renderEditor(): TemplateResult {\n if (this.text) {\n return this.renderText()\n }\n return this.renderList()\n }\n\n protected renderText(): TemplateResult {\n const { textValue = '' } = this\n return html`\n <div class=\"text-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <textarea .value=\"${live(textValue)}\" data-enable-grammarly=\"false\" @change=\"${this.handleText}\"></textarea>\n </div>\n `\n }\n\n protected renderList(): TemplateResult {\n const items = this.internalModel\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage()\n }\n return this.renderParams(items)\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No parameters added</div> `\n }\n\n protected renderParams(items: HeadersArray): TemplateResult {\n return html` ${items.map((item, index) => this.renderParam(item, index))} `\n }\n\n protected renderParam(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderNameField(item, index)}\n ${this.renderValueField(item, index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderToggleButton(item: Property, index: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ></ui-switch>\n `\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button aria-label=\"Delete this parameter\" data-index=\"${index}\" @click=\"${this.handleRemove}\">\n <ui-icon icon=\"deleteOutline\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderNameField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n autocomplete=\"off\"\n .value=\"${live(item.name)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n pattern=\"\\\\S*\"\n aria-label=\"Parameter name value\"\n @change=\"${this.handleNameChange}\"\n list=\"names-list\"\n />\n </div>\n `\n }\n\n protected renderValueField(item: Property, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Invalid character</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n .value=\"${live(item.value as string)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Parameter value\"\n @change=\"${this.handleValueChange}\"\n list=\"header-value-${index}\"\n />\n </div>\n `\n }\n\n protected renderNamesList(): TemplateResult {\n return html`\n <datalist id=\"names-list\">${nameSuggestions.map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n }\n\n protected renderAutocompleteLists(): TemplateResult[] {\n const { autocompleteMap } = this\n return Object.keys(autocompleteMap).map(\n (key) => html`\n <datalist id=\"${key}\">${autocompleteMap[key].map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n )\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAsse
|
|
|
3
3
|
import { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js';
|
|
4
4
|
import { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js';
|
|
5
5
|
import { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js';
|
|
6
|
-
import '../../md/button/ui-
|
|
6
|
+
import '../../md/button/ui-button.js';
|
|
7
7
|
import '../../md/switch/ui-switch.js';
|
|
8
8
|
import '../../md/dialog/ui-dialog.js';
|
|
9
9
|
import '../../md/divider/ui-divider.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpAssertions.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qDAAqD,CAAA;AACzF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG3D,OAAiB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AACrF,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpAssertions.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AACnD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,qDAAqD,CAAA;AACzF,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAE/E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG3D,OAAiB,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AACrF,OAAO,8BAA8B,CAAA;AACrC,OAAO,8BAA8B,CAAA;AACrC,OAAO,8BAA8B,CAAA;AACrC,OAAO,gCAAgC,CAAA;AAEvC;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,WAAW;IACrD;;;OAGG;IACwB,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAK;IAEhE;;;;OAIG;IACH,YAAY,IAAI,IAAI;IASpB;;;OAGG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAUpC;;;;OAIG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAUpD,SAAS,CAAC,SAAS,IAAI,IAAI;IAI3B,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAStC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAStC,SAAS,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAOjF,SAAS,CAAC,mBAAmB,CAAC,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAe9D,SAAS,CAAC,qBAAqB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAqB/C,SAAS,CAAC,wBAAwB,CAAC,CAAC,EAAE,WAAW,CAAC,qBAAqB,CAAC,GAAG,IAAI;cAqB5D,MAAM,IAAI,cAAc;IAY3C,SAAS,CAAC,mBAAmB,IAAI,cAAc;IAQ/C,SAAS,CAAC,gBAAgB,IAAI,cAAc;IAS5C,SAAS,CAAC,YAAY,IAAI,cAAc;IAMxC,SAAS,CAAC,kBAAkB,IAAI,cAAc;IAI9C,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc;IAI7D,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc;IAY9E,SAAS,CAAC,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,cAAc,GAAG,OAAO,OAAO;IAQ3F,SAAS,CAAC,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,GAAG,cAAc;IAY1F,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAcvE,SAAS,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,GAAG,cAAc;IAcvE,SAAS,CAAC,2BAA2B,IAAI,cAAc;CAgBxD"}
|
|
@@ -2,7 +2,7 @@ import { __esDecorate, __runInitializers } from "tslib";
|
|
|
2
2
|
import { html, nothing } from 'lit';
|
|
3
3
|
import { property } from 'lit/decorators.js';
|
|
4
4
|
import { HttpFlowsUi } from './HttpFlowsUi.js';
|
|
5
|
-
import '../../md/button/ui-
|
|
5
|
+
import '../../md/button/ui-button.js';
|
|
6
6
|
import '../../md/switch/ui-switch.js';
|
|
7
7
|
import '../../md/dialog/ui-dialog.js';
|
|
8
8
|
import '../../md/divider/ui-divider.js';
|
|
@@ -164,7 +164,7 @@ let HttpAssertions = (() => {
|
|
|
164
164
|
renderActionButtons() {
|
|
165
165
|
return html `
|
|
166
166
|
<div class="editor-actions">
|
|
167
|
-
<ui-
|
|
167
|
+
<ui-button color="tonal" @click="${this.handleAdd}" class="add-button">Add</ui-button>
|
|
168
168
|
</div>
|
|
169
169
|
`;
|
|
170
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpAssertions.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { property } from 'lit/decorators.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport type Input from '../../md/input/Input.js'\nimport UiDialog, { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../../md/divider/ui-divider.js'\n\n/**\n * @fires change When the model change\n */\nexport default class HttpAssertions extends HttpFlowsUi {\n /**\n * The list of assertions.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpAssertion[] = []\n\n /**\n * Adds a new empty assertion to the model.\n * Note, this function won't notify the parent element\n * about the change as empty rules can be discarded.\n */\n addAssertion(): void {\n const { model } = this\n model.push({\n enabled: true,\n steps: [],\n })\n this.requestUpdate()\n }\n\n /**\n * Removes an assertion at specified index.\n * @param index The index of the assertion in the `model` to remove.\n */\n removeAssertion(index: number): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles the enabled state of the assertion.\n * @param index The index of the assertion on the `model` array\n * @param value The `enabled` value.\n */\n toggleAssertion(index: number, value: boolean): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model[index].enabled = value\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected handleAdd(): void {\n this.addAssertion()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeAssertion(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleAssertion(index, !!node.checked)\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n return this.model[assertionOrActionIndex]\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const assertionIndex = Number(input.dataset.assertionIndex)\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {\n return undefined\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return undefined\n }\n return assertion.steps[stepIndex]\n }\n\n protected handleRenameAssertion(e: Event): void {\n const target = e.currentTarget as HTMLElement\n const assertionIndex = Number(target.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const { description } = assertion\n const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null\n if (!dialog) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n input.value = description || ''\n dialog.open = true\n dialog.dataset.assertionIndex = target.dataset.assertionIndex\n }\n\n protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.currentTarget as UiDialog\n const assertionIndex = Number(dialog.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n assertion.description = input.value\n this.requestUpdate()\n this.notifyChange()\n input.value = ''\n delete dialog.dataset.assertionIndex\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderAssertions()}\n </div>\n ${this.renderRenameAssertionDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-filled-tonal-button @click=\"${this.handleAdd}\" class=\"add-button\">Add</ui-filled-tonal-button>\n </div>\n `\n }\n\n protected renderAssertions(): TemplateResult {\n return html`\n <section aria-label=\"Assertion options\" class=\"options\">\n ${this.renderResponseDataSourceSuggestions()} ${this.renderTransformationSuggestions()}\n ${this.renderAssertionSuggestions()}\n </section>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { model } = this\n const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage()\n return html` <section aria-label=\"Assertions editor\" class=\"editor surface1\">${content}</section> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No assertions added</div> `\n }\n\n protected renderList(model: IHttpAssertion[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAssertion(item, index))} `\n }\n\n protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {\n return html`\n <div class=\"step-row\">\n ${this.renderAssertionDescription(item)}\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderSteps(item, index)}\n <div class=\"action-actions\">${this.renderRenameAssertion(index)} ${this.renderDeleteAssertion(index)}</div>\n </div>\n </div>\n `\n }\n\n protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {\n const { description } = item\n if (!description) {\n return nothing\n }\n return html` <div class=\"assertion-description label-medium\">${description}</div> `\n }\n\n protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this assertion\"\n data-index=\"${assertionIndex}\"\n class=\"toggle-button\"\n ></ui-switch>\n `\n }\n\n protected renderRenameAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Rename this assertion\"\n title=\"Rename this assertion\"\n data-assertion-index=\"${assertionIndex}\"\n @click=\"${this.handleRenameAssertion}\"\n class=\"rename-button\"\n >\n <ui-icon icon=\"rename\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderDeleteAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this assertion\"\n title=\"Delete this assertion\"\n data-index=\"${assertionIndex}\"\n @click=\"${this.handleRemove}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderRenameAssertionDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n class=\"rename-dialog\"\n @close=\"${this.handleRenameDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Accept\"\n >\n <ui-icon slot=\"icon\" icon=\"rename\"></ui-icon>\n <span slot=\"title\">Rename assertion</span>\n\n <ui-filled-text-field name=\"rename\" label=\"Assertion description\" required class=\"input\"></ui-filled-text-field>\n </ui-dialog>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HttpAssertions.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { property } from 'lit/decorators.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport type Input from '../../md/input/Input.js'\nimport UiDialog, { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport '../../md/button/ui-button.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../../md/divider/ui-divider.js'\n\n/**\n * @fires change When the model change\n */\nexport default class HttpAssertions extends HttpFlowsUi {\n /**\n * The list of assertions.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpAssertion[] = []\n\n /**\n * Adds a new empty assertion to the model.\n * Note, this function won't notify the parent element\n * about the change as empty rules can be discarded.\n */\n addAssertion(): void {\n const { model } = this\n model.push({\n enabled: true,\n steps: [],\n })\n this.requestUpdate()\n }\n\n /**\n * Removes an assertion at specified index.\n * @param index The index of the assertion in the `model` to remove.\n */\n removeAssertion(index: number): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles the enabled state of the assertion.\n * @param index The index of the assertion on the `model` array\n * @param value The `enabled` value.\n */\n toggleAssertion(index: number, value: boolean): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model[index].enabled = value\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected handleAdd(): void {\n this.addAssertion()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeAssertion(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleAssertion(index, !!node.checked)\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n return this.model[assertionOrActionIndex]\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const assertionIndex = Number(input.dataset.assertionIndex)\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {\n return undefined\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return undefined\n }\n return assertion.steps[stepIndex]\n }\n\n protected handleRenameAssertion(e: Event): void {\n const target = e.currentTarget as HTMLElement\n const assertionIndex = Number(target.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const { description } = assertion\n const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null\n if (!dialog) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n input.value = description || ''\n dialog.open = true\n dialog.dataset.assertionIndex = target.dataset.assertionIndex\n }\n\n protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.currentTarget as UiDialog\n const assertionIndex = Number(dialog.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n assertion.description = input.value\n this.requestUpdate()\n this.notifyChange()\n input.value = ''\n delete dialog.dataset.assertionIndex\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderAssertions()}\n </div>\n ${this.renderRenameAssertionDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-button color=\"tonal\" @click=\"${this.handleAdd}\" class=\"add-button\">Add</ui-button>\n </div>\n `\n }\n\n protected renderAssertions(): TemplateResult {\n return html`\n <section aria-label=\"Assertion options\" class=\"options\">\n ${this.renderResponseDataSourceSuggestions()} ${this.renderTransformationSuggestions()}\n ${this.renderAssertionSuggestions()}\n </section>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { model } = this\n const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage()\n return html` <section aria-label=\"Assertions editor\" class=\"editor surface1\">${content}</section> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No assertions added</div> `\n }\n\n protected renderList(model: IHttpAssertion[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAssertion(item, index))} `\n }\n\n protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {\n return html`\n <div class=\"step-row\">\n ${this.renderAssertionDescription(item)}\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderSteps(item, index)}\n <div class=\"action-actions\">${this.renderRenameAssertion(index)} ${this.renderDeleteAssertion(index)}</div>\n </div>\n </div>\n `\n }\n\n protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {\n const { description } = item\n if (!description) {\n return nothing\n }\n return html` <div class=\"assertion-description label-medium\">${description}</div> `\n }\n\n protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this assertion\"\n data-index=\"${assertionIndex}\"\n class=\"toggle-button\"\n ></ui-switch>\n `\n }\n\n protected renderRenameAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Rename this assertion\"\n title=\"Rename this assertion\"\n data-assertion-index=\"${assertionIndex}\"\n @click=\"${this.handleRenameAssertion}\"\n class=\"rename-button\"\n >\n <ui-icon icon=\"rename\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderDeleteAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this assertion\"\n title=\"Delete this assertion\"\n data-index=\"${assertionIndex}\"\n @click=\"${this.handleRemove}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderRenameAssertionDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n class=\"rename-dialog\"\n @close=\"${this.handleRenameDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Accept\"\n >\n <ui-icon slot=\"icon\" icon=\"rename\"></ui-icon>\n <span slot=\"title\">Rename assertion</span>\n\n <ui-filled-text-field name=\"rename\" label=\"Assertion description\" required class=\"input\"></ui-filled-text-field>\n </ui-dialog>\n `\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ import { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js';
|
|
|
8
8
|
import '../../md/list/ui-list.js';
|
|
9
9
|
import '../../md/list/ui-list-item.js';
|
|
10
10
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
11
|
-
import '../../md/button/ui-
|
|
11
|
+
import '../../md/button/ui-button.js';
|
|
12
12
|
import '../../md/divider/ui-divider.js';
|
|
13
13
|
import '../../md/dialog/ui-dialog.js';
|
|
14
14
|
import '../dialog/rename-dialog.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpFlows.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlows.element.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iDAAiD,CAAA;AAC7F,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAAiB,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAA;AAEnE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oDAAoD,CAAA;AAGjG,OAAO,KAAK,QAAQ,MAAM,qCAAqC,CAAA;AAC/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAA;AAChF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,0BAA0B,CAAA;AACjC,OAAO,+BAA+B,CAAA;AACtC,OAAO,4CAA4C,CAAA;AACnD,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpFlows.element.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlows.element.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { HttpFlowsUi } from './HttpFlowsUi.js';
|
|
|
6
6
|
import '../../md/list/ui-list.js';
|
|
7
7
|
import '../../md/list/ui-list-item.js';
|
|
8
8
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
9
|
-
import '../../md/button/ui-
|
|
9
|
+
import '../../md/button/ui-button.js';
|
|
10
10
|
import '../../md/divider/ui-divider.js';
|
|
11
11
|
import '../../md/dialog/ui-dialog.js';
|
|
12
12
|
import '../dialog/rename-dialog.js';
|
|
@@ -463,10 +463,10 @@ let HttpFlows = (() => {
|
|
|
463
463
|
const label = trigger === 'request' ? 'Pre-request' : 'Post-request';
|
|
464
464
|
return html `
|
|
465
465
|
<ui-dropdown-list @select="${this.handleTriggerSelect}" horizontalAlign="right" closeOnOutsideClick>
|
|
466
|
-
<ui-
|
|
466
|
+
<ui-button color="outlined" class="new-button">
|
|
467
467
|
<ui-icon icon="arrowDropDown" slot="icon"></ui-icon>
|
|
468
468
|
${label}
|
|
469
|
-
</ui-
|
|
469
|
+
</ui-button>
|
|
470
470
|
<ui-list slot="dropdown" role="menu">
|
|
471
471
|
<ui-list-item data-trigger="request" role="menuitem" title="Select pre-request flows"
|
|
472
472
|
>Pre-request</ui-list-item
|
|
@@ -485,10 +485,10 @@ let HttpFlows = (() => {
|
|
|
485
485
|
const hasItems = !!items.length;
|
|
486
486
|
return html `
|
|
487
487
|
<ui-dropdown-list @select="${this.handleFlowSelect}" horizontalAlign="right" closeOnOutsideClick>
|
|
488
|
-
<ui-
|
|
488
|
+
<ui-button color="outlined" class="new-button">
|
|
489
489
|
<ui-icon icon="arrowDropDown" slot="icon"></ui-icon>
|
|
490
490
|
${label}
|
|
491
|
-
</ui-
|
|
491
|
+
</ui-button>
|
|
492
492
|
<ui-list slot="dropdown" role="menu">
|
|
493
493
|
${hasItems
|
|
494
494
|
? html `
|
|
@@ -577,7 +577,7 @@ let HttpFlows = (() => {
|
|
|
577
577
|
return html `
|
|
578
578
|
<div class="empty-message">Create a flow to get started.</div>
|
|
579
579
|
<div class="empty-message">
|
|
580
|
-
<ui-
|
|
580
|
+
<ui-button color="outlined" @click="${this.handleAdd}" class="empty-button">Create</ui-button>
|
|
581
581
|
</div>
|
|
582
582
|
`;
|
|
583
583
|
}
|