@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
|
@@ -22,9 +22,7 @@ import '../../md/icons/ui-icon.js';
|
|
|
22
22
|
import '../../define/http/http-body-urlencoded-editor.js';
|
|
23
23
|
import '../../define/http/http-body-multipart-editor.js';
|
|
24
24
|
import '../../define/http/http-body-text-editor.js';
|
|
25
|
-
import '../../md/button/ui-
|
|
26
|
-
import '../../md/button/ui-text-button.js';
|
|
27
|
-
import '../../md/button/ui-filled-tonal-button.js';
|
|
25
|
+
import '../../md/button/ui-button.js';
|
|
28
26
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
29
27
|
import '../../md/list/ui-list.js';
|
|
30
28
|
import '../../md/list/ui-list-item.js';
|
|
@@ -601,10 +599,10 @@ let BodyEditor = (() => {
|
|
|
601
599
|
class="type-dropdown"
|
|
602
600
|
closeOnOutsideClick
|
|
603
601
|
>
|
|
604
|
-
<ui-
|
|
602
|
+
<ui-button color="tonal" title="Select editor type" aria-label="Opens a menu to select editor type">
|
|
605
603
|
<ui-icon icon="arrowDropDown" slot="icon" role="presentation"></ui-icon>
|
|
606
604
|
${label}
|
|
607
|
-
</ui-
|
|
605
|
+
</ui-button>
|
|
608
606
|
<ui-list slot="dropdown" role="menu"> ${this.renderBodyTypeOptions()} </ui-list>
|
|
609
607
|
</ui-dropdown-list>
|
|
610
608
|
`;
|
|
@@ -641,13 +639,14 @@ let BodyEditor = (() => {
|
|
|
641
639
|
class="mime-dropdown"
|
|
642
640
|
closeOnOutsideClick
|
|
643
641
|
>
|
|
644
|
-
<ui-
|
|
642
|
+
<ui-button
|
|
643
|
+
color="tonal"
|
|
645
644
|
title="Select media type. This overrides the content-type header"
|
|
646
645
|
aria-label="Editor media type"
|
|
647
646
|
>
|
|
648
647
|
<ui-icon icon="arrowDropDown" slot="icon"></ui-icon>
|
|
649
648
|
${label}
|
|
650
|
-
</ui-
|
|
649
|
+
</ui-button>
|
|
651
650
|
<ui-list slot="dropdown" role="menu"> ${this.renderMonacoOptions()} </ui-list>
|
|
652
651
|
</ui-dropdown-list>
|
|
653
652
|
`;
|
|
@@ -661,30 +660,33 @@ let BodyEditor = (() => {
|
|
|
661
660
|
renderUrlEncodeEditorActions() {
|
|
662
661
|
const { autoEncode } = this;
|
|
663
662
|
return html `
|
|
664
|
-
<ui-
|
|
663
|
+
<ui-button
|
|
664
|
+
color="tonal"
|
|
665
665
|
aria-label="Adds a new parameter"
|
|
666
666
|
title="Adds a new parameter"
|
|
667
667
|
@click="${this.handleAddUrlEncode}"
|
|
668
668
|
>
|
|
669
669
|
<ui-icon slot="icon" icon="add" role="presentation"></ui-icon>
|
|
670
670
|
Add
|
|
671
|
-
</ui-
|
|
672
|
-
<ui-
|
|
671
|
+
</ui-button>
|
|
672
|
+
<ui-button
|
|
673
|
+
color="outlined"
|
|
673
674
|
title="URL encodes parameters in the editor"
|
|
674
675
|
aria-label="URL encodes parameters in the editor"
|
|
675
676
|
@click="${this.handleUrlEncode}"
|
|
676
677
|
?disabled="${autoEncode}"
|
|
677
678
|
>
|
|
678
679
|
URL encode
|
|
679
|
-
</ui-
|
|
680
|
-
<ui-
|
|
680
|
+
</ui-button>
|
|
681
|
+
<ui-button
|
|
682
|
+
color="outlined"
|
|
681
683
|
title="URL decodes parameters in the editor"
|
|
682
684
|
aria-label="URL decodes parameters in the editor"
|
|
683
685
|
@click="${this.handleUrlDecode}"
|
|
684
686
|
?disabled="${autoEncode}"
|
|
685
687
|
>
|
|
686
688
|
URL decode
|
|
687
|
-
</ui-
|
|
689
|
+
</ui-button>
|
|
688
690
|
<label title="When set it automatically encodes the values before sending the request" class="label-medium">
|
|
689
691
|
<ui-checkbox .checked="${autoEncode}" @change="${this.handleUrlEncodeAutoChange}"></ui-checkbox>
|
|
690
692
|
Encode on send
|
|
@@ -693,20 +695,22 @@ let BodyEditor = (() => {
|
|
|
693
695
|
}
|
|
694
696
|
renderMultipartActions() {
|
|
695
697
|
return html `
|
|
696
|
-
<ui-
|
|
698
|
+
<ui-button
|
|
699
|
+
color="outlined"
|
|
697
700
|
title="Adds a new part with a file value"
|
|
698
701
|
aria-label="Adds a new part with a file value"
|
|
699
702
|
@click="${this.handleMultipartAddFile}"
|
|
700
703
|
>
|
|
701
704
|
Add file part
|
|
702
|
-
</ui-
|
|
703
|
-
<ui-
|
|
705
|
+
</ui-button>
|
|
706
|
+
<ui-button
|
|
707
|
+
color="outlined"
|
|
704
708
|
title="Adds a new part with a text value"
|
|
705
709
|
aria-label="Adds a new part with a text value"
|
|
706
710
|
@click="${this.handleMultipartAddText}"
|
|
707
711
|
>
|
|
708
712
|
Add text part
|
|
709
|
-
</ui-
|
|
713
|
+
</ui-button>
|
|
710
714
|
`;
|
|
711
715
|
}
|
|
712
716
|
/**
|
|
@@ -790,7 +794,7 @@ let BodyEditor = (() => {
|
|
|
790
794
|
renderFileEditor() {
|
|
791
795
|
return html `
|
|
792
796
|
<div class="file-picker">
|
|
793
|
-
<ui-
|
|
797
|
+
<ui-button color="text" @click="${this.handlePickFile}">Choose a file</ui-button>
|
|
794
798
|
${this.renderFileDetail()}
|
|
795
799
|
</div>
|
|
796
800
|
<input type="file" class="binary-hidden" @change="${this.handleFileChange}" />
|
|
@@ -856,11 +860,12 @@ let BodyEditor = (() => {
|
|
|
856
860
|
<p class="message body-medium">
|
|
857
861
|
The <code>content-type</code> header has different value than <b>${suggested}</b>.
|
|
858
862
|
</p>
|
|
859
|
-
<ui-
|
|
863
|
+
<ui-button
|
|
860
864
|
class="fix"
|
|
861
865
|
title="Updates the content type header for the request"
|
|
862
866
|
@click="${this.autoFixMime}"
|
|
863
|
-
|
|
867
|
+
color="tonal"
|
|
868
|
+
>Fix</ui-button
|
|
864
869
|
>
|
|
865
870
|
`;
|
|
866
871
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyEditor.js","sourceRoot":"","sources":["../../../../src/elements/http/BodyEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n@license\nCopyright 2020 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\nimport { html, TemplateResult, PropertyValues, nothing } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport type { IBodyMetaModel, IRawBody, IUrlEncodedBodyMeta } from '@api-client/core/models/RequestUiMeta.js'\nimport {\n type IMultipartBody,\n type ISafePayload,\n PayloadSerializer,\n} from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport type { IProperty } from '@api-client/core/models/Property.js'\nimport { ifProperty } from '../../directives/if-property.js'\nimport BodyUrlEncodedEditor from './BodyUrlEncodedEditor.js'\nimport BodyTextEditor from './BodyTextEditor.js'\nimport BodyMultipartEditor from './BodyMultipartEditor.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport CheckboxElement from '../../md/checkbox/internals/CheckboxElement.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../define/http/http-body-urlencoded-editor.js'\nimport '../../define/http/http-body-multipart-editor.js'\nimport '../../define/http/http-body-text-editor.js'\nimport '../../md/button/ui-outlined-button.js'\nimport '../../md/button/ui-text-button.js'\nimport '../../md/button/ui-filled-tonal-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/divider/ui-divider.js'\nimport '../../md/checkbox/ui-checkbox.js'\n\nexport type AllowedEditor = 'raw' | 'urlEncode' | 'multipart' | 'file'\n\nexport interface EditorType {\n id: AllowedEditor\n label: string\n title: string\n}\n\nexport const editorTypes: readonly EditorType[] = Object.freeze([\n {\n id: 'raw',\n label: 'Text editor',\n title: 'Opens a source editor with syntax highlighting',\n },\n {\n id: 'urlEncode',\n label: 'Form URL encoded',\n title: 'Opens an editor specialized with URL encoded data types',\n },\n {\n id: 'multipart',\n label: 'Multipart form data',\n title: 'Opens an editor specialized with multipart data',\n },\n {\n id: 'file',\n label: 'A file',\n title: 'Allows to choose any binary data',\n },\n])\n\nconst monacoContentTypes: Record<string, string> = {\n 'application/json': 'JSON',\n 'application/xml': 'XML',\n 'text/html': 'HTML',\n 'text/css': 'CSS',\n '': 'Inherited from headers',\n}\n\n/**\n * @fires change When the value and the model change\n */\nexport default class BodyEditor extends ApiElement {\n /**\n * The currently rendered editor.\n * @attribute\n */\n @property({ type: String }) accessor selected: AllowedEditor = 'raw'\n\n protected valueInternal: unknown = ''\n\n /**\n * The HTTP body.\n *\n * Depending of current editor selection the type can vary.\n */\n get value(): unknown {\n return this.valueInternal\n }\n\n @property({ attribute: false })\n set value(value: unknown) {\n const old = this.valueInternal\n if (old === value) {\n return\n }\n // this is to be able to set a private filed value from\n // within the element\n this.valueInternal = value\n this.requestUpdate()\n }\n\n protected modelInternal: IBodyMetaModel[] | undefined\n\n /**\n * Previously generated by this editor metadata model.\n * Used internally to set the UI.\n */\n get model(): IBodyMetaModel[] | undefined {\n return this.modelInternal\n }\n\n @property({ type: Array })\n set model(value: IBodyMetaModel[] | undefined) {\n const old = this.modelInternal\n if (old === value) {\n return\n }\n // this is to be able to set a private filed value from\n // within the element\n this.modelInternal = value\n this.requestUpdate()\n this.modelChanged()\n }\n\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 * When set all controls are disabled in the form\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * When set it automatically encodes and decodes values.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor autoEncode = false\n\n /**\n * @returns True when the current value is a file (or blob).\n */\n get hasFile(): boolean {\n const { value } = this\n return value instanceof Blob\n }\n\n /**\n * The current request content type. It is passed to the `raw` editor\n * to detect current language.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor contentType: string | undefined\n\n protected invalidMimeMessage?: number\n\n protected invalidMimeValue?: boolean\n\n protected mimeValue?: string\n\n @query('http-body-urlencoded-editor') protected accessor urlEncodedEditor: BodyUrlEncodedEditor | null = null\n\n @query('http-body-multipart-editor') protected accessor multipartEditor: BodyMultipartEditor | null = null\n\n constructor() {\n super()\n this.addEventListener('drop', this.handlerDrop.bind(this))\n this.addEventListener('dragover', this.handleDragOver.bind(this))\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('contentType') || cp.has('selected')) {\n this.analyzeContentType()\n }\n super.update(cp)\n }\n\n /**\n * This must be called only when the `model` property change from the\n * outside. It restores values depending on the selected editor.\n */\n protected modelChanged(): void {\n const { selected, model } = this\n if (!model) {\n return\n }\n if (selected === 'file') {\n this.restoreFileModel()\n }\n const info = this.readMetaModel('urlEncode') as IUrlEncodedBodyMeta[] | undefined\n if (Array.isArray(info) && info[0]) {\n if (typeof info[0].autoEncode === 'boolean') {\n this.autoEncode = info[0].autoEncode\n }\n }\n }\n\n /**\n * Restores file value from the model, if exists\n */\n protected restoreFileModel(): void {\n const fileModel = this.readMetaModel('file') as ISafePayload[] | undefined\n if (!Array.isArray(fileModel) || !fileModel.length) {\n this.valueInternal = ''\n return\n }\n const [item] = fileModel\n if (!item || !item.data) {\n this.valueInternal = ''\n return\n }\n const file = PayloadSerializer.deserializeFile(item)\n this.valueInternal = file\n }\n\n protected handleTypeChange(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const selected = target.dataset.type as AllowedEditor\n this.changeEditor(selected)\n }\n\n /**\n * A handler for the editor selection. It activates an editor, if necessary.\n */\n protected async changeEditor(id: AllowedEditor): Promise<void> {\n if (this.selected === id) {\n return\n }\n this.selected = id\n this.analyzeContentType()\n if (id === 'raw') {\n const model = this.readMetaModel('raw') as IRawBody[]\n let value = ''\n if (Array.isArray(model) && model.length) {\n value = model[0].value\n }\n this.value = value\n this.notifyChange()\n }\n this.requestUpdate()\n await this.updateComplete\n // this.notifyResize();\n if (id === 'file') {\n this.restoreFileModel()\n this.notifyChange()\n } else if (id === 'urlEncode') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-urlencoded-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-urlencoded-editor> element was removed from the DOM.`)\n }\n this.value = editor.value\n this.notifyChange()\n } else if (id === 'multipart') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-multipart-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-multipart-editor> element was removed from the DOM.`)\n }\n this.value = editor.value\n this.notifyChange()\n }\n this.dispatchEvent(new Event('select'))\n }\n\n /**\n * A handler for the file pick button click.\n * Activates the file input.\n */\n protected handlePickFile(): void {\n const input = (this.shadowRoot as ShadowRoot).querySelector('.binary-hidden') as HTMLInputElement\n input.click()\n }\n\n /**\n * A handler for the file file selection in the file input.\n * Sets the value to the file.\n */\n protected async handleFileChange(e: Event): Promise<void> {\n const input = e.target as HTMLInputElement\n const { files } = input\n if (!files) {\n return\n }\n const file = files[0]\n if (!file) {\n return\n }\n this.valueInternal = file\n const payload = await PayloadSerializer.stringifyFile(file)\n const model = [payload]\n this.setMetaModel('file', model)\n this.notifyChange()\n this.requestUpdate()\n }\n\n /**\n * Clears the current value\n */\n protected handleClearFile(): void {\n this.value = ''\n this.setMetaModel('file', [])\n this.notifyChange()\n }\n\n /**\n * Reads editor view model\n *\n * @param editor The editor id\n * @returns The view model\n */\n protected readMetaModel(\n editor: string\n ): (ISafePayload | IProperty | IMultipartBody | IRawBody | IUrlEncodedBodyMeta)[] | undefined {\n const meta = this.model\n if (!meta || !Array.isArray(meta)) {\n return undefined\n }\n const item = meta.find((model) => model.type === editor)\n if (!item) {\n return undefined\n }\n if (Array.isArray(item.viewModel)) {\n return item.viewModel\n }\n return undefined\n }\n\n /**\n * Sets editor view model on the local model\n * @param editor The editor id\n * @param model The view model\n */\n protected setMetaModel(\n editor: AllowedEditor,\n model: (ISafePayload | IProperty | IMultipartBody | IRawBody | IUrlEncodedBodyMeta)[]\n ): void {\n if (!Array.isArray(this.modelInternal)) {\n this.modelInternal = []\n }\n const meta = this.model as IBodyMetaModel[]\n const index = meta.findIndex((item) => item.type === editor)\n if (index === -1) {\n meta.push({ type: editor, viewModel: model })\n } else {\n meta[index].viewModel = model\n }\n }\n\n /**\n * A handler for the change event dispatched by the\n * `urlEncode` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleUrlEncodeChange(e: Event): void {\n const editor = e.target as BodyUrlEncodedEditor\n this.updateUrlEncodedValue(editor)\n }\n\n protected updateUrlEncodedValue(editor: BodyUrlEncodedEditor): void {\n const { value, model } = editor\n this.valueInternal = value\n const info: IUrlEncodedBodyMeta = {\n model,\n autoEncode: this.autoEncode,\n }\n this.setMetaModel('urlEncode', [info])\n this.notifyChange()\n // do not request update here.\n }\n\n /**\n * A handler for the change event dispatched by the `raw` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleRawChange(e: Event): void {\n const editor = e.target as BodyTextEditor\n const { value } = editor\n this.valueInternal = value\n const model: IRawBody[] = [{ value: value as string }]\n this.setMetaModel('raw', model)\n this.notifyChange()\n }\n\n /**\n * A handler for the change event dispatched by the\n * `multipart` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleMultipartChange(e: Event): void {\n const editor = e.target as BodyMultipartEditor\n const { value, model } = editor\n this.valueInternal = value\n this.setMetaModel('multipart', model)\n this.notifyChange()\n }\n\n /**\n * Checks whether the current content type header value matches the selected editor.\n * If not it renders a warning message.\n */\n protected analyzeContentType(): void {\n const mime = this.contentType\n if (!mime || typeof mime !== 'string') {\n this.invalidMimeValue = false\n this.mimeValue = undefined\n return\n }\n let ct = mime\n const semicolon = ct.indexOf(';')\n if (semicolon !== -1) {\n ct = ct.substring(0, semicolon)\n }\n this.mimeValue = ct\n if (!ct) {\n this.invalidMimeValue = false\n return\n }\n const { selected } = this\n if (selected === 'multipart') {\n if (ct !== 'multipart/form-data') {\n this.invalidMimeValue = true\n this.invalidMimeMessage = 1\n } else {\n this.invalidMimeValue = false\n }\n } else if (selected === 'urlEncode') {\n if (ct !== 'application/x-www-form-urlencoded') {\n this.invalidMimeValue = true\n this.invalidMimeMessage = 2\n } else {\n this.invalidMimeValue = false\n }\n } else {\n this.invalidMimeValue = false\n }\n }\n\n /**\n * Automatically fixes content type problem.\n */\n protected autoFixMime(): void {\n const { selected } = this\n let updated = ''\n if (selected === 'urlEncode') {\n updated = 'application/x-www-form-urlencoded'\n } else if (selected === 'multipart') {\n updated = 'multipart/form-data'\n }\n Events.Http.Request.State.contentTypeChange(updated, this)\n }\n\n /**\n * A handler for the mime type selection.\n */\n protected handleMimeTypeSelect(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { type = '' } = target.dataset\n if (this.mimeValue === type) {\n return\n }\n this.contentType = type\n Events.Http.Request.State.contentTypeChange(type, this)\n }\n\n async handlerDrop(e: DragEvent): Promise<void> {\n e.preventDefault()\n const { dataTransfer } = e\n if (!dataTransfer) {\n return\n }\n const { files } = dataTransfer\n if (!files.length) {\n return\n }\n const file = files[0]\n const { selected } = this\n if (selected === 'file') {\n this.value = file\n } else if (selected === 'multipart') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-multipart-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-multipart-editor> element was removed from the DOM.`)\n }\n if (!e.ctrlKey && !e.metaKey) {\n editor.value = new FormData()\n }\n const ps = Array.from(files).map((item) => editor.addFile(item))\n await Promise.all(ps)\n } else {\n const payload = await PayloadSerializer.stringifyBlob(file)\n this.value = payload.data\n const { type } = file\n if (type) {\n Events.Http.Request.State.contentTypeChange(type, this)\n }\n }\n this.notifyChange()\n }\n\n protected handleDragOver(e: DragEvent): void {\n e.preventDefault()\n }\n\n protected handleAddUrlEncode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.addParameter()\n }\n }\n\n protected handleUrlEncode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.encodeParameters()\n }\n }\n\n protected handleUrlDecode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.decodeParameters()\n }\n }\n\n protected handleUrlEncodeAutoChange(e: Event): void {\n const input = e.target as CheckboxElement\n this.autoEncode = !!input.checked\n const editor = this.urlEncodedEditor\n if (editor) {\n this.updateUrlEncodedValue(editor)\n }\n }\n\n protected handleMultipartAddText(): void {\n const editor = this.multipartEditor\n if (editor) {\n editor.addEmptyText()\n }\n }\n\n protected handleMultipartAddFile(): void {\n const editor = this.multipartEditor\n if (editor) {\n editor.addEmptyFile()\n }\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"actions\">${this.renderBodySelector()} ${this.renderMainActions()}</div>\n ${this.renderInvalidMime()}\n <div class=\"container\">${this.renderEditor()}</div>\n `\n }\n\n /**\n * @returns The template for the dropdown menu for the editor type\n */\n protected renderBodySelector(): TemplateResult {\n const { selected } = this\n const selectedItem = editorTypes.find((i) => i.id === selected)\n const label = (selectedItem && selectedItem.label) || 'Select editor'\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleTypeChange}\"\n class=\"type-dropdown\"\n closeOnOutsideClick\n >\n <ui-filled-tonal-button title=\"Select editor type\" aria-label=\"Opens a menu to select editor type\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\" role=\"presentation\"></ui-icon>\n ${label}\n </ui-filled-tonal-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderBodyTypeOptions()} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderBodyTypeOptions(): TemplateResult {\n return html`\n ${editorTypes.map(\n (info) => html`\n <ui-list-item role=\"menuitem\" data-type=\"${info.id}\" title=\"${info.title}\"> ${info.label} </ui-list-item>\n `\n )}\n `\n }\n\n /**\n * @returns The template for the main editor actions.\n */\n protected renderMainActions(): TemplateResult | typeof nothing {\n const { selected } = this\n if (selected === 'raw') {\n return this.renderTextEditorActions()\n }\n if (selected === 'urlEncode') {\n return this.renderUrlEncodeEditorActions()\n }\n if (selected === 'multipart') {\n return this.renderMultipartActions()\n }\n return nothing\n }\n\n protected renderTextEditorActions(): TemplateResult {\n const label = monacoContentTypes[this.mimeValue || ''] || monacoContentTypes['']\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleMimeTypeSelect}\"\n class=\"mime-dropdown\"\n closeOnOutsideClick\n >\n <ui-filled-tonal-button\n title=\"Select media type. This overrides the content-type header\"\n aria-label=\"Editor media type\"\n >\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-filled-tonal-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderMonacoOptions()} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderMonacoOptions(): TemplateResult[] {\n return Object.keys(monacoContentTypes).map(\n (key) => html`\n ${key === '' ? html`<ui-divider></ui-divider>` : nothing}\n <ui-list-item role=\"menuitem\" data-type=\"${key}\"> ${monacoContentTypes[key]} </ui-list-item>\n `\n )\n }\n\n protected renderUrlEncodeEditorActions(): TemplateResult {\n const { autoEncode } = this\n return html`\n <ui-filled-tonal-button\n aria-label=\"Adds a new parameter\"\n title=\"Adds a new parameter\"\n @click=\"${this.handleAddUrlEncode}\"\n >\n <ui-icon slot=\"icon\" icon=\"add\" role=\"presentation\"></ui-icon>\n Add\n </ui-filled-tonal-button>\n <ui-outlined-button\n title=\"URL encodes parameters in the editor\"\n aria-label=\"URL encodes parameters in the editor\"\n @click=\"${this.handleUrlEncode}\"\n ?disabled=\"${autoEncode}\"\n >\n URL encode\n </ui-outlined-button>\n <ui-outlined-button\n title=\"URL decodes parameters in the editor\"\n aria-label=\"URL decodes parameters in the editor\"\n @click=\"${this.handleUrlDecode}\"\n ?disabled=\"${autoEncode}\"\n >\n URL decode\n </ui-outlined-button>\n <label title=\"When set it automatically encodes the values before sending the request\" class=\"label-medium\">\n <ui-checkbox .checked=\"${autoEncode}\" @change=\"${this.handleUrlEncodeAutoChange}\"></ui-checkbox>\n Encode on send\n </label>\n `\n }\n\n protected renderMultipartActions(): TemplateResult {\n return html`\n <ui-outlined-button\n title=\"Adds a new part with a file value\"\n aria-label=\"Adds a new part with a file value\"\n @click=\"${this.handleMultipartAddFile}\"\n >\n Add file part\n </ui-outlined-button>\n <ui-outlined-button\n title=\"Adds a new part with a text value\"\n aria-label=\"Adds a new part with a text value\"\n @click=\"${this.handleMultipartAddText}\"\n >\n Add text part\n </ui-outlined-button>\n `\n }\n\n /**\n * @returns A template for currently rendered editor\n */\n protected renderEditor(): TemplateResult {\n switch (this.selected) {\n case 'raw':\n return this.renderRawEditor()\n case 'urlEncode':\n return this.renderUrlEncodeEditor()\n case 'multipart':\n return this.renderMultipartEditor()\n case 'file':\n return this.renderFileEditor()\n default:\n return this.renderNoEditor()\n }\n }\n\n /**\n * @returns The template for the raw editor\n */\n protected renderRawEditor(): TemplateResult {\n let { value } = this\n const model = this.readMetaModel('raw') as IRawBody[]\n const hasModel = Array.isArray(model) && model.length\n if (typeof value !== 'string') {\n value = ''\n }\n if (!value && hasModel) {\n const [item] = model\n value = item.value\n }\n return this.renderTextEditor(value as string)\n }\n\n /**\n * @param value The editor value\n * @returns The template for the Monaco editor\n */\n protected renderTextEditor(value: string): TemplateResult {\n const { contentType } = this\n return html` <http-body-text-editor\n .value=\"${value}\"\n .contentType=\"${contentType}\"\n @change=\"${this.handleRawChange}\"\n allowFormInfo\n ></http-body-text-editor>`\n }\n\n /**\n * @returns A template for the application/x-www-form-urlencoded editor\n */\n protected renderUrlEncodeEditor(): TemplateResult {\n const { autoEncode } = this\n const info = this.readMetaModel('urlEncode') as IUrlEncodedBodyMeta[] | undefined\n const model = Array.isArray(info) && info[0] && info[0].model\n return html`\n <http-body-urlencoded-editor\n ?autoEncode=\"${autoEncode}\"\n .model=\"${ifProperty(model)}\"\n @change=\"${this.handleUrlEncodeChange}\"\n allowFormInfo\n ></http-body-urlencoded-editor>\n `\n }\n\n /**\n * @returns A template for the multipart editor\n */\n protected renderMultipartEditor(): TemplateResult {\n const model = this.readMetaModel('multipart') as IMultipartBody[]\n return html`\n <http-body-multipart-editor\n .model=\"${ifProperty(model)}\"\n @change=\"${this.handleMultipartChange}\"\n allowFormInfo\n ></http-body-multipart-editor>\n `\n }\n\n /**\n * @returns A template for the file input editor\n */\n protected renderFileEditor(): TemplateResult {\n return html`\n <div class=\"file-picker\">\n <ui-text-button @click=\"${this.handlePickFile}\">Choose a file</ui-text-button>\n ${this.renderFileDetail()}\n </div>\n <input type=\"file\" class=\"binary-hidden\" @change=\"${this.handleFileChange}\" />\n ${this.renderFormInfo()}\n `\n }\n\n protected renderFormInfo(): TemplateResult {\n return html`\n <p class=\"form-info body-small\">Note that the content-type header will be added when the request is sent.</p>\n `\n }\n\n /**\n * @returns A template for the missing selection\n */\n protected renderNoEditor(): TemplateResult {\n return html`<div class=\"empty-editor\">Invalid editor selected.</div>`\n }\n\n /**\n * @returns A template for the file details.\n */\n protected renderFileDetail(): TemplateResult | string {\n if (!this.hasFile) {\n this.restoreFileModel()\n }\n if (!this.hasFile) {\n return ''\n }\n const { value } = this\n const { size, name } = value as File\n return html`\n <div class=\"file-info label-medium\">\n <span class=\"file-name\">${name || 'unknown name'}</span>\n <span class=\"file-size\">${size} bytes</span>\n <ui-icon-button\n aria-label=\"Delete file\"\n title=\"Deletes the file\"\n @click=\"${this.handleClearFile}\"\n ?disabled=\"${this.readOnly}\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n </div>\n `\n }\n\n protected renderInvalidMime(): TemplateResult | string {\n if (!this.invalidMimeValue) {\n return ''\n }\n const id = this.invalidMimeMessage\n return html`\n <div class=\"invalid-mime body-medium\">\n <ui-icon icon=\"warning\" class=\"warning-icon\"></ui-icon>\n ${id === 1 ? this.renderFixableInvalidMime('multipart/form-data') : ''}\n ${id === 2 ? this.renderFixableInvalidMime('application/x-www-form-urlencoded') : ''}\n </div>\n `\n }\n\n /**\n * @returns A template for fixable mime type mismatch message.\n */\n protected renderFixableInvalidMime(suggested: string): TemplateResult {\n return html`\n <p class=\"message body-medium\">\n The <code>content-type</code> header has different value than <b>${suggested}</b>.\n </p>\n <ui-filled-tonal-button\n class=\"fix\"\n title=\"Updates the content type header for the request\"\n @click=\"${this.autoFixMime}\"\n >Fix</ui-filled-tonal-button\n >\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BodyEditor.js","sourceRoot":"","sources":["../../../../src/elements/http/BodyEditor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n@license\nCopyright 2020 The Advanced REST client authors <arc@mulesoft.com>\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not\nuse this file except in compliance with the License. You may obtain a copy of\nthe License at\nhttp://www.apache.org/licenses/LICENSE-2.0\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\nWARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\nLicense for the specific language governing permissions and limitations under\nthe License.\n*/\nimport { html, TemplateResult, PropertyValues, nothing } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport type { IBodyMetaModel, IRawBody, IUrlEncodedBodyMeta } from '@api-client/core/models/RequestUiMeta.js'\nimport {\n type IMultipartBody,\n type ISafePayload,\n PayloadSerializer,\n} from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport type { IProperty } from '@api-client/core/models/Property.js'\nimport { ifProperty } from '../../directives/if-property.js'\nimport BodyUrlEncodedEditor from './BodyUrlEncodedEditor.js'\nimport BodyTextEditor from './BodyTextEditor.js'\nimport BodyMultipartEditor from './BodyMultipartEditor.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport CheckboxElement from '../../md/checkbox/internals/CheckboxElement.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../define/http/http-body-urlencoded-editor.js'\nimport '../../define/http/http-body-multipart-editor.js'\nimport '../../define/http/http-body-text-editor.js'\nimport '../../md/button/ui-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/divider/ui-divider.js'\nimport '../../md/checkbox/ui-checkbox.js'\n\nexport type AllowedEditor = 'raw' | 'urlEncode' | 'multipart' | 'file'\n\nexport interface EditorType {\n id: AllowedEditor\n label: string\n title: string\n}\n\nexport const editorTypes: readonly EditorType[] = Object.freeze([\n {\n id: 'raw',\n label: 'Text editor',\n title: 'Opens a source editor with syntax highlighting',\n },\n {\n id: 'urlEncode',\n label: 'Form URL encoded',\n title: 'Opens an editor specialized with URL encoded data types',\n },\n {\n id: 'multipart',\n label: 'Multipart form data',\n title: 'Opens an editor specialized with multipart data',\n },\n {\n id: 'file',\n label: 'A file',\n title: 'Allows to choose any binary data',\n },\n])\n\nconst monacoContentTypes: Record<string, string> = {\n 'application/json': 'JSON',\n 'application/xml': 'XML',\n 'text/html': 'HTML',\n 'text/css': 'CSS',\n '': 'Inherited from headers',\n}\n\n/**\n * @fires change When the value and the model change\n */\nexport default class BodyEditor extends ApiElement {\n /**\n * The currently rendered editor.\n * @attribute\n */\n @property({ type: String }) accessor selected: AllowedEditor = 'raw'\n\n protected valueInternal: unknown = ''\n\n /**\n * The HTTP body.\n *\n * Depending of current editor selection the type can vary.\n */\n get value(): unknown {\n return this.valueInternal\n }\n\n @property({ attribute: false })\n set value(value: unknown) {\n const old = this.valueInternal\n if (old === value) {\n return\n }\n // this is to be able to set a private filed value from\n // within the element\n this.valueInternal = value\n this.requestUpdate()\n }\n\n protected modelInternal: IBodyMetaModel[] | undefined\n\n /**\n * Previously generated by this editor metadata model.\n * Used internally to set the UI.\n */\n get model(): IBodyMetaModel[] | undefined {\n return this.modelInternal\n }\n\n @property({ type: Array })\n set model(value: IBodyMetaModel[] | undefined) {\n const old = this.modelInternal\n if (old === value) {\n return\n }\n // this is to be able to set a private filed value from\n // within the element\n this.modelInternal = value\n this.requestUpdate()\n this.modelChanged()\n }\n\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 * When set all controls are disabled in the form\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * When set it automatically encodes and decodes values.\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor autoEncode = false\n\n /**\n * @returns True when the current value is a file (or blob).\n */\n get hasFile(): boolean {\n const { value } = this\n return value instanceof Blob\n }\n\n /**\n * The current request content type. It is passed to the `raw` editor\n * to detect current language.\n * @attribute\n */\n @property({ type: String, reflect: true }) accessor contentType: string | undefined\n\n protected invalidMimeMessage?: number\n\n protected invalidMimeValue?: boolean\n\n protected mimeValue?: string\n\n @query('http-body-urlencoded-editor') protected accessor urlEncodedEditor: BodyUrlEncodedEditor | null = null\n\n @query('http-body-multipart-editor') protected accessor multipartEditor: BodyMultipartEditor | null = null\n\n constructor() {\n super()\n this.addEventListener('drop', this.handlerDrop.bind(this))\n this.addEventListener('dragover', this.handleDragOver.bind(this))\n }\n\n protected override update(cp: PropertyValues<this>): void {\n if (cp.has('contentType') || cp.has('selected')) {\n this.analyzeContentType()\n }\n super.update(cp)\n }\n\n /**\n * This must be called only when the `model` property change from the\n * outside. It restores values depending on the selected editor.\n */\n protected modelChanged(): void {\n const { selected, model } = this\n if (!model) {\n return\n }\n if (selected === 'file') {\n this.restoreFileModel()\n }\n const info = this.readMetaModel('urlEncode') as IUrlEncodedBodyMeta[] | undefined\n if (Array.isArray(info) && info[0]) {\n if (typeof info[0].autoEncode === 'boolean') {\n this.autoEncode = info[0].autoEncode\n }\n }\n }\n\n /**\n * Restores file value from the model, if exists\n */\n protected restoreFileModel(): void {\n const fileModel = this.readMetaModel('file') as ISafePayload[] | undefined\n if (!Array.isArray(fileModel) || !fileModel.length) {\n this.valueInternal = ''\n return\n }\n const [item] = fileModel\n if (!item || !item.data) {\n this.valueInternal = ''\n return\n }\n const file = PayloadSerializer.deserializeFile(item)\n this.valueInternal = file\n }\n\n protected handleTypeChange(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const selected = target.dataset.type as AllowedEditor\n this.changeEditor(selected)\n }\n\n /**\n * A handler for the editor selection. It activates an editor, if necessary.\n */\n protected async changeEditor(id: AllowedEditor): Promise<void> {\n if (this.selected === id) {\n return\n }\n this.selected = id\n this.analyzeContentType()\n if (id === 'raw') {\n const model = this.readMetaModel('raw') as IRawBody[]\n let value = ''\n if (Array.isArray(model) && model.length) {\n value = model[0].value\n }\n this.value = value\n this.notifyChange()\n }\n this.requestUpdate()\n await this.updateComplete\n // this.notifyResize();\n if (id === 'file') {\n this.restoreFileModel()\n this.notifyChange()\n } else if (id === 'urlEncode') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-urlencoded-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-urlencoded-editor> element was removed from the DOM.`)\n }\n this.value = editor.value\n this.notifyChange()\n } else if (id === 'multipart') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-multipart-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-multipart-editor> element was removed from the DOM.`)\n }\n this.value = editor.value\n this.notifyChange()\n }\n this.dispatchEvent(new Event('select'))\n }\n\n /**\n * A handler for the file pick button click.\n * Activates the file input.\n */\n protected handlePickFile(): void {\n const input = (this.shadowRoot as ShadowRoot).querySelector('.binary-hidden') as HTMLInputElement\n input.click()\n }\n\n /**\n * A handler for the file file selection in the file input.\n * Sets the value to the file.\n */\n protected async handleFileChange(e: Event): Promise<void> {\n const input = e.target as HTMLInputElement\n const { files } = input\n if (!files) {\n return\n }\n const file = files[0]\n if (!file) {\n return\n }\n this.valueInternal = file\n const payload = await PayloadSerializer.stringifyFile(file)\n const model = [payload]\n this.setMetaModel('file', model)\n this.notifyChange()\n this.requestUpdate()\n }\n\n /**\n * Clears the current value\n */\n protected handleClearFile(): void {\n this.value = ''\n this.setMetaModel('file', [])\n this.notifyChange()\n }\n\n /**\n * Reads editor view model\n *\n * @param editor The editor id\n * @returns The view model\n */\n protected readMetaModel(\n editor: string\n ): (ISafePayload | IProperty | IMultipartBody | IRawBody | IUrlEncodedBodyMeta)[] | undefined {\n const meta = this.model\n if (!meta || !Array.isArray(meta)) {\n return undefined\n }\n const item = meta.find((model) => model.type === editor)\n if (!item) {\n return undefined\n }\n if (Array.isArray(item.viewModel)) {\n return item.viewModel\n }\n return undefined\n }\n\n /**\n * Sets editor view model on the local model\n * @param editor The editor id\n * @param model The view model\n */\n protected setMetaModel(\n editor: AllowedEditor,\n model: (ISafePayload | IProperty | IMultipartBody | IRawBody | IUrlEncodedBodyMeta)[]\n ): void {\n if (!Array.isArray(this.modelInternal)) {\n this.modelInternal = []\n }\n const meta = this.model as IBodyMetaModel[]\n const index = meta.findIndex((item) => item.type === editor)\n if (index === -1) {\n meta.push({ type: editor, viewModel: model })\n } else {\n meta[index].viewModel = model\n }\n }\n\n /**\n * A handler for the change event dispatched by the\n * `urlEncode` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleUrlEncodeChange(e: Event): void {\n const editor = e.target as BodyUrlEncodedEditor\n this.updateUrlEncodedValue(editor)\n }\n\n protected updateUrlEncodedValue(editor: BodyUrlEncodedEditor): void {\n const { value, model } = editor\n this.valueInternal = value\n const info: IUrlEncodedBodyMeta = {\n model,\n autoEncode: this.autoEncode,\n }\n this.setMetaModel('urlEncode', [info])\n this.notifyChange()\n // do not request update here.\n }\n\n /**\n * A handler for the change event dispatched by the `raw` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleRawChange(e: Event): void {\n const editor = e.target as BodyTextEditor\n const { value } = editor\n this.valueInternal = value\n const model: IRawBody[] = [{ value: value as string }]\n this.setMetaModel('raw', model)\n this.notifyChange()\n }\n\n /**\n * A handler for the change event dispatched by the\n * `multipart` editor.\n * Updated the local value, model, and notifies the change.\n */\n protected handleMultipartChange(e: Event): void {\n const editor = e.target as BodyMultipartEditor\n const { value, model } = editor\n this.valueInternal = value\n this.setMetaModel('multipart', model)\n this.notifyChange()\n }\n\n /**\n * Checks whether the current content type header value matches the selected editor.\n * If not it renders a warning message.\n */\n protected analyzeContentType(): void {\n const mime = this.contentType\n if (!mime || typeof mime !== 'string') {\n this.invalidMimeValue = false\n this.mimeValue = undefined\n return\n }\n let ct = mime\n const semicolon = ct.indexOf(';')\n if (semicolon !== -1) {\n ct = ct.substring(0, semicolon)\n }\n this.mimeValue = ct\n if (!ct) {\n this.invalidMimeValue = false\n return\n }\n const { selected } = this\n if (selected === 'multipart') {\n if (ct !== 'multipart/form-data') {\n this.invalidMimeValue = true\n this.invalidMimeMessage = 1\n } else {\n this.invalidMimeValue = false\n }\n } else if (selected === 'urlEncode') {\n if (ct !== 'application/x-www-form-urlencoded') {\n this.invalidMimeValue = true\n this.invalidMimeMessage = 2\n } else {\n this.invalidMimeValue = false\n }\n } else {\n this.invalidMimeValue = false\n }\n }\n\n /**\n * Automatically fixes content type problem.\n */\n protected autoFixMime(): void {\n const { selected } = this\n let updated = ''\n if (selected === 'urlEncode') {\n updated = 'application/x-www-form-urlencoded'\n } else if (selected === 'multipart') {\n updated = 'multipart/form-data'\n }\n Events.Http.Request.State.contentTypeChange(updated, this)\n }\n\n /**\n * A handler for the mime type selection.\n */\n protected handleMimeTypeSelect(e: CustomEvent): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { type = '' } = target.dataset\n if (this.mimeValue === type) {\n return\n }\n this.contentType = type\n Events.Http.Request.State.contentTypeChange(type, this)\n }\n\n async handlerDrop(e: DragEvent): Promise<void> {\n e.preventDefault()\n const { dataTransfer } = e\n if (!dataTransfer) {\n return\n }\n const { files } = dataTransfer\n if (!files.length) {\n return\n }\n const file = files[0]\n const { selected } = this\n if (selected === 'file') {\n this.value = file\n } else if (selected === 'multipart') {\n const editor = (this.shadowRoot as ShadowRoot).querySelector('http-body-multipart-editor')\n if (!editor) {\n throw new Error(`Invalid state. The <http-body-multipart-editor> element was removed from the DOM.`)\n }\n if (!e.ctrlKey && !e.metaKey) {\n editor.value = new FormData()\n }\n const ps = Array.from(files).map((item) => editor.addFile(item))\n await Promise.all(ps)\n } else {\n const payload = await PayloadSerializer.stringifyBlob(file)\n this.value = payload.data\n const { type } = file\n if (type) {\n Events.Http.Request.State.contentTypeChange(type, this)\n }\n }\n this.notifyChange()\n }\n\n protected handleDragOver(e: DragEvent): void {\n e.preventDefault()\n }\n\n protected handleAddUrlEncode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.addParameter()\n }\n }\n\n protected handleUrlEncode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.encodeParameters()\n }\n }\n\n protected handleUrlDecode(): void {\n const editor = this.urlEncodedEditor\n if (editor) {\n editor.decodeParameters()\n }\n }\n\n protected handleUrlEncodeAutoChange(e: Event): void {\n const input = e.target as CheckboxElement\n this.autoEncode = !!input.checked\n const editor = this.urlEncodedEditor\n if (editor) {\n this.updateUrlEncodedValue(editor)\n }\n }\n\n protected handleMultipartAddText(): void {\n const editor = this.multipartEditor\n if (editor) {\n editor.addEmptyText()\n }\n }\n\n protected handleMultipartAddFile(): void {\n const editor = this.multipartEditor\n if (editor) {\n editor.addEmptyFile()\n }\n }\n\n override render(): TemplateResult {\n return html`\n <div class=\"actions\">${this.renderBodySelector()} ${this.renderMainActions()}</div>\n ${this.renderInvalidMime()}\n <div class=\"container\">${this.renderEditor()}</div>\n `\n }\n\n /**\n * @returns The template for the dropdown menu for the editor type\n */\n protected renderBodySelector(): TemplateResult {\n const { selected } = this\n const selectedItem = editorTypes.find((i) => i.id === selected)\n const label = (selectedItem && selectedItem.label) || 'Select editor'\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleTypeChange}\"\n class=\"type-dropdown\"\n closeOnOutsideClick\n >\n <ui-button color=\"tonal\" title=\"Select editor type\" aria-label=\"Opens a menu to select editor type\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\" role=\"presentation\"></ui-icon>\n ${label}\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderBodyTypeOptions()} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderBodyTypeOptions(): TemplateResult {\n return html`\n ${editorTypes.map(\n (info) => html`\n <ui-list-item role=\"menuitem\" data-type=\"${info.id}\" title=\"${info.title}\"> ${info.label} </ui-list-item>\n `\n )}\n `\n }\n\n /**\n * @returns The template for the main editor actions.\n */\n protected renderMainActions(): TemplateResult | typeof nothing {\n const { selected } = this\n if (selected === 'raw') {\n return this.renderTextEditorActions()\n }\n if (selected === 'urlEncode') {\n return this.renderUrlEncodeEditorActions()\n }\n if (selected === 'multipart') {\n return this.renderMultipartActions()\n }\n return nothing\n }\n\n protected renderTextEditorActions(): TemplateResult {\n const label = monacoContentTypes[this.mimeValue || ''] || monacoContentTypes['']\n return html`\n <ui-dropdown-list\n verticalAlign=\"top\"\n @select=\"${this.handleMimeTypeSelect}\"\n class=\"mime-dropdown\"\n closeOnOutsideClick\n >\n <ui-button\n color=\"tonal\"\n title=\"Select media type. This overrides the content-type header\"\n aria-label=\"Editor media type\"\n >\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-button>\n <ui-list slot=\"dropdown\" role=\"menu\"> ${this.renderMonacoOptions()} </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderMonacoOptions(): TemplateResult[] {\n return Object.keys(monacoContentTypes).map(\n (key) => html`\n ${key === '' ? html`<ui-divider></ui-divider>` : nothing}\n <ui-list-item role=\"menuitem\" data-type=\"${key}\"> ${monacoContentTypes[key]} </ui-list-item>\n `\n )\n }\n\n protected renderUrlEncodeEditorActions(): TemplateResult {\n const { autoEncode } = this\n return html`\n <ui-button\n color=\"tonal\"\n aria-label=\"Adds a new parameter\"\n title=\"Adds a new parameter\"\n @click=\"${this.handleAddUrlEncode}\"\n >\n <ui-icon slot=\"icon\" icon=\"add\" role=\"presentation\"></ui-icon>\n Add\n </ui-button>\n <ui-button\n color=\"outlined\"\n title=\"URL encodes parameters in the editor\"\n aria-label=\"URL encodes parameters in the editor\"\n @click=\"${this.handleUrlEncode}\"\n ?disabled=\"${autoEncode}\"\n >\n URL encode\n </ui-button>\n <ui-button\n color=\"outlined\"\n title=\"URL decodes parameters in the editor\"\n aria-label=\"URL decodes parameters in the editor\"\n @click=\"${this.handleUrlDecode}\"\n ?disabled=\"${autoEncode}\"\n >\n URL decode\n </ui-button>\n <label title=\"When set it automatically encodes the values before sending the request\" class=\"label-medium\">\n <ui-checkbox .checked=\"${autoEncode}\" @change=\"${this.handleUrlEncodeAutoChange}\"></ui-checkbox>\n Encode on send\n </label>\n `\n }\n\n protected renderMultipartActions(): TemplateResult {\n return html`\n <ui-button\n color=\"outlined\"\n title=\"Adds a new part with a file value\"\n aria-label=\"Adds a new part with a file value\"\n @click=\"${this.handleMultipartAddFile}\"\n >\n Add file part\n </ui-button>\n <ui-button\n color=\"outlined\"\n title=\"Adds a new part with a text value\"\n aria-label=\"Adds a new part with a text value\"\n @click=\"${this.handleMultipartAddText}\"\n >\n Add text part\n </ui-button>\n `\n }\n\n /**\n * @returns A template for currently rendered editor\n */\n protected renderEditor(): TemplateResult {\n switch (this.selected) {\n case 'raw':\n return this.renderRawEditor()\n case 'urlEncode':\n return this.renderUrlEncodeEditor()\n case 'multipart':\n return this.renderMultipartEditor()\n case 'file':\n return this.renderFileEditor()\n default:\n return this.renderNoEditor()\n }\n }\n\n /**\n * @returns The template for the raw editor\n */\n protected renderRawEditor(): TemplateResult {\n let { value } = this\n const model = this.readMetaModel('raw') as IRawBody[]\n const hasModel = Array.isArray(model) && model.length\n if (typeof value !== 'string') {\n value = ''\n }\n if (!value && hasModel) {\n const [item] = model\n value = item.value\n }\n return this.renderTextEditor(value as string)\n }\n\n /**\n * @param value The editor value\n * @returns The template for the Monaco editor\n */\n protected renderTextEditor(value: string): TemplateResult {\n const { contentType } = this\n return html` <http-body-text-editor\n .value=\"${value}\"\n .contentType=\"${contentType}\"\n @change=\"${this.handleRawChange}\"\n allowFormInfo\n ></http-body-text-editor>`\n }\n\n /**\n * @returns A template for the application/x-www-form-urlencoded editor\n */\n protected renderUrlEncodeEditor(): TemplateResult {\n const { autoEncode } = this\n const info = this.readMetaModel('urlEncode') as IUrlEncodedBodyMeta[] | undefined\n const model = Array.isArray(info) && info[0] && info[0].model\n return html`\n <http-body-urlencoded-editor\n ?autoEncode=\"${autoEncode}\"\n .model=\"${ifProperty(model)}\"\n @change=\"${this.handleUrlEncodeChange}\"\n allowFormInfo\n ></http-body-urlencoded-editor>\n `\n }\n\n /**\n * @returns A template for the multipart editor\n */\n protected renderMultipartEditor(): TemplateResult {\n const model = this.readMetaModel('multipart') as IMultipartBody[]\n return html`\n <http-body-multipart-editor\n .model=\"${ifProperty(model)}\"\n @change=\"${this.handleMultipartChange}\"\n allowFormInfo\n ></http-body-multipart-editor>\n `\n }\n\n /**\n * @returns A template for the file input editor\n */\n protected renderFileEditor(): TemplateResult {\n return html`\n <div class=\"file-picker\">\n <ui-button color=\"text\" @click=\"${this.handlePickFile}\">Choose a file</ui-button>\n ${this.renderFileDetail()}\n </div>\n <input type=\"file\" class=\"binary-hidden\" @change=\"${this.handleFileChange}\" />\n ${this.renderFormInfo()}\n `\n }\n\n protected renderFormInfo(): TemplateResult {\n return html`\n <p class=\"form-info body-small\">Note that the content-type header will be added when the request is sent.</p>\n `\n }\n\n /**\n * @returns A template for the missing selection\n */\n protected renderNoEditor(): TemplateResult {\n return html`<div class=\"empty-editor\">Invalid editor selected.</div>`\n }\n\n /**\n * @returns A template for the file details.\n */\n protected renderFileDetail(): TemplateResult | string {\n if (!this.hasFile) {\n this.restoreFileModel()\n }\n if (!this.hasFile) {\n return ''\n }\n const { value } = this\n const { size, name } = value as File\n return html`\n <div class=\"file-info label-medium\">\n <span class=\"file-name\">${name || 'unknown name'}</span>\n <span class=\"file-size\">${size} bytes</span>\n <ui-icon-button\n aria-label=\"Delete file\"\n title=\"Deletes the file\"\n @click=\"${this.handleClearFile}\"\n ?disabled=\"${this.readOnly}\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n </div>\n `\n }\n\n protected renderInvalidMime(): TemplateResult | string {\n if (!this.invalidMimeValue) {\n return ''\n }\n const id = this.invalidMimeMessage\n return html`\n <div class=\"invalid-mime body-medium\">\n <ui-icon icon=\"warning\" class=\"warning-icon\"></ui-icon>\n ${id === 1 ? this.renderFixableInvalidMime('multipart/form-data') : ''}\n ${id === 2 ? this.renderFixableInvalidMime('application/x-www-form-urlencoded') : ''}\n </div>\n `\n }\n\n /**\n * @returns A template for fixable mime type mismatch message.\n */\n protected renderFixableInvalidMime(suggested: string): TemplateResult {\n return html`\n <p class=\"message body-medium\">\n The <code>content-type</code> header has different value than <b>${suggested}</b>.\n </p>\n <ui-button\n class=\"fix\"\n title=\"Updates the content type header for the request\"\n @click=\"${this.autoFixMime}\"\n color=\"tonal\"\n >Fix</ui-button\n >\n `\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ import ApiElement from '../ApiElement.js';
|
|
|
4
4
|
import '../../md/icons/ui-icon.js';
|
|
5
5
|
import '../../md/switch/ui-switch.js';
|
|
6
6
|
import '../../md/icon-button/ui-icon-button.js';
|
|
7
|
-
import '../../md/button/ui-
|
|
7
|
+
import '../../md/button/ui-button.js';
|
|
8
8
|
export declare const hasFormDataSupport: boolean;
|
|
9
9
|
/**
|
|
10
10
|
* Multipart payload editor.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyMultipartEditor.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/BodyMultipartEditor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,OAAO,EAAE,MAAM,KAAK,CAAA;AAEnD,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,wDAAwD,CAAA;AAK/D,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,2BAA2B,CAAA;AAClC,OAAO,8BAA8B,CAAA;AACrC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"BodyMultipartEditor.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/BodyMultipartEditor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import ApiElement from '../ApiElement.js';
|
|
|
8
8
|
import '../../md/icons/ui-icon.js';
|
|
9
9
|
import '../../md/switch/ui-switch.js';
|
|
10
10
|
import '../../md/icon-button/ui-icon-button.js';
|
|
11
|
-
import '../../md/button/ui-
|
|
11
|
+
import '../../md/button/ui-button.js';
|
|
12
12
|
let hasSupport;
|
|
13
13
|
try {
|
|
14
14
|
const fd = new FormData();
|
|
@@ -616,8 +616,8 @@ let BodyMultipartEditor = (() => {
|
|
|
616
616
|
const meta = item && item.meta;
|
|
617
617
|
return html `
|
|
618
618
|
<div class="input-wrapper file-input">
|
|
619
|
-
<ui-
|
|
620
|
-
>Choose file</ui-
|
|
619
|
+
<ui-button color="text" @click="${this.handleFilePick}" ?disabled="${readOnly}" class="choose-button"
|
|
620
|
+
>Choose file</ui-button
|
|
621
621
|
>
|
|
622
622
|
<input type="file" hidden data-index="${index}" @change="${this.handleFilePartValue}" />
|
|
623
623
|
${meta ? html `<span class="file-info">${meta.name} (${meta.mime}), ${item.data.length} bytes</span>` : ''}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BodyMultipartEditor.js","sourceRoot":"","sources":["../../../../src/elements/http/BodyMultipartEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport {\n type IBlobMeta,\n type IFileMeta,\n type IMultipartBody,\n type ISafePayload,\n PayloadSerializer,\n} from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport { queryRequestHeaders } from '@api-client/core/lib/definitions/HttpDefinitions.js'\nimport { live } from 'lit/directives/live.js'\nimport SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport Input from '../../md/input/Input.js'\nimport ApiElement from '../ApiElement.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/icon-button/ui-icon-button.js'\nimport '../../md/button/ui-text-button.js'\n\nlet hasSupport: boolean\ntry {\n const fd = new FormData()\n fd.append('test', new Blob(['.'], { type: 'image/jpg' }), 'test.jpg')\n hasSupport = 'entries' in fd\n} catch {\n hasSupport = false\n}\nexport const hasFormDataSupport = hasSupport\n\nfunction normalizePartValue(item: IMultipartBody): void {\n if (typeof item.value === 'string') {\n const oldValue = item.value\n item.value = {\n type: 'string',\n data: oldValue,\n }\n }\n}\n\nlet mimeSuggestions: string[] = []\n\n;((): void => {\n const items = queryRequestHeaders('content-type')\n const item = items.find((i) => i.key.toLowerCase() === 'content-type')\n if (!item || !item.autocomplete) {\n return\n }\n mimeSuggestions = item.autocomplete\n})()\n\n/**\n * Multipart payload editor.\n *\n * The element internally uses a generated from a FormData model. It is API Client's `IMultipartBody` array.\n * The FormData is generated on-fly when accessing the `value` getter. It also regenerates the model when\n * the `value` property change. Because of that you should never set the value on the editor but only manipulate the\n * `model` property.\n */\nexport default class BodyMultipartEditor 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 * When set all controls are disabled in the form\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * @attribute\n */\n @property({ type: Boolean }) accessor allowFormInfo: boolean | undefined\n\n /**\n * The value of this form.\n * When reading the `value` it generated the FormData from the model values.\n * When setting this property is regenerates the `model` to the value in the FormData.\n * When setting to anything other than the `FormData` it sets the `model` to an empty array.\n */\n get value(): FormData {\n return this.toFormData()\n }\n\n @property({ type: Object })\n set value(value: FormData) {\n this.updateModel(value)\n }\n\n /**\n * The model used by the external application\n */\n protected modelInternal: IMultipartBody[] = []\n\n /**\n * Computed data model for the view.\n * Don't set both `value` and `model`. If the model exists then\n * set only it or otherwise the `value` setter override the model.\n */\n get model(): IMultipartBody[] {\n return this.modelInternal\n }\n\n @property({ type: Array })\n set model(value: IMultipartBody[] | undefined) {\n const old = this.modelInternal\n if (old === value) {\n return\n }\n if (Array.isArray(value)) {\n this.modelInternal = value\n } else {\n this.modelInternal = []\n }\n this.requestUpdate('model', old)\n if (value) {\n this.upgradeLegacy(value)\n }\n }\n\n /**\n * @returns The FormData from the current model.\n */\n toFormData(): FormData {\n const validItems = this.modelInternal.filter((item) => {\n const { name, value } = item\n if (!name) {\n return false\n }\n if (typeof value === 'string') {\n return true\n }\n if (value.type === 'string') {\n return true\n }\n if (value.type === 'blob' || value.type === 'file') {\n return !!value.data && !!value.data.length\n }\n return true\n })\n return PayloadSerializer.deserializeFormData(validItems)\n }\n\n /**\n * Makes an attempt to upgrade old definitions of the `IMultipartBody`.\n * If this fails, the form will show error instead of part field.\n * @param value The current model.\n */\n protected async upgradeLegacy(value: IMultipartBody[]): Promise<void> {\n const ps: Promise<void>[] = []\n for (const part of value) {\n if (part.isFile === undefined) {\n continue\n }\n if (part.isFile === false && !part.type) {\n delete part.isFile\n const oldValue = (part.value || '') as string\n part.value = {\n type: 'string',\n data: oldValue,\n }\n } else if (part.isFile === false && part.type) {\n ps.push(this.upgradeLegacyBlob(part))\n } else {\n ps.push(this.upgradeLegacyFile(part))\n }\n }\n if (ps.length) {\n await Promise.allSettled(ps)\n this.requestUpdate()\n this.notifyChange()\n }\n }\n\n protected async upgradeLegacyBlob(part: IMultipartBody): Promise<void> {\n if (typeof part.value !== 'string') {\n return\n }\n const readBlob = PayloadSerializer.deserializeBlobLegacy(part.value as string)\n if (!readBlob) {\n return\n }\n const contents = await readBlob.text()\n part.blobText = contents || ''\n const blob = new Blob([part.blobText as string], { type: part.type })\n part.value = await PayloadSerializer.stringifyBlob(blob)\n delete part.type\n delete part.isFile\n }\n\n protected async upgradeLegacyFile(part: IMultipartBody): Promise<void> {\n if (typeof part.value !== 'string') {\n return\n }\n const readBlob = PayloadSerializer.deserializeBlobLegacy(part.value as string)\n if (!readBlob) {\n return\n }\n const fname = part.fileName || 'unknown-file.txt'\n const file = new File([readBlob], fname, { type: readBlob.type })\n part.value = await PayloadSerializer.stringifyFile(file)\n delete part.fileName\n delete part.isFile\n }\n\n protected async updateModel(value?: unknown): Promise<void> {\n if (!value || !(value instanceof FormData)) {\n this.model = []\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent('modelupdate', { bubbles: false, composed: false }))\n })\n return\n }\n const payload = await PayloadSerializer.stringifyFormData(value as FormData)\n this.model = payload.data as IMultipartBody[]\n this.dispatchEvent(new CustomEvent('modelupdate', { bubbles: false, composed: false }))\n }\n\n /**\n * Adds an instance of a file to the form data\n */\n async addFile(file: File): Promise<void> {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const entry = await PayloadSerializer.serializeFormDataEntry(file.name, file)\n model.push(entry)\n this.notifyChange()\n this.requestUpdate()\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model = []\n this.notifyChange()\n }\n\n /**\n * Adds an empty text part item to the form.\n */\n addEmptyText(): void {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const obj: IMultipartBody = {\n name: '',\n value: {\n data: '',\n type: 'string',\n },\n enabled: true,\n }\n model.push(obj)\n this.requestUpdate()\n }\n\n /**\n * Adds an empty file part item to the form.\n */\n addEmptyFile(): void {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const obj: IMultipartBody = {\n name: '',\n value: {\n data: [],\n type: 'file',\n },\n enabled: true,\n }\n model.push(obj)\n this.requestUpdate()\n }\n\n /**\n * Removes a parameter from an index.\n */\n removeProperty(index: number): void {\n const items = this.modelInternal\n items.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles enabled state of a parameter.\n */\n toggleProperty(index: number, enabled: boolean): void {\n const items = this.modelInternal\n const item = items[index]\n item.enabled = enabled\n this.notifyChange()\n }\n\n updatePartName(index: number, value: string): void {\n const item = this.modelInternal[index]\n const old = item.name\n if (old === value) {\n return\n }\n item.name = value\n this.notifyChange()\n }\n\n updateTextPartValue(index: number, value: string): void {\n const item = this.modelInternal[index]\n normalizePartValue(item)\n const typedValue = item.value as ISafePayload\n if (typedValue.data === value) {\n return\n }\n typedValue.data = value\n this.notifyChange()\n }\n\n async updateBlobPartValue(index: number, value: string): Promise<void> {\n const item = this.modelInternal[index]\n normalizePartValue(item)\n const typedValue = item.value as ISafePayload\n if (typedValue.data === value) {\n return\n }\n item.blobText = value\n const blob = new Blob([value], { type: typedValue.meta?.mime || 'text/plain' })\n item.value = await PayloadSerializer.stringifyBlob(blob)\n this.notifyChange()\n }\n\n async updateFileValue(index: number, file: File): Promise<void> {\n const item = this.modelInternal[index]\n if (!item || !file) {\n return\n }\n item.value = await PayloadSerializer.stringifyFile(file)\n this.notifyChange()\n this.requestUpdate()\n }\n\n async changePartMime(index: number, value: string): Promise<void> {\n const item = this.modelInternal[index]\n if (!item) {\n return\n }\n normalizePartValue(item)\n // change the type from text to blob, if needed\n const typedValue = item.value as ISafePayload\n\n if (typedValue.type === 'string') {\n item.blobText = typedValue.data as string\n } else if (!item.blobText && typedValue.data) {\n const restored = PayloadSerializer.deserializeBlob(typedValue) as Blob\n item.blobText = await restored.text()\n }\n const blob = new Blob([item.blobText || ''], { type: value })\n item.value = await PayloadSerializer.stringifyBlob(blob)\n this.notifyChange()\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.removeProperty(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.toggleProperty(index, !!node.checked)\n }\n\n protected handleFilePick(e: Event): void {\n const node = e.target as HTMLElement\n const input = node.nextElementSibling as HTMLInputElement\n input.click()\n }\n\n protected handleFilePartValue(e: Event): void {\n e.stopPropagation()\n const input = e.target as HTMLInputElement\n if (!input.files) {\n return\n }\n const index = Number(input.dataset.index)\n this.updateFileValue(index, input.files[0])\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.updatePartName(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.updateTextPartValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleBlobValueChange(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.updateBlobPartValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleMimeChange(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.changePartMime(index, input.value)\n input.checkValidity()\n }\n\n override render(): TemplateResult {\n if (!hasSupport) {\n return this.renderNoSupport()\n }\n return html` ${this.renderList()} ${this.renderMimeList()} ${this.renderFormInfo()} `\n }\n\n protected renderFormInfo(): TemplateResult | typeof nothing {\n if (!this.allowFormInfo) {\n return nothing\n }\n return html`\n <p class=\"form-info\">\n Note that the content-type header will be added when the request is sent. We encourage you to use variables to\n insert sensitive data.\n </p>\n `\n }\n\n protected renderList(): TemplateResult {\n const items = this.model\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage()\n }\n return this.renderParams(items)\n }\n\n protected renderNoSupport(): TemplateResult {\n return html` <div class=\"empty-message\">Your browser does not support this editor</div> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No parameters added</div> `\n }\n\n protected renderParams(items: IMultipartBody[]): TemplateResult {\n return html` ${items.map((item, index) => this.renderParam(item, index))} `\n }\n\n protected renderToggleButton(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!part.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ?disabled=\"${this.readOnly}\"\n ></ui-switch>\n `\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this parameter\"\n data-index=\"${index}\"\n @click=\"${this.handleRemove}\"\n ?disabled=\"${this.readOnly}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderNameField(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Name is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n required\n autocomplete=\"off\"\n .value=\"${live(part.name)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Part name value\"\n placeholder=\"Part name\"\n @change=\"${this.handleNameChange}\"\n />\n </div>\n `\n }\n\n protected renderValueField(part: IMultipartBody, index: number): TemplateResult {\n const value = ((part.value as ISafePayload).data as string) || ''\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Value is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n required\n .value=\"${live(value)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part value\"\n placeholder=\"Part text value\"\n @change=\"${this.handleValueChange}\"\n />\n </div>\n `\n }\n\n protected renderBlobValueField(part: IMultipartBody, index: number): TemplateResult {\n const { blobText } = part\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Value is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n required\n .value=\"${live(blobText || '')}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part value\"\n placeholder=\"Part text value\"\n @change=\"${this.handleBlobValueChange}\"\n />\n </div>\n `\n }\n\n protected renderMimeField(index: number, value?: string): TemplateResult {\n return html`\n <div class=\"input-wrapper mime-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(value || '')}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part mime - optional value\"\n placeholder=\"Part mime (optional)\"\n @change=\"${this.handleMimeChange}\"\n list=\"mime-list\"\n />\n </div>\n `\n }\n\n protected renderParam(part: IMultipartBody, index: number): TemplateResult {\n if (typeof part.isFile === 'boolean') {\n // When this is still set it means that when setting the model something went wrong.\n // This also mean we can't recover from here so the only option is to remove the part.\n return this.renderIncompatiblePart(index)\n }\n normalizePartValue(part)\n const value = part.value as ISafePayload\n if (value.type === 'string') {\n return this.renderTextPart(part, index)\n }\n if (value.type === 'blob') {\n return this.renderBlobPart(part, index)\n }\n return this.renderFilePart(part, index)\n }\n\n protected renderTextPart(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderValueField(part, index)} ${this.renderMimeField(index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderBlobPart(part: IMultipartBody, index: number): TemplateResult {\n const item = part.value as ISafePayload\n const meta = item && (item.meta as IBlobMeta | undefined)\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderBlobValueField(part, index)} ${this.renderMimeField(index, meta && meta.mime)}\n ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderFilePart(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderFileField(part, index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderFileField(part: IMultipartBody, index: number): TemplateResult {\n const { readOnly } = this\n const item = part.value as ISafePayload\n const meta = item && (item.meta as IFileMeta | undefined)\n return html`\n <div class=\"input-wrapper file-input\">\n <ui-text-button @click=\"${this.handleFilePick}\" ?disabled=\"${readOnly}\" class=\"choose-button\"\n >Choose file</ui-text-button\n >\n <input type=\"file\" hidden data-index=\"${index}\" @change=\"${this.handleFilePartValue}\" />\n ${meta ? html`<span class=\"file-info\">${meta.name} (${meta.mime}), ${item.data.length} bytes</span>` : ''}\n </div>\n `\n }\n\n protected renderIncompatiblePart(index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n <p class=\"incompatible-part\">This part cannot be rendered. Please, remove this part.</p>\n ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderMimeList(): TemplateResult {\n return html`\n <datalist id=\"mime-list\">${mimeSuggestions.map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BodyMultipartEditor.js","sourceRoot":"","sources":["../../../../src/elements/http/BodyMultipartEditor.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, TemplateResult, nothing } from 'lit'\nimport { property } from 'lit/decorators.js'\nimport {\n type IBlobMeta,\n type IFileMeta,\n type IMultipartBody,\n type ISafePayload,\n PayloadSerializer,\n} from '@api-client/core/lib/transformers/PayloadSerializer.js'\nimport { queryRequestHeaders } from '@api-client/core/lib/definitions/HttpDefinitions.js'\nimport { live } from 'lit/directives/live.js'\nimport SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport Input from '../../md/input/Input.js'\nimport ApiElement from '../ApiElement.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/icon-button/ui-icon-button.js'\nimport '../../md/button/ui-button.js'\n\nlet hasSupport: boolean\ntry {\n const fd = new FormData()\n fd.append('test', new Blob(['.'], { type: 'image/jpg' }), 'test.jpg')\n hasSupport = 'entries' in fd\n} catch {\n hasSupport = false\n}\nexport const hasFormDataSupport = hasSupport\n\nfunction normalizePartValue(item: IMultipartBody): void {\n if (typeof item.value === 'string') {\n const oldValue = item.value\n item.value = {\n type: 'string',\n data: oldValue,\n }\n }\n}\n\nlet mimeSuggestions: string[] = []\n\n;((): void => {\n const items = queryRequestHeaders('content-type')\n const item = items.find((i) => i.key.toLowerCase() === 'content-type')\n if (!item || !item.autocomplete) {\n return\n }\n mimeSuggestions = item.autocomplete\n})()\n\n/**\n * Multipart payload editor.\n *\n * The element internally uses a generated from a FormData model. It is API Client's `IMultipartBody` array.\n * The FormData is generated on-fly when accessing the `value` getter. It also regenerates the model when\n * the `value` property change. Because of that you should never set the value on the editor but only manipulate the\n * `model` property.\n */\nexport default class BodyMultipartEditor 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 * When set all controls are disabled in the form\n * @attribute\n */\n @property({ type: Boolean, reflect: true }) accessor disabled = false\n\n /**\n * @attribute\n */\n @property({ type: Boolean }) accessor allowFormInfo: boolean | undefined\n\n /**\n * The value of this form.\n * When reading the `value` it generated the FormData from the model values.\n * When setting this property is regenerates the `model` to the value in the FormData.\n * When setting to anything other than the `FormData` it sets the `model` to an empty array.\n */\n get value(): FormData {\n return this.toFormData()\n }\n\n @property({ type: Object })\n set value(value: FormData) {\n this.updateModel(value)\n }\n\n /**\n * The model used by the external application\n */\n protected modelInternal: IMultipartBody[] = []\n\n /**\n * Computed data model for the view.\n * Don't set both `value` and `model`. If the model exists then\n * set only it or otherwise the `value` setter override the model.\n */\n get model(): IMultipartBody[] {\n return this.modelInternal\n }\n\n @property({ type: Array })\n set model(value: IMultipartBody[] | undefined) {\n const old = this.modelInternal\n if (old === value) {\n return\n }\n if (Array.isArray(value)) {\n this.modelInternal = value\n } else {\n this.modelInternal = []\n }\n this.requestUpdate('model', old)\n if (value) {\n this.upgradeLegacy(value)\n }\n }\n\n /**\n * @returns The FormData from the current model.\n */\n toFormData(): FormData {\n const validItems = this.modelInternal.filter((item) => {\n const { name, value } = item\n if (!name) {\n return false\n }\n if (typeof value === 'string') {\n return true\n }\n if (value.type === 'string') {\n return true\n }\n if (value.type === 'blob' || value.type === 'file') {\n return !!value.data && !!value.data.length\n }\n return true\n })\n return PayloadSerializer.deserializeFormData(validItems)\n }\n\n /**\n * Makes an attempt to upgrade old definitions of the `IMultipartBody`.\n * If this fails, the form will show error instead of part field.\n * @param value The current model.\n */\n protected async upgradeLegacy(value: IMultipartBody[]): Promise<void> {\n const ps: Promise<void>[] = []\n for (const part of value) {\n if (part.isFile === undefined) {\n continue\n }\n if (part.isFile === false && !part.type) {\n delete part.isFile\n const oldValue = (part.value || '') as string\n part.value = {\n type: 'string',\n data: oldValue,\n }\n } else if (part.isFile === false && part.type) {\n ps.push(this.upgradeLegacyBlob(part))\n } else {\n ps.push(this.upgradeLegacyFile(part))\n }\n }\n if (ps.length) {\n await Promise.allSettled(ps)\n this.requestUpdate()\n this.notifyChange()\n }\n }\n\n protected async upgradeLegacyBlob(part: IMultipartBody): Promise<void> {\n if (typeof part.value !== 'string') {\n return\n }\n const readBlob = PayloadSerializer.deserializeBlobLegacy(part.value as string)\n if (!readBlob) {\n return\n }\n const contents = await readBlob.text()\n part.blobText = contents || ''\n const blob = new Blob([part.blobText as string], { type: part.type })\n part.value = await PayloadSerializer.stringifyBlob(blob)\n delete part.type\n delete part.isFile\n }\n\n protected async upgradeLegacyFile(part: IMultipartBody): Promise<void> {\n if (typeof part.value !== 'string') {\n return\n }\n const readBlob = PayloadSerializer.deserializeBlobLegacy(part.value as string)\n if (!readBlob) {\n return\n }\n const fname = part.fileName || 'unknown-file.txt'\n const file = new File([readBlob], fname, { type: readBlob.type })\n part.value = await PayloadSerializer.stringifyFile(file)\n delete part.fileName\n delete part.isFile\n }\n\n protected async updateModel(value?: unknown): Promise<void> {\n if (!value || !(value instanceof FormData)) {\n this.model = []\n setTimeout(() => {\n this.dispatchEvent(new CustomEvent('modelupdate', { bubbles: false, composed: false }))\n })\n return\n }\n const payload = await PayloadSerializer.stringifyFormData(value as FormData)\n this.model = payload.data as IMultipartBody[]\n this.dispatchEvent(new CustomEvent('modelupdate', { bubbles: false, composed: false }))\n }\n\n /**\n * Adds an instance of a file to the form data\n */\n async addFile(file: File): Promise<void> {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const entry = await PayloadSerializer.serializeFormDataEntry(file.name, file)\n model.push(entry)\n this.notifyChange()\n this.requestUpdate()\n }\n\n /**\n * Removes all parameters.\n */\n clear(): void {\n this.model = []\n this.notifyChange()\n }\n\n /**\n * Adds an empty text part item to the form.\n */\n addEmptyText(): void {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const obj: IMultipartBody = {\n name: '',\n value: {\n data: '',\n type: 'string',\n },\n enabled: true,\n }\n model.push(obj)\n this.requestUpdate()\n }\n\n /**\n * Adds an empty file part item to the form.\n */\n addEmptyFile(): void {\n if (this.readOnly || this.disabled) {\n return\n }\n const { model } = this\n const obj: IMultipartBody = {\n name: '',\n value: {\n data: [],\n type: 'file',\n },\n enabled: true,\n }\n model.push(obj)\n this.requestUpdate()\n }\n\n /**\n * Removes a parameter from an index.\n */\n removeProperty(index: number): void {\n const items = this.modelInternal\n items.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles enabled state of a parameter.\n */\n toggleProperty(index: number, enabled: boolean): void {\n const items = this.modelInternal\n const item = items[index]\n item.enabled = enabled\n this.notifyChange()\n }\n\n updatePartName(index: number, value: string): void {\n const item = this.modelInternal[index]\n const old = item.name\n if (old === value) {\n return\n }\n item.name = value\n this.notifyChange()\n }\n\n updateTextPartValue(index: number, value: string): void {\n const item = this.modelInternal[index]\n normalizePartValue(item)\n const typedValue = item.value as ISafePayload\n if (typedValue.data === value) {\n return\n }\n typedValue.data = value\n this.notifyChange()\n }\n\n async updateBlobPartValue(index: number, value: string): Promise<void> {\n const item = this.modelInternal[index]\n normalizePartValue(item)\n const typedValue = item.value as ISafePayload\n if (typedValue.data === value) {\n return\n }\n item.blobText = value\n const blob = new Blob([value], { type: typedValue.meta?.mime || 'text/plain' })\n item.value = await PayloadSerializer.stringifyBlob(blob)\n this.notifyChange()\n }\n\n async updateFileValue(index: number, file: File): Promise<void> {\n const item = this.modelInternal[index]\n if (!item || !file) {\n return\n }\n item.value = await PayloadSerializer.stringifyFile(file)\n this.notifyChange()\n this.requestUpdate()\n }\n\n async changePartMime(index: number, value: string): Promise<void> {\n const item = this.modelInternal[index]\n if (!item) {\n return\n }\n normalizePartValue(item)\n // change the type from text to blob, if needed\n const typedValue = item.value as ISafePayload\n\n if (typedValue.type === 'string') {\n item.blobText = typedValue.data as string\n } else if (!item.blobText && typedValue.data) {\n const restored = PayloadSerializer.deserializeBlob(typedValue) as Blob\n item.blobText = await restored.text()\n }\n const blob = new Blob([item.blobText || ''], { type: value })\n item.value = await PayloadSerializer.stringifyBlob(blob)\n this.notifyChange()\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.removeProperty(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.toggleProperty(index, !!node.checked)\n }\n\n protected handleFilePick(e: Event): void {\n const node = e.target as HTMLElement\n const input = node.nextElementSibling as HTMLInputElement\n input.click()\n }\n\n protected handleFilePartValue(e: Event): void {\n e.stopPropagation()\n const input = e.target as HTMLInputElement\n if (!input.files) {\n return\n }\n const index = Number(input.dataset.index)\n this.updateFileValue(index, input.files[0])\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.updatePartName(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.updateTextPartValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleBlobValueChange(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.updateBlobPartValue(index, input.value)\n input.checkValidity()\n }\n\n protected handleMimeChange(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.changePartMime(index, input.value)\n input.checkValidity()\n }\n\n override render(): TemplateResult {\n if (!hasSupport) {\n return this.renderNoSupport()\n }\n return html` ${this.renderList()} ${this.renderMimeList()} ${this.renderFormInfo()} `\n }\n\n protected renderFormInfo(): TemplateResult | typeof nothing {\n if (!this.allowFormInfo) {\n return nothing\n }\n return html`\n <p class=\"form-info\">\n Note that the content-type header will be added when the request is sent. We encourage you to use variables to\n insert sensitive data.\n </p>\n `\n }\n\n protected renderList(): TemplateResult {\n const items = this.model\n if (!Array.isArray(items) || !items.length) {\n return this.renderEmptyMessage()\n }\n return this.renderParams(items)\n }\n\n protected renderNoSupport(): TemplateResult {\n return html` <div class=\"empty-message\">Your browser does not support this editor</div> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No parameters added</div> `\n }\n\n protected renderParams(items: IMultipartBody[]): TemplateResult {\n return html` ${items.map((item, index) => this.renderParam(item, index))} `\n }\n\n protected renderToggleButton(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!part.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this parameter\"\n data-index=\"${index}\"\n ?disabled=\"${this.readOnly}\"\n ></ui-switch>\n `\n }\n\n protected renderDeleteParameter(index: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this parameter\"\n data-index=\"${index}\"\n @click=\"${this.handleRemove}\"\n ?disabled=\"${this.readOnly}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderNameField(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"input-wrapper name-input\">\n <div class=\"error\" role=\"presentation\">Name is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"name\"\n required\n autocomplete=\"off\"\n .value=\"${live(part.name)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Part name value\"\n placeholder=\"Part name\"\n @change=\"${this.handleNameChange}\"\n />\n </div>\n `\n }\n\n protected renderValueField(part: IMultipartBody, index: number): TemplateResult {\n const value = ((part.value as ISafePayload).data as string) || ''\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Value is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n required\n .value=\"${live(value)}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part value\"\n placeholder=\"Part text value\"\n @change=\"${this.handleValueChange}\"\n />\n </div>\n `\n }\n\n protected renderBlobValueField(part: IMultipartBody, index: number): TemplateResult {\n const { blobText } = part\n return html`\n <div class=\"input-wrapper value-input\">\n <div class=\"error\" role=\"presentation\">Value is required</div>\n <div class=\"state\"></div>\n <input\n type=\"text\"\n name=\"value\"\n required\n .value=\"${live(blobText || '')}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part value\"\n placeholder=\"Part text value\"\n @change=\"${this.handleBlobValueChange}\"\n />\n </div>\n `\n }\n\n protected renderMimeField(index: number, value?: string): TemplateResult {\n return html`\n <div class=\"input-wrapper mime-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(value || '')}\"\n data-index=\"${index}\"\n ?readOnly=\"${this.readOnly}\"\n aria-label=\"Text part mime - optional value\"\n placeholder=\"Part mime (optional)\"\n @change=\"${this.handleMimeChange}\"\n list=\"mime-list\"\n />\n </div>\n `\n }\n\n protected renderParam(part: IMultipartBody, index: number): TemplateResult {\n if (typeof part.isFile === 'boolean') {\n // When this is still set it means that when setting the model something went wrong.\n // This also mean we can't recover from here so the only option is to remove the part.\n return this.renderIncompatiblePart(index)\n }\n normalizePartValue(part)\n const value = part.value as ISafePayload\n if (value.type === 'string') {\n return this.renderTextPart(part, index)\n }\n if (value.type === 'blob') {\n return this.renderBlobPart(part, index)\n }\n return this.renderFilePart(part, index)\n }\n\n protected renderTextPart(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderValueField(part, index)} ${this.renderMimeField(index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderBlobPart(part: IMultipartBody, index: number): TemplateResult {\n const item = part.value as ISafePayload\n const meta = item && (item.meta as IBlobMeta | undefined)\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderBlobValueField(part, index)} ${this.renderMimeField(index, meta && meta.mime)}\n ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderFilePart(part: IMultipartBody, index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n ${this.renderToggleButton(part, index)} ${this.renderNameField(part, index)}\n ${this.renderFileField(part, index)} ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderFileField(part: IMultipartBody, index: number): TemplateResult {\n const { readOnly } = this\n const item = part.value as ISafePayload\n const meta = item && (item.meta as IFileMeta | undefined)\n return html`\n <div class=\"input-wrapper file-input\">\n <ui-button color=\"text\" @click=\"${this.handleFilePick}\" ?disabled=\"${readOnly}\" class=\"choose-button\"\n >Choose file</ui-button\n >\n <input type=\"file\" hidden data-index=\"${index}\" @change=\"${this.handleFilePartValue}\" />\n ${meta ? html`<span class=\"file-info\">${meta.name} (${meta.mime}), ${item.data.length} bytes</span>` : ''}\n </div>\n `\n }\n\n protected renderIncompatiblePart(index: number): TemplateResult {\n return html`\n <div class=\"param-row\">\n <p class=\"incompatible-part\">This part cannot be rendered. Please, remove this part.</p>\n ${this.renderDeleteParameter(index)}\n </div>\n `\n }\n\n protected renderMimeList(): TemplateResult {\n return html`\n <datalist id=\"mime-list\">${mimeSuggestions.map((i) => html`<option value=\"${i}\"></option>`)}</datalist>\n `\n }\n}\n"]}
|
|
@@ -5,9 +5,7 @@ import type { ISegmentedButtonSelectionDetail } from '../../md/segmented-button/
|
|
|
5
5
|
import '../../md/segmented-button/ui-segmented-button.js';
|
|
6
6
|
import '../../md/segmented-button/ui-segmented-button-set.js';
|
|
7
7
|
import '../../md/text-field/ui-filled-text-field.js';
|
|
8
|
-
import '../../md/button/ui-
|
|
9
|
-
import '../../md/button/ui-filled-button.js';
|
|
10
|
-
import '../../md/button/ui-filled-tonal-button.js';
|
|
8
|
+
import '../../md/button/ui-button.js';
|
|
11
9
|
import '../../md/icons/ui-icon.js';
|
|
12
10
|
import '../../md/progress/ui-progress.js';
|
|
13
11
|
interface CertificateInfo {
|