+
+
${t`Related`}
+
+
+ ${this.application.providerObj
+ ? html`
+
-
+ ${t`Provider`}
+
+
-
+
+
+
`
+ : html``}
+
+
-
+ ${t`Policy engine mode`}
+
+
-
+
+ ${this.application.policyEngineMode?.toUpperCase()}
+
+
+
+
+
-
+ ${t`Edit`}
+
+
-
+
+
+ ${t`Update`}
+
+ ${t`Update Application`}
+
+
+
+
+
+
+
+
+
+
-
+ ${t`Check access`}
+
+
-
+
+
+ ${t`Check`}
+
+ ${t`Check Application access`}
+
+
+
+
+
+
+
+
+ ${this.application.launchUrl
+ ? html`
+
-
+ ${t`Launch`}
+
+
-
+
+
+
`
+ : html``}
+
-
-
-
-
${t`These policies control which users can access this application.`}
-
-
+
+
${t`Logins over the last 24 hours`}
+
+ ${this.application &&
+ html`
+ `}
+
+
+
- `;
+
+
+
+
+ ${t`These policies control which users can access this application.`}
+
+
+
+
+
+ `;
}
}
diff --git a/web/src/pages/crypto/CertificateGenerateForm.ts b/web/src/pages/crypto/CertificateGenerateForm.ts
index 8491dbd9b..ff1296050 100644
--- a/web/src/pages/crypto/CertificateGenerateForm.ts
+++ b/web/src/pages/crypto/CertificateGenerateForm.ts
@@ -8,38 +8,34 @@ import "../../elements/forms/HorizontalFormElement";
@customElement("ak-crypto-certificate-generate-form")
export class CertificateKeyPairForm extends Form
{
-
getSuccessMessage(): string {
return t`Successfully generated certificate-key pair.`;
}
send = (data: CertificateGenerationRequest): Promise => {
return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsGenerateCreate({
- certificateGenerationRequest: data
+ certificateGenerationRequest: data,
});
};
renderForm(): TemplateResult {
return html``;
}
-
}
diff --git a/web/src/pages/crypto/CertificateKeyPairForm.ts b/web/src/pages/crypto/CertificateKeyPairForm.ts
index 8eb6e1672..8c110d620 100644
--- a/web/src/pages/crypto/CertificateKeyPairForm.ts
+++ b/web/src/pages/crypto/CertificateKeyPairForm.ts
@@ -10,7 +10,6 @@ import { ModelForm } from "../../elements/forms/ModelForm";
@customElement("ak-crypto-certificate-form")
export class CertificateKeyPairForm extends ModelForm {
-
loadInstance(pk: string): Promise {
return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsRetrieve({
kpUuid: pk,
@@ -29,39 +28,44 @@ export class CertificateKeyPairForm extends ModelForm
-
-
+
+
+ ?required=${true}
+ >
${t`PEM-encoded Certificate data.`}
-
- ${t`Optional Private Key. If this is set, you can use this keypair for encryption.`}
+ label=${t`Private Key`}
+ >
+
+
+ ${t`Optional Private Key. If this is set, you can use this keypair for encryption.`}
+
`;
}
-
}
diff --git a/web/src/pages/crypto/CertificateKeyPairListPage.ts b/web/src/pages/crypto/CertificateKeyPairListPage.ts
index f9c2d0a82..18bb91c1e 100644
--- a/web/src/pages/crypto/CertificateKeyPairListPage.ts
+++ b/web/src/pages/crypto/CertificateKeyPairListPage.ts
@@ -62,122 +62,118 @@ export class CertificateKeyPairListPage extends TablePage {
html`${item.name}`,
html`${item.privateKeyAvailable ? t`Yes` : t`No`}`,
html`${item.certExpiry?.toLocaleString()}`,
- html`
-
-
- ${t`Update`}
-
-
- ${t`Update Certificate-Key Pair`}
-
-
-
-
-
- {
- return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsUsedByList({
- kpUuid: item.pk
- });
- }}
- .delete=${() => {
- return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsDestroy({
- kpUuid: item.pk
- });
- }}>
-
- `,
+ html`
+ ${t`Update`}
+ ${t`Update Certificate-Key Pair`}
+
+
+
+
+ {
+ return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsUsedByList({
+ kpUuid: item.pk,
+ });
+ }}
+ .delete=${() => {
+ return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsDestroy({
+ kpUuid: item.pk,
+ });
+ }}
+ >
+
+ `,
];
}
renderExpanded(item: CertificateKeyPair): TemplateResult {
- return html`
-
-
-
-
- -
- ${t`Certificate Fingerprint (SHA1)`}
-
- -
-
${item.fingerprintSha1}
-
-
-
- -
- ${t`Certificate Fingerprint (SHA256)`}
-
- -
-
${item.fingerprintSha256}
-
-
-
- -
- ${t`Certificate Subjet`}
-
- -
-
${item.certSubject}
-
-
-
- -
- ${t`Download`}
-
- -
-
-
-
-
-
- |
- |
- | `;
+ return html`
+
+
+
+ -
+ ${t`Certificate Fingerprint (SHA1)`}
+
+ -
+
+ ${item.fingerprintSha1}
+
+
+
+
+ -
+ ${t`Certificate Fingerprint (SHA256)`}
+
+ -
+
+ ${item.fingerprintSha256}
+
+
+
+
+ -
+ ${t`Certificate Subjet`}
+
+ -
+
${item.certSubject}
+
+
+
+ -
+ ${t`Download`}
+
+ -
+
+
+
+
+
+ |
+ |
+ | `;
}
renderToolbar(): TemplateResult {
return html`
-
-
- ${t`Create`}
-
-
- ${t`Create Certificate-Key Pair`}
-
-
-
-
-
-
-
- ${t`Generate`}
-
-
- ${t`Generate Certificate-Key Pair`}
-
-
-
-
-
- ${super.renderToolbar()}
+
+ ${t`Create`}
+ ${t`Create Certificate-Key Pair`}
+
+
+
+
+ ${t`Generate`}
+ ${t`Generate Certificate-Key Pair`}
+
+
+
+
+ ${super.renderToolbar()}
`;
}
}
diff --git a/web/src/pages/events/EventInfo.ts b/web/src/pages/events/EventInfo.ts
index 439ff763c..179503b3c 100644
--- a/web/src/pages/events/EventInfo.ts
+++ b/web/src/pages/events/EventInfo.ts
@@ -1,5 +1,13 @@
import { t } from "@lingui/macro";
-import { css, CSSResult, customElement, html, LitElement, property, TemplateResult } from "lit-element";
+import {
+ css,
+ CSSResult,
+ customElement,
+ html,
+ LitElement,
+ property,
+ TemplateResult,
+} from "lit-element";
import { until } from "lit-html/directives/until";
import { EventActions, FlowsApi } from "authentik-api";
import "../../elements/Spinner";
@@ -16,12 +24,16 @@ import { VERSION } from "../../constants";
@customElement("ak-event-info")
export class EventInfo extends LitElement {
-
- @property({attribute: false})
+ @property({ attribute: false })
event!: EventWithContext;
static get styles(): CSSResult[] {
- return [PFBase, PFButton, PFFlex, PFList, PFDescriptionList,
+ return [
+ PFBase,
+ PFButton,
+ PFFlex,
+ PFList,
+ PFDescriptionList,
css`
code {
display: block;
@@ -37,7 +49,7 @@ export class EventInfo extends LitElement {
width: 100%;
height: 50rem;
}
- `
+ `,
];
}
@@ -116,7 +128,7 @@ export class EventInfo extends LitElement {
- ${(context.to_email as string[]).map(to => {
+ ${(context.to_email as string[]).map((to) => {
return html`
${to}`;
})}
@@ -127,15 +139,15 @@ export class EventInfo extends LitElement {
defaultResponse(): TemplateResult {
return html`
-
-
${t`Context`}
- ${JSON.stringify(this.event?.context, null, 4)}
-
-
-
${t`User`}
- ${JSON.stringify(this.event?.user, null, 4)}
-
-
`;
+
+
${t`Context`}
+ ${JSON.stringify(this.event?.context, null, 4)}
+
+
+
${t`User`}
+ ${JSON.stringify(this.event?.user, null, 4)}
+
+ `;
}
buildGitHubIssueUrl(context: EventContext): string {
@@ -189,150 +201,201 @@ new?labels=bug,from_authentik&title=${encodeURIComponent(title)}
return html`
`;
}
switch (this.event?.action) {
- case EventActions.ModelCreated:
- case EventActions.ModelUpdated:
- case EventActions.ModelDeleted:
- return html`
-
${t`Affected model:`}
- ${this.getModelInfo(this.event.context?.model as EventModel)}
+ case EventActions.ModelCreated:
+ case EventActions.ModelUpdated:
+ case EventActions.ModelDeleted:
+ return html`
+
${t`Affected model:`}
+ ${this.getModelInfo(this.event.context?.model as EventModel)}
`;
- case EventActions.AuthorizeApplication:
- return html`
-
-
${t`Authorized application:`}
- ${this.getModelInfo(this.event.context.authorized_application as EventModel)}
-
-
-
${t`Using flow`}
-
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
- flowUuid: this.event.context.flow as string,
- }).then(resp => {
- return html`${resp.results[0].name}`;
- }), html``)}
-
-
-
-
${this.defaultResponse()}`;
- case EventActions.EmailSent:
- return html`
${t`Email info:`}
- ${this.getEmailInfo(this.event.context)}
-
-
- `;
- case EventActions.SecretView:
- return html`
-
${t`Secret:`}
- ${this.getModelInfo(this.event.context.secret as EventModel)}`;
- case EventActions.SystemException:
- return html`
-
- ${t`Open issue on GitHub...`}
-
-
-
-
${t`Exception`}
- ${this.event.context.message}
-
-
-
${this.defaultResponse()}`;
- case EventActions.PropertyMappingException:
- return html`
-
-
${t`Exception`}
- ${this.event.context.message || this.event.context.error}
-
-
-
${t`Expression`}
- ${this.event.context.expression}
-
-
-
${this.defaultResponse()}`;
- case EventActions.PolicyException:
- return html`
-
-
${t`Binding`}
- ${this.getModelInfo(this.event.context.binding as EventModel)}
-
-
-
${t`Request`}
-
- - ${t`Object`}: ${this.getModelInfo((this.event.context.request as EventContext).obj as EventModel)}
- - ${t`Context`}:
${JSON.stringify((this.event.context.request as EventContext).context, null, 4)}
-
-
-
-
${t`Exception`}
- ${this.event.context.message || this.event.context.error}
-
-
-
${this.defaultResponse()}`;
- case EventActions.PolicyExecution:
- return html`
-
-
${t`Binding`}
- ${this.getModelInfo(this.event.context.binding as EventModel)}
-
-
-
${t`Request`}
-
- - ${t`Object`}: ${this.getModelInfo((this.event.context.request as EventContext).obj as EventModel)}
- - ${t`Context`}:
${JSON.stringify((this.event.context.request as EventContext).context, null, 4)}
-
-
-
-
${t`Result`}
-
- - ${t`Passing`}: ${(this.event.context.result as EventContext).passing}
- - ${t`Messages`}:
-
- ${((this.event.context.result as EventContext).messages as string[]).map(msg => {
- return html`- ${msg}
`;
- })}
-
-
-
-
-
-
${this.defaultResponse()}`;
- case EventActions.ConfigurationError:
- return html`
${this.event.context.message}
-
${this.defaultResponse()}`;
- case EventActions.UpdateAvailable:
- return html`
${t`New version available!`}
-
- ${this.event.context.new_version}
- `;
- // Action types which typically don't record any extra context.
- // If context is not empty, we fall to the default response.
- case EventActions.Login:
- if ("using_source" in this.event.context) {
+ case EventActions.AuthorizeApplication:
return html`
-
-
${t`Using source`}
- ${this.getModelInfo(this.event.context.using_source as EventModel)}
+
+
${t`Authorized application:`}
+ ${this.getModelInfo(
+ this.event.context.authorized_application as EventModel,
+ )}
+
+
+
${t`Using flow`}
+
${until(
+ new FlowsApi(DEFAULT_CONFIG)
+ .flowsInstancesList({
+ flowUuid: this.event.context.flow as string,
+ })
+ .then((resp) => {
+ return html`${resp.results[0].name}`;
+ }),
+ html``,
+ )}
+
+
-
`;
- }
- return this.defaultResponse();
- case EventActions.LoginFailed:
- return html`
-
${t`Attempted to log in as ${this.event.context.username}`}
-
${this.defaultResponse()}`;
- case EventActions.Logout:
- if (this.event.context === {}) {
- return html`
${t`No additional data available.`}`;
- }
- return this.defaultResponse();
- default:
- return this.defaultResponse();
+
${this.defaultResponse()}`;
+ case EventActions.EmailSent:
+ return html`
${t`Email info:`}
+ ${this.getEmailInfo(this.event.context)}
+
+
+ `;
+ case EventActions.SecretView:
+ return html`
${t`Secret:`}
+ ${this.getModelInfo(this.event.context.secret as EventModel)}`;
+ case EventActions.SystemException:
+ return html`
+ ${t`Open issue on GitHub...`}
+
+
+
+
${t`Exception`}
+ ${this.event.context.message}
+
+
+
${this.defaultResponse()}`;
+ case EventActions.PropertyMappingException:
+ return html`
+
+
${t`Exception`}
+ ${this.event.context.message || this.event.context.error}
+
+
+
${t`Expression`}
+ ${this.event.context.expression}
+
+
+
${this.defaultResponse()}`;
+ case EventActions.PolicyException:
+ return html`
+
+
${t`Binding`}
+ ${this.getModelInfo(this.event.context.binding as EventModel)}
+
+
+
${t`Request`}
+
+ -
+ ${t`Object`}:
+ ${this.getModelInfo(
+ (this.event.context.request as EventContext)
+ .obj as EventModel,
+ )}
+
+ -
+ ${t`Context`}:
+
${JSON.stringify(
+ (this.event.context.request as EventContext)
+ .context,
+ null,
+ 4,
+ )}
+
+
+
+
+
${t`Exception`}
+ ${this.event.context.message || this.event.context.error}
+
+
+
${this.defaultResponse()}`;
+ case EventActions.PolicyExecution:
+ return html`
+
+
${t`Binding`}
+ ${this.getModelInfo(this.event.context.binding as EventModel)}
+
+
+
${t`Request`}
+
+ -
+ ${t`Object`}:
+ ${this.getModelInfo(
+ (this.event.context.request as EventContext)
+ .obj as EventModel,
+ )}
+
+ -
+ ${t`Context`}:
+
${JSON.stringify(
+ (this.event.context.request as EventContext)
+ .context,
+ null,
+ 4,
+ )}
+
+
+
+
+
${t`Result`}
+
+ -
+ ${t`Passing`}:
+ ${(this.event.context.result as EventContext).passing}
+
+ -
+ ${t`Messages`}:
+
+ ${(
+ (this.event.context.result as EventContext)
+ .messages as string[]
+ ).map((msg) => {
+ return html`- ${msg}
`;
+ })}
+
+
+
+
+
+
${this.defaultResponse()}`;
+ case EventActions.ConfigurationError:
+ return html`
${this.event.context.message}
+
${this.defaultResponse()}`;
+ case EventActions.UpdateAvailable:
+ return html`
${t`New version available!`}
+
+ ${this.event.context.new_version}
+ `;
+ // Action types which typically don't record any extra context.
+ // If context is not empty, we fall to the default response.
+ case EventActions.Login:
+ if ("using_source" in this.event.context) {
+ return html`
+
+
${t`Using source`}
+ ${this.getModelInfo(this.event.context.using_source as EventModel)}
+
+
`;
+ }
+ return this.defaultResponse();
+ case EventActions.LoginFailed:
+ return html`
${t`Attempted to log in as ${this.event.context.username}`}
+
${this.defaultResponse()}`;
+ case EventActions.Logout:
+ if (this.event.context === {}) {
+ return html`
${t`No additional data available.`}`;
+ }
+ return this.defaultResponse();
+ default:
+ return this.defaultResponse();
}
}
-
}
diff --git a/web/src/pages/events/EventInfoPage.ts b/web/src/pages/events/EventInfoPage.ts
index 51d14904a..e5c91501c 100644
--- a/web/src/pages/events/EventInfoPage.ts
+++ b/web/src/pages/events/EventInfoPage.ts
@@ -13,14 +13,15 @@ import "../../elements/PageHeader";
@customElement("ak-event-info-page")
export class EventInfoPage extends LitElement {
-
@property()
set eventID(value: string) {
- new EventsApi(DEFAULT_CONFIG).eventsEventsRetrieve({
- eventUuid: value
- }).then((ev) => {
- this.event = ev as EventWithContext;
- });
+ new EventsApi(DEFAULT_CONFIG)
+ .eventsEventsRetrieve({
+ eventUuid: value,
+ })
+ .then((ev) => {
+ this.event = ev as EventWithContext;
+ });
}
@property({ attribute: false })
@@ -32,19 +33,17 @@ export class EventInfoPage extends LitElement {
render(): TemplateResult {
return html`
-
-
-
-
- ${t`Event info`}
+ icon="pf-icon pf-icon-catalog"
+ header=${t`Event ${this.event?.pk || ""}`}
+ >
+
+
- `;
+ `;
}
-
}
diff --git a/web/src/pages/events/EventListPage.ts b/web/src/pages/events/EventListPage.ts
index 5ca9e404a..d96ccb4ff 100644
--- a/web/src/pages/events/EventListPage.ts
+++ b/web/src/pages/events/EventListPage.ts
@@ -53,15 +53,15 @@ export class EventListPage extends TablePage
{
row(item: EventWithContext): TemplateResult[] {
return [
html`${ActionToLabel(item.action)}
- ${item.app}`,
- item.user?.username ?
- html`
- ${item.user?.username}
-
- ${item.user.on_behalf_of ? html`
- ${t`On behalf of ${item.user.on_behalf_of.username}`}
- ` : html``}` :
- html`-`,
+ ${item.app}`,
+ item.user?.username
+ ? html` ${item.user?.username}
+ ${item.user.on_behalf_of
+ ? html`
+ ${t`On behalf of ${item.user.on_behalf_of.username}`}
+ `
+ : html``}`
+ : html`-`,
html`${item.created?.toLocaleString()}`,
html`${item.clientIp || "-"}`,
html`${item.tenant?.name || "-"}`,
@@ -72,15 +72,13 @@ export class EventListPage extends TablePage {
}
renderExpanded(item: Event): TemplateResult {
- return html`
-
-
- |
- |
- |
- | `;
+ return html`
+
+ |
+ |
+ |
+ | `;
}
-
}
diff --git a/web/src/pages/events/RuleForm.ts b/web/src/pages/events/RuleForm.ts
index d8eac1583..294eff386 100644
--- a/web/src/pages/events/RuleForm.ts
+++ b/web/src/pages/events/RuleForm.ts
@@ -10,7 +10,6 @@ import { ModelForm } from "../../elements/forms/ModelForm";
@customElement("ak-event-rule-form")
export class RuleForm extends ModelForm {
-
loadInstance(pk: string): Promise {
return new EventsApi(DEFAULT_CONFIG).eventsRulesRetrieve({
pbmUuid: pk,
@@ -29,24 +28,33 @@ export class RuleForm extends ModelForm {
if (this.instance) {
return new EventsApi(DEFAULT_CONFIG).eventsRulesUpdate({
pbmUuid: this.instance.pk || "",
- notificationRuleRequest: data
+ notificationRuleRequest: data,
});
} else {
return new EventsApi(DEFAULT_CONFIG).eventsRulesCreate({
- notificationRuleRequest: data
+ notificationRuleRequest: data,
});
}
};
renderSeverity(): TemplateResult {
return html`
-
-
-
`;
@@ -54,50 +62,69 @@ export class RuleForm extends ModelForm {
renderForm(): TemplateResult {
return html``;
}
-
}
diff --git a/web/src/pages/events/RuleListPage.ts b/web/src/pages/events/RuleListPage.ts
index 68416bc10..1bbef9ddb 100644
--- a/web/src/pages/events/RuleListPage.ts
+++ b/web/src/pages/events/RuleListPage.ts
@@ -56,70 +56,54 @@ export class RuleListPage extends TablePage {
html`${item.name}`,
html`${item.severity}`,
html`${item.groupObj?.name || t`None (rule disabled)`}`,
- html`
-
-
- ${t`Update`}
-
-
- ${t`Update Notification Rule`}
-
-
-
-
-
- {
- return new EventsApi(DEFAULT_CONFIG).eventsRulesUsedByList({
- pbmUuid: item.pk
- });
- }}
- .delete=${() => {
- return new EventsApi(DEFAULT_CONFIG).eventsRulesDestroy({
- pbmUuid: item.pk
- });
- }}>
-
- `,
+ html`
+ ${t`Update`}
+ ${t`Update Notification Rule`}
+
+
+
+ {
+ return new EventsApi(DEFAULT_CONFIG).eventsRulesUsedByList({
+ pbmUuid: item.pk,
+ });
+ }}
+ .delete=${() => {
+ return new EventsApi(DEFAULT_CONFIG).eventsRulesDestroy({
+ pbmUuid: item.pk,
+ });
+ }}
+ >
+
+ `,
];
}
renderToolbar(): TemplateResult {
return html`
-
-
- ${t`Create`}
-
-
- ${t`Create Notification Rule`}
-
-
-
-
-
- ${super.renderToolbar()}
+
+ ${t`Create`}
+ ${t`Create Notification Rule`}
+
+
+
+ ${super.renderToolbar()}
`;
}
renderExpanded(item: NotificationRule): TemplateResult {
- return html`
-
-
- ${t`These bindings control upon which events this rule triggers. Bindings to
- groups/users are checked against the user of the event.`}
-
-
-
- |
- |
- | `;
+ return html`
+
+
+ ${t`These bindings control upon which events this rule triggers. Bindings to
+ groups/users are checked against the user of the event.`}
+
+
+
+ |
+ |
+ | `;
}
}
diff --git a/web/src/pages/events/TransportForm.ts b/web/src/pages/events/TransportForm.ts
index 37e02ee53..e882df252 100644
--- a/web/src/pages/events/TransportForm.ts
+++ b/web/src/pages/events/TransportForm.ts
@@ -10,14 +10,13 @@ import { ModelForm } from "../../elements/forms/ModelForm";
@customElement("ak-event-transport-form")
export class TransportForm extends ModelForm {
-
loadInstance(pk: string): Promise {
return new EventsApi(DEFAULT_CONFIG).eventsTransportsRetrieve({
uuid: pk,
});
}
- @property({type: Boolean})
+ @property({ type: Boolean })
showWebhook = false;
getSuccessMessage(): string {
@@ -32,24 +31,33 @@ export class TransportForm extends ModelForm {
if (this.instance) {
return new EventsApi(DEFAULT_CONFIG).eventsTransportsUpdate({
uuid: this.instance.pk || "",
- notificationTransportRequest: data
+ notificationTransportRequest: data,
});
} else {
return new EventsApi(DEFAULT_CONFIG).eventsTransportsCreate({
- notificationTransportRequest: data
+ notificationTransportRequest: data,
});
}
};
renderTransportModes(): TemplateResult {
return html`
-
-
-
`;
@@ -62,7 +70,10 @@ export class TransportForm extends ModelForm {
}
onModeChange(mode: string): void {
- if (mode === NotificationTransportModeEnum.Webhook || mode === NotificationTransportModeEnum.WebhookSlack) {
+ if (
+ mode === NotificationTransportModeEnum.Webhook ||
+ mode === NotificationTransportModeEnum.WebhookSlack
+ ) {
this.showWebhook = true;
} else {
this.showWebhook = false;
@@ -71,39 +82,49 @@ export class TransportForm extends ModelForm {
renderForm(): TemplateResult {
return html``;
}
-
}
diff --git a/web/src/pages/events/TransportListPage.ts b/web/src/pages/events/TransportListPage.ts
index 8c4600885..cf5cb7442 100644
--- a/web/src/pages/events/TransportListPage.ts
+++ b/web/src/pages/events/TransportListPage.ts
@@ -52,64 +52,50 @@ export class TransportListPage extends TablePage {
return [
html`${item.name}`,
html`${item.modeVerbose}`,
- html`
- {
- return new EventsApi(DEFAULT_CONFIG).eventsTransportsTestCreate({
- uuid: item.pk || "",
- });
- }}>
- ${t`Test`}
-
-
-
- ${t`Update`}
-
-
- ${t`Update Notification Transport`}
-
-
-
-
-
- {
- return new EventsApi(DEFAULT_CONFIG).eventsTransportsUsedByList({
- uuid: item.pk
- });
- }}
- .delete=${() => {
- return new EventsApi(DEFAULT_CONFIG).eventsTransportsDestroy({
- uuid: item.pk
- });
- }}>
-
- `,
+ html` {
+ return new EventsApi(DEFAULT_CONFIG).eventsTransportsTestCreate({
+ uuid: item.pk || "",
+ });
+ }}
+ >
+ ${t`Test`}
+
+
+ ${t`Update`}
+ ${t`Update Notification Transport`}
+
+
+
+
+ {
+ return new EventsApi(DEFAULT_CONFIG).eventsTransportsUsedByList({
+ uuid: item.pk,
+ });
+ }}
+ .delete=${() => {
+ return new EventsApi(DEFAULT_CONFIG).eventsTransportsDestroy({
+ uuid: item.pk,
+ });
+ }}
+ >
+
+ `,
];
}
renderToolbar(): TemplateResult {
return html`
-
-
- ${t`Create`}
-
-
- ${t`Create Notification Transport`}
-
-
-
-
-
- ${super.renderToolbar()}
+
+ ${t`Create`}
+ ${t`Create Notification Transport`}
+
+
+
+ ${super.renderToolbar()}
`;
}
}
diff --git a/web/src/pages/flows/BoundStagesList.ts b/web/src/pages/flows/BoundStagesList.ts
index b732d6da3..3c812c780 100644
--- a/web/src/pages/flows/BoundStagesList.ts
+++ b/web/src/pages/flows/BoundStagesList.ts
@@ -47,87 +47,78 @@ export class BoundStagesList extends Table {
html`${item.order}`,
html`${item.stageObj?.name}`,
html`${item.stageObj?.verboseName}`,
- html`
-
-
- ${t`Update`}
-
-
- ${t`Update ${item.stageObj?.verboseName}`}
-
-
+ ${t`Update`}
+ ${t`Update ${item.stageObj?.verboseName}`}
+
+
+
+
+
+ ${t`Update`}
+ ${t`Update Stage binding`}
+
+
+
+
+ {
+ return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUsedByList({
+ fsbUuid: item.pk,
+ });
}}
- type=${ifDefined(item.stageObj?.component)}>
-
-
-
-
-
- ${t`Update`}
-
-
- ${t`Update Stage binding`}
-
-
-
-
-
- {
- return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUsedByList({
- fsbUuid: item.pk
- });
- }}
- .delete=${() => {
- return new FlowsApi(DEFAULT_CONFIG).flowsBindingsDestroy({
- fsbUuid: item.pk,
- });
- }}>
-
- `,
+ .delete=${() => {
+ return new FlowsApi(DEFAULT_CONFIG).flowsBindingsDestroy({
+ fsbUuid: item.pk,
+ });
+ }}
+ >
+
+ `,
];
}
renderExpanded(item: FlowStageBinding): TemplateResult {
- return html`
- |
-
-
-
- ${t`These bindings control if this stage will be applied to the flow.`}
-
-
+ return html` |
+
+
+
+
+ ${t`These bindings control if this stage will be applied to the flow.`}
+
+
+
+
-
- |
- |
- | `;
+ |
+ |
+ | `;
}
renderEmpty(): TemplateResult {
- return super.renderEmpty(html`
-
- ${t`No stages are currently bound to this flow.`}
-
+ return super.renderEmpty(html`
+ ${t`No stages are currently bound to this flow.`}
-
- ${t`Create`}
-
-
- ${t`Create Stage binding`}
-
+ ${t`Create`}
+ ${t`Create Stage binding`}