From 601ef75e2e48ef4cdf419f779d57fd171e3f03ff Mon Sep 17 00:00:00 2001 From: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com> Date: Tue, 4 Aug 2026 18:13:36 +0530 Subject: [PATCH] fix: IAM page UI changes (#13618) --- .../pages/iamPages/iamFormValidationPage.js | 3 +- web/src/components/iam/IngestionTokens.vue | 21 +++++++++ web/src/components/iam/SyntheticsTokens.vue | 46 ++++++++++++++++--- web/src/components/iam/roles/AppRoles.spec.ts | 6 +-- web/src/components/iam/roles/AppRoles.vue | 2 +- web/src/lib/core/Badge/badgeGroups.ts | 2 +- .../vue-shortcut-manager/shortcutRegistry.ts | 23 ++++++++++ web/src/locales/languages/en-US.json | 6 ++- 8 files changed, 94 insertions(+), 15 deletions(-) diff --git a/tests/ui-testing/pages/iamPages/iamFormValidationPage.js b/tests/ui-testing/pages/iamPages/iamFormValidationPage.js index 71e3b328b2..f9b17a520b 100644 --- a/tests/ui-testing/pages/iamPages/iamFormValidationPage.js +++ b/tests/ui-testing/pages/iamPages/iamFormValidationPage.js @@ -36,8 +36,7 @@ export class IamFormValidationPage { this.groupCancelBtn = '[data-test="add-group-dialog"] [data-test="o-dialog-secondary-btn"]'; // ── Role form ───────────────────────────────────────────────────────── - // Add role button in AppRoles.vue currently uses this data-test value - this.addRoleButton = '[data-test="alert-list-add-alert-btn"]'; + this.addRoleButton = '[data-test="iam-roles-add-role-btn"]'; this.roleDialog = '[data-test="add-role-dialog"]'; // OInput data-test="add-role-rolename-input-btn" → -field / -error this.roleNameInput = '[data-test="add-role-rolename-input-btn-field"]'; diff --git a/web/src/components/iam/IngestionTokens.vue b/web/src/components/iam/IngestionTokens.vue index 15103187ab..fdb072334a 100644 --- a/web/src/components/iam/IngestionTokens.vue +++ b/web/src/components/iam/IngestionTokens.vue @@ -64,6 +64,12 @@ along with this program. If not, see . :persist-columns="true" table-id="iam-ingestion-tokens" filter-mode="client" + pagination="client" + :page-size="20" + :page-size-options="[20, 50, 100, 250, 500]" + sorting="client" + show-index + :footer-title="t('iam.ingestionTokens')" > + + @@ -221,6 +231,7 @@ import ODialog from "@/lib/overlay/Dialog/ODialog.vue"; import OForm from "@/lib/forms/Form/OForm.vue"; import OFormInput from "@/lib/forms/Input/OFormInput.vue"; import OTable from "@/lib/core/Table/OTable.vue"; +import OTag from "@/lib/core/Badge/OTag.vue"; import OCodeCell from "@/lib/core/Table/cells/OCodeCell.vue"; import OUserCell from "@/lib/core/Table/cells/OUserCell.vue"; import { @@ -260,6 +271,7 @@ export default defineComponent({ OForm, OFormInput, OTable, + OTag, OCodeCell, OUserCell, }, @@ -308,6 +320,15 @@ export default defineComponent({ size: 340, meta: { align: "left" }, }, + { + id: "status", + header: t("ingestion.tokenStatus"), + accessorKey: "enabled", + sortable: true, + hideable: true, + size: 120, + meta: { align: "left" }, + }, { id: "created_by", header: t("ingestion.createdBy"), diff --git a/web/src/components/iam/SyntheticsTokens.vue b/web/src/components/iam/SyntheticsTokens.vue index a6ad616142..b21892abcf 100644 --- a/web/src/components/iam/SyntheticsTokens.vue +++ b/web/src/components/iam/SyntheticsTokens.vue @@ -65,10 +65,17 @@ along with this program. If not, see . :loading="loading" v-model:global-filter="filterQuery" :show-global-filter="false" + :default-columns="false" :enable-column-resize="true" :persist-columns="true" table-id="iam-synthetics-tokens" filter-mode="client" + pagination="client" + :page-size="20" + :page-size-options="[20, 50, 100, 250, 500]" + sorting="client" + show-index + :footer-title="t('synthetics.tokens.title')" > diff --git a/web/src/lib/core/Badge/badgeGroups.ts b/web/src/lib/core/Badge/badgeGroups.ts index e2a3e7bcc4..c520ffac0b 100644 --- a/web/src/lib/core/Badge/badgeGroups.ts +++ b/web/src/lib/core/Badge/badgeGroups.ts @@ -556,7 +556,7 @@ export const BADGE_GROUPS = { featureStatus: { mode: "plain", shape: "pill", - size: "md", + size: "sm", values: { enabled: { variant: "success" }, disabled: { variant: "error" }, diff --git a/web/src/lib/vue-shortcut-manager/shortcutRegistry.ts b/web/src/lib/vue-shortcut-manager/shortcutRegistry.ts index 4690bdbd6a..c6cceda52b 100644 --- a/web/src/lib/vue-shortcut-manager/shortcutRegistry.ts +++ b/web/src/lib/vue-shortcut-manager/shortcutRegistry.ts @@ -656,6 +656,29 @@ export const SHORTCUT_REGISTRY: ShortcutGroup[] = [ ], }, + // ── IAM — Synthetics Tokens ───────────────────────────────────────────── + { + pageKey: "shortcuts.pages.syntheticsTokens", + scope: "synthetics-tokens", + shortcuts: [ + { + id: "syntheticsTokensAdd", + key: "n", + descriptionKey: "shortcuts.actions.syntheticsTokensAdd", + }, + { + id: "syntheticsTokensRefresh", + key: "r", + descriptionKey: "shortcuts.actions.syntheticsTokensRefresh", + }, + { + id: "syntheticsTokensFocusSearch", + key: "/", + descriptionKey: "shortcuts.actions.focusSearch", + }, + ], + }, + // ── Running Queries ───────────────────────────────────────────────────── { pageKey: "shortcuts.pages.runningQueries", diff --git a/web/src/locales/languages/en-US.json b/web/src/locales/languages/en-US.json index 0575234bcd..dbeac35ccf 100644 --- a/web/src/locales/languages/en-US.json +++ b/web/src/locales/languages/en-US.json @@ -2848,7 +2848,8 @@ "tokenRotateError": "Failed to rotate token.", "tokenDeleteError": "Failed to delete token.", "noTokensFound": "No ingestion tokens found.", - "createdBy": "Created by" + "createdBy": "Created by", + "tokenStatus": "Status" }, "dashboard": { "autoName": { @@ -10827,6 +10828,7 @@ "traceDetail": "Trace Detail", "runningQueries": "Running Queries", "ingestionTokens": "IAM — Ingestion Tokens", + "syntheticsTokens": "IAM — Synthetics Tokens", "alertIncidents": "Alerts — Incidents", "pipelineDestinations": "Pipelines — Destinations", "enrichmentTables": "Enrichment Tables", @@ -10924,6 +10926,8 @@ "runningQueriesRefresh": "Refresh query list", "ingestionTokensAdd": "Create new token", "ingestionTokensRefresh": "Refresh token list", + "syntheticsTokensAdd": "Create new token", + "syntheticsTokensRefresh": "Refresh token list", "aiChatToggle": "Toggle AI chat", "dashboardEdit": "Enter / exit edit mode", "logsSaveView": "Save as saved view",