From 77994a008ac36a655a135b643c8b54dcd80cadc3 Mon Sep 17 00:00:00 2001 From: Teffen Ellis <592134+GirlBossRush@users.noreply.github.com> Date: Thu, 27 Aug 2026 02:19:26 +0100 Subject: [PATCH] web: Fix disabled token icon buttons. --- web/src/admin/tokens/TokenListPage.ts | 14 ++------ .../elements/buttons/IconTokenEditButton.ts | 33 +++++++++++++++++++ web/src/elements/table/Table.css | 9 +++++ 3 files changed, 45 insertions(+), 11 deletions(-) create mode 100644 web/src/elements/buttons/IconTokenEditButton.ts diff --git a/web/src/admin/tokens/TokenListPage.ts b/web/src/admin/tokens/TokenListPage.ts index db4dfa46b0..3e4e8dd86b 100644 --- a/web/src/admin/tokens/TokenListPage.ts +++ b/web/src/admin/tokens/TokenListPage.ts @@ -11,7 +11,8 @@ import { aki } from "#common/api/client"; import { formatIntentLabel } from "#common/labels"; import { IconTokenCopyButton } from "#elements/buttons/IconTokenCopyButton"; -import { IconEditButton, ModalInvokerButton } from "#elements/dialogs"; +import { IconTokenEditButton } from "#elements/buttons/IconTokenEditButton"; +import { ModalInvokerButton } from "#elements/dialogs"; import { IconPermissionButton } from "#elements/dialogs/components/IconPermissionButton"; import { PaginatedResponse, TableColumn, Timestamp } from "#elements/table/Table"; import { TablePage } from "#elements/table/TablePage"; @@ -96,16 +97,7 @@ export class TokenListPage extends TablePage { Timestamp(item.expires && item.expiring ? item.expires : null), html`${formatIntentLabel(item.intent ?? IntentEnum.Api)}`, html`
- ${!item.managed - ? IconEditButton(TokenForm, item.identifier, item.identifier) - : html``} + ${IconTokenEditButton(item)} ${IconPermissionButton(item.identifier, { model: ModelEnum.AuthentikCoreToken, objectPk: item.pk, diff --git a/web/src/elements/buttons/IconTokenEditButton.ts b/web/src/elements/buttons/IconTokenEditButton.ts new file mode 100644 index 0000000000..50f99f6b7d --- /dev/null +++ b/web/src/elements/buttons/IconTokenEditButton.ts @@ -0,0 +1,33 @@ +import { IconEditButton } from "#elements/dialogs/components/IconEditButton"; +import { SlottedTemplateResult } from "#elements/types"; + +import { TokenForm } from "#admin/tokens/TokenForm"; + +import { Token } from "@goauthentik/api"; + +import { msg } from "@lit/localize"; +import { html } from "lit-html"; +import { guard } from "lit-html/directives/guard.js"; + +function stopEventPropagation(event: Event): void { + event.stopPropagation(); +} + +export function IconTokenEditButton(token?: Token | null): SlottedTemplateResult { + return guard([token, token?.identifier, token?.managed], () => { + if (!token) { + return null; + } + + if (token.managed) { + const label = msg("Managed tokens cannot be edited."); + return html` + `; + } + + return IconEditButton(TokenForm, token.identifier, token.identifier); + }); +} diff --git a/web/src/elements/table/Table.css b/web/src/elements/table/Table.css index 136b43ff48..74831fc7e8 100644 --- a/web/src/elements/table/Table.css +++ b/web/src/elements/table/Table.css @@ -69,6 +69,15 @@ .pf-c-button:not(:has(i)):not(:first-child) { margin-inline-start: var(--pf-global--spacer--sm); } + + pf-tooltip { + user-select: none; + cursor: help; + + button:disabled { + opacity: 0.5; + } + } } td.pf-c-table__toggle:first-child > .pf-c-button {