@api-client/ui 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.aiexclude +3 -0
- package/.vscode/settings.json +6 -3
- package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/ApiKeyAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/ApiKeyAuthorization.js +7 -7
- package/build/src/elements/authorization/ui/ApiKeyAuthorization.js.map +1 -1
- package/build/src/elements/authorization/ui/Authorization.styles.js +4 -4
- package/build/src/elements/authorization/ui/Authorization.styles.js.map +1 -1
- package/build/src/elements/authorization/ui/BasicAuthorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/BasicAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/BasicAuthorization.js +5 -5
- package/build/src/elements/authorization/ui/BasicAuthorization.js.map +1 -1
- package/build/src/elements/authorization/ui/BearerAuthorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/BearerAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/BearerAuthorization.js +3 -3
- package/build/src/elements/authorization/ui/BearerAuthorization.js.map +1 -1
- package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts +1 -1
- package/build/src/elements/authorization/ui/NtlmAuthorization.d.ts.map +1 -1
- package/build/src/elements/authorization/ui/NtlmAuthorization.js +7 -7
- package/build/src/elements/authorization/ui/NtlmAuthorization.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 +32 -27
- package/build/src/elements/authorization/ui/OAuth2Authorization.js.map +1 -1
- package/build/src/elements/authorization/ui/OidcAuthorization.js +4 -4
- package/build/src/elements/authorization/ui/OidcAuthorization.js.map +1 -1
- package/build/src/elements/autocomplete/autocomplete-input.d.ts +10 -0
- package/build/src/elements/autocomplete/autocomplete-input.d.ts.map +1 -0
- package/build/src/{md/text-field/ui-text-field.js → elements/autocomplete/autocomplete-input.js} +9 -9
- package/build/src/elements/autocomplete/autocomplete-input.js.map +1 -0
- package/build/src/elements/autocomplete/internals/autocomplete.d.ts +257 -0
- package/build/src/elements/autocomplete/internals/autocomplete.d.ts.map +1 -0
- package/build/src/elements/autocomplete/internals/autocomplete.js +619 -0
- package/build/src/elements/autocomplete/internals/autocomplete.js.map +1 -0
- package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts +3 -0
- package/build/src/elements/autocomplete/internals/autocomplete.styles.d.ts.map +1 -0
- package/build/src/elements/autocomplete/internals/autocomplete.styles.js +25 -0
- package/build/src/elements/autocomplete/internals/autocomplete.styles.js.map +1 -0
- package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts +1 -1
- package/build/src/elements/dialog/internals/DeleteCookieAction.element.d.ts.map +1 -1
- package/build/src/elements/dialog/internals/DeleteCookieAction.element.js +5 -5
- package/build/src/elements/dialog/internals/DeleteCookieAction.element.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 +3 -3
- package/build/src/elements/dialog/internals/Rename.js.map +1 -1
- package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts +1 -1
- package/build/src/elements/dialog/internals/SetCookieAction.element.d.ts.map +1 -1
- package/build/src/elements/dialog/internals/SetCookieAction.element.js +9 -9
- package/build/src/elements/dialog/internals/SetCookieAction.element.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 +3 -3
- package/build/src/elements/environment/EnvironmentEditor.js.map +1 -1
- package/build/src/elements/environment/EnvironmentEditor.styles.js +1 -1
- package/build/src/elements/environment/EnvironmentEditor.styles.js.map +1 -1
- package/build/src/elements/environment/ServerEditor.d.ts +1 -1
- package/build/src/elements/environment/ServerEditor.d.ts.map +1 -1
- package/build/src/elements/environment/ServerEditor.js +7 -7
- package/build/src/elements/environment/ServerEditor.js.map +1 -1
- package/build/src/elements/environment/ServerEditor.styles.js +1 -1
- package/build/src/elements/environment/ServerEditor.styles.js.map +1 -1
- package/build/src/elements/http/BodyMultipartEditor.d.ts.map +1 -1
- package/build/src/elements/http/BodyMultipartEditor.js +4 -0
- package/build/src/elements/http/BodyMultipartEditor.js.map +1 -1
- package/build/src/elements/http/CertificateAdd.element.d.ts +1 -1
- package/build/src/elements/http/CertificateAdd.element.d.ts.map +1 -1
- package/build/src/elements/http/CertificateAdd.element.js +8 -8
- package/build/src/elements/http/CertificateAdd.element.js.map +1 -1
- package/build/src/elements/http/CertificateAdd.styles.js +1 -1
- package/build/src/elements/http/CertificateAdd.styles.js.map +1 -1
- package/build/src/elements/http/HttpAssertions.element.js +3 -3
- package/build/src/elements/http/HttpAssertions.element.js.map +1 -1
- package/build/src/elements/http/HttpFlows.element.js +3 -3
- package/build/src/elements/http/HttpFlows.element.js.map +1 -1
- package/build/src/elements/http/HttpFlowsUi.d.ts +1 -1
- package/build/src/elements/http/HttpFlowsUi.d.ts.map +1 -1
- package/build/src/elements/http/HttpFlowsUi.js +31 -31
- package/build/src/elements/http/HttpFlowsUi.js.map +1 -1
- package/build/src/elements/http/RequestConfigElement.d.ts +1 -1
- package/build/src/elements/http/RequestConfigElement.d.ts.map +1 -1
- package/build/src/elements/http/RequestConfigElement.js +7 -7
- package/build/src/elements/http/RequestConfigElement.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 +1 -1
- package/build/src/elements/http/UrlParamsForm.js.map +1 -1
- package/build/src/elements/project/ProjectRunner.d.ts +1 -1
- package/build/src/elements/project/ProjectRunner.d.ts.map +1 -1
- package/build/src/elements/project/ProjectRunner.js +5 -5
- package/build/src/elements/project/ProjectRunner.js.map +1 -1
- package/build/src/md/input/Input.d.ts +0 -15
- package/build/src/md/input/Input.d.ts.map +1 -1
- package/build/src/md/input/Input.js +7 -42
- package/build/src/md/input/Input.js.map +1 -1
- package/build/src/md/list/internals/List.d.ts +7 -2
- package/build/src/md/list/internals/List.d.ts.map +1 -1
- package/build/src/md/list/internals/List.js +6 -0
- package/build/src/md/list/internals/List.js.map +1 -1
- package/build/src/md/list/internals/ListItem.styles.d.ts.map +1 -1
- package/build/src/md/list/internals/ListItem.styles.js +8 -0
- package/build/src/md/list/internals/ListItem.styles.js.map +1 -1
- package/build/src/md/listbox/internals/Listbox.d.ts +2 -2
- package/build/src/md/listbox/internals/Listbox.d.ts.map +1 -1
- package/build/src/md/listbox/internals/Listbox.js.map +1 -1
- package/build/src/md/text-area/internals/TextAreaElement.d.ts.map +1 -1
- package/build/src/md/text-area/internals/TextAreaElement.js +0 -5
- package/build/src/md/text-area/internals/TextAreaElement.js.map +1 -1
- package/build/src/md/text-area/ui-text-area.d.ts.map +1 -1
- package/build/src/md/text-area/ui-text-area.js +3 -2
- package/build/src/md/text-area/ui-text-area.js.map +1 -1
- package/build/src/md/text-field/internals/{TextFieldElement.d.ts → TextField.d.ts} +2 -2
- package/build/src/md/text-field/internals/TextField.d.ts.map +1 -0
- package/build/src/md/text-field/internals/{TextFieldElement.js → TextField.js} +2 -5
- package/build/src/md/text-field/internals/TextField.js.map +1 -0
- package/build/src/md/text-field/internals/{TextField.styles.d.ts → common.styles.d.ts} +1 -1
- package/build/src/md/text-field/internals/common.styles.d.ts.map +1 -0
- package/build/src/md/text-field/internals/{TextField.styles.js → common.styles.js} +8 -94
- package/build/src/md/text-field/internals/common.styles.js.map +1 -0
- package/build/src/md/text-field/internals/filled.styles.d.ts +3 -0
- package/build/src/md/text-field/internals/filled.styles.d.ts.map +1 -0
- package/build/src/md/text-field/internals/filled.styles.js +107 -0
- package/build/src/md/text-field/internals/filled.styles.js.map +1 -0
- package/build/src/md/text-field/internals/outlined.styles.d.ts +3 -0
- package/build/src/md/text-field/internals/outlined.styles.d.ts.map +1 -0
- package/build/src/md/text-field/internals/outlined.styles.js +43 -0
- package/build/src/md/text-field/internals/outlined.styles.js.map +1 -0
- package/build/src/md/text-field/ui-filled-text-field.d.ts +11 -0
- package/build/src/md/text-field/ui-filled-text-field.d.ts.map +1 -0
- package/build/src/md/text-field/ui-filled-text-field.js +28 -0
- package/build/src/md/text-field/ui-filled-text-field.js.map +1 -0
- package/build/src/md/text-field/ui-outlined-text-field.d.ts +11 -0
- package/build/src/md/text-field/ui-outlined-text-field.d.ts.map +1 -0
- package/build/src/md/text-field/ui-outlined-text-field.js +28 -0
- package/build/src/md/text-field/ui-outlined-text-field.js.map +1 -0
- package/build/src/types/input.d.ts +1 -1
- package/build/src/types/input.d.ts.map +1 -1
- package/build/src/types/input.js.map +1 -1
- package/demo/elements/authorization/oauth-authorize.html +4 -4
- package/demo/elements/authorization/oauth-authorize.ts +1 -1
- package/demo/elements/autocomplete/index.html +64 -0
- package/demo/elements/autocomplete/index.ts +171 -0
- package/demo/elements/http/body-editor.ts +3 -3
- package/demo/elements/index.html +15 -11
- package/demo/md/index.html +1 -1
- package/demo/md/inputs/input.html +10 -15
- package/demo/md/inputs/input.ts +389 -101
- package/demo/page.css +4 -0
- package/package.json +1 -1
- package/src/elements/authorization/ui/ApiKeyAuthorization.ts +7 -7
- package/src/elements/authorization/ui/Authorization.styles.ts +4 -4
- package/src/elements/authorization/ui/BasicAuthorization.ts +5 -5
- package/src/elements/authorization/ui/BearerAuthorization.ts +3 -3
- package/src/elements/authorization/ui/NtlmAuthorization.ts +7 -7
- package/src/elements/authorization/ui/OAuth2Authorization.ts +32 -27
- package/src/elements/authorization/ui/OidcAuthorization.ts +4 -4
- package/src/elements/autocomplete/autocomplete-input.ts +14 -0
- package/src/elements/autocomplete/internals/autocomplete.styles.ts +25 -0
- package/src/elements/autocomplete/internals/autocomplete.ts +599 -0
- package/src/elements/dialog/internals/DeleteCookieAction.element.ts +5 -5
- package/src/elements/dialog/internals/Rename.ts +3 -3
- package/src/elements/dialog/internals/SetCookieAction.element.ts +9 -9
- package/src/elements/environment/EnvironmentEditor.styles.ts +1 -1
- package/src/elements/environment/EnvironmentEditor.ts +3 -3
- package/src/elements/environment/ServerEditor.styles.ts +1 -1
- package/src/elements/environment/ServerEditor.ts +7 -7
- package/src/elements/http/BodyMultipartEditor.ts +4 -0
- package/src/elements/http/CertificateAdd.element.ts +8 -8
- package/src/elements/http/CertificateAdd.styles.ts +1 -1
- package/src/elements/http/HttpAssertions.element.ts +3 -3
- package/src/elements/http/HttpFlows.element.ts +3 -3
- package/src/elements/http/HttpFlowsUi.ts +31 -31
- package/src/elements/http/RequestConfigElement.ts +7 -7
- package/src/elements/http/UrlParamsForm.ts +1 -1
- package/src/elements/project/ProjectRunner.ts +5 -5
- package/src/md/input/Input.ts +6 -21
- package/src/md/list/internals/List.ts +14 -2
- package/src/md/list/internals/ListItem.styles.ts +8 -0
- package/src/md/listbox/internals/Listbox.ts +2 -2
- package/src/md/text-area/internals/TextAreaElement.ts +0 -5
- package/src/md/text-area/ui-text-area.ts +3 -2
- package/src/md/text-field/internals/{TextFieldElement.ts → TextField.ts} +1 -4
- package/src/md/text-field/internals/{TextField.styles.ts → common.styles.ts} +7 -93
- package/src/md/text-field/internals/filled.styles.ts +107 -0
- package/src/md/text-field/internals/outlined.styles.ts +43 -0
- package/src/md/text-field/ui-filled-text-field.ts +16 -0
- package/src/md/text-field/ui-outlined-text-field.ts +16 -0
- package/src/types/input.ts +0 -1
- package/test/elements/authorization/basic-method.test.ts +3 -3
- package/test/elements/authorization/bearer-method.test.ts +2 -2
- package/test/elements/authorization/ntlm-method.test.ts +4 -4
- package/test/elements/autocomplete/autocomplete-input.spec.ts +643 -0
- package/test/elements/http/BodyMultipartEditorElement.test.ts +15 -16
- package/test/elements/http/CertificateAdd.test.ts +11 -11
- package/test/elements/http/HttpAssertions.test.ts +9 -9
- package/test/elements/http/HttpFlows.test.ts +4 -4
- package/build/src/md/text-field/internals/TextField.styles.d.ts.map +0 -1
- package/build/src/md/text-field/internals/TextField.styles.js.map +0 -1
- package/build/src/md/text-field/internals/TextFieldElement.d.ts.map +0 -1
- package/build/src/md/text-field/internals/TextFieldElement.js.map +0 -1
- package/build/src/md/text-field/ui-text-field.d.ts +0 -11
- package/build/src/md/text-field/ui-text-field.d.ts.map +0 -1
- package/build/src/md/text-field/ui-text-field.js.map +0 -1
- package/src/md/text-field/ui-text-field.ts +0 -15
|
@@ -12,7 +12,7 @@ import { getFileName } from '../../lib/files/Utils.js';
|
|
|
12
12
|
import { SnackNotifications } from '../../md/notification/SnackNotifications.js';
|
|
13
13
|
import '../../md/segmented-button/ui-segmented-button.js';
|
|
14
14
|
import '../../md/segmented-button/ui-segmented-button-set.js';
|
|
15
|
-
import '../../md/text-field/ui-text-field.js';
|
|
15
|
+
import '../../md/text-field/ui-filled-text-field.js';
|
|
16
16
|
import '../../md/button/ui-text-button.js';
|
|
17
17
|
import '../../md/button/ui-filled-button.js';
|
|
18
18
|
import '../../md/button/ui-filled-tonal-button.js';
|
|
@@ -305,7 +305,7 @@ let CertificateAdd = (() => {
|
|
|
305
305
|
this.handleCancel();
|
|
306
306
|
}
|
|
307
307
|
reportValidity() {
|
|
308
|
-
const inputs = Array.from(this.shadowRoot.querySelectorAll('ui-text-field'));
|
|
308
|
+
const inputs = Array.from(this.shadowRoot.querySelectorAll('ui-filled-text-field'));
|
|
309
309
|
let invalid = false;
|
|
310
310
|
inputs.forEach((input) => {
|
|
311
311
|
const inputResult = input.reportValidity();
|
|
@@ -359,14 +359,14 @@ let CertificateAdd = (() => {
|
|
|
359
359
|
const { certificateName = '' } = this;
|
|
360
360
|
return html `
|
|
361
361
|
<div class="form-input">
|
|
362
|
-
<ui-text-field
|
|
362
|
+
<ui-filled-text-field
|
|
363
363
|
required
|
|
364
364
|
name="name"
|
|
365
365
|
.value="${live(certificateName)}"
|
|
366
366
|
label="Certificate name"
|
|
367
367
|
@change="${this.handleNameChange}"
|
|
368
368
|
invalidText="The name is required"
|
|
369
|
-
></ui-text-field>
|
|
369
|
+
></ui-filled-text-field>
|
|
370
370
|
</div>
|
|
371
371
|
`;
|
|
372
372
|
}
|
|
@@ -401,14 +401,14 @@ let CertificateAdd = (() => {
|
|
|
401
401
|
}
|
|
402
402
|
return html `
|
|
403
403
|
<div class="form-input">
|
|
404
|
-
<ui-text-field
|
|
404
|
+
<ui-filled-text-field
|
|
405
405
|
name="certificatePassword"
|
|
406
406
|
type="password"
|
|
407
407
|
.value="${live(certificatePassword)}"
|
|
408
408
|
label="Certificate password"
|
|
409
409
|
@change="${this.handleCertificatePasswordChange}"
|
|
410
410
|
supportingText="Optional password for the certificate"
|
|
411
|
-
></ui-text-field>
|
|
411
|
+
></ui-filled-text-field>
|
|
412
412
|
</div>
|
|
413
413
|
`;
|
|
414
414
|
}
|
|
@@ -445,14 +445,14 @@ let CertificateAdd = (() => {
|
|
|
445
445
|
const { keyPassword = '' } = this;
|
|
446
446
|
return html `
|
|
447
447
|
<div class="form-input">
|
|
448
|
-
<ui-text-field
|
|
448
|
+
<ui-filled-text-field
|
|
449
449
|
name="keyPassword"
|
|
450
450
|
type="password"
|
|
451
451
|
.value="${live(keyPassword)}"
|
|
452
452
|
label="Key password"
|
|
453
453
|
@change="${this.handleKeyPasswordChange}"
|
|
454
454
|
supportingText="Optional password for the key"
|
|
455
|
-
></ui-text-field>
|
|
455
|
+
></ui-filled-text-field>
|
|
456
456
|
</div>
|
|
457
457
|
`;
|
|
458
458
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateAdd.element.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport { Certificate, type CertificateType } from '@api-client/core/models/ClientCertificate.js'\nimport { CertificateFile } from '@api-client/core/models/CertificateFile.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport styles from './CertificateAdd.styles.js'\nimport { getFileName } from '../../lib/files/Utils.js'\nimport type { ISegmentedButtonSelectionDetail } from '../../md/segmented-button/internals/SegmentedButtonsSet.js'\nimport type SegmentedButton from '../../md/segmented-button/internals/SegmentedButton.js'\nimport type Input from '../../md/input/Input.js'\n// import type { IFileFilter, IOpenFileDialogInit } from '../../bindings/base/FileBindings.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/segmented-button/ui-segmented-button.js'\nimport '../../md/segmented-button/ui-segmented-button-set.js'\nimport '../../md/text-field/ui-text-field.js'\nimport '../../md/button/ui-text-button.js'\nimport '../../md/button/ui-filled-button.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/progress/ui-progress.js'\n\ninterface CertificateInfo {\n fileName: string\n contents: ArrayBuffer\n}\n\n/**\n * An element that renders a certificate import UI.\n *\n * Notes for implementation:\n * - `p12` is a single file, may have a passphrase\n * - `pem` is 2 files: the certificate and the key\n * - `pem` may have a `passphrase` on the key but not on the certificate.\n */\nexport default class CertificateAdd extends ApiElement {\n static override get styles(): CSSResult[] {\n return styles\n }\n\n /**\n * The type of the certificate to import.\n * @attribute\n */\n @property({ type: String }) accessor importType: CertificateType = 'pem'\n\n /**\n * The parent folder where to insert the imported certificate.\n * @attribute\n */\n @property({ type: String }) accessor folder: string | undefined\n\n /**\n * The current workspace for the file.\n * @attribute\n */\n @property({ type: String }) accessor space: string | undefined\n\n /**\n * When an IO operation is in progress.\n */\n @state() accessor working: boolean | undefined\n\n @state() accessor certificateFile: CertificateInfo | undefined\n\n @state() accessor keyFile: CertificateInfo | undefined\n\n /**\n * The password for the certificate\n */\n certificatePassword?: string\n\n /**\n * The password for the key.\n */\n keyPassword?: string\n\n /**\n * The user entered certificate name.\n */\n protected certificateName?: string\n\n get hasKeyImport(): boolean {\n return this.importType === 'pem'\n }\n\n get hasCertificatePasswordInput(): boolean {\n return this.importType === 'p12'\n }\n\n protected handleViewSelection(e: CustomEvent<ISegmentedButtonSelectionDetail>): void {\n if (!e.detail.selected) {\n return\n }\n const button = e.detail.button as SegmentedButton\n const type = button.dataset.value as CertificateType | undefined\n if (type) {\n this.importType = type\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n this.certificateName = input.value\n }\n\n protected handleCertificatePasswordChange(e: Event): void {\n const input = e.target as Input\n this.certificatePassword = input.value\n }\n\n protected handleKeyPasswordChange(e: Event): void {\n const input = e.target as Input\n this.keyPassword = input.value\n }\n\n protected handleSelectCertificate(): void {\n this.selectCertificateFLow()\n }\n\n protected handleSelectKey(): void {\n this.selectKeyFLow()\n }\n\n async selectCertificateFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a certificate file',\n // filters: [\n // {\n // description: 'Certificate files',\n // accept: {},\n // },\n // ],\n // }\n // const filters = options.filters as IFileFilter[]\n // if (this.importType === 'p12') {\n // filters[0].accept = {\n // 'application/x-pkcs12': ['.p12', '.pfx'],\n // }\n // } else {\n // filters[0].accept = {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // }\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.certificateFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n async selectKeyFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a key file',\n // filters: [\n // {\n // description: 'Certificate key files',\n // accept: {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // },\n // },\n // ],\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.keyFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n protected isValidDropTarget(dt: DataTransfer): boolean {\n const types = Array.from(dt.types)\n return types.includes('Files')\n }\n\n protected handleFileDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'copy'\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDragLeave(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'none'\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n }\n\n protected handleFileDragOver(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDrop(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n const file = dt.files[0]\n if (!file) {\n return\n }\n const { kind } = node.dataset\n if (!kind) {\n return\n }\n this.processDroppedFile(file, kind as 'certificate' | 'key')\n }\n\n async processDroppedFile(file: File, kind: 'certificate' | 'key'): Promise<void> {\n this.working = true\n const buff = await file.arrayBuffer()\n const fileName = getFileName(file.name)\n if (kind === 'certificate') {\n this.certificateFile = {\n fileName,\n contents: buff,\n }\n } else if (kind === 'key') {\n this.keyFile = {\n fileName,\n contents: buff,\n }\n }\n this.working = false\n }\n\n protected handleCancel(): void {\n this.dispatchEvent(new Event('close'))\n }\n\n protected handleImport(): void {\n this.submit()\n }\n\n async submit(): Promise<void> {\n const invalid = this.reportValidity()\n if (invalid) {\n return\n }\n const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, space, folder } = this\n if (!space) {\n throw new Error(`The workspace key is not set on the certificate import element.`)\n }\n const cert =\n this.importType === 'p12'\n ? Certificate.fromP12(certificateFile?.contents as ArrayBuffer, certificateName as string, certificatePassword)\n : Certificate.fromPem(\n certificateFile?.contents as ArrayBuffer,\n keyFile?.contents as ArrayBuffer,\n certificateName as string,\n keyPassword\n )\n const file = CertificateFile.fromCertificate(cert, space)\n await Events.Store.File.create(file.toJSON(), cert.toJSON(), { parent: folder }, this)\n this.handleCancel()\n }\n\n reportValidity(): boolean {\n const inputs = Array.from((this.shadowRoot as ShadowRoot).querySelectorAll('ui-text-field'))\n let invalid = false\n inputs.forEach((input) => {\n const inputResult = input.reportValidity()\n if (!inputResult) {\n invalid = true\n }\n })\n\n if (!invalid) {\n if (!this.certificateFile) {\n invalid = true\n SnackNotifications.notify(`Certificate file is required.`)\n }\n if (!invalid && this.hasKeyImport && !this.keyFile) {\n invalid = true\n SnackNotifications.notify(`The key file is required.`)\n }\n }\n return invalid\n }\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"form\">\n ${this.renderProgress()} ${this.renderViewToggle()} ${this.renderNameInput()} ${this.renderCertificateFile()}\n ${this.renderCertificatePasswordInput()} ${this.renderKeyFile()} ${this.renderKeyPasswordInput()}\n ${this.renderImportButton()}\n </div>\n `\n }\n\n protected renderViewToggle(): TemplateResult {\n const { importType } = this\n return html`\n <div class=\"view-toggle\">\n <ui-segmented-button-set @select=\"${this.handleViewSelection}\">\n <ui-segmented-button\n .selected=\"${importType === 'pem'}\"\n title=\"Import a certificate in PEM format\"\n data-value=\"pem\"\n >PEM</ui-segmented-button\n >\n <ui-segmented-button\n .selected=\"${importType === 'p12'}\"\n title=\"Import a bundled PFX or PKCS12 encoded private key and certificate\"\n data-value=\"p12\"\n >PFX or PKCS12</ui-segmented-button\n >\n </ui-segmented-button-set>\n </div>\n `\n }\n\n protected renderNameInput(): TemplateResult {\n const { certificateName = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-text-field\n required\n name=\"name\"\n .value=\"${live(certificateName)}\"\n label=\"Certificate name\"\n @change=\"${this.handleNameChange}\"\n invalidText=\"The name is required\"\n ></ui-text-field>\n </div>\n `\n }\n\n protected renderCertificateFile(): TemplateResult {\n const { certificateFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"certificate\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a certificate file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectCertificate}\" class=\"select-button\"\n >Select certificate file</ui-filled-tonal-button\n >\n ${certificateFile\n ? html`<span class=\"cert-info body-medium\">${certificateFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Certificate is not\n selected</span\n >`}\n </div>\n `\n }\n\n protected renderCertificatePasswordInput(): TemplateResult | typeof nothing {\n const { certificatePassword = '' } = this\n if (!this.hasCertificatePasswordInput) {\n return nothing\n }\n return html`\n <div class=\"form-input\">\n <ui-text-field\n name=\"certificatePassword\"\n type=\"password\"\n .value=\"${live(certificatePassword)}\"\n label=\"Certificate password\"\n @change=\"${this.handleCertificatePasswordChange}\"\n supportingText=\"Optional password for the certificate\"\n ></ui-text-field>\n </div>\n `\n }\n\n protected renderKeyFile(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"key\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a key file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectKey}\" class=\"select-button\"\n >Select key file</ui-filled-tonal-button\n >\n ${keyFile\n ? html`<span class=\"cert-info body-medium\">${keyFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Key is not selected</span\n >`}\n </div>\n `\n }\n\n protected renderKeyPasswordInput(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyPassword = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-text-field\n name=\"keyPassword\"\n type=\"password\"\n .value=\"${live(keyPassword)}\"\n label=\"Key password\"\n @change=\"${this.handleKeyPasswordChange}\"\n supportingText=\"Optional password for the key\"\n ></ui-text-field>\n </div>\n `\n }\n\n protected renderImportButton(): TemplateResult {\n return html`\n <div class=\"form-action\">\n <ui-filled-button @click=\"${this.handleImport}\">Import</ui-filled-button>\n <ui-text-button @click=\"${this.handleCancel}\">Cancel</ui-text-button>\n </div>\n `\n }\n\n protected renderProgress(): TemplateResult | typeof nothing {\n if (!this.working) {\n return nothing\n }\n return html`<ui-progress indeterminate class=\"working\"></ui-progress>`\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CertificateAdd.element.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { CSSResult, html, nothing, TemplateResult } from 'lit'\nimport { property, state } from 'lit/decorators.js'\nimport { live } from 'lit/directives/live.js'\nimport { Certificate, type CertificateType } from '@api-client/core/models/ClientCertificate.js'\nimport { CertificateFile } from '@api-client/core/models/CertificateFile.js'\nimport { Events } from '../../events/Events.js'\nimport ApiElement from '../ApiElement.js'\nimport styles from './CertificateAdd.styles.js'\nimport { getFileName } from '../../lib/files/Utils.js'\nimport type { ISegmentedButtonSelectionDetail } from '../../md/segmented-button/internals/SegmentedButtonsSet.js'\nimport type SegmentedButton from '../../md/segmented-button/internals/SegmentedButton.js'\nimport type Input from '../../md/input/Input.js'\n// import type { IFileFilter, IOpenFileDialogInit } from '../../bindings/base/FileBindings.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport '../../md/segmented-button/ui-segmented-button.js'\nimport '../../md/segmented-button/ui-segmented-button-set.js'\nimport '../../md/text-field/ui-filled-text-field.js'\nimport '../../md/button/ui-text-button.js'\nimport '../../md/button/ui-filled-button.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/icons/ui-icon.js'\nimport '../../md/progress/ui-progress.js'\n\ninterface CertificateInfo {\n fileName: string\n contents: ArrayBuffer\n}\n\n/**\n * An element that renders a certificate import UI.\n *\n * Notes for implementation:\n * - `p12` is a single file, may have a passphrase\n * - `pem` is 2 files: the certificate and the key\n * - `pem` may have a `passphrase` on the key but not on the certificate.\n */\nexport default class CertificateAdd extends ApiElement {\n static override get styles(): CSSResult[] {\n return styles\n }\n\n /**\n * The type of the certificate to import.\n * @attribute\n */\n @property({ type: String }) accessor importType: CertificateType = 'pem'\n\n /**\n * The parent folder where to insert the imported certificate.\n * @attribute\n */\n @property({ type: String }) accessor folder: string | undefined\n\n /**\n * The current workspace for the file.\n * @attribute\n */\n @property({ type: String }) accessor space: string | undefined\n\n /**\n * When an IO operation is in progress.\n */\n @state() accessor working: boolean | undefined\n\n @state() accessor certificateFile: CertificateInfo | undefined\n\n @state() accessor keyFile: CertificateInfo | undefined\n\n /**\n * The password for the certificate\n */\n certificatePassword?: string\n\n /**\n * The password for the key.\n */\n keyPassword?: string\n\n /**\n * The user entered certificate name.\n */\n protected certificateName?: string\n\n get hasKeyImport(): boolean {\n return this.importType === 'pem'\n }\n\n get hasCertificatePasswordInput(): boolean {\n return this.importType === 'p12'\n }\n\n protected handleViewSelection(e: CustomEvent<ISegmentedButtonSelectionDetail>): void {\n if (!e.detail.selected) {\n return\n }\n const button = e.detail.button as SegmentedButton\n const type = button.dataset.value as CertificateType | undefined\n if (type) {\n this.importType = type\n }\n }\n\n protected handleNameChange(e: Event): void {\n const input = e.target as Input\n this.certificateName = input.value\n }\n\n protected handleCertificatePasswordChange(e: Event): void {\n const input = e.target as Input\n this.certificatePassword = input.value\n }\n\n protected handleKeyPasswordChange(e: Event): void {\n const input = e.target as Input\n this.keyPassword = input.value\n }\n\n protected handleSelectCertificate(): void {\n this.selectCertificateFLow()\n }\n\n protected handleSelectKey(): void {\n this.selectKeyFLow()\n }\n\n async selectCertificateFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a certificate file',\n // filters: [\n // {\n // description: 'Certificate files',\n // accept: {},\n // },\n // ],\n // }\n // const filters = options.filters as IFileFilter[]\n // if (this.importType === 'p12') {\n // filters[0].accept = {\n // 'application/x-pkcs12': ['.p12', '.pfx'],\n // }\n // } else {\n // filters[0].accept = {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // }\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.certificateFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n async selectKeyFLow(): Promise<void> {\n throw new Error(`Not yet implemented`)\n // this.working = true\n // const options: IOpenFileDialogInit = {\n // multiple: false,\n // title: 'Select a key file',\n // filters: [\n // {\n // description: 'Certificate key files',\n // accept: {\n // 'application/x-pem-file': ['.pem', '.crt', '.cer', '.key'],\n // },\n // },\n // ],\n // }\n // const pickResult = await Events.Filesystem.requestOpenFile(options, this)\n // if (!pickResult || pickResult.canceled) {\n // this.working = false\n // return\n // }\n // const [path] = pickResult.filePath as string[]\n // const readResult = await Events.Filesystem.readFile(path, { returnType: 'buffer', dispose: true }, this)\n // if (!readResult) {\n // this.working = false\n // return\n // }\n\n // const fileName = getFileName.getFileName(path)\n // this.keyFile = {\n // fileName,\n // contents: readResult as ArrayBuffer,\n // }\n // this.working = false\n }\n\n protected isValidDropTarget(dt: DataTransfer): boolean {\n const types = Array.from(dt.types)\n return types.includes('Files')\n }\n\n protected handleFileDragEnter(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'copy'\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDragLeave(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n dt.dropEffect = 'none'\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n }\n\n protected handleFileDragOver(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n if (!this.isValidDropTarget(dt)) {\n return\n }\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.add('dragover')\n }\n\n protected handleFileDrop(e: DragEvent): void {\n const dt = e.dataTransfer as DataTransfer\n e.preventDefault()\n const node = e.currentTarget as HTMLElement\n node.classList.remove('dragover')\n const file = dt.files[0]\n if (!file) {\n return\n }\n const { kind } = node.dataset\n if (!kind) {\n return\n }\n this.processDroppedFile(file, kind as 'certificate' | 'key')\n }\n\n async processDroppedFile(file: File, kind: 'certificate' | 'key'): Promise<void> {\n this.working = true\n const buff = await file.arrayBuffer()\n const fileName = getFileName(file.name)\n if (kind === 'certificate') {\n this.certificateFile = {\n fileName,\n contents: buff,\n }\n } else if (kind === 'key') {\n this.keyFile = {\n fileName,\n contents: buff,\n }\n }\n this.working = false\n }\n\n protected handleCancel(): void {\n this.dispatchEvent(new Event('close'))\n }\n\n protected handleImport(): void {\n this.submit()\n }\n\n async submit(): Promise<void> {\n const invalid = this.reportValidity()\n if (invalid) {\n return\n }\n const { certificateFile, certificateName, certificatePassword, keyFile, keyPassword, space, folder } = this\n if (!space) {\n throw new Error(`The workspace key is not set on the certificate import element.`)\n }\n const cert =\n this.importType === 'p12'\n ? Certificate.fromP12(certificateFile?.contents as ArrayBuffer, certificateName as string, certificatePassword)\n : Certificate.fromPem(\n certificateFile?.contents as ArrayBuffer,\n keyFile?.contents as ArrayBuffer,\n certificateName as string,\n keyPassword\n )\n const file = CertificateFile.fromCertificate(cert, space)\n await Events.Store.File.create(file.toJSON(), cert.toJSON(), { parent: folder }, this)\n this.handleCancel()\n }\n\n reportValidity(): boolean {\n const inputs = Array.from((this.shadowRoot as ShadowRoot).querySelectorAll('ui-filled-text-field'))\n let invalid = false\n inputs.forEach((input) => {\n const inputResult = input.reportValidity()\n if (!inputResult) {\n invalid = true\n }\n })\n\n if (!invalid) {\n if (!this.certificateFile) {\n invalid = true\n SnackNotifications.notify(`Certificate file is required.`)\n }\n if (!invalid && this.hasKeyImport && !this.keyFile) {\n invalid = true\n SnackNotifications.notify(`The key file is required.`)\n }\n }\n return invalid\n }\n\n protected override render(): TemplateResult {\n return html`\n <div class=\"form\">\n ${this.renderProgress()} ${this.renderViewToggle()} ${this.renderNameInput()} ${this.renderCertificateFile()}\n ${this.renderCertificatePasswordInput()} ${this.renderKeyFile()} ${this.renderKeyPasswordInput()}\n ${this.renderImportButton()}\n </div>\n `\n }\n\n protected renderViewToggle(): TemplateResult {\n const { importType } = this\n return html`\n <div class=\"view-toggle\">\n <ui-segmented-button-set @select=\"${this.handleViewSelection}\">\n <ui-segmented-button\n .selected=\"${importType === 'pem'}\"\n title=\"Import a certificate in PEM format\"\n data-value=\"pem\"\n >PEM</ui-segmented-button\n >\n <ui-segmented-button\n .selected=\"${importType === 'p12'}\"\n title=\"Import a bundled PFX or PKCS12 encoded private key and certificate\"\n data-value=\"p12\"\n >PFX or PKCS12</ui-segmented-button\n >\n </ui-segmented-button-set>\n </div>\n `\n }\n\n protected renderNameInput(): TemplateResult {\n const { certificateName = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n required\n name=\"name\"\n .value=\"${live(certificateName)}\"\n label=\"Certificate name\"\n @change=\"${this.handleNameChange}\"\n invalidText=\"The name is required\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderCertificateFile(): TemplateResult {\n const { certificateFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"certificate\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a certificate file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectCertificate}\" class=\"select-button\"\n >Select certificate file</ui-filled-tonal-button\n >\n ${certificateFile\n ? html`<span class=\"cert-info body-medium\">${certificateFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Certificate is not\n selected</span\n >`}\n </div>\n `\n }\n\n protected renderCertificatePasswordInput(): TemplateResult | typeof nothing {\n const { certificatePassword = '' } = this\n if (!this.hasCertificatePasswordInput) {\n return nothing\n }\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"certificatePassword\"\n type=\"password\"\n .value=\"${live(certificatePassword)}\"\n label=\"Certificate password\"\n @change=\"${this.handleCertificatePasswordChange}\"\n supportingText=\"Optional password for the certificate\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderKeyFile(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyFile } = this\n return html`\n <div\n class=\"cert-file\"\n data-kind=\"key\"\n @dragenter=\"${this.handleFileDragEnter}\"\n @dragleave=\"${this.handleFileDragLeave}\"\n @dragover=\"${this.handleFileDragOver}\"\n @drop=\"${this.handleFileDrop}\"\n >\n <p class=\"body-medium\">Select or drop a key file here.</p>\n <ui-filled-tonal-button @click=\"${this.handleSelectKey}\" class=\"select-button\"\n >Select key file</ui-filled-tonal-button\n >\n ${keyFile\n ? html`<span class=\"cert-info body-medium\">${keyFile.fileName}</span>`\n : html`<span class=\"missing body-medium\"\n ><ui-icon role=\"presentation\" icon=\"warning\" class=\"missing-icon\"></ui-icon>Key is not selected</span\n >`}\n </div>\n `\n }\n\n protected renderKeyPasswordInput(): TemplateResult | typeof nothing {\n if (!this.hasKeyImport) {\n return nothing\n }\n const { keyPassword = '' } = this\n return html`\n <div class=\"form-input\">\n <ui-filled-text-field\n name=\"keyPassword\"\n type=\"password\"\n .value=\"${live(keyPassword)}\"\n label=\"Key password\"\n @change=\"${this.handleKeyPasswordChange}\"\n supportingText=\"Optional password for the key\"\n ></ui-filled-text-field>\n </div>\n `\n }\n\n protected renderImportButton(): TemplateResult {\n return html`\n <div class=\"form-action\">\n <ui-filled-button @click=\"${this.handleImport}\">Import</ui-filled-button>\n <ui-text-button @click=\"${this.handleCancel}\">Cancel</ui-text-button>\n </div>\n `\n }\n\n protected renderProgress(): TemplateResult | typeof nothing {\n if (!this.working) {\n return nothing\n }\n return html`<ui-progress indeterminate class=\"working\"></ui-progress>`\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CertificateAdd.styles.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,UAAU,MAAM,sCAAsC,CAAA;AAE7D,eAAe;IACb,UAAU;IACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDF;CACF,CAAA","sourcesContent":["import { css } from 'lit'\nimport typography from '../../styles/m3/typography.module.js'\n\nexport default [\n typography,\n css`\n :host {\n display: block;\n }\n\n .form {\n position: relative;\n }\n\n .working {\n position: absolute;\n top: 1px;\n width: 100%;\n }\n\n .view-toggle {\n margin-bottom: 20px;\n padding-top: 20px;\n }\n\n .form-input {\n margin: 12px 0;\n }\n\n .cert-file {\n margin: 20px 0;\n padding: 8px 4px;\n border: 1px transparent solid;\n }\n\n .cert-file.dragover {\n background-color: var(--md-sys-color-surface);\n border-color: var(--md-sys-color-outline-variant);\n border-radius: 8px;\n }\n\n .missing,\n .cert-info {\n display: inline-flex;\n margin-left: 12px;\n vertical-align: middle;\n }\n\n .missing-icon {\n fill: var(--md-sys-color-error);\n width: 16px;\n height: 16px;\n margin-right: 8px;\n }\n\n ui-text-field {\n min-width: 320px;\n }\n\n .form-action {\n margin-top: 20px;\n }\n `,\n]\n"]}
|
|
1
|
+
{"version":3,"file":"CertificateAdd.styles.js","sourceRoot":"","sources":["../../../../src/elements/http/CertificateAdd.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AACzB,OAAO,UAAU,MAAM,sCAAsC,CAAA;AAE7D,eAAe;IACb,UAAU;IACV,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyDF;CACF,CAAA","sourcesContent":["import { css } from 'lit'\nimport typography from '../../styles/m3/typography.module.js'\n\nexport default [\n typography,\n css`\n :host {\n display: block;\n }\n\n .form {\n position: relative;\n }\n\n .working {\n position: absolute;\n top: 1px;\n width: 100%;\n }\n\n .view-toggle {\n margin-bottom: 20px;\n padding-top: 20px;\n }\n\n .form-input {\n margin: 12px 0;\n }\n\n .cert-file {\n margin: 20px 0;\n padding: 8px 4px;\n border: 1px transparent solid;\n }\n\n .cert-file.dragover {\n background-color: var(--md-sys-color-surface);\n border-color: var(--md-sys-color-outline-variant);\n border-radius: 8px;\n }\n\n .missing,\n .cert-info {\n display: inline-flex;\n margin-left: 12px;\n vertical-align: middle;\n }\n\n .missing-icon {\n fill: var(--md-sys-color-error);\n width: 16px;\n height: 16px;\n margin-right: 8px;\n }\n\n ui-filled-text-field {\n min-width: 320px;\n }\n\n .form-action {\n margin-top: 20px;\n }\n `,\n]\n"]}
|
|
@@ -125,7 +125,7 @@ let HttpAssertions = (() => {
|
|
|
125
125
|
if (!dialog) {
|
|
126
126
|
return;
|
|
127
127
|
}
|
|
128
|
-
const input = dialog.querySelector('ui-text-field');
|
|
128
|
+
const input = dialog.querySelector('ui-filled-text-field');
|
|
129
129
|
input.value = description || '';
|
|
130
130
|
dialog.open = true;
|
|
131
131
|
dialog.dataset.assertionIndex = target.dataset.assertionIndex;
|
|
@@ -143,7 +143,7 @@ let HttpAssertions = (() => {
|
|
|
143
143
|
if (!assertion) {
|
|
144
144
|
return;
|
|
145
145
|
}
|
|
146
|
-
const input = dialog.querySelector('ui-text-field');
|
|
146
|
+
const input = dialog.querySelector('ui-filled-text-field');
|
|
147
147
|
assertion.description = input.value;
|
|
148
148
|
this.requestUpdate();
|
|
149
149
|
this.notifyChange();
|
|
@@ -254,7 +254,7 @@ let HttpAssertions = (() => {
|
|
|
254
254
|
<ui-icon slot="icon" icon="rename"></ui-icon>
|
|
255
255
|
<span slot="title">Rename assertion</span>
|
|
256
256
|
|
|
257
|
-
<ui-text-field name="rename" label="Assertion description" required class="input"></ui-text-field>
|
|
257
|
+
<ui-filled-text-field name="rename" label="Assertion description" required class="input"></ui-filled-text-field>
|
|
258
258
|
</ui-dialog>
|
|
259
259
|
`;
|
|
260
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpAssertions.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { property } from 'lit/decorators.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport type Input from '../../md/input/Input.js'\nimport UiDialog, { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../../md/divider/ui-divider.js'\n\n/**\n * @fires change When the model change\n */\nexport default class HttpAssertions extends HttpFlowsUi {\n /**\n * The list of assertions.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpAssertion[] = []\n\n /**\n * Adds a new empty assertion to the model.\n * Note, this function won't notify the parent element\n * about the change as empty rules can be discarded.\n */\n addAssertion(): void {\n const { model } = this\n model.push({\n enabled: true,\n steps: [],\n })\n this.requestUpdate()\n }\n\n /**\n * Removes an assertion at specified index.\n * @param index The index of the assertion in the `model` to remove.\n */\n removeAssertion(index: number): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles the enabled state of the assertion.\n * @param index The index of the assertion on the `model` array\n * @param value The `enabled` value.\n */\n toggleAssertion(index: number, value: boolean): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model[index].enabled = value\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected handleAdd(): void {\n this.addAssertion()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeAssertion(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleAssertion(index, !!node.checked)\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n return this.model[assertionOrActionIndex]\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const assertionIndex = Number(input.dataset.assertionIndex)\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {\n return undefined\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return undefined\n }\n return assertion.steps[stepIndex]\n }\n\n protected handleRenameAssertion(e: Event): void {\n const target = e.currentTarget as HTMLElement\n const assertionIndex = Number(target.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const { description } = assertion\n const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null\n if (!dialog) {\n return\n }\n const input = dialog.querySelector('ui-text-field') as Input\n input.value = description || ''\n dialog.open = true\n dialog.dataset.assertionIndex = target.dataset.assertionIndex\n }\n\n protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.currentTarget as UiDialog\n const assertionIndex = Number(dialog.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const input = dialog.querySelector('ui-text-field') as Input\n assertion.description = input.value\n this.requestUpdate()\n this.notifyChange()\n input.value = ''\n delete dialog.dataset.assertionIndex\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderAssertions()}\n </div>\n ${this.renderRenameAssertionDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-filled-tonal-button @click=\"${this.handleAdd}\" class=\"add-button\">Add</ui-filled-tonal-button>\n </div>\n `\n }\n\n protected renderAssertions(): TemplateResult {\n return html`\n <section aria-label=\"Assertion options\" class=\"options\">\n ${this.renderResponseDataSourceSuggestions()} ${this.renderTransformationSuggestions()}\n ${this.renderAssertionSuggestions()}\n </section>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { model } = this\n const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage()\n return html` <section aria-label=\"Assertions editor\" class=\"editor surface1\">${content}</section> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No assertions added</div> `\n }\n\n protected renderList(model: IHttpAssertion[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAssertion(item, index))} `\n }\n\n protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {\n return html`\n <div class=\"step-row\">\n ${this.renderAssertionDescription(item)}\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderSteps(item, index)}\n <div class=\"action-actions\">${this.renderRenameAssertion(index)} ${this.renderDeleteAssertion(index)}</div>\n </div>\n </div>\n `\n }\n\n protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {\n const { description } = item\n if (!description) {\n return nothing\n }\n return html` <div class=\"assertion-description label-medium\">${description}</div> `\n }\n\n protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this assertion\"\n data-index=\"${assertionIndex}\"\n class=\"toggle-button\"\n ></ui-switch>\n `\n }\n\n protected renderRenameAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Rename this assertion\"\n title=\"Rename this assertion\"\n data-assertion-index=\"${assertionIndex}\"\n @click=\"${this.handleRenameAssertion}\"\n class=\"rename-button\"\n >\n <ui-icon icon=\"rename\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderDeleteAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this assertion\"\n title=\"Delete this assertion\"\n data-index=\"${assertionIndex}\"\n @click=\"${this.handleRemove}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderRenameAssertionDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n class=\"rename-dialog\"\n @close=\"${this.handleRenameDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Accept\"\n >\n <ui-icon slot=\"icon\" icon=\"rename\"></ui-icon>\n <span slot=\"title\">Rename assertion</span>\n\n <ui-text-field name=\"rename\" label=\"Assertion description\" required class=\"input\"></ui-text-field>\n </ui-dialog>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HttpAssertions.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpAssertions.element.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, TemplateResult } from 'lit'\nimport { type IHttpAssertion } from '@api-client/core/models/http-flows/HttpAssertion.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { property } from 'lit/decorators.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport type SwitchElement from '../../md/switch/internals/SwitchElement.js'\nimport type Input from '../../md/input/Input.js'\nimport UiDialog, { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport '../../md/button/ui-filled-tonal-button.js'\nimport '../../md/switch/ui-switch.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../../md/divider/ui-divider.js'\n\n/**\n * @fires change When the model change\n */\nexport default class HttpAssertions extends HttpFlowsUi {\n /**\n * The list of assertions.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpAssertion[] = []\n\n /**\n * Adds a new empty assertion to the model.\n * Note, this function won't notify the parent element\n * about the change as empty rules can be discarded.\n */\n addAssertion(): void {\n const { model } = this\n model.push({\n enabled: true,\n steps: [],\n })\n this.requestUpdate()\n }\n\n /**\n * Removes an assertion at specified index.\n * @param index The index of the assertion in the `model` to remove.\n */\n removeAssertion(index: number): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n }\n\n /**\n * Toggles the enabled state of the assertion.\n * @param index The index of the assertion on the `model` array\n * @param value The `enabled` value.\n */\n toggleAssertion(index: number, value: boolean): void {\n const { model } = this\n if (!model[index]) {\n throw new RangeError(`Invalid index: ${index}`)\n }\n model[index].enabled = value\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected handleAdd(): void {\n this.addAssertion()\n }\n\n protected handleRemove(e: Event): void {\n const node = e.currentTarget as HTMLElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.removeAssertion(index)\n }\n\n protected handleToggle(e: Event): void {\n const node = e.currentTarget as SwitchElement\n const index = Number(node.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n this.toggleAssertion(index, !!node.checked)\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n return this.model[assertionOrActionIndex]\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const assertionIndex = Number(input.dataset.assertionIndex)\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(assertionIndex) || Number.isNaN(stepIndex)) {\n return undefined\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return undefined\n }\n return assertion.steps[stepIndex]\n }\n\n protected handleRenameAssertion(e: Event): void {\n const target = e.currentTarget as HTMLElement\n const assertionIndex = Number(target.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const { description } = assertion\n const dialog = this.shadowRoot?.querySelector('.rename-dialog') as UiDialog | null\n if (!dialog) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n input.value = description || ''\n dialog.open = true\n dialog.dataset.assertionIndex = target.dataset.assertionIndex\n }\n\n protected handleRenameDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.currentTarget as UiDialog\n const assertionIndex = Number(dialog.dataset.assertionIndex)\n if (Number.isNaN(assertionIndex)) {\n return\n }\n const assertion = this.model[assertionIndex]\n if (!assertion) {\n return\n }\n const input = dialog.querySelector('ui-filled-text-field') as Input\n assertion.description = input.value\n this.requestUpdate()\n this.notifyChange()\n input.value = ''\n delete dialog.dataset.assertionIndex\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderAssertions()}\n </div>\n ${this.renderRenameAssertionDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html`\n <div class=\"editor-actions\">\n <ui-filled-tonal-button @click=\"${this.handleAdd}\" class=\"add-button\">Add</ui-filled-tonal-button>\n </div>\n `\n }\n\n protected renderAssertions(): TemplateResult {\n return html`\n <section aria-label=\"Assertion options\" class=\"options\">\n ${this.renderResponseDataSourceSuggestions()} ${this.renderTransformationSuggestions()}\n ${this.renderAssertionSuggestions()}\n </section>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { model } = this\n const content = Array.isArray(model) && !!model.length ? this.renderList(model) : this.renderEmptyMessage()\n return html` <section aria-label=\"Assertions editor\" class=\"editor surface1\">${content}</section> `\n }\n\n protected renderEmptyMessage(): TemplateResult {\n return html` <div class=\"empty-message\">No assertions added</div> `\n }\n\n protected renderList(model: IHttpAssertion[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAssertion(item, index))} `\n }\n\n protected renderAssertion(item: IHttpAssertion, index: number): TemplateResult {\n return html`\n <div class=\"step-row\">\n ${this.renderAssertionDescription(item)}\n <div class=\"param-row\">\n ${this.renderToggleButton(item, index)} ${this.renderSteps(item, index)}\n <div class=\"action-actions\">${this.renderRenameAssertion(index)} ${this.renderDeleteAssertion(index)}</div>\n </div>\n </div>\n `\n }\n\n protected renderAssertionDescription(item: IHttpAssertion): TemplateResult | typeof nothing {\n const { description } = item\n if (!description) {\n return nothing\n }\n return html` <div class=\"assertion-description label-medium\">${description}</div> `\n }\n\n protected renderToggleButton(item: IHttpAssertion, assertionIndex: number): TemplateResult {\n return html`\n <ui-switch\n .checked=\"${!!item.enabled}\"\n @change=\"${this.handleToggle}\"\n aria-label=\"Toggle this assertion\"\n data-index=\"${assertionIndex}\"\n class=\"toggle-button\"\n ></ui-switch>\n `\n }\n\n protected renderRenameAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Rename this assertion\"\n title=\"Rename this assertion\"\n data-assertion-index=\"${assertionIndex}\"\n @click=\"${this.handleRenameAssertion}\"\n class=\"rename-button\"\n >\n <ui-icon icon=\"rename\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderDeleteAssertion(assertionIndex: number): TemplateResult {\n return html`\n <ui-icon-button\n aria-label=\"Delete this assertion\"\n title=\"Delete this assertion\"\n data-index=\"${assertionIndex}\"\n @click=\"${this.handleRemove}\"\n class=\"delete-button\"\n >\n <ui-icon icon=\"deleteOutline\" role=\"presentation\"></ui-icon>\n </ui-icon-button>\n `\n }\n\n protected renderRenameAssertionDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n class=\"rename-dialog\"\n @close=\"${this.handleRenameDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Accept\"\n >\n <ui-icon slot=\"icon\" icon=\"rename\"></ui-icon>\n <span slot=\"title\">Rename assertion</span>\n\n <ui-filled-text-field name=\"rename\" label=\"Assertion description\" required class=\"input\"></ui-filled-text-field>\n </ui-dialog>\n `\n }\n}\n"]}
|
|
@@ -244,7 +244,7 @@ let HttpFlows = (() => {
|
|
|
244
244
|
return;
|
|
245
245
|
}
|
|
246
246
|
const dialog = e.target;
|
|
247
|
-
const input = dialog.querySelector('ui-text-field');
|
|
247
|
+
const input = dialog.querySelector('ui-filled-text-field');
|
|
248
248
|
if (!input) {
|
|
249
249
|
return;
|
|
250
250
|
}
|
|
@@ -528,13 +528,13 @@ let HttpFlows = (() => {
|
|
|
528
528
|
>
|
|
529
529
|
<span slot="title">New Flow</span>
|
|
530
530
|
|
|
531
|
-
<ui-text-field
|
|
531
|
+
<ui-filled-text-field
|
|
532
532
|
class="input"
|
|
533
533
|
label="Flow name"
|
|
534
534
|
name="name"
|
|
535
535
|
required
|
|
536
536
|
invalidText="Flow name is required"
|
|
537
|
-
></ui-text-field>
|
|
537
|
+
></ui-filled-text-field>
|
|
538
538
|
</ui-dialog>
|
|
539
539
|
`;
|
|
540
540
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpFlows.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlows.element.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IHttpAction, IHttpFlow } from '@api-client/core/models/http-flows/HttpFlows.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { html, nothing, PropertyValues, TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport type { UiDropdownListSelection } from '../../md/dropdown-list/internals/UiDropdownList.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport type Input from '../../md/input/Input.js'\nimport type UiDialog from '../../md/dialog/internals/Dialog.js'\nimport type { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/button/ui-outlined-button.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../dialog/rename-dialog.js'\n\ntype FlowTrigger = 'request' | 'response'\n\nexport default class HttpFlows extends HttpFlowsUi {\n /**\n * The list of HTTP flows.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpFlow[] = []\n\n /**\n * The setting that renders flows for the given trigger (request or response).\n */\n @property({ type: String }) accessor trigger: FlowTrigger = 'response'\n\n /**\n * The index of the currently selected flow. This is the index on the `model` property.\n * @attribute\n */\n @property({ type: Number }) accessor selectedFlow: number | undefined\n\n @query('#createFlowDialog') accessor flowAddDialog: UiDialog | null = null\n\n /**\n * The currently selected flow definition.\n *\n * If there's no selection it returns the first flow.\n */\n get currentFlow(): IHttpFlow | undefined {\n const { model = [], selectedFlow, trigger = 'response' } = this\n if (selectedFlow === undefined) {\n return undefined\n }\n const item = model[selectedFlow]\n if (!item || item.trigger !== trigger) {\n return undefined\n }\n return item\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.preSelectFlow()\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('trigger')) {\n this.selectedFlow = undefined\n this.preSelectFlow()\n }\n super.willUpdate(cp)\n }\n\n preSelectFlow(): void {\n const { model = [], trigger = 'response', selectedFlow } = this\n if (Number.isInteger(selectedFlow)) {\n return\n }\n const index = model.findIndex((i) => i.trigger === trigger)\n if (index >= 0) {\n this.selectedFlow = index\n }\n }\n\n addFlow(description?: string): void {\n const flow: IHttpFlow = {\n trigger: this.trigger,\n actions: [],\n }\n if (description) {\n flow.description = description\n }\n const len = this.model.push(flow)\n this.selectedFlow = len - 1\n this.notifyChange()\n this.requestUpdate()\n }\n\n removeFlow(index: number): void {\n const { model } = this\n if (index >= model.length || index < 0) {\n throw RangeError(`Invalid index: ${index}. Expected an index in range from 0 to ${model.length - 1}`)\n }\n const removed = model[index]\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n if (!model[index]) {\n this.selectedFlow = 0\n }\n SnackNotifications.notify(`Flow was deleted.`, {\n actionLabel: 'Redo',\n\n actionCallback: () => {\n model.splice(index, 0, removed)\n this.selectedFlow = index\n this.requestUpdate()\n this.notifyChange()\n },\n\n cancellable: true,\n })\n }\n\n removeFlowAction(actionIndex: number): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n currentFlow.actions.splice(actionIndex, 1)\n this.notifyChange()\n this.requestUpdate()\n }\n\n renameFlowAction(actionIndex: number): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const action = currentFlow.actions[actionIndex]\n if (!action) {\n return\n }\n const dialog = document.createElement('rename-dialog')\n dialog.name = action.description\n dialog.modal = true\n document.body.appendChild(dialog)\n dialog.open = true\n dialog.addEventListener('close', (ev: Event) => {\n document.parentElement?.removeChild(dialog)\n const event = ev as CustomEvent<UiDialogClosingReason>\n const { cancelled, value } = event.detail\n if (!cancelled && value) {\n action.description = value as string\n this.notifyChange()\n this.requestUpdate()\n }\n })\n }\n\n protected handleAdd(): void {\n const { flowAddDialog } = this\n if (!flowAddDialog) {\n return\n }\n flowAddDialog.open = true\n }\n\n protected handleTriggerSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { trigger } = target.dataset\n if (!trigger) {\n return\n }\n this.trigger = trigger as FlowTrigger\n }\n\n protected handleFlowSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { trigger = 'response', model = [] } = this\n const option = target.dataset.option as string | undefined\n if (option === 'create') {\n this.handleAdd()\n } else if (option === 'delete') {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const index = model.indexOf(currentFlow)\n if (index >= 0) {\n this.removeFlow(index)\n }\n } else if (option === 'select') {\n const index = Number(target.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n let current = -1\n for (let i = 0, len = model.length; i < len; i++) {\n const item = model[i]\n if (item.trigger !== trigger) {\n continue\n }\n current += 1\n if (current === index) {\n this.selectedFlow = i\n break\n }\n }\n }\n }\n\n protected handleFlowCreateDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.target as UiDialog\n const input = dialog.querySelector('ui-text-field')\n if (!input) {\n return\n }\n const { value } = input\n input.value = ''\n this.addFlow(value)\n }\n\n /**\n * On the editor element we only allow \"flow blocks\" items (conditions and actions).\n * Only one condition can be added so once a condition is set we do not allow to add another condition.\n */\n protected handleEditorDragOver(e: DragEvent): void {\n const { dataTransfer } = e\n if (e.defaultPrevented || !dataTransfer || !this.isValidDropTarget(dataTransfer)) {\n return\n }\n e.preventDefault()\n dataTransfer.dropEffect = 'copy'\n const target = e.currentTarget as HTMLElement\n target.classList.add('dragover')\n }\n\n protected handleEditorDragLeave(e: DragEvent): void {\n if (e.defaultPrevented || !this.isValidDropTarget(e.dataTransfer)) {\n return\n }\n const target = e.currentTarget as HTMLElement\n target.classList.remove('dragover')\n }\n\n protected handleEditorDrop(e: DragEvent): void {\n const { dataTransfer } = e\n if (!dataTransfer || e.defaultPrevented || !this.isValidDropTarget(dataTransfer)) {\n return\n }\n e.preventDefault()\n this.resetDragIndices()\n const group = dataTransfer.getData('flow/group')\n if (group !== 'flow-block') {\n SnackNotifications.notify('Only blocks from the \"Flow blocks\" group can be dropped here.', 2000)\n return\n }\n const kind = dataTransfer.getData('flow/kind')\n if (kind === 'Core#Condition') {\n this.setCondition()\n } else if (kind === 'Core#Action') {\n this.addAction()\n }\n }\n\n /**\n * Adds a condition to the current flow.\n * Note, when the condition already exists this does nothing.\n */\n setCondition(): void {\n const { currentFlow } = this\n if (!currentFlow) {\n SnackNotifications.notify('Select a flow first.', 2000)\n return\n }\n if (currentFlow.condition) {\n SnackNotifications.notify('This flow already have a condition.', 2000)\n return\n }\n currentFlow.condition = {\n steps: [],\n }\n this.requestUpdate()\n this.notifyChange()\n }\n\n addAction(): void {\n const { currentFlow } = this\n if (!currentFlow) {\n SnackNotifications.notify('Select a flow first.', 2000)\n return\n }\n if (!Array.isArray(currentFlow.actions)) {\n currentFlow.actions = []\n }\n currentFlow.actions.push({\n steps: [],\n })\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const { actionIndex: aci, assertionIndex: asi } = input.dataset\n const actionIndex = Number(aci || asi)\n const action = this.getStepsTarget(actionIndex)\n if (!action) {\n return undefined\n }\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(stepIndex)) {\n return undefined\n }\n return action.steps[stepIndex]\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n const { currentFlow } = this\n if (!currentFlow) {\n return undefined\n }\n if (assertionOrActionIndex === -1) {\n return currentFlow.condition\n }\n return currentFlow.actions[assertionOrActionIndex]\n }\n\n protected handleConditionOption(e: CustomEvent<UiDropdownListSelection>): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const { item } = e.detail\n const { option } = item.dataset\n if (option === 'delete') {\n delete currentFlow.condition\n this.notifyChange()\n this.requestUpdate()\n }\n }\n\n protected handleActionOption(e: CustomEvent<UiDropdownListSelection>): void {\n const list = e.target as HTMLElement\n const actionIndex = Number(list.dataset.actionIndex)\n if (Number.isNaN(actionIndex)) {\n return\n }\n const { item } = e.detail\n const { option } = item.dataset\n switch (option) {\n case 'delete':\n this.removeFlowAction(actionIndex)\n break\n case 'rename':\n this.renameFlowAction(actionIndex)\n break\n default:\n }\n }\n\n protected isConditionTarget(e: Event): boolean {\n const path = e.composedPath()\n return path.some((i) => {\n const element = i as Element\n return !!element.classList && element.classList.contains('condition-row')\n })\n }\n\n /**\n * We override this method tpo handle conditions which can only accept certain\n * blocks and have index of `-1`\n */\n protected override handleTargetDragOver(e: DragEvent): void {\n if (e.defaultPrevented) {\n return\n }\n const dt = e.dataTransfer as DataTransfer\n if (!this.isConditionTarget(e)) {\n if (dt.types.includes('flow/assertion')) {\n // we do not allow assertions in actions.\n e.preventDefault()\n return\n }\n super.handleTargetDragOver(e)\n return\n }\n if (dt.types.includes('flow/action')) {\n e.preventDefault()\n dt.dropEffect = 'none'\n return\n }\n super.handleTargetDragOver(e)\n }\n\n /**\n * Overrides the method to support conditions.\n */\n protected override handleDrop(e: DragEvent): void {\n if (e.defaultPrevented) {\n return\n }\n const dt = e.dataTransfer as DataTransfer\n if (!this.isConditionTarget(e)) {\n if (dt.types.includes('flow/assertion')) {\n // we do not allow assertions in actions.\n e.preventDefault()\n SnackNotifications.notify(`Assertions cannot be a part of a flow action.`, 3000)\n return\n }\n super.handleDrop(e)\n return\n }\n if (dt.types.includes('flow/action')) {\n e.preventDefault()\n SnackNotifications.notify(`Flow actions cannot be a part of a condition.`, 3000)\n return\n }\n super.handleDrop(e)\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderBuildingBlocks()}\n </div>\n ${this.renderCreateFlowDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html` <div class=\"editor-actions\">${this.renderTriggerSelector()} ${this.renderFlowSelector()}</div> `\n }\n\n protected renderTriggerSelector(): TemplateResult {\n const { trigger = 'response' } = this\n const label = trigger === 'request' ? 'Pre-request' : 'Post-request'\n return html`\n <ui-dropdown-list @select=\"${this.handleTriggerSelect}\" horizontalAlign=\"right\" closeOnOutsideClick>\n <ui-outlined-button class=\"new-button\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-outlined-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-trigger=\"request\" role=\"menuitem\" title=\"Select pre-request flows\"\n >Pre-request</ui-list-item\n >\n <ui-list-item data-trigger=\"response\" role=\"menuitem\" title=\"Select post-request flows\"\n >Post-request</ui-list-item\n >\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderFlowSelector(): TemplateResult {\n const { trigger = 'response', currentFlow, model } = this\n const label = currentFlow ? currentFlow.description || 'Unnamed flow' : 'Select a flow'\n const items = model.filter((i) => i.trigger === trigger)\n const hasItems = !!items.length\n return html`\n <ui-dropdown-list @select=\"${this.handleFlowSelect}\" horizontalAlign=\"right\" closeOnOutsideClick>\n <ui-outlined-button class=\"new-button\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-outlined-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${hasItems\n ? html`\n ${items.map(\n (item, index) =>\n html`<ui-list-item\n data-option=\"select\"\n data-index=\"${index}\"\n role=\"menuitem\"\n title=\"Select this flow\"\n >${item.description || `Flow # ${index}`}</ui-list-item\n >`\n )}\n <ui-divider></ui-divider>\n `\n : nothing}\n ${currentFlow\n ? html` <ui-list-item image=\"icon\" data-option=\"delete\" role=\"menuitem\" title=\"Deletes the current flow\">\n <ui-icon icon=\"deleteOutline\" slot=\"start\"></ui-icon>\n Delete\n </ui-list-item>`\n : nothing}\n <ui-list-item image=\"icon\" data-option=\"create\" role=\"menuitem\" title=\"Adds a new flow\">\n <ui-icon icon=\"add\" slot=\"start\"></ui-icon>\n Create\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderCreateFlowDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n id=\"createFlowDialog\"\n class=\"add-dialog\"\n @close=\"${this.handleFlowCreateDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Add\"\n >\n <span slot=\"title\">New Flow</span>\n\n <ui-text-field\n class=\"input\"\n label=\"Flow name\"\n name=\"name\"\n required\n invalidText=\"Flow name is required\"\n ></ui-text-field>\n </ui-dialog>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { currentFlow, model = [], trigger } = this\n const content: TemplateResult[] = []\n if (!currentFlow && !model.filter((i) => i.trigger === trigger).length) {\n content.push(this.renderEmptyFlowMessage())\n } else if (!currentFlow) {\n content.push(this.renderSelectFlowMessage())\n } else {\n const { condition, actions } = currentFlow\n if (!condition && (!actions || !actions.length)) {\n content.push(this.renderEmptyActionsMessage())\n } else {\n if (condition) {\n content.push(this.renderCondition(condition))\n }\n if (actions && actions.length) {\n content.push(this.renderList(currentFlow.actions))\n }\n }\n }\n return html`\n <section\n aria-label=\"Flows editor\"\n class=\"editor surface1\"\n @dragover=\"${this.handleEditorDragOver}\"\n @dragleave=\"${this.handleEditorDragLeave}\"\n @drop=\"${this.handleEditorDrop}\"\n >\n ${content}\n </section>\n `\n }\n\n protected renderEmptyFlowMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">Create a flow to get started.</div>\n <div class=\"empty-message\">\n <ui-outlined-button @click=\"${this.handleAdd}\" class=\"empty-button\">Create</ui-outlined-button>\n </div>\n `\n }\n\n protected renderSelectFlowMessage(): TemplateResult {\n return html` <div class=\"empty-message\">Select a flow to get started.</div> `\n }\n\n protected renderEmptyActionsMessage(): TemplateResult {\n return html` <div class=\"empty-message\">Drop a condition or an action here</div> `\n }\n\n protected renderCondition(condition: IHttpAction): TemplateResult {\n return html`\n <div class=\"step-row condition\">\n <div class=\"action-tab\">\n <span class=\"body-small\">Condition</span>\n ${this.renderConditionTabActions()}\n </div>\n <div class=\"param-row condition-row\">${this.renderSteps(condition, -1)}</div>\n </div>\n `\n }\n\n protected renderList(model: IHttpAction[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAction(item, index))} `\n }\n\n protected renderAction(item: IHttpAction, index: number): TemplateResult {\n const { description } = item\n const label = description || `Action ${index + 1}`\n return html`\n <div class=\"step-row action\">\n <div class=\"action-tab\">\n <span class=\"body-small\">${label}</span>\n ${this.renderStepTabActions(index)}\n </div>\n <div class=\"param-row action-row\">${this.renderSteps(item, index)}</div>\n </div>\n `\n }\n\n protected renderBuildingBlocks(): TemplateResult {\n const { currentFlow } = this\n return html`\n <section aria-label=\"Flow building block\" class=\"options\">\n ${this.renderFlowBlocksOptions(currentFlow)} ${this.renderDataSourceOptions(currentFlow)}\n ${this.renderTransformationOptions(currentFlow)} ${this.renderActions(currentFlow)}\n ${this.renderAssertionOptions(currentFlow)}\n </section>\n `\n }\n\n protected renderFlowBlocksOptions(currentFlow?: IHttpFlow): TemplateResult {\n const allDisabled = !currentFlow\n const conditionDisabled = allDisabled || (!!currentFlow && !!currentFlow.condition)\n return html`\n <details class=\"action-group\" open>\n <summary>Flow Blocks</summary>\n <div class=\"group-content\">\n ${this.renderBlockChip('Condition', 'flow-block', 'Core#Condition', {\n disabled: conditionDisabled,\n title: 'Adds a condition that is checked before the flow is executed. Only one condition per flow.',\n })}\n ${this.renderBlockChip('Action', 'flow-block', 'Core#Action', {\n disabled: allDisabled,\n title: 'Adds an action to this flow.',\n })}\n </div>\n </details>\n `\n }\n\n protected renderDataSourceOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n const { trigger = 'response' } = this\n if (trigger === 'request') {\n return this.renderRequestDataSourceSuggestions(allDisabled)\n }\n return this.renderResponseDataSourceSuggestions(allDisabled)\n }\n\n protected renderTransformationOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderTransformationSuggestions(allDisabled)\n }\n\n protected renderActions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderActionSuggestions(allDisabled)\n }\n\n protected renderAssertionOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderAssertionSuggestions(allDisabled)\n }\n\n protected renderConditionTabActions(): TemplateResult {\n return html`\n <ui-dropdown-list @select=\"${this.handleConditionOption}\" closeOnOutsideClick>\n <ui-icon-button class=\"condition-options-trigger\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"delete\" role=\"menuitem\">Remove</ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderStepTabActions(actionIndex: number): TemplateResult {\n return html`\n <ui-dropdown-list @select=\"${this.handleActionOption}\" closeOnOutsideClick data-action-index=\"${actionIndex}\">\n <ui-icon-button class=\"action-options-trigger\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"rename\" role=\"menuitem\">Rename</ui-list-item>\n <ui-divider></ui-divider>\n <ui-list-item data-option=\"delete\" role=\"menuitem\">Remove</ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HttpFlows.element.js","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlows.element.ts"],"names":[],"mappings":"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","sourcesContent":["import type { IHttpAction, IHttpFlow } from '@api-client/core/models/http-flows/HttpFlows.js'\nimport { type IHttpStep } from '@api-client/core/models/http-flows/HttpStep.js'\nimport { html, nothing, PropertyValues, TemplateResult } from 'lit'\nimport { property, query } from 'lit/decorators.js'\nimport type { UiDropdownListSelection } from '../../md/dropdown-list/internals/UiDropdownList.js'\nimport { SnackNotifications } from '../../md/notification/SnackNotifications.js'\nimport type Input from '../../md/input/Input.js'\nimport type UiDialog from '../../md/dialog/internals/Dialog.js'\nimport type { UiDialogClosingReason } from '../../md/dialog/internals/Dialog.js'\nimport { HttpFlowsUi, StepsTarget } from './HttpFlowsUi.js'\nimport '../../md/list/ui-list.js'\nimport '../../md/list/ui-list-item.js'\nimport '../../md/dropdown-list/ui-dropdown-list.js'\nimport '../../md/button/ui-outlined-button.js'\nimport '../../md/divider/ui-divider.js'\nimport '../../md/dialog/ui-dialog.js'\nimport '../dialog/rename-dialog.js'\n\ntype FlowTrigger = 'request' | 'response'\n\nexport default class HttpFlows extends HttpFlowsUi {\n /**\n * The list of HTTP flows.\n * This is a live list. All changes are propagated in the model.\n */\n @property({ type: Array }) accessor model: IHttpFlow[] = []\n\n /**\n * The setting that renders flows for the given trigger (request or response).\n */\n @property({ type: String }) accessor trigger: FlowTrigger = 'response'\n\n /**\n * The index of the currently selected flow. This is the index on the `model` property.\n * @attribute\n */\n @property({ type: Number }) accessor selectedFlow: number | undefined\n\n @query('#createFlowDialog') accessor flowAddDialog: UiDialog | null = null\n\n /**\n * The currently selected flow definition.\n *\n * If there's no selection it returns the first flow.\n */\n get currentFlow(): IHttpFlow | undefined {\n const { model = [], selectedFlow, trigger = 'response' } = this\n if (selectedFlow === undefined) {\n return undefined\n }\n const item = model[selectedFlow]\n if (!item || item.trigger !== trigger) {\n return undefined\n }\n return item\n }\n\n override connectedCallback(): void {\n super.connectedCallback()\n this.preSelectFlow()\n }\n\n protected override willUpdate(cp: PropertyValues<this>): void {\n if (cp.has('trigger')) {\n this.selectedFlow = undefined\n this.preSelectFlow()\n }\n super.willUpdate(cp)\n }\n\n preSelectFlow(): void {\n const { model = [], trigger = 'response', selectedFlow } = this\n if (Number.isInteger(selectedFlow)) {\n return\n }\n const index = model.findIndex((i) => i.trigger === trigger)\n if (index >= 0) {\n this.selectedFlow = index\n }\n }\n\n addFlow(description?: string): void {\n const flow: IHttpFlow = {\n trigger: this.trigger,\n actions: [],\n }\n if (description) {\n flow.description = description\n }\n const len = this.model.push(flow)\n this.selectedFlow = len - 1\n this.notifyChange()\n this.requestUpdate()\n }\n\n removeFlow(index: number): void {\n const { model } = this\n if (index >= model.length || index < 0) {\n throw RangeError(`Invalid index: ${index}. Expected an index in range from 0 to ${model.length - 1}`)\n }\n const removed = model[index]\n model.splice(index, 1)\n this.requestUpdate()\n this.notifyChange()\n if (!model[index]) {\n this.selectedFlow = 0\n }\n SnackNotifications.notify(`Flow was deleted.`, {\n actionLabel: 'Redo',\n\n actionCallback: () => {\n model.splice(index, 0, removed)\n this.selectedFlow = index\n this.requestUpdate()\n this.notifyChange()\n },\n\n cancellable: true,\n })\n }\n\n removeFlowAction(actionIndex: number): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n currentFlow.actions.splice(actionIndex, 1)\n this.notifyChange()\n this.requestUpdate()\n }\n\n renameFlowAction(actionIndex: number): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const action = currentFlow.actions[actionIndex]\n if (!action) {\n return\n }\n const dialog = document.createElement('rename-dialog')\n dialog.name = action.description\n dialog.modal = true\n document.body.appendChild(dialog)\n dialog.open = true\n dialog.addEventListener('close', (ev: Event) => {\n document.parentElement?.removeChild(dialog)\n const event = ev as CustomEvent<UiDialogClosingReason>\n const { cancelled, value } = event.detail\n if (!cancelled && value) {\n action.description = value as string\n this.notifyChange()\n this.requestUpdate()\n }\n })\n }\n\n protected handleAdd(): void {\n const { flowAddDialog } = this\n if (!flowAddDialog) {\n return\n }\n flowAddDialog.open = true\n }\n\n protected handleTriggerSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { trigger } = target.dataset\n if (!trigger) {\n return\n }\n this.trigger = trigger as FlowTrigger\n }\n\n protected handleFlowSelect(e: CustomEvent<UiDropdownListSelection>): void {\n const target = e.detail.item as HTMLElement | undefined\n if (!target) {\n return\n }\n const { trigger = 'response', model = [] } = this\n const option = target.dataset.option as string | undefined\n if (option === 'create') {\n this.handleAdd()\n } else if (option === 'delete') {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const index = model.indexOf(currentFlow)\n if (index >= 0) {\n this.removeFlow(index)\n }\n } else if (option === 'select') {\n const index = Number(target.dataset.index)\n if (Number.isNaN(index)) {\n return\n }\n let current = -1\n for (let i = 0, len = model.length; i < len; i++) {\n const item = model[i]\n if (item.trigger !== trigger) {\n continue\n }\n current += 1\n if (current === index) {\n this.selectedFlow = i\n break\n }\n }\n }\n }\n\n protected handleFlowCreateDialogResult(e: CustomEvent<UiDialogClosingReason>): void {\n if (e.detail.cancelled) {\n return\n }\n const dialog = e.target as UiDialog\n const input = dialog.querySelector('ui-filled-text-field')\n if (!input) {\n return\n }\n const { value } = input\n input.value = ''\n this.addFlow(value)\n }\n\n /**\n * On the editor element we only allow \"flow blocks\" items (conditions and actions).\n * Only one condition can be added so once a condition is set we do not allow to add another condition.\n */\n protected handleEditorDragOver(e: DragEvent): void {\n const { dataTransfer } = e\n if (e.defaultPrevented || !dataTransfer || !this.isValidDropTarget(dataTransfer)) {\n return\n }\n e.preventDefault()\n dataTransfer.dropEffect = 'copy'\n const target = e.currentTarget as HTMLElement\n target.classList.add('dragover')\n }\n\n protected handleEditorDragLeave(e: DragEvent): void {\n if (e.defaultPrevented || !this.isValidDropTarget(e.dataTransfer)) {\n return\n }\n const target = e.currentTarget as HTMLElement\n target.classList.remove('dragover')\n }\n\n protected handleEditorDrop(e: DragEvent): void {\n const { dataTransfer } = e\n if (!dataTransfer || e.defaultPrevented || !this.isValidDropTarget(dataTransfer)) {\n return\n }\n e.preventDefault()\n this.resetDragIndices()\n const group = dataTransfer.getData('flow/group')\n if (group !== 'flow-block') {\n SnackNotifications.notify('Only blocks from the \"Flow blocks\" group can be dropped here.', 2000)\n return\n }\n const kind = dataTransfer.getData('flow/kind')\n if (kind === 'Core#Condition') {\n this.setCondition()\n } else if (kind === 'Core#Action') {\n this.addAction()\n }\n }\n\n /**\n * Adds a condition to the current flow.\n * Note, when the condition already exists this does nothing.\n */\n setCondition(): void {\n const { currentFlow } = this\n if (!currentFlow) {\n SnackNotifications.notify('Select a flow first.', 2000)\n return\n }\n if (currentFlow.condition) {\n SnackNotifications.notify('This flow already have a condition.', 2000)\n return\n }\n currentFlow.condition = {\n steps: [],\n }\n this.requestUpdate()\n this.notifyChange()\n }\n\n addAction(): void {\n const { currentFlow } = this\n if (!currentFlow) {\n SnackNotifications.notify('Select a flow first.', 2000)\n return\n }\n if (!Array.isArray(currentFlow.actions)) {\n currentFlow.actions = []\n }\n currentFlow.actions.push({\n steps: [],\n })\n this.requestUpdate()\n this.notifyChange()\n }\n\n protected stepFromChangeEvent(e: Event): IHttpStep | undefined {\n const input = e.target as Input\n input.checkValidity()\n const { actionIndex: aci, assertionIndex: asi } = input.dataset\n const actionIndex = Number(aci || asi)\n const action = this.getStepsTarget(actionIndex)\n if (!action) {\n return undefined\n }\n const stepIndex = Number(input.dataset.stepIndex)\n if (Number.isNaN(stepIndex)) {\n return undefined\n }\n return action.steps[stepIndex]\n }\n\n protected getStepsTarget(assertionOrActionIndex: number): StepsTarget | undefined {\n if (Number.isNaN(assertionOrActionIndex)) {\n return undefined\n }\n const { currentFlow } = this\n if (!currentFlow) {\n return undefined\n }\n if (assertionOrActionIndex === -1) {\n return currentFlow.condition\n }\n return currentFlow.actions[assertionOrActionIndex]\n }\n\n protected handleConditionOption(e: CustomEvent<UiDropdownListSelection>): void {\n const { currentFlow } = this\n if (!currentFlow) {\n return\n }\n const { item } = e.detail\n const { option } = item.dataset\n if (option === 'delete') {\n delete currentFlow.condition\n this.notifyChange()\n this.requestUpdate()\n }\n }\n\n protected handleActionOption(e: CustomEvent<UiDropdownListSelection>): void {\n const list = e.target as HTMLElement\n const actionIndex = Number(list.dataset.actionIndex)\n if (Number.isNaN(actionIndex)) {\n return\n }\n const { item } = e.detail\n const { option } = item.dataset\n switch (option) {\n case 'delete':\n this.removeFlowAction(actionIndex)\n break\n case 'rename':\n this.renameFlowAction(actionIndex)\n break\n default:\n }\n }\n\n protected isConditionTarget(e: Event): boolean {\n const path = e.composedPath()\n return path.some((i) => {\n const element = i as Element\n return !!element.classList && element.classList.contains('condition-row')\n })\n }\n\n /**\n * We override this method tpo handle conditions which can only accept certain\n * blocks and have index of `-1`\n */\n protected override handleTargetDragOver(e: DragEvent): void {\n if (e.defaultPrevented) {\n return\n }\n const dt = e.dataTransfer as DataTransfer\n if (!this.isConditionTarget(e)) {\n if (dt.types.includes('flow/assertion')) {\n // we do not allow assertions in actions.\n e.preventDefault()\n return\n }\n super.handleTargetDragOver(e)\n return\n }\n if (dt.types.includes('flow/action')) {\n e.preventDefault()\n dt.dropEffect = 'none'\n return\n }\n super.handleTargetDragOver(e)\n }\n\n /**\n * Overrides the method to support conditions.\n */\n protected override handleDrop(e: DragEvent): void {\n if (e.defaultPrevented) {\n return\n }\n const dt = e.dataTransfer as DataTransfer\n if (!this.isConditionTarget(e)) {\n if (dt.types.includes('flow/assertion')) {\n // we do not allow assertions in actions.\n e.preventDefault()\n SnackNotifications.notify(`Assertions cannot be a part of a flow action.`, 3000)\n return\n }\n super.handleDrop(e)\n return\n }\n if (dt.types.includes('flow/action')) {\n e.preventDefault()\n SnackNotifications.notify(`Flow actions cannot be a part of a condition.`, 3000)\n return\n }\n super.handleDrop(e)\n }\n\n protected override render(): TemplateResult {\n return html`\n ${this.renderActionButtons()}\n <div class=\"container\">\n ${this.renderEditor()}\n <ui-divider vertical></ui-divider>\n ${this.renderBuildingBlocks()}\n </div>\n ${this.renderCreateFlowDialog()}\n `\n }\n\n protected renderActionButtons(): TemplateResult {\n return html` <div class=\"editor-actions\">${this.renderTriggerSelector()} ${this.renderFlowSelector()}</div> `\n }\n\n protected renderTriggerSelector(): TemplateResult {\n const { trigger = 'response' } = this\n const label = trigger === 'request' ? 'Pre-request' : 'Post-request'\n return html`\n <ui-dropdown-list @select=\"${this.handleTriggerSelect}\" horizontalAlign=\"right\" closeOnOutsideClick>\n <ui-outlined-button class=\"new-button\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-outlined-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-trigger=\"request\" role=\"menuitem\" title=\"Select pre-request flows\"\n >Pre-request</ui-list-item\n >\n <ui-list-item data-trigger=\"response\" role=\"menuitem\" title=\"Select post-request flows\"\n >Post-request</ui-list-item\n >\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderFlowSelector(): TemplateResult {\n const { trigger = 'response', currentFlow, model } = this\n const label = currentFlow ? currentFlow.description || 'Unnamed flow' : 'Select a flow'\n const items = model.filter((i) => i.trigger === trigger)\n const hasItems = !!items.length\n return html`\n <ui-dropdown-list @select=\"${this.handleFlowSelect}\" horizontalAlign=\"right\" closeOnOutsideClick>\n <ui-outlined-button class=\"new-button\">\n <ui-icon icon=\"arrowDropDown\" slot=\"icon\"></ui-icon>\n ${label}\n </ui-outlined-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n ${hasItems\n ? html`\n ${items.map(\n (item, index) =>\n html`<ui-list-item\n data-option=\"select\"\n data-index=\"${index}\"\n role=\"menuitem\"\n title=\"Select this flow\"\n >${item.description || `Flow # ${index}`}</ui-list-item\n >`\n )}\n <ui-divider></ui-divider>\n `\n : nothing}\n ${currentFlow\n ? html` <ui-list-item image=\"icon\" data-option=\"delete\" role=\"menuitem\" title=\"Deletes the current flow\">\n <ui-icon icon=\"deleteOutline\" slot=\"start\"></ui-icon>\n Delete\n </ui-list-item>`\n : nothing}\n <ui-list-item image=\"icon\" data-option=\"create\" role=\"menuitem\" title=\"Adds a new flow\">\n <ui-icon icon=\"add\" slot=\"start\"></ui-icon>\n Create\n </ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderCreateFlowDialog(): TemplateResult {\n return html`\n <ui-dialog\n modal\n id=\"createFlowDialog\"\n class=\"add-dialog\"\n @close=\"${this.handleFlowCreateDialogResult}\"\n dismissLabel=\"Cancel\"\n confirmLabel=\"Add\"\n >\n <span slot=\"title\">New Flow</span>\n\n <ui-filled-text-field\n class=\"input\"\n label=\"Flow name\"\n name=\"name\"\n required\n invalidText=\"Flow name is required\"\n ></ui-filled-text-field>\n </ui-dialog>\n `\n }\n\n protected renderEditor(): TemplateResult {\n const { currentFlow, model = [], trigger } = this\n const content: TemplateResult[] = []\n if (!currentFlow && !model.filter((i) => i.trigger === trigger).length) {\n content.push(this.renderEmptyFlowMessage())\n } else if (!currentFlow) {\n content.push(this.renderSelectFlowMessage())\n } else {\n const { condition, actions } = currentFlow\n if (!condition && (!actions || !actions.length)) {\n content.push(this.renderEmptyActionsMessage())\n } else {\n if (condition) {\n content.push(this.renderCondition(condition))\n }\n if (actions && actions.length) {\n content.push(this.renderList(currentFlow.actions))\n }\n }\n }\n return html`\n <section\n aria-label=\"Flows editor\"\n class=\"editor surface1\"\n @dragover=\"${this.handleEditorDragOver}\"\n @dragleave=\"${this.handleEditorDragLeave}\"\n @drop=\"${this.handleEditorDrop}\"\n >\n ${content}\n </section>\n `\n }\n\n protected renderEmptyFlowMessage(): TemplateResult {\n return html`\n <div class=\"empty-message\">Create a flow to get started.</div>\n <div class=\"empty-message\">\n <ui-outlined-button @click=\"${this.handleAdd}\" class=\"empty-button\">Create</ui-outlined-button>\n </div>\n `\n }\n\n protected renderSelectFlowMessage(): TemplateResult {\n return html` <div class=\"empty-message\">Select a flow to get started.</div> `\n }\n\n protected renderEmptyActionsMessage(): TemplateResult {\n return html` <div class=\"empty-message\">Drop a condition or an action here</div> `\n }\n\n protected renderCondition(condition: IHttpAction): TemplateResult {\n return html`\n <div class=\"step-row condition\">\n <div class=\"action-tab\">\n <span class=\"body-small\">Condition</span>\n ${this.renderConditionTabActions()}\n </div>\n <div class=\"param-row condition-row\">${this.renderSteps(condition, -1)}</div>\n </div>\n `\n }\n\n protected renderList(model: IHttpAction[]): TemplateResult {\n return html` ${model.map((item, index) => this.renderAction(item, index))} `\n }\n\n protected renderAction(item: IHttpAction, index: number): TemplateResult {\n const { description } = item\n const label = description || `Action ${index + 1}`\n return html`\n <div class=\"step-row action\">\n <div class=\"action-tab\">\n <span class=\"body-small\">${label}</span>\n ${this.renderStepTabActions(index)}\n </div>\n <div class=\"param-row action-row\">${this.renderSteps(item, index)}</div>\n </div>\n `\n }\n\n protected renderBuildingBlocks(): TemplateResult {\n const { currentFlow } = this\n return html`\n <section aria-label=\"Flow building block\" class=\"options\">\n ${this.renderFlowBlocksOptions(currentFlow)} ${this.renderDataSourceOptions(currentFlow)}\n ${this.renderTransformationOptions(currentFlow)} ${this.renderActions(currentFlow)}\n ${this.renderAssertionOptions(currentFlow)}\n </section>\n `\n }\n\n protected renderFlowBlocksOptions(currentFlow?: IHttpFlow): TemplateResult {\n const allDisabled = !currentFlow\n const conditionDisabled = allDisabled || (!!currentFlow && !!currentFlow.condition)\n return html`\n <details class=\"action-group\" open>\n <summary>Flow Blocks</summary>\n <div class=\"group-content\">\n ${this.renderBlockChip('Condition', 'flow-block', 'Core#Condition', {\n disabled: conditionDisabled,\n title: 'Adds a condition that is checked before the flow is executed. Only one condition per flow.',\n })}\n ${this.renderBlockChip('Action', 'flow-block', 'Core#Action', {\n disabled: allDisabled,\n title: 'Adds an action to this flow.',\n })}\n </div>\n </details>\n `\n }\n\n protected renderDataSourceOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n const { trigger = 'response' } = this\n if (trigger === 'request') {\n return this.renderRequestDataSourceSuggestions(allDisabled)\n }\n return this.renderResponseDataSourceSuggestions(allDisabled)\n }\n\n protected renderTransformationOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderTransformationSuggestions(allDisabled)\n }\n\n protected renderActions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderActionSuggestions(allDisabled)\n }\n\n protected renderAssertionOptions(currentFlow?: IHttpFlow): TemplateResult {\n let allDisabled = !currentFlow\n if (currentFlow) {\n const { condition, actions = [] } = currentFlow\n if (!condition && !actions.length) {\n allDisabled = true\n }\n }\n return this.renderAssertionSuggestions(allDisabled)\n }\n\n protected renderConditionTabActions(): TemplateResult {\n return html`\n <ui-dropdown-list @select=\"${this.handleConditionOption}\" closeOnOutsideClick>\n <ui-icon-button class=\"condition-options-trigger\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"delete\" role=\"menuitem\">Remove</ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n\n protected renderStepTabActions(actionIndex: number): TemplateResult {\n return html`\n <ui-dropdown-list @select=\"${this.handleActionOption}\" closeOnOutsideClick data-action-index=\"${actionIndex}\">\n <ui-icon-button class=\"action-options-trigger\">\n <ui-icon icon=\"moreVert\"></ui-icon>\n </ui-icon-button>\n <ui-list slot=\"dropdown\" role=\"menu\">\n <ui-list-item data-option=\"rename\" role=\"menuitem\">Rename</ui-list-item>\n <ui-divider></ui-divider>\n <ui-list-item data-option=\"delete\" role=\"menuitem\">Remove</ui-list-item>\n </ui-list>\n </ui-dropdown-list>\n `\n }\n}\n"]}
|
|
@@ -11,7 +11,7 @@ import '../../md/list/ui-list-item.js';
|
|
|
11
11
|
import '../../md/dropdown-list/ui-dropdown-list.js';
|
|
12
12
|
import '../../md/icons/ui-icon.js';
|
|
13
13
|
import '../../md/icon-button/ui-icon-button.js';
|
|
14
|
-
import '../../md/text-field/ui-text-field.js';
|
|
14
|
+
import '../../md/text-field/ui-filled-text-field.js';
|
|
15
15
|
import '../../md/chip/ui-chip.js';
|
|
16
16
|
import '../../md/dialog/ui-dialog.js';
|
|
17
17
|
import '../dialog/delete-cookie-action-dialog.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpFlowsUi.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlowsUi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACf,MAAM,iDAAiD,CAAA;AACxD,OAAO,KAAK,SAAS,MAAM,wDAAwD,CAAA;AACnF,OAAO,KAAK,cAAc,MAAM,6DAA6D,CAAA;AAC7F,OAAO,KAAK,mBAAmB,MAAM,kEAAkE,CAAA;AAGvG,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gDAAgD,CAAA;AAE/E,OAAO,EAAiB,cAAc,EAAE,MAAM,KAAK,CAAA;AAEnD,OAAO,UAAU,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,iCAAiC,CAAA;AAGzD,OAAO,0BAA0B,CAAA;AACjC,OAAO,+BAA+B,CAAA;AACtC,OAAO,4CAA4C,CAAA;AACnD,OAAO,2BAA2B,CAAA;AAClC,OAAO,wCAAwC,CAAA;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"HttpFlowsUi.d.ts","sourceRoot":"","sources":["../../../../src/elements/http/HttpFlowsUi.ts"],"names":[],"mappings":"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"}
|