From 7db2f073225b8abec467b078850dd5b0284c4778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 19 Mar 2026 10:11:03 +0100 Subject: [PATCH] Show inline spinner in table title during filter refresh MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When filters change and a fetch is in progress but stale data is still displayed, show a small circular spinner after the title text (e.g. "Owned Components (5) ⟳") to indicate that updated results are being loaded. Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: Fredrik Adelöw --- .../src/components/CatalogTable/CatalogTable.tsx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx index 165d75bf48..1a9d363ec4 100644 --- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx +++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx @@ -34,6 +34,7 @@ import { useEntityList, useStarredEntities, } from '@backstage/plugin-catalog-react'; +import CircularProgress from '@material-ui/core/CircularProgress'; import Typography from '@material-ui/core/Typography'; import { visuallyHidden } from '@mui/utils'; import Edit from '@material-ui/icons/Edit'; @@ -195,11 +196,20 @@ export const CatalogTable = (props: CatalogTableProps) => { const titlePreamble = capitalize( filters.user?.value ?? t('catalogTable.allFilters'), ); - const title = + const titleText = props.title || [titlePreamble, currentType, pluralize(currentKind), currentCount] .filter(s => s) .join(' '); + const title = + loading && !isLoading ? ( + <> + {titleText}{' '} + + + ) : ( + titleText + ); const actions = props.actions || defaultActions; const options: TableProps['options'] = {