web: use single delete button with checkbox and icon-based action buttons
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		| @ -20,6 +20,12 @@ | |||||||
|                 "regenerator": true |                 "regenerator": true | ||||||
|             } |             } | ||||||
|         ], |         ], | ||||||
|         "macros" |         "macros", | ||||||
|  |         [ | ||||||
|  |             "@babel/plugin-proposal-private-property-in-object", | ||||||
|  |             { | ||||||
|  |                 "loose": true | ||||||
|  |             } | ||||||
|  |         ] | ||||||
|     ] |     ] | ||||||
| } | } | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ export class UserOAuthCodeList extends Table<ExpiringBaseGrantModel> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|     order = "-expires"; |     order = "-expires"; | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
| @ -29,33 +30,37 @@ export class UserOAuthCodeList extends Table<ExpiringBaseGrantModel> { | |||||||
|             new TableColumn(t`Provider`, "provider"), |             new TableColumn(t`Provider`, "provider"), | ||||||
|             new TableColumn(t`Expires`, "expires"), |             new TableColumn(t`Expires`, "expires"), | ||||||
|             new TableColumn(t`Scopes`, "scope"), |             new TableColumn(t`Scopes`, "scope"), | ||||||
|             new TableColumn("Actions"), |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Authorization Code`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new Oauth2Api(DEFAULT_CONFIG).oauth2AuthorizationCodesUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new Oauth2Api(DEFAULT_CONFIG).oauth2AuthorizationCodesDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: ExpiringBaseGrantModel): TemplateResult[] { |     row(item: ExpiringBaseGrantModel): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`<a href="#/core/providers/${item.provider?.pk}"> ${item.provider?.name} </a>`, |             html`<a href="#/core/providers/${item.provider?.pk}"> ${item.provider?.name} </a>`, | ||||||
|             html`${item.expires?.toLocaleString()}`, |             html`${item.expires?.toLocaleString()}`, | ||||||
|             html`${item.scope.join(", ")}`, |             html`${item.scope.join(", ")}`, | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`Authorization Code`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new Oauth2Api(DEFAULT_CONFIG).oauth2AuthorizationCodesUsedByList({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new Oauth2Api(DEFAULT_CONFIG).oauth2AuthorizationCodesDestroy({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger"> |  | ||||||
|                     ${t`Delete Authorization Code`} |  | ||||||
|                 </button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -29,6 +29,7 @@ export class UserOAuthRefreshList extends Table<RefreshTokenModel> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|     order = "-expires"; |     order = "-expires"; | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
| @ -37,7 +38,6 @@ export class UserOAuthRefreshList extends Table<RefreshTokenModel> { | |||||||
|             new TableColumn(t`Revoked?`, "revoked"), |             new TableColumn(t`Revoked?`, "revoked"), | ||||||
|             new TableColumn(t`Expires`, "expires"), |             new TableColumn(t`Expires`, "expires"), | ||||||
|             new TableColumn(t`Scopes`, "scope"), |             new TableColumn(t`Scopes`, "scope"), | ||||||
|             new TableColumn("Actions"), |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -53,34 +53,38 @@ export class UserOAuthRefreshList extends Table<RefreshTokenModel> { | |||||||
|                 </div> |                 </div> | ||||||
|             </td> |             </td> | ||||||
|             <td></td> |             <td></td> | ||||||
|             <td></td> |  | ||||||
|             <td></td>`; |             <td></td>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Refresh Code`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new Oauth2Api(DEFAULT_CONFIG).oauth2RefreshTokensUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new Oauth2Api(DEFAULT_CONFIG).oauth2RefreshTokensDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: RefreshTokenModel): TemplateResult[] { |     row(item: RefreshTokenModel): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`<a href="#/core/providers/${item.provider?.pk}"> ${item.provider?.name} </a>`, |             html`<a href="#/core/providers/${item.provider?.pk}"> ${item.provider?.name} </a>`, | ||||||
|             html`${item.revoked ? t`Yes` : t`No`}`, |             html`${item.revoked ? t`Yes` : t`No`}`, | ||||||
|             html`${item.expires?.toLocaleString()}`, |             html`${item.expires?.toLocaleString()}`, | ||||||
|             html`${item.scope.join(", ")}`, |             html`${item.scope.join(", ")}`, | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`Refresh Code`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new Oauth2Api(DEFAULT_CONFIG).oauth2RefreshTokensUsedByList({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new Oauth2Api(DEFAULT_CONFIG).oauth2RefreshTokensDestroy({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger"> |  | ||||||
|                     ${t`Delete Refresh Code`} |  | ||||||
|                 </button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -273,7 +273,7 @@ export abstract class Table<T> extends LitElement { | |||||||
|                     }), |                     }), | ||||||
|                 ); |                 ); | ||||||
|             }} |             }} | ||||||
|             class="pf-c-button pf-m-primary" |             class="pf-c-button pf-m-secondary" | ||||||
|         > |         > | ||||||
|             ${t`Refresh`} |             ${t`Refresh`} | ||||||
|         </button>`; |         </button>`; | ||||||
| @ -292,19 +292,18 @@ export abstract class Table<T> extends LitElement { | |||||||
|             return html``; |             return html``; | ||||||
|         } |         } | ||||||
|         return html`<ak-table-search |         return html`<ak-table-search | ||||||
|                 value=${ifDefined(this.search)} |             value=${ifDefined(this.search)} | ||||||
|                 .onSearch=${(value: string) => { |             .onSearch=${(value: string) => { | ||||||
|                     this.search = value; |                 this.search = value; | ||||||
|                     this.dispatchEvent( |                 this.dispatchEvent( | ||||||
|                         new CustomEvent(EVENT_REFRESH, { |                     new CustomEvent(EVENT_REFRESH, { | ||||||
|                             bubbles: true, |                         bubbles: true, | ||||||
|                             composed: true, |                         composed: true, | ||||||
|                         }), |                     }), | ||||||
|                     ); |                 ); | ||||||
|                 }} |             }} | ||||||
|             > |         > | ||||||
|             </ak-table-search |         </ak-table-search>`; | ||||||
|             > `; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     // eslint-disable-next-line @typescript-eslint/no-unused-vars |     // eslint-disable-next-line @typescript-eslint/no-unused-vars | ||||||
| @ -326,9 +325,10 @@ export abstract class Table<T> extends LitElement { | |||||||
|                 : html``} |                 : html``} | ||||||
|             <div class="pf-c-toolbar"> |             <div class="pf-c-toolbar"> | ||||||
|                 <div class="pf-c-toolbar__content"> |                 <div class="pf-c-toolbar__content"> | ||||||
|                     ${this.renderToolbarSelected()}   ${this.renderSearch()} |                     <div class="pf-m-search-filter">${this.renderSearch()}</div> | ||||||
|                     <div class="pf-c-toolbar__bulk-select">${this.renderToolbar()}</div> |                     <div class="pf-c-toolbar__bulk-select">${this.renderToolbar()}</div> | ||||||
|                     ${this.renderToolbarAfter()} |                     <div class="pf-c-toolbar__group">${this.renderToolbarAfter()}</div> | ||||||
|  |                     <div class="pf-c-toolbar__group">${this.renderToolbarSelected()}</div> | ||||||
|                     <ak-table-pagination |                     <ak-table-pagination | ||||||
|                         class="pf-c-toolbar__item pf-m-pagination" |                         class="pf-c-toolbar__item pf-m-pagination" | ||||||
|                         .pages=${this.data?.pagination} |                         .pages=${this.data?.pagination} | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ export class AuthenticatedSessionList extends Table<AuthenticatedSession> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|     order = "-expires"; |     order = "-expires"; | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
| @ -30,32 +31,38 @@ export class AuthenticatedSessionList extends Table<AuthenticatedSession> { | |||||||
|             new TableColumn(t`Browser`, "user_agent"), |             new TableColumn(t`Browser`, "user_agent"), | ||||||
|             new TableColumn(t`Device`, "user_agent"), |             new TableColumn(t`Device`, "user_agent"), | ||||||
|             new TableColumn(t`Expires`, "expires"), |             new TableColumn(t`Expires`, "expires"), | ||||||
|             new TableColumn("Actions"), |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Session`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreAuthenticatedSessionsUsedByList({ | ||||||
|  |                     uuid: item.uuid || "", | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreAuthenticatedSessionsDestroy({ | ||||||
|  |                     uuid: item.uuid || "", | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete Session`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: AuthenticatedSession): TemplateResult[] { |     row(item: AuthenticatedSession): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.lastIp}`, |             html`${item.lastIp}`, | ||||||
|             html`${item.userAgent.userAgent?.family}`, |             html`${item.userAgent.userAgent?.family}`, | ||||||
|             html`${item.userAgent.os?.family}`, |             html`${item.userAgent.os?.family}`, | ||||||
|             html`${item.expires?.toLocaleString()}`, |             html`${item.expires?.toLocaleString()}`, | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`Session`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new CoreApi(DEFAULT_CONFIG).coreAuthenticatedSessionsUsedByList({ |  | ||||||
|                         uuid: item.uuid || "", |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new CoreApi(DEFAULT_CONFIG).coreAuthenticatedSessionsDestroy({ |  | ||||||
|                         uuid: item.uuid || "", |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete Session`}</button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -22,36 +22,40 @@ export class UserConsentList extends Table<UserConsent> { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|     order = "-expires"; |     order = "-expires"; | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
|         return [ |         return [ | ||||||
|             new TableColumn(t`Application`, "application"), |             new TableColumn(t`Application`, "application"), | ||||||
|             new TableColumn(t`Expires`, "expires"), |             new TableColumn(t`Expires`, "expires"), | ||||||
|             new TableColumn("Actions"), |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Consent`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreUserConsentUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreUserConsentDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete Consent`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: UserConsent): TemplateResult[] { |     row(item: UserConsent): TemplateResult[] { | ||||||
|         return [ |         return [html`${item.application.name}`, html`${item.expires?.toLocaleString()}`]; | ||||||
|             html`${item.application.name}`, |  | ||||||
|             html`${item.expires?.toLocaleString()}`, |  | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`Consent`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new CoreApi(DEFAULT_CONFIG).coreUserConsentUsedByList({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new CoreApi(DEFAULT_CONFIG).coreUserConsentDestroy({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete Consent`}</button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -94,6 +94,30 @@ msgstr "Access token URL" | |||||||
| msgid "Action" | msgid "Action" | ||||||
| msgstr "Action" | msgstr "Action" | ||||||
|  |  | ||||||
|  | #: src/pages/applications/ApplicationListPage.ts | ||||||
|  | #: src/pages/crypto/CertificateKeyPairListPage.ts | ||||||
|  | #: src/pages/events/EventListPage.ts | ||||||
|  | #: src/pages/events/RuleListPage.ts | ||||||
|  | #: src/pages/events/TransportListPage.ts | ||||||
|  | #: src/pages/flows/BoundStagesList.ts | ||||||
|  | #: src/pages/flows/FlowListPage.ts | ||||||
|  | #: src/pages/groups/GroupListPage.ts | ||||||
|  | #: src/pages/outposts/OutpostListPage.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionListPage.ts | ||||||
|  | #: src/pages/policies/BoundPoliciesList.ts | ||||||
|  | #: src/pages/policies/PolicyListPage.ts | ||||||
|  | #: src/pages/policies/reputation/IPReputationListPage.ts | ||||||
|  | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
|  | #: src/pages/providers/ProviderListPage.ts | ||||||
|  | #: src/pages/stages/StageListPage.ts | ||||||
|  | #: src/pages/stages/prompt/PromptListPage.ts | ||||||
|  | #: src/pages/system-tasks/SystemTaskListPage.ts | ||||||
|  | #: src/pages/tenants/TenantListPage.ts | ||||||
|  | #: src/pages/tokens/TokenListPage.ts | ||||||
|  | #: src/pages/users/UserListPage.ts | ||||||
|  | msgid "Actions" | ||||||
|  | msgstr "Actions" | ||||||
|  |  | ||||||
| #: src/pages/groups/MemberSelectModal.ts | #: src/pages/groups/MemberSelectModal.ts | ||||||
| #: src/pages/users/UserListPage.ts | #: src/pages/users/UserListPage.ts | ||||||
| #: src/pages/users/UserViewPage.ts | #: src/pages/users/UserViewPage.ts | ||||||
| @ -1031,6 +1055,8 @@ msgid "Define how notifications are sent to users, like Email or Webhook." | |||||||
| msgstr "Define how notifications are sent to users, like Email or Webhook." | msgstr "Define how notifications are sent to users, like Email or Webhook." | ||||||
|  |  | ||||||
| #: src/elements/forms/DeleteForm.ts | #: src/elements/forms/DeleteForm.ts | ||||||
|  | #: src/elements/oauth/UserCodeList.ts | ||||||
|  | #: src/elements/oauth/UserRefreshList.ts | ||||||
| #: src/pages/applications/ApplicationListPage.ts | #: src/pages/applications/ApplicationListPage.ts | ||||||
| #: src/pages/crypto/CertificateKeyPairListPage.ts | #: src/pages/crypto/CertificateKeyPairListPage.ts | ||||||
| #: src/pages/events/RuleListPage.ts | #: src/pages/events/RuleListPage.ts | ||||||
| @ -1056,9 +1082,9 @@ msgstr "Define how notifications are sent to users, like Email or Webhook." | |||||||
| msgid "Delete" | msgid "Delete" | ||||||
| msgstr "Delete" | msgstr "Delete" | ||||||
|  |  | ||||||
| #: src/elements/oauth/UserCodeList.ts | #:  | ||||||
| msgid "Delete Authorization Code" | #~ msgid "Delete Authorization Code" | ||||||
| msgstr "Delete Authorization Code" | #~ msgstr "Delete Authorization Code" | ||||||
|  |  | ||||||
| #: src/pages/flows/BoundStagesList.ts | #: src/pages/flows/BoundStagesList.ts | ||||||
| #: src/pages/policies/BoundPoliciesList.ts | #: src/pages/policies/BoundPoliciesList.ts | ||||||
| @ -1069,9 +1095,9 @@ msgstr "Delete Binding" | |||||||
| msgid "Delete Consent" | msgid "Delete Consent" | ||||||
| msgstr "Delete Consent" | msgstr "Delete Consent" | ||||||
|  |  | ||||||
| #: src/elements/oauth/UserRefreshList.ts | #:  | ||||||
| msgid "Delete Refresh Code" | #~ msgid "Delete Refresh Code" | ||||||
| msgstr "Delete Refresh Code" | #~ msgstr "Delete Refresh Code" | ||||||
|  |  | ||||||
| #: src/elements/user/SessionList.ts | #: src/elements/user/SessionList.ts | ||||||
| msgid "Delete Session" | msgid "Delete Session" | ||||||
| @ -1238,33 +1264,16 @@ msgstr "Duration after which events will be deleted from the database." | |||||||
| msgid "Each provider has a different issuer, based on the application slug." | msgid "Each provider has a different issuer, based on the application slug." | ||||||
| msgstr "Each provider has a different issuer, based on the application slug." | msgstr "Each provider has a different issuer, based on the application slug." | ||||||
|  |  | ||||||
| #: src/pages/applications/ApplicationListPage.ts |  | ||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/crypto/CertificateKeyPairListPage.ts |  | ||||||
| #: src/pages/events/RuleListPage.ts |  | ||||||
| #: src/pages/events/TransportListPage.ts |  | ||||||
| #: src/pages/flows/FlowListPage.ts |  | ||||||
| #: src/pages/groups/GroupListPage.ts |  | ||||||
| #: src/pages/outposts/OutpostListPage.ts |  | ||||||
| #: src/pages/outposts/OutpostListPage.ts |  | ||||||
| #: src/pages/outposts/ServiceConnectionListPage.ts |  | ||||||
| #: src/pages/policies/PolicyListPage.ts |  | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts |  | ||||||
| #: src/pages/providers/ProviderListPage.ts |  | ||||||
| #: src/pages/providers/ldap/LDAPProviderViewPage.ts | #: src/pages/providers/ldap/LDAPProviderViewPage.ts | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/pages/providers/proxy/ProxyProviderViewPage.ts | #: src/pages/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/pages/providers/saml/SAMLProviderViewPage.ts | #: src/pages/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/pages/sources/SourcesListPage.ts |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceViewPage.ts | #: src/pages/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceViewPage.ts | #: src/pages/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/pages/sources/plex/PlexSourceViewPage.ts | #: src/pages/sources/plex/PlexSourceViewPage.ts | ||||||
| #: src/pages/sources/saml/SAMLSourceViewPage.ts | #: src/pages/sources/saml/SAMLSourceViewPage.ts | ||||||
| #: src/pages/stages/StageListPage.ts |  | ||||||
| #: src/pages/stages/prompt/PromptListPage.ts |  | ||||||
| #: src/pages/tenants/TenantListPage.ts |  | ||||||
| #: src/pages/user-settings/tokens/UserTokenList.ts |  | ||||||
| #: src/pages/users/UserListPage.ts | #: src/pages/users/UserListPage.ts | ||||||
| #: src/pages/users/UserViewPage.ts | #: src/pages/users/UserViewPage.ts | ||||||
| msgid "Edit" | msgid "Edit" | ||||||
| @ -1940,6 +1949,10 @@ msgstr "Integration" | |||||||
| msgid "Integration key" | msgid "Integration key" | ||||||
| msgstr "Integration key" | msgstr "Integration key" | ||||||
|  |  | ||||||
|  | #: src/interfaces/AdminInterface.ts | ||||||
|  | msgid "Integrations" | ||||||
|  | msgstr "Integrations" | ||||||
|  |  | ||||||
| #: src/pages/providers/proxy/ProxyProviderViewPage.ts | #: src/pages/providers/proxy/ProxyProviderViewPage.ts | ||||||
| msgid "Internal Host" | msgid "Internal Host" | ||||||
| msgstr "Internal Host" | msgstr "Internal Host" | ||||||
| @ -2618,9 +2631,9 @@ msgstr "Only fail the policy, don't invalidate user's password." | |||||||
| msgid "Only send notification once, for example when sending a webhook into a chat channel." | msgid "Only send notification once, for example when sending a webhook into a chat channel." | ||||||
| msgstr "Only send notification once, for example when sending a webhook into a chat channel." | msgstr "Only send notification once, for example when sending a webhook into a chat channel." | ||||||
|  |  | ||||||
| #: src/pages/applications/ApplicationListPage.ts | #:  | ||||||
| msgid "Open application" | #~ msgid "Open application" | ||||||
| msgstr "Open application" | #~ msgstr "Open application" | ||||||
|  |  | ||||||
| #: src/pages/events/EventInfo.ts | #: src/pages/events/EventInfo.ts | ||||||
| msgid "Open issue on GitHub..." | msgid "Open issue on GitHub..." | ||||||
| @ -2695,9 +2708,13 @@ msgstr "Outpost" | |||||||
| msgid "Outpost Deployment Info" | msgid "Outpost Deployment Info" | ||||||
| msgstr "Outpost Deployment Info" | msgstr "Outpost Deployment Info" | ||||||
|  |  | ||||||
|  | #:  | ||||||
|  | #~ msgid "Outpost Service-connection" | ||||||
|  | #~ msgstr "Outpost Service-connection" | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionListPage.ts | #: src/pages/outposts/ServiceConnectionListPage.ts | ||||||
| msgid "Outpost Service-connection" | msgid "Outpost integration" | ||||||
| msgstr "Outpost Service-connection" | msgstr "Outpost integration" | ||||||
|  |  | ||||||
| #: src/pages/admin-overview/AdminOverviewPage.ts | #: src/pages/admin-overview/AdminOverviewPage.ts | ||||||
| msgid "Outpost status" | msgid "Outpost status" | ||||||
| @ -3368,9 +3385,9 @@ msgstr "Server name for which this provider's certificate is valid for." | |||||||
| msgid "Server validation of credential failed: {err}" | msgid "Server validation of credential failed: {err}" | ||||||
| msgstr "Server validation of credential failed: {err}" | msgstr "Server validation of credential failed: {err}" | ||||||
|  |  | ||||||
| #: src/interfaces/AdminInterface.ts | #:  | ||||||
| msgid "Service Connections" | #~ msgid "Service Connections" | ||||||
| msgstr "Service Connections" | #~ msgstr "Service Connections" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts | #: src/pages/providers/saml/SAMLProviderForm.ts | ||||||
| msgid "Service Provider Binding" | msgid "Service Provider Binding" | ||||||
| @ -3652,6 +3669,11 @@ msgstr "Successfully created flow." | |||||||
| msgid "Successfully created group." | msgid "Successfully created group." | ||||||
| msgstr "Successfully created group." | msgstr "Successfully created group." | ||||||
|  |  | ||||||
|  | #: src/pages/outposts/ServiceConnectionDockerForm.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | ||||||
|  | msgid "Successfully created integration." | ||||||
|  | msgstr "Successfully created integration." | ||||||
|  |  | ||||||
| #: src/pages/stages/invitation/InvitationForm.ts | #: src/pages/stages/invitation/InvitationForm.ts | ||||||
| msgid "Successfully created invitation." | msgid "Successfully created invitation." | ||||||
| msgstr "Successfully created invitation." | msgstr "Successfully created invitation." | ||||||
| @ -3691,10 +3713,10 @@ msgstr "Successfully created provider." | |||||||
| msgid "Successfully created rule." | msgid "Successfully created rule." | ||||||
| msgstr "Successfully created rule." | msgstr "Successfully created rule." | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionDockerForm.ts | #:  | ||||||
| #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | #:  | ||||||
| msgid "Successfully created service-connection." | #~ msgid "Successfully created service-connection." | ||||||
| msgstr "Successfully created service-connection." | #~ msgstr "Successfully created service-connection." | ||||||
|  |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts | #: src/pages/sources/ldap/LDAPSourceForm.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceForm.ts | #: src/pages/sources/oauth/OAuthSourceForm.ts | ||||||
| @ -3796,6 +3818,11 @@ msgstr "Successfully updated flow." | |||||||
| msgid "Successfully updated group." | msgid "Successfully updated group." | ||||||
| msgstr "Successfully updated group." | msgstr "Successfully updated group." | ||||||
|  |  | ||||||
|  | #: src/pages/outposts/ServiceConnectionDockerForm.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | ||||||
|  | msgid "Successfully updated integration." | ||||||
|  | msgstr "Successfully updated integration." | ||||||
|  |  | ||||||
| #: src/pages/stages/invitation/InvitationForm.ts | #: src/pages/stages/invitation/InvitationForm.ts | ||||||
| msgid "Successfully updated invitation." | msgid "Successfully updated invitation." | ||||||
| msgstr "Successfully updated invitation." | msgstr "Successfully updated invitation." | ||||||
| @ -3835,10 +3862,10 @@ msgstr "Successfully updated provider." | |||||||
| msgid "Successfully updated rule." | msgid "Successfully updated rule." | ||||||
| msgstr "Successfully updated rule." | msgstr "Successfully updated rule." | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionDockerForm.ts | #:  | ||||||
| #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | #:  | ||||||
| msgid "Successfully updated service-connection." | #~ msgid "Successfully updated service-connection." | ||||||
| msgstr "Successfully updated service-connection." | #~ msgstr "Successfully updated service-connection." | ||||||
|  |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts | #: src/pages/sources/ldap/LDAPSourceForm.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceForm.ts | #: src/pages/sources/oauth/OAuthSourceForm.ts | ||||||
| @ -3994,7 +4021,6 @@ msgstr "Tenants" | |||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/events/TransportListPage.ts | #: src/pages/events/TransportListPage.ts | ||||||
| #: src/pages/policies/PolicyListPage.ts | #: src/pages/policies/PolicyListPage.ts | ||||||
| #: src/pages/policies/PolicyListPage.ts |  | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
| msgid "Test" | msgid "Test" | ||||||
|  | |||||||
| @ -94,6 +94,30 @@ msgstr "" | |||||||
| msgid "Action" | msgid "Action" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/pages/applications/ApplicationListPage.ts | ||||||
|  | #: src/pages/crypto/CertificateKeyPairListPage.ts | ||||||
|  | #: src/pages/events/EventListPage.ts | ||||||
|  | #: src/pages/events/RuleListPage.ts | ||||||
|  | #: src/pages/events/TransportListPage.ts | ||||||
|  | #: src/pages/flows/BoundStagesList.ts | ||||||
|  | #: src/pages/flows/FlowListPage.ts | ||||||
|  | #: src/pages/groups/GroupListPage.ts | ||||||
|  | #: src/pages/outposts/OutpostListPage.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionListPage.ts | ||||||
|  | #: src/pages/policies/BoundPoliciesList.ts | ||||||
|  | #: src/pages/policies/PolicyListPage.ts | ||||||
|  | #: src/pages/policies/reputation/IPReputationListPage.ts | ||||||
|  | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
|  | #: src/pages/providers/ProviderListPage.ts | ||||||
|  | #: src/pages/stages/StageListPage.ts | ||||||
|  | #: src/pages/stages/prompt/PromptListPage.ts | ||||||
|  | #: src/pages/system-tasks/SystemTaskListPage.ts | ||||||
|  | #: src/pages/tenants/TenantListPage.ts | ||||||
|  | #: src/pages/tokens/TokenListPage.ts | ||||||
|  | #: src/pages/users/UserListPage.ts | ||||||
|  | msgid "Actions" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/groups/MemberSelectModal.ts | #: src/pages/groups/MemberSelectModal.ts | ||||||
| #: src/pages/users/UserListPage.ts | #: src/pages/users/UserListPage.ts | ||||||
| #: src/pages/users/UserViewPage.ts | #: src/pages/users/UserViewPage.ts | ||||||
| @ -1025,6 +1049,8 @@ msgid "Define how notifications are sent to users, like Email or Webhook." | |||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/elements/forms/DeleteForm.ts | #: src/elements/forms/DeleteForm.ts | ||||||
|  | #: src/elements/oauth/UserCodeList.ts | ||||||
|  | #: src/elements/oauth/UserRefreshList.ts | ||||||
| #: src/pages/applications/ApplicationListPage.ts | #: src/pages/applications/ApplicationListPage.ts | ||||||
| #: src/pages/crypto/CertificateKeyPairListPage.ts | #: src/pages/crypto/CertificateKeyPairListPage.ts | ||||||
| #: src/pages/events/RuleListPage.ts | #: src/pages/events/RuleListPage.ts | ||||||
| @ -1050,9 +1076,9 @@ msgstr "" | |||||||
| msgid "Delete" | msgid "Delete" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/elements/oauth/UserCodeList.ts | #:  | ||||||
| msgid "Delete Authorization Code" | #~ msgid "Delete Authorization Code" | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/flows/BoundStagesList.ts | #: src/pages/flows/BoundStagesList.ts | ||||||
| #: src/pages/policies/BoundPoliciesList.ts | #: src/pages/policies/BoundPoliciesList.ts | ||||||
| @ -1063,9 +1089,9 @@ msgstr "" | |||||||
| msgid "Delete Consent" | msgid "Delete Consent" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/elements/oauth/UserRefreshList.ts | #:  | ||||||
| msgid "Delete Refresh Code" | #~ msgid "Delete Refresh Code" | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/elements/user/SessionList.ts | #: src/elements/user/SessionList.ts | ||||||
| msgid "Delete Session" | msgid "Delete Session" | ||||||
| @ -1230,33 +1256,16 @@ msgstr "" | |||||||
| msgid "Each provider has a different issuer, based on the application slug." | msgid "Each provider has a different issuer, based on the application slug." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/applications/ApplicationListPage.ts |  | ||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/crypto/CertificateKeyPairListPage.ts |  | ||||||
| #: src/pages/events/RuleListPage.ts |  | ||||||
| #: src/pages/events/TransportListPage.ts |  | ||||||
| #: src/pages/flows/FlowListPage.ts |  | ||||||
| #: src/pages/groups/GroupListPage.ts |  | ||||||
| #: src/pages/outposts/OutpostListPage.ts |  | ||||||
| #: src/pages/outposts/OutpostListPage.ts |  | ||||||
| #: src/pages/outposts/ServiceConnectionListPage.ts |  | ||||||
| #: src/pages/policies/PolicyListPage.ts |  | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts |  | ||||||
| #: src/pages/providers/ProviderListPage.ts |  | ||||||
| #: src/pages/providers/ldap/LDAPProviderViewPage.ts | #: src/pages/providers/ldap/LDAPProviderViewPage.ts | ||||||
| #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts | #: src/pages/providers/oauth2/OAuth2ProviderViewPage.ts | ||||||
| #: src/pages/providers/proxy/ProxyProviderViewPage.ts | #: src/pages/providers/proxy/ProxyProviderViewPage.ts | ||||||
| #: src/pages/providers/saml/SAMLProviderViewPage.ts | #: src/pages/providers/saml/SAMLProviderViewPage.ts | ||||||
| #: src/pages/sources/SourcesListPage.ts |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceViewPage.ts | #: src/pages/sources/ldap/LDAPSourceViewPage.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceViewPage.ts | #: src/pages/sources/oauth/OAuthSourceViewPage.ts | ||||||
| #: src/pages/sources/plex/PlexSourceViewPage.ts | #: src/pages/sources/plex/PlexSourceViewPage.ts | ||||||
| #: src/pages/sources/saml/SAMLSourceViewPage.ts | #: src/pages/sources/saml/SAMLSourceViewPage.ts | ||||||
| #: src/pages/stages/StageListPage.ts |  | ||||||
| #: src/pages/stages/prompt/PromptListPage.ts |  | ||||||
| #: src/pages/tenants/TenantListPage.ts |  | ||||||
| #: src/pages/user-settings/tokens/UserTokenList.ts |  | ||||||
| #: src/pages/users/UserListPage.ts | #: src/pages/users/UserListPage.ts | ||||||
| #: src/pages/users/UserViewPage.ts | #: src/pages/users/UserViewPage.ts | ||||||
| msgid "Edit" | msgid "Edit" | ||||||
| @ -1932,6 +1941,10 @@ msgstr "" | |||||||
| msgid "Integration key" | msgid "Integration key" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/interfaces/AdminInterface.ts | ||||||
|  | msgid "Integrations" | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/proxy/ProxyProviderViewPage.ts | #: src/pages/providers/proxy/ProxyProviderViewPage.ts | ||||||
| msgid "Internal Host" | msgid "Internal Host" | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -2610,9 +2623,9 @@ msgstr "" | |||||||
| msgid "Only send notification once, for example when sending a webhook into a chat channel." | msgid "Only send notification once, for example when sending a webhook into a chat channel." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/applications/ApplicationListPage.ts | #:  | ||||||
| msgid "Open application" | #~ msgid "Open application" | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/events/EventInfo.ts | #: src/pages/events/EventInfo.ts | ||||||
| msgid "Open issue on GitHub..." | msgid "Open issue on GitHub..." | ||||||
| @ -2687,8 +2700,12 @@ msgstr "" | |||||||
| msgid "Outpost Deployment Info" | msgid "Outpost Deployment Info" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #:  | ||||||
|  | #~ msgid "Outpost Service-connection" | ||||||
|  | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionListPage.ts | #: src/pages/outposts/ServiceConnectionListPage.ts | ||||||
| msgid "Outpost Service-connection" | msgid "Outpost integration" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/admin-overview/AdminOverviewPage.ts | #: src/pages/admin-overview/AdminOverviewPage.ts | ||||||
| @ -3360,9 +3377,9 @@ msgstr "" | |||||||
| msgid "Server validation of credential failed: {err}" | msgid "Server validation of credential failed: {err}" | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/interfaces/AdminInterface.ts | #:  | ||||||
| msgid "Service Connections" | #~ msgid "Service Connections" | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/providers/saml/SAMLProviderForm.ts | #: src/pages/providers/saml/SAMLProviderForm.ts | ||||||
| msgid "Service Provider Binding" | msgid "Service Provider Binding" | ||||||
| @ -3644,6 +3661,11 @@ msgstr "" | |||||||
| msgid "Successfully created group." | msgid "Successfully created group." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/pages/outposts/ServiceConnectionDockerForm.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | ||||||
|  | msgid "Successfully created integration." | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/stages/invitation/InvitationForm.ts | #: src/pages/stages/invitation/InvitationForm.ts | ||||||
| msgid "Successfully created invitation." | msgid "Successfully created invitation." | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -3683,10 +3705,10 @@ msgstr "" | |||||||
| msgid "Successfully created rule." | msgid "Successfully created rule." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionDockerForm.ts | #:  | ||||||
| #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | #:  | ||||||
| msgid "Successfully created service-connection." | #~ msgid "Successfully created service-connection." | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts | #: src/pages/sources/ldap/LDAPSourceForm.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceForm.ts | #: src/pages/sources/oauth/OAuthSourceForm.ts | ||||||
| @ -3788,6 +3810,11 @@ msgstr "" | |||||||
| msgid "Successfully updated group." | msgid "Successfully updated group." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
|  | #: src/pages/outposts/ServiceConnectionDockerForm.ts | ||||||
|  | #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | ||||||
|  | msgid "Successfully updated integration." | ||||||
|  | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/stages/invitation/InvitationForm.ts | #: src/pages/stages/invitation/InvitationForm.ts | ||||||
| msgid "Successfully updated invitation." | msgid "Successfully updated invitation." | ||||||
| msgstr "" | msgstr "" | ||||||
| @ -3827,10 +3854,10 @@ msgstr "" | |||||||
| msgid "Successfully updated rule." | msgid "Successfully updated rule." | ||||||
| msgstr "" | msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/outposts/ServiceConnectionDockerForm.ts | #:  | ||||||
| #: src/pages/outposts/ServiceConnectionKubernetesForm.ts | #:  | ||||||
| msgid "Successfully updated service-connection." | #~ msgid "Successfully updated service-connection." | ||||||
| msgstr "" | #~ msgstr "" | ||||||
|  |  | ||||||
| #: src/pages/sources/ldap/LDAPSourceForm.ts | #: src/pages/sources/ldap/LDAPSourceForm.ts | ||||||
| #: src/pages/sources/oauth/OAuthSourceForm.ts | #: src/pages/sources/oauth/OAuthSourceForm.ts | ||||||
| @ -3986,7 +4013,6 @@ msgstr "" | |||||||
| #: src/pages/applications/ApplicationViewPage.ts | #: src/pages/applications/ApplicationViewPage.ts | ||||||
| #: src/pages/events/TransportListPage.ts | #: src/pages/events/TransportListPage.ts | ||||||
| #: src/pages/policies/PolicyListPage.ts | #: src/pages/policies/PolicyListPage.ts | ||||||
| #: src/pages/policies/PolicyListPage.ts |  | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
| #: src/pages/property-mappings/PropertyMappingListPage.ts | #: src/pages/property-mappings/PropertyMappingListPage.ts | ||||||
| msgid "Test" | msgid "Test" | ||||||
|  | |||||||
| @ -28,6 +28,8 @@ export class ApplicationListPage extends TablePage<Application> { | |||||||
|         return "pf-icon pf-icon-applications"; |         return "pf-icon pf-icon-applications"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -62,10 +64,33 @@ export class ApplicationListPage extends TablePage<Application> { | |||||||
|             new TableColumn(t`Slug`, "slug"), |             new TableColumn(t`Slug`, "slug"), | ||||||
|             new TableColumn(t`Provider`), |             new TableColumn(t`Provider`), | ||||||
|             new TableColumn(t`Provider Type`), |             new TableColumn(t`Provider Type`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Application`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreApplicationsUsedByList({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreApplicationsDestroy({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Application): TemplateResult[] { |     row(item: Application): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             item.metaIcon |             item.metaIcon | ||||||
| @ -91,7 +116,9 @@ export class ApplicationListPage extends TablePage<Application> { | |||||||
|                     <span slot="header"> ${t`Update Application`} </span> |                     <span slot="header"> ${t`Update Application`} </span> | ||||||
|                     <ak-application-form slot="form" .instancePk=${item.slug}> |                     <ak-application-form slot="form" .instancePk=${item.slug}> | ||||||
|                     </ak-application-form> |                     </ak-application-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                         <i class="fas fa-edit"></i> | ||||||
|  |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal> | ||||||
|                 ${item.launchUrl |                 ${item.launchUrl | ||||||
|                     ? html`<a |                     ? html`<a | ||||||
| @ -99,25 +126,9 @@ export class ApplicationListPage extends TablePage<Application> { | |||||||
|                           target="_blank" |                           target="_blank" | ||||||
|                           class="pf-c-button pf-m-secondary" |                           class="pf-c-button pf-m-secondary" | ||||||
|                       > |                       > | ||||||
|                           ${t`Open application`} |                           <i class="fas fas fa-share-square"></i> | ||||||
|                       </a>` |                       </a>` | ||||||
|                     : html``} |                     : html``}`, | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Application`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreApplicationsUsedByList({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreApplicationsDestroy({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import { DEFAULT_CONFIG } from "../../api/Config"; | |||||||
| @customElement("ak-crypto-certificate-list") | @customElement("ak-crypto-certificate-list") | ||||||
| export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> { | export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> { | ||||||
|     expandable = true; |     expandable = true; | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     searchEnabled(): boolean { |     searchEnabled(): boolean { | ||||||
|         return true; |         return true; | ||||||
| @ -53,38 +54,47 @@ export class CertificateKeyPairListPage extends TablePage<CertificateKeyPair> { | |||||||
|             new TableColumn(t`Name`, "name"), |             new TableColumn(t`Name`, "name"), | ||||||
|             new TableColumn(t`Private key available?`), |             new TableColumn(t`Private key available?`), | ||||||
|             new TableColumn(t`Expiry date`), |             new TableColumn(t`Expiry date`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Certificate-Key Pair`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsUsedByList({ | ||||||
|  |                     kpUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsDestroy({ | ||||||
|  |                     kpUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: CertificateKeyPair): TemplateResult[] { |     row(item: CertificateKeyPair): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
|             html`${item.privateKeyAvailable ? t`Yes` : t`No`}`, |             html`${item.privateKeyAvailable ? t`Yes` : t`No`}`, | ||||||
|             html`${item.certExpiry?.toLocaleString()}`, |             html`${item.certExpiry?.toLocaleString()}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Certificate-Key Pair`} </span> |                 <span slot="header"> ${t`Update Certificate-Key Pair`} </span> | ||||||
|                     <ak-crypto-certificate-form slot="form" .instancePk=${item.pk}> |                 <ak-crypto-certificate-form slot="form" .instancePk=${item.pk}> | ||||||
|                     </ak-crypto-certificate-form> |                 </ak-crypto-certificate-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                     <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                 </button> | ||||||
|                     .obj=${item} |             </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Certificate-Key Pair`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsUsedByList({ |  | ||||||
|                             kpUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CryptoApi(DEFAULT_CONFIG).cryptoCertificatekeypairsDestroy({ |  | ||||||
|                             kpUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -46,7 +46,7 @@ export class EventListPage extends TablePage<Event> { | |||||||
|             new TableColumn(t`Creation Date`, "created"), |             new TableColumn(t`Creation Date`, "created"), | ||||||
|             new TableColumn(t`Client IP`, "client_ip"), |             new TableColumn(t`Client IP`, "client_ip"), | ||||||
|             new TableColumn(t`Tenant`, "tenant_name"), |             new TableColumn(t`Tenant`, "tenant_name"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -16,6 +16,7 @@ import "./RuleForm"; | |||||||
| @customElement("ak-event-rule-list") | @customElement("ak-event-rule-list") | ||||||
| export class RuleListPage extends TablePage<NotificationRule> { | export class RuleListPage extends TablePage<NotificationRule> { | ||||||
|     expandable = true; |     expandable = true; | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     searchEnabled(): boolean { |     searchEnabled(): boolean { | ||||||
|         return true; |         return true; | ||||||
| @ -47,37 +48,46 @@ export class RuleListPage extends TablePage<NotificationRule> { | |||||||
|             new TableColumn(t`Name`, "name"), |             new TableColumn(t`Name`, "name"), | ||||||
|             new TableColumn(t`Severity`, "severity"), |             new TableColumn(t`Severity`, "severity"), | ||||||
|             new TableColumn(t`Sent to group`, "group"), |             new TableColumn(t`Sent to group`, "group"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Notification rule`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new EventsApi(DEFAULT_CONFIG).eventsRulesUsedByList({ | ||||||
|  |                     pbmUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new EventsApi(DEFAULT_CONFIG).eventsRulesDestroy({ | ||||||
|  |                     pbmUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: NotificationRule): TemplateResult[] { |     row(item: NotificationRule): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
|             html`${item.severity}`, |             html`${item.severity}`, | ||||||
|             html`${item.groupObj?.name || t`None (rule disabled)`}`, |             html`${item.groupObj?.name || t`None (rule disabled)`}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Notification Rule`} </span> |                 <span slot="header"> ${t`Update Notification Rule`} </span> | ||||||
|                     <ak-event-rule-form slot="form" .instancePk=${item.pk}> </ak-event-rule-form> |                 <ak-event-rule-form slot="form" .instancePk=${item.pk}> </ak-event-rule-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                     <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                 </button> | ||||||
|                     .obj=${item} |             </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Notification rule`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new EventsApi(DEFAULT_CONFIG).eventsRulesUsedByList({ |  | ||||||
|                             pbmUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new EventsApi(DEFAULT_CONFIG).eventsRulesDestroy({ |  | ||||||
|                             pbmUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -28,6 +28,8 @@ export class TransportListPage extends TablePage<NotificationTransport> { | |||||||
|         return "pf-icon pf-icon-export"; |         return "pf-icon pf-icon-export"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -44,10 +46,33 @@ export class TransportListPage extends TablePage<NotificationTransport> { | |||||||
|         return [ |         return [ | ||||||
|             new TableColumn(t`Name`, "name"), |             new TableColumn(t`Name`, "name"), | ||||||
|             new TableColumn(t`Mode`, "mode"), |             new TableColumn(t`Mode`, "mode"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Notifications Transport`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new EventsApi(DEFAULT_CONFIG).eventsTransportsUsedByList({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new EventsApi(DEFAULT_CONFIG).eventsTransportsDestroy({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: NotificationTransport): TemplateResult[] { |     row(item: NotificationTransport): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
| @ -66,24 +91,10 @@ export class TransportListPage extends TablePage<NotificationTransport> { | |||||||
|                     <span slot="header"> ${t`Update Notification Transport`} </span> |                     <span slot="header"> ${t`Update Notification Transport`} </span> | ||||||
|                     <ak-event-transport-form slot="form" .instancePk=${item.pk}> |                     <ak-event-transport-form slot="form" .instancePk=${item.pk}> | ||||||
|                     </ak-event-transport-form> |                     </ak-event-transport-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                         <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                     </button> | ||||||
|                     .obj=${item} |                 </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Notifications Transport`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new EventsApi(DEFAULT_CONFIG).eventsTransportsUsedByList({ |  | ||||||
|                             uuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new EventsApi(DEFAULT_CONFIG).eventsTransportsDestroy({ |  | ||||||
|                             uuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -20,6 +20,7 @@ import { ifDefined } from "lit-html/directives/if-defined"; | |||||||
| @customElement("ak-bound-stages-list") | @customElement("ak-bound-stages-list") | ||||||
| export class BoundStagesList extends Table<FlowStageBinding> { | export class BoundStagesList extends Table<FlowStageBinding> { | ||||||
|     expandable = true; |     expandable = true; | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     target?: string; |     target?: string; | ||||||
| @ -38,10 +39,33 @@ export class BoundStagesList extends Table<FlowStageBinding> { | |||||||
|             new TableColumn(t`Order`), |             new TableColumn(t`Order`), | ||||||
|             new TableColumn(t`Name`), |             new TableColumn(t`Name`), | ||||||
|             new TableColumn(t`Type`), |             new TableColumn(t`Type`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Stage binding`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUsedByList({ | ||||||
|  |                     fsbUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new FlowsApi(DEFAULT_CONFIG).flowsBindingsDestroy({ | ||||||
|  |                     fsbUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete Binding`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: FlowStageBinding): TemplateResult[] { |     row(item: FlowStageBinding): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.order}`, |             html`${item.order}`, | ||||||
| @ -70,25 +94,7 @@ export class BoundStagesList extends Table<FlowStageBinding> { | |||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary"> |                     <button slot="trigger" class="pf-c-button pf-m-secondary"> | ||||||
|                         ${t`Edit Binding`} |                         ${t`Edit Binding`} | ||||||
|                     </button> |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal>`, | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Stage binding`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new FlowsApi(DEFAULT_CONFIG).flowsBindingsUsedByList({ |  | ||||||
|                             fsbUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new FlowsApi(DEFAULT_CONFIG).flowsBindingsDestroy({ |  | ||||||
|                             fsbUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger"> |  | ||||||
|                         ${t`Delete Binding`} |  | ||||||
|                     </button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -29,6 +29,8 @@ export class FlowListPage extends TablePage<Flow> { | |||||||
|         return "pf-icon pf-icon-process-automation"; |         return "pf-icon pf-icon-process-automation"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "slug"; |     order = "slug"; | ||||||
|  |  | ||||||
| @ -48,10 +50,33 @@ export class FlowListPage extends TablePage<Flow> { | |||||||
|             new TableColumn(t`Designation`, "designation"), |             new TableColumn(t`Designation`, "designation"), | ||||||
|             new TableColumn(t`Stages`), |             new TableColumn(t`Stages`), | ||||||
|             new TableColumn(t`Policies`), |             new TableColumn(t`Policies`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Flow`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new FlowsApi(DEFAULT_CONFIG).flowsInstancesUsedByList({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new FlowsApi(DEFAULT_CONFIG).flowsInstancesDestroy({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Flow): TemplateResult[] { |     row(item: Flow): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`<a href="#/flow/flows/${item.slug}"> |             html`<a href="#/flow/flows/${item.slug}"> | ||||||
| @ -65,26 +90,12 @@ export class FlowListPage extends TablePage<Flow> { | |||||||
|                     <span slot="submit"> ${t`Update`} </span> |                     <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Flow`} </span> |                     <span slot="header"> ${t`Update Flow`} </span> | ||||||
|                     <ak-flow-form slot="form" .instancePk=${item.slug}> </ak-flow-form> |                     <ak-flow-form slot="form" .instancePk=${item.slug}> </ak-flow-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                         <i class="fas fa-edit"></i> | ||||||
|  |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal> | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Flow`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new FlowsApi(DEFAULT_CONFIG).flowsInstancesUsedByList({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new FlowsApi(DEFAULT_CONFIG).flowsInstancesDestroy({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete> |  | ||||||
|                 <button |                 <button | ||||||
|                     class="pf-c-button pf-m-secondary" |                     class="pf-c-button pf-m-plain" | ||||||
|                     @click=${() => { |                     @click=${() => { | ||||||
|                         new FlowsApi(DEFAULT_CONFIG) |                         new FlowsApi(DEFAULT_CONFIG) | ||||||
|                             .flowsInstancesExecuteRetrieve({ |                             .flowsInstancesExecuteRetrieve({ | ||||||
| @ -97,9 +108,11 @@ export class FlowListPage extends TablePage<Flow> { | |||||||
|                             }); |                             }); | ||||||
|                     }} |                     }} | ||||||
|                 > |                 > | ||||||
|                     ${t`Execute`} |                     <i class="fas fa-play"></i> | ||||||
|                 </button> |                 </button> | ||||||
|                 <a class="pf-c-button pf-m-secondary" href=${item.exportUrl}> ${t`Export`} </a>`, |                 <a class="pf-c-button pf-m-plain" href=${item.exportUrl}> | ||||||
|  |                     <i class="fas fa-download"></i> | ||||||
|  |                 </a>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ import "./GroupForm"; | |||||||
|  |  | ||||||
| @customElement("ak-group-list") | @customElement("ak-group-list") | ||||||
| export class GroupListPage extends TablePage<Group> { | export class GroupListPage extends TablePage<Group> { | ||||||
|  |     checkbox = true; | ||||||
|     searchEnabled(): boolean { |     searchEnabled(): boolean { | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
| @ -45,10 +46,33 @@ export class GroupListPage extends TablePage<Group> { | |||||||
|             new TableColumn(t`Parent`, "parent"), |             new TableColumn(t`Parent`, "parent"), | ||||||
|             new TableColumn(t`Members`), |             new TableColumn(t`Members`), | ||||||
|             new TableColumn(t`Superuser privileges?`), |             new TableColumn(t`Superuser privileges?`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Group`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreGroupsUsedByList({ | ||||||
|  |                     groupUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreGroupsDestroy({ | ||||||
|  |                     groupUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Group): TemplateResult[] { |     row(item: Group): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
| @ -56,27 +80,13 @@ export class GroupListPage extends TablePage<Group> { | |||||||
|             html`${Array.from(item.users || []).length}`, |             html`${Array.from(item.users || []).length}`, | ||||||
|             html`${item.isSuperuser ? t`Yes` : t`No`}`, |             html`${item.isSuperuser ? t`Yes` : t`No`}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Group`} </span> |                 <span slot="header"> ${t`Update Group`} </span> | ||||||
|                     <ak-group-form slot="form" .instancePk=${item.pk}> </ak-group-form> |                 <ak-group-form slot="form" .instancePk=${item.pk}> </ak-group-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                     <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                 </button> | ||||||
|                     .obj=${item} |             </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Group`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreGroupsUsedByList({ |  | ||||||
|                             groupUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreGroupsDestroy({ |  | ||||||
|                             groupUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -45,10 +45,12 @@ export class OutpostListPage extends TablePage<Outpost> { | |||||||
|             new TableColumn(t`Providers`), |             new TableColumn(t`Providers`), | ||||||
|             new TableColumn(t`Integration`, "service_connection__name"), |             new TableColumn(t`Integration`, "service_connection__name"), | ||||||
|             new TableColumn(t`Health and Version`), |             new TableColumn(t`Health and Version`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -71,24 +73,10 @@ export class OutpostListPage extends TablePage<Outpost> { | |||||||
|                     <span slot="submit"> ${t`Update`} </span> |                     <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Outpost`} </span> |                     <span slot="header"> ${t`Update Outpost`} </span> | ||||||
|                     <ak-outpost-form slot="form" .instancePk=${item.pk}> </ak-outpost-form> |                     <ak-outpost-form slot="form" .instancePk=${item.pk}> </ak-outpost-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                         <i class="fas fa-edit"></i> | ||||||
|  |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal> | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Outpost`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new OutpostsApi(DEFAULT_CONFIG).outpostsInstancesUsedByList({ |  | ||||||
|                             uuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new OutpostsApi(DEFAULT_CONFIG).outpostsInstancesDestroy({ |  | ||||||
|                             uuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete> |  | ||||||
|                 <ak-outpost-deployment-modal .outpost=${item} size=${PFSize.Medium}> |                 <ak-outpost-deployment-modal .outpost=${item} size=${PFSize.Medium}> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-tertiary"> |                     <button slot="trigger" class="pf-c-button pf-m-tertiary"> | ||||||
|                         ${t`View Deployment Info`} |                         ${t`View Deployment Info`} | ||||||
| @ -97,6 +85,29 @@ export class OutpostListPage extends TablePage<Outpost> { | |||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Outpost`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new OutpostsApi(DEFAULT_CONFIG).outpostsInstancesUsedByList({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new OutpostsApi(DEFAULT_CONFIG).outpostsInstancesDestroy({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     rowInbuilt(item: Outpost): TemplateResult[] { |     rowInbuilt(item: Outpost): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
| @ -116,7 +127,9 @@ export class OutpostListPage extends TablePage<Outpost> { | |||||||
|                 <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                 <span slot="header"> ${t`Update Outpost`} </span> |                 <span slot="header"> ${t`Update Outpost`} </span> | ||||||
|                 <ak-outpost-form slot="form" .instancePk=${item.pk}> </ak-outpost-form> |                 <ak-outpost-form slot="form" .instancePk=${item.pk}> </ak-outpost-form> | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                     <i class="fas fa-edit"></i> | ||||||
|  |                 </button> | ||||||
|             </ak-forms-modal>`, |             </ak-forms-modal>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -35,6 +35,8 @@ export class OutpostServiceConnectionListPage extends TablePage<ServiceConnectio | |||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     apiEndpoint(page: number): Promise<AKResponse<ServiceConnection>> { |     apiEndpoint(page: number): Promise<AKResponse<ServiceConnection>> { | ||||||
|         return new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllList({ |         return new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllList({ | ||||||
|             ordering: this.order, |             ordering: this.order, | ||||||
| @ -50,7 +52,7 @@ export class OutpostServiceConnectionListPage extends TablePage<ServiceConnectio | |||||||
|             new TableColumn(t`Type`), |             new TableColumn(t`Type`), | ||||||
|             new TableColumn(t`Local`, "local"), |             new TableColumn(t`Local`, "local"), | ||||||
|             new TableColumn(t`State`), |             new TableColumn(t`State`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -82,41 +84,46 @@ export class OutpostServiceConnectionListPage extends TablePage<ServiceConnectio | |||||||
|                 html`<ak-spinner></ak-spinner>`, |                 html`<ak-spinner></ak-spinner>`, | ||||||
|             )}`, |             )}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update ${item.verboseName}`} </span> |                 <span slot="header"> ${t`Update ${item.verboseName}`} </span> | ||||||
|                     <ak-proxy-form |                 <ak-proxy-form | ||||||
|                         slot="form" |                     slot="form" | ||||||
|                         .args=${{ |                     .args=${{ | ||||||
|                             instancePk: item.pk, |                         instancePk: item.pk, | ||||||
|                         }} |  | ||||||
|                         type=${ifDefined(item.component)} |  | ||||||
|                     > |  | ||||||
|                     </ak-proxy-form> |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |  | ||||||
|                 </ak-forms-modal> |  | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Outpost integration`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new OutpostsApi( |  | ||||||
|                             DEFAULT_CONFIG, |  | ||||||
|                         ).outpostsServiceConnectionsAllUsedByList({ |  | ||||||
|                             uuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllDestroy( |  | ||||||
|                             { |  | ||||||
|                                 uuid: item.pk, |  | ||||||
|                             }, |  | ||||||
|                         ); |  | ||||||
|                     }} |                     }} | ||||||
|  |                     type=${ifDefined(item.component)} | ||||||
|                 > |                 > | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |                 </ak-proxy-form> | ||||||
|                 </ak-forms-delete>`, |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                     <i class="fas fa-edit"></i> | ||||||
|  |                 </button> | ||||||
|  |             </ak-forms-modal>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Outpost integration`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllUsedByList({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new OutpostsApi(DEFAULT_CONFIG).outpostsServiceConnectionsAllDestroy({ | ||||||
|  |                     uuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     renderToolbar(): TemplateResult { |     renderToolbar(): TemplateResult { | ||||||
|         return html` <ak-dropdown class="pf-c-dropdown"> |         return html` <ak-dropdown class="pf-c-dropdown"> | ||||||
|                 <button class="pf-m-primary pf-c-dropdown__toggle" type="button"> |                 <button class="pf-m-primary pf-c-dropdown__toggle" type="button"> | ||||||
|  | |||||||
| @ -28,6 +28,8 @@ export class BoundPoliciesList extends Table<PolicyBinding> { | |||||||
|     @property({ type: Boolean }) |     @property({ type: Boolean }) | ||||||
|     policyOnly = false; |     policyOnly = false; | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     apiEndpoint(page: number): Promise<AKResponse<PolicyBinding>> { |     apiEndpoint(page: number): Promise<AKResponse<PolicyBinding>> { | ||||||
|         return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsList({ |         return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsList({ | ||||||
|             target: this.target || "", |             target: this.target || "", | ||||||
| @ -43,7 +45,7 @@ export class BoundPoliciesList extends Table<PolicyBinding> { | |||||||
|             new TableColumn(t`Enabled`, "enabled"), |             new TableColumn(t`Enabled`, "enabled"), | ||||||
|             new TableColumn(t`Order`, "order"), |             new TableColumn(t`Order`, "order"), | ||||||
|             new TableColumn(t`Timeout`, "timeout"), |             new TableColumn(t`Timeout`, "timeout"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -93,6 +95,29 @@ export class BoundPoliciesList extends Table<PolicyBinding> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Policy binding`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsUsedByList({ | ||||||
|  |                     policyBindingUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsDestroy({ | ||||||
|  |                     policyBindingUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete Binding`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: PolicyBinding): TemplateResult[] { |     row(item: PolicyBinding): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${this.getPolicyUserGroupRow(item)}`, |             html`${this.getPolicyUserGroupRow(item)}`, | ||||||
| @ -113,25 +138,7 @@ export class BoundPoliciesList extends Table<PolicyBinding> { | |||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary"> |                     <button slot="trigger" class="pf-c-button pf-m-secondary"> | ||||||
|                         ${t`Edit Binding`} |                         ${t`Edit Binding`} | ||||||
|                     </button> |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal>`, | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Policy binding`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsUsedByList({ |  | ||||||
|                             policyBindingUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new PoliciesApi(DEFAULT_CONFIG).policiesBindingsDestroy({ |  | ||||||
|                             policyBindingUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger"> |  | ||||||
|                         ${t`Delete Binding`} |  | ||||||
|                     </button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -39,6 +39,8 @@ export class PolicyListPage extends TablePage<Policy> { | |||||||
|         return "pf-icon pf-icon-infrastructure"; |         return "pf-icon pf-icon-infrastructure"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -97,7 +99,6 @@ export class PolicyListPage extends TablePage<Policy> { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     renderToolbarSelected(): TemplateResult { |     renderToolbarSelected(): TemplateResult { | ||||||
|         // TODO: bulk delete |  | ||||||
|         const disabled = this.selectedElements.length !== 1; |         const disabled = this.selectedElements.length !== 1; | ||||||
|         const item = this.selectedElements[0]; |         const item = this.selectedElements[0]; | ||||||
|         return html`<ak-forms-delete |         return html`<ak-forms-delete | ||||||
|  | |||||||
| @ -30,6 +30,8 @@ export class IPReputationListPage extends TablePage<IPReputation> { | |||||||
|     @property() |     @property() | ||||||
|     order = "ip"; |     order = "ip"; | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     apiEndpoint(page: number): Promise<AKResponse<IPReputation>> { |     apiEndpoint(page: number): Promise<AKResponse<IPReputation>> { | ||||||
|         return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsList({ |         return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsList({ | ||||||
|             ordering: this.order, |             ordering: this.order, | ||||||
| @ -43,30 +45,34 @@ export class IPReputationListPage extends TablePage<IPReputation> { | |||||||
|         return [ |         return [ | ||||||
|             new TableColumn(t`IP`, "ip"), |             new TableColumn(t`IP`, "ip"), | ||||||
|             new TableColumn(t`Score`, "score"), |             new TableColumn(t`Score`, "score"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`IP Reputation`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: IPReputation): TemplateResult[] { |     row(item: IPReputation): TemplateResult[] { | ||||||
|         return [ |         return [html`${item.ip}`, html`${item.score}`]; | ||||||
|             html`${item.ip}`, |  | ||||||
|             html`${item.score}`, |  | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`IP Reputation`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsUsedByList({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new PoliciesApi(DEFAULT_CONFIG).policiesReputationIpsDestroy({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -27,6 +27,8 @@ export class UserReputationListPage extends TablePage<UserReputation> { | |||||||
|         return "fa fa-ban"; |         return "fa fa-ban"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "username"; |     order = "username"; | ||||||
|  |  | ||||||
| @ -40,33 +42,33 @@ export class UserReputationListPage extends TablePage<UserReputation> { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
|         return [ |         return [new TableColumn(t`Username`, "username"), new TableColumn(t`Score`, "score")]; | ||||||
|             new TableColumn(t`Username`, "username"), |     } | ||||||
|             new TableColumn(t`Score`, "score"), |  | ||||||
|             new TableColumn("Actions"), |     renderToolbarSelected(): TemplateResult { | ||||||
|         ]; |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`User Reputation`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUsersUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUsersDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     row(item: UserReputation): TemplateResult[] { |     row(item: UserReputation): TemplateResult[] { | ||||||
|         return [ |         return [html`${item.username}`, html`${item.score}`]; | ||||||
|             html`${item.username}`, |  | ||||||
|             html`${item.score}`, |  | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`User Reputation`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUsersUsedByList({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUsersDestroy({ |  | ||||||
|                         id: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |  | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -34,6 +34,8 @@ export class PropertyMappingListPage extends TablePage<PropertyMapping> { | |||||||
|         return "pf-icon pf-icon-blueprint"; |         return "pf-icon pf-icon-blueprint"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -54,10 +56,33 @@ export class PropertyMappingListPage extends TablePage<PropertyMapping> { | |||||||
|         return [ |         return [ | ||||||
|             new TableColumn(t`Name`, "name"), |             new TableColumn(t`Name`, "name"), | ||||||
|             new TableColumn(t`Type`, "type"), |             new TableColumn(t`Type`, "type"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html` <ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Property Mapping`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllUsedByList({ | ||||||
|  |                     pmUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllDestroy({ | ||||||
|  |                     pmUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: PropertyMapping): TemplateResult[] { |     row(item: PropertyMapping): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.name}`, |             html`${item.name}`, | ||||||
| @ -73,7 +98,9 @@ export class PropertyMappingListPage extends TablePage<PropertyMapping> { | |||||||
|                         type=${ifDefined(item.component)} |                         type=${ifDefined(item.component)} | ||||||
|                     > |                     > | ||||||
|                     </ak-proxy-form> |                     </ak-proxy-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                         <i class="fas fa-edit"></i> | ||||||
|  |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal> | ||||||
|                 <ak-forms-modal .closeAfterSuccessfulSubmit=${false}> |                 <ak-forms-modal .closeAfterSuccessfulSubmit=${false}> | ||||||
|                     <span slot="submit"> ${t`Test`} </span> |                     <span slot="submit"> ${t`Test`} </span> | ||||||
| @ -81,25 +108,7 @@ export class PropertyMappingListPage extends TablePage<PropertyMapping> { | |||||||
|                     <ak-property-mapping-test-form slot="form" .mapping=${item}> |                     <ak-property-mapping-test-form slot="form" .mapping=${item}> | ||||||
|                     </ak-property-mapping-test-form> |                     </ak-property-mapping-test-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Test`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Test`}</button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal>`, | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Property Mapping`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new PropertymappingsApi( |  | ||||||
|                             DEFAULT_CONFIG, |  | ||||||
|                         ).propertymappingsAllUsedByList({ |  | ||||||
|                             pmUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllDestroy({ |  | ||||||
|                             pmUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -35,6 +35,8 @@ export class ProviderListPage extends TablePage<Provider> { | |||||||
|         return "pf-icon pf-icon-integration"; |         return "pf-icon pf-icon-integration"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -52,10 +54,33 @@ export class ProviderListPage extends TablePage<Provider> { | |||||||
|             new TableColumn(t`Name`, "name"), |             new TableColumn(t`Name`, "name"), | ||||||
|             new TableColumn(t`Application`), |             new TableColumn(t`Application`), | ||||||
|             new TableColumn(t`Type`), |             new TableColumn(t`Type`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Provider`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new ProvidersApi(DEFAULT_CONFIG).providersAllUsedByList({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new ProvidersApi(DEFAULT_CONFIG).providersAllDestroy({ | ||||||
|  |                     id: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Provider): TemplateResult[] { |     row(item: Provider): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`<a href="#/core/providers/${item.pk}"> ${item.name} </a>`, |             html`<a href="#/core/providers/${item.pk}"> ${item.name} </a>`, | ||||||
| @ -69,34 +94,20 @@ export class ProviderListPage extends TablePage<Provider> { | |||||||
|                       ${t`Warning: Provider not assigned to any application.`}`, |                       ${t`Warning: Provider not assigned to any application.`}`, | ||||||
|             html`${item.verboseName}`, |             html`${item.verboseName}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update ${item.verboseName}`} </span> |                 <span slot="header"> ${t`Update ${item.verboseName}`} </span> | ||||||
|                     <ak-proxy-form |                 <ak-proxy-form | ||||||
|                         slot="form" |                     slot="form" | ||||||
|                         .args=${{ |                     .args=${{ | ||||||
|                             instancePk: item.pk, |                         instancePk: item.pk, | ||||||
|                         }} |  | ||||||
|                         type=${ifDefined(item.component)} |  | ||||||
|                     > |  | ||||||
|                     </ak-proxy-form> |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |  | ||||||
|                 </ak-forms-modal> |  | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Provider`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new ProvidersApi(DEFAULT_CONFIG).providersAllUsedByList({ |  | ||||||
|                             id: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new ProvidersApi(DEFAULT_CONFIG).providersAllDestroy({ |  | ||||||
|                             id: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |                     }} | ||||||
|  |                     type=${ifDefined(item.component)} | ||||||
|                 > |                 > | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |                 </ak-proxy-form> | ||||||
|                 </ak-forms-delete>`, |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                     <i class="fas fa-edit"></i> | ||||||
|  |                 </button> | ||||||
|  |             </ak-forms-modal>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -34,6 +34,8 @@ export class SourceListPage extends TablePage<Source> { | |||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -50,6 +52,29 @@ export class SourceListPage extends TablePage<Source> { | |||||||
|         return [new TableColumn(t`Name`, "name"), new TableColumn(t`Type`), new TableColumn("")]; |         return [new TableColumn(t`Name`, "name"), new TableColumn(t`Type`), new TableColumn("")]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Source`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new SourcesApi(DEFAULT_CONFIG).sourcesAllUsedByList({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new SourcesApi(DEFAULT_CONFIG).sourcesAllDestroy({ | ||||||
|  |                     slug: item.slug, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Source): TemplateResult[] { |     row(item: Source): TemplateResult[] { | ||||||
|         if (item.component === "") { |         if (item.component === "") { | ||||||
|             return this.rowInbuilt(item); |             return this.rowInbuilt(item); | ||||||
| @ -61,34 +86,20 @@ export class SourceListPage extends TablePage<Source> { | |||||||
|             </a>`, |             </a>`, | ||||||
|             html`${item.verboseName}`, |             html`${item.verboseName}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update ${item.verboseName}`} </span> |                 <span slot="header"> ${t`Update ${item.verboseName}`} </span> | ||||||
|                     <ak-proxy-form |                 <ak-proxy-form | ||||||
|                         slot="form" |                     slot="form" | ||||||
|                         .args=${{ |                     .args=${{ | ||||||
|                             instancePk: item.slug, |                         instancePk: item.slug, | ||||||
|                         }} |  | ||||||
|                         type=${ifDefined(item.component)} |  | ||||||
|                     > |  | ||||||
|                     </ak-proxy-form> |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |  | ||||||
|                 </ak-forms-modal> |  | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Source`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new SourcesApi(DEFAULT_CONFIG).sourcesAllUsedByList({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new SourcesApi(DEFAULT_CONFIG).sourcesAllDestroy({ |  | ||||||
|                             slug: item.slug, |  | ||||||
|                         }); |  | ||||||
|                     }} |                     }} | ||||||
|  |                     type=${ifDefined(item.component)} | ||||||
|                 > |                 > | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |                 </ak-proxy-form> | ||||||
|                 </ak-forms-delete>`, |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                     <i class="fas fa-edit"></i> | ||||||
|  |                 </button> | ||||||
|  |             </ak-forms-modal>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -49,6 +49,8 @@ export class StageListPage extends TablePage<Stage> { | |||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "name"; |     order = "name"; | ||||||
|  |  | ||||||
| @ -62,7 +64,34 @@ export class StageListPage extends TablePage<Stage> { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     columns(): TableColumn[] { |     columns(): TableColumn[] { | ||||||
|         return [new TableColumn(t`Name`, "name"), new TableColumn(t`Flows`), new TableColumn("")]; |         return [ | ||||||
|  |             new TableColumn(t`Name`, "name"), | ||||||
|  |             new TableColumn(t`Flows`), | ||||||
|  |             new TableColumn(t`Actions`), | ||||||
|  |         ]; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${item?.verboseName} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesAllUsedByList({ | ||||||
|  |                     stageUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesAllDestroy({ | ||||||
|  |                     stageUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     row(item: Stage): TemplateResult[] { |     row(item: Stage): TemplateResult[] { | ||||||
| @ -77,34 +106,20 @@ export class StageListPage extends TablePage<Stage> { | |||||||
|                 </a>`; |                 </a>`; | ||||||
|             })}`, |             })}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update ${item.verboseName}`} </span> |                 <span slot="header"> ${t`Update ${item.verboseName}`} </span> | ||||||
|                     <ak-proxy-form |                 <ak-proxy-form | ||||||
|                         slot="form" |                     slot="form" | ||||||
|                         .args=${{ |                     .args=${{ | ||||||
|                             instancePk: item.pk, |                         instancePk: item.pk, | ||||||
|                         }} |  | ||||||
|                         type=${ifDefined(item.component)} |  | ||||||
|                     > |  | ||||||
|                     </ak-proxy-form> |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |  | ||||||
|                 </ak-forms-modal> |  | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${item.verboseName || ""} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new StagesApi(DEFAULT_CONFIG).stagesAllUsedByList({ |  | ||||||
|                             stageUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new StagesApi(DEFAULT_CONFIG).stagesAllDestroy({ |  | ||||||
|                             stageUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |                     }} | ||||||
|  |                     type=${ifDefined(item.component)} | ||||||
|                 > |                 > | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |                 </ak-proxy-form> | ||||||
|                 </ak-forms-delete>`, |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                     <i class="fas fa-edit"></i> | ||||||
|  |                 </button> | ||||||
|  |             </ak-forms-modal>`, | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -31,6 +31,8 @@ export class InvitationListPage extends TablePage<Invitation> { | |||||||
|         return "pf-icon pf-icon-migration"; |         return "pf-icon pf-icon-migration"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "expires"; |     order = "expires"; | ||||||
|  |  | ||||||
| @ -48,31 +50,37 @@ export class InvitationListPage extends TablePage<Invitation> { | |||||||
|             new TableColumn(t`ID`, "pk"), |             new TableColumn(t`ID`, "pk"), | ||||||
|             new TableColumn(t`Created by`, "created_by"), |             new TableColumn(t`Created by`, "created_by"), | ||||||
|             new TableColumn(t`Expiry`), |             new TableColumn(t`Expiry`), | ||||||
|             new TableColumn("Actions"), |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Invitation`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsUsedByList({ | ||||||
|  |                     inviteUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsDestroy({ | ||||||
|  |                     inviteUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Invitation): TemplateResult[] { |     row(item: Invitation): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.pk}`, |             html`${item.pk}`, | ||||||
|             html`${item.createdBy?.username}`, |             html`${item.createdBy?.username}`, | ||||||
|             html`${item.expires?.toLocaleString() || "-"}`, |             html`${item.expires?.toLocaleString() || "-"}`, | ||||||
|             html` <ak-forms-delete |  | ||||||
|                 .obj=${item} |  | ||||||
|                 objectLabel=${t`Invitation`} |  | ||||||
|                 .usedBy=${() => { |  | ||||||
|                     return new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsUsedByList({ |  | ||||||
|                         inviteUuid: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|                 .delete=${() => { |  | ||||||
|                     return new StagesApi(DEFAULT_CONFIG).stagesInvitationInvitationsDestroy({ |  | ||||||
|                         inviteUuid: item.pk, |  | ||||||
|                     }); |  | ||||||
|                 }} |  | ||||||
|             > |  | ||||||
|                 <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|             </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -28,6 +28,8 @@ export class PromptListPage extends TablePage<Prompt> { | |||||||
|         return "pf-icon pf-icon-plugged"; |         return "pf-icon pf-icon-plugged"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "order"; |     order = "order"; | ||||||
|  |  | ||||||
| @ -47,10 +49,33 @@ export class PromptListPage extends TablePage<Prompt> { | |||||||
|             new TableColumn(t`Type`, "type"), |             new TableColumn(t`Type`, "type"), | ||||||
|             new TableColumn(t`Order`, "order"), |             new TableColumn(t`Order`, "order"), | ||||||
|             new TableColumn(t`Stages`), |             new TableColumn(t`Stages`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Prompt`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesPromptPromptsUsedByList({ | ||||||
|  |                     promptUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new StagesApi(DEFAULT_CONFIG).stagesPromptPromptsDestroy({ | ||||||
|  |                     promptUuid: item.pk, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Prompt): TemplateResult[] { |     row(item: Prompt): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.fieldKey}`, |             html`${item.fieldKey}`, | ||||||
| @ -61,27 +86,13 @@ export class PromptListPage extends TablePage<Prompt> { | |||||||
|                 return html`<li>${stage.name}</li>`; |                 return html`<li>${stage.name}</li>`; | ||||||
|             })}`, |             })}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Prompt`} </span> |                 <span slot="header"> ${t`Update Prompt`} </span> | ||||||
|                     <ak-prompt-form slot="form" .instancePk=${item.pk}> </ak-prompt-form> |                 <ak-prompt-form slot="form" .instancePk=${item.pk}> </ak-prompt-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                     <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                 </button> | ||||||
|                     .obj=${item} |             </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Prompt`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new StagesApi(DEFAULT_CONFIG).stagesPromptPromptsUsedByList({ |  | ||||||
|                             promptUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new StagesApi(DEFAULT_CONFIG).stagesPromptPromptsDestroy({ |  | ||||||
|                             promptUuid: item.pk, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -56,7 +56,7 @@ export class SystemTaskListPage extends TablePage<Task> { | |||||||
|             new TableColumn(t`Description`), |             new TableColumn(t`Description`), | ||||||
|             new TableColumn(t`Last run`), |             new TableColumn(t`Last run`), | ||||||
|             new TableColumn(t`Status`), |             new TableColumn(t`Status`), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -27,6 +27,8 @@ export class TenantListPage extends TablePage<Tenant> { | |||||||
|         return "pf-icon pf-icon-tenant"; |         return "pf-icon pf-icon-tenant"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "domain"; |     order = "domain"; | ||||||
|  |  | ||||||
| @ -43,36 +45,45 @@ export class TenantListPage extends TablePage<Tenant> { | |||||||
|         return [ |         return [ | ||||||
|             new TableColumn(t`Domain`, "domain"), |             new TableColumn(t`Domain`, "domain"), | ||||||
|             new TableColumn(t`Default?`, "default"), |             new TableColumn(t`Default?`, "default"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Tenant`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreTenantsUsedByList({ | ||||||
|  |                     tenantUuid: item.tenantUuid, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreTenantsDestroy({ | ||||||
|  |                     tenantUuid: item.tenantUuid, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Tenant): TemplateResult[] { |     row(item: Tenant): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.domain}`, |             html`${item.domain}`, | ||||||
|             html`${item._default ? t`Yes` : t`No`}`, |             html`${item._default ? t`Yes` : t`No`}`, | ||||||
|             html` <ak-forms-modal> |             html` <ak-forms-modal> | ||||||
|                     <span slot="submit"> ${t`Update`} </span> |                 <span slot="submit"> ${t`Update`} </span> | ||||||
|                     <span slot="header"> ${t`Update Tenant`} </span> |                 <span slot="header"> ${t`Update Tenant`} </span> | ||||||
|                     <ak-tenant-form slot="form" .instancePk=${item.tenantUuid}> </ak-tenant-form> |                 <ak-tenant-form slot="form" .instancePk=${item.tenantUuid}> </ak-tenant-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                 <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|                 </ak-forms-modal> |                     <i class="fas fa-edit"></i> | ||||||
|                 <ak-forms-delete |                 </button> | ||||||
|                     .obj=${item} |             </ak-forms-modal>`, | ||||||
|                     objectLabel=${t`Tenant`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreTenantsUsedByList({ |  | ||||||
|                             tenantUuid: item.tenantUuid, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreTenantsDestroy({ |  | ||||||
|                             tenantUuid: item.tenantUuid, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete>`, |  | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -26,6 +26,8 @@ export class TokenListPage extends TablePage<Token> { | |||||||
|         return "pf-icon pf-icon-security"; |         return "pf-icon pf-icon-security"; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "expires"; |     order = "expires"; | ||||||
|  |  | ||||||
| @ -44,10 +46,33 @@ export class TokenListPage extends TablePage<Token> { | |||||||
|             new TableColumn(t`User`, "user"), |             new TableColumn(t`User`, "user"), | ||||||
|             new TableColumn(t`Expires?`, "expiring"), |             new TableColumn(t`Expires?`, "expiring"), | ||||||
|             new TableColumn(t`Expiry date`, "expires"), |             new TableColumn(t`Expiry date`, "expires"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Token`} | ||||||
|  |             .usedBy=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreTokensUsedByList({ | ||||||
|  |                     identifier: item.identifier, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreTokensDestroy({ | ||||||
|  |                     identifier: item.identifier, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Token): TemplateResult[] { |     row(item: Token): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.identifier}`, |             html`${item.identifier}`, | ||||||
| @ -55,22 +80,6 @@ export class TokenListPage extends TablePage<Token> { | |||||||
|             html`${item.expiring ? t`Yes` : t`No`}`, |             html`${item.expiring ? t`Yes` : t`No`}`, | ||||||
|             html`${item.expiring ? item.expires?.toLocaleString() : "-"}`, |             html`${item.expiring ? item.expires?.toLocaleString() : "-"}`, | ||||||
|             html` |             html` | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Token`} |  | ||||||
|                     .usedBy=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreTokensUsedByList({ |  | ||||||
|                             identifier: item.identifier, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreTokensDestroy({ |  | ||||||
|                             identifier: item.identifier, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete> |  | ||||||
|                 <ak-token-copy-button identifier="${item.identifier}"> |                 <ak-token-copy-button identifier="${item.identifier}"> | ||||||
|                     ${t`Copy Key`} |                     ${t`Copy Key`} | ||||||
|                 </ak-token-copy-button> |                 </ak-token-copy-button> | ||||||
|  | |||||||
| @ -21,6 +21,7 @@ export class UserTokenList extends Table<Token> { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     expandable = true; |     expandable = true; | ||||||
|  |     checkbox = true; | ||||||
|  |  | ||||||
|     @property() |     @property() | ||||||
|     order = "expires"; |     order = "expires"; | ||||||
| @ -94,6 +95,24 @@ export class UserTokenList extends Table<Token> { | |||||||
|             <td></td>`; |             <td></td>`; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     renderToolbarSelected(): TemplateResult { | ||||||
|  |         const disabled = this.selectedElements.length !== 1; | ||||||
|  |         const item = this.selectedElements[0]; | ||||||
|  |         return html`<ak-forms-delete | ||||||
|  |             .obj=${item} | ||||||
|  |             objectLabel=${t`Token`} | ||||||
|  |             .delete=${() => { | ||||||
|  |                 return new CoreApi(DEFAULT_CONFIG).coreTokensDestroy({ | ||||||
|  |                     identifier: item.identifier, | ||||||
|  |                 }); | ||||||
|  |             }} | ||||||
|  |         > | ||||||
|  |             <button ?disabled=${disabled} slot="trigger" class="pf-c-button pf-m-danger"> | ||||||
|  |                 ${t`Delete`} | ||||||
|  |             </button> | ||||||
|  |         </ak-forms-delete>`; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     row(item: Token): TemplateResult[] { |     row(item: Token): TemplateResult[] { | ||||||
|         return [ |         return [ | ||||||
|             html`${item.identifier}`, |             html`${item.identifier}`, | ||||||
| @ -103,19 +122,10 @@ export class UserTokenList extends Table<Token> { | |||||||
|                     <span slot="header"> ${t`Update Token`} </span> |                     <span slot="header"> ${t`Update Token`} </span> | ||||||
|                     <ak-user-token-form slot="form" .instancePk=${item.identifier}> |                     <ak-user-token-form slot="form" .instancePk=${item.identifier}> | ||||||
|                     </ak-user-token-form> |                     </ak-user-token-form> | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-secondary">${t`Edit`}</button> |                     <button slot="trigger" class="pf-c-button pf-m-plain"> | ||||||
|  |                         <i class="fas fa-edit"></i> | ||||||
|  |                     </button> | ||||||
|                 </ak-forms-modal> |                 </ak-forms-modal> | ||||||
|                 <ak-forms-delete |  | ||||||
|                     .obj=${item} |  | ||||||
|                     objectLabel=${t`Token`} |  | ||||||
|                     .delete=${() => { |  | ||||||
|                         return new CoreApi(DEFAULT_CONFIG).coreTokensDestroy({ |  | ||||||
|                             identifier: item.identifier, |  | ||||||
|                         }); |  | ||||||
|                     }} |  | ||||||
|                 > |  | ||||||
|                     <button slot="trigger" class="pf-c-button pf-m-danger">${t`Delete`}</button> |  | ||||||
|                 </ak-forms-delete> |  | ||||||
|                 <ak-token-copy-button identifier="${item.identifier}"> |                 <ak-token-copy-button identifier="${item.identifier}"> | ||||||
|                     ${t`Copy Key`} |                     ${t`Copy Key`} | ||||||
|                 </ak-token-copy-button> |                 </ak-token-copy-button> | ||||||
|  | |||||||
| @ -58,7 +58,7 @@ export class UserListPage extends TablePage<User> { | |||||||
|             new TableColumn(t`Name`, "username"), |             new TableColumn(t`Name`, "username"), | ||||||
|             new TableColumn(t`Active`, "active"), |             new TableColumn(t`Active`, "active"), | ||||||
|             new TableColumn(t`Last login`, "last_login"), |             new TableColumn(t`Last login`, "last_login"), | ||||||
|             new TableColumn("Actions"), |             new TableColumn(t`Actions`), | ||||||
|         ]; |         ]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Jens Langhammer
					Jens Langhammer