diff --git a/.changeset/funny-pianos-grow.md b/.changeset/funny-pianos-grow.md
new file mode 100644
index 0000000000..7823ca82b0
--- /dev/null
+++ b/.changeset/funny-pianos-grow.md
@@ -0,0 +1,5 @@
+---
+'@backstage/plugin-catalog-react': patch
+---
+
+Fixed bug in `EntityTagPicker` that filtered on unavailable tags for the selected kind.
diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
index 7da357d806..de7bbb89be 100644
--- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
+++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.test.tsx
@@ -202,4 +202,33 @@ describe('', () => {
tags: new EntityTagFilter(['tag2']),
});
});
+ it('removes tags from filters if there are none available', async () => {
+ const updateFilters = jest.fn();
+ const mockCatalogApiRefNoTags = {
+ getEntityFacets: async () => ({
+ facets: {
+ 'metadata.tags': {},
+ },
+ }),
+ } as unknown as CatalogApi;
+
+ render(
+
+
+
+
+ ,
+ ,
+ );
+ await waitFor(() =>
+ expect(updateFilters).toHaveBeenLastCalledWith({
+ tags: undefined,
+ }),
+ );
+ });
});
diff --git a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
index 25f02e8adc..4a1dc03e96 100644
--- a/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
+++ b/plugins/catalog-react/src/components/EntityTagPicker/EntityTagPicker.tsx
@@ -93,10 +93,14 @@ export const EntityTagPicker = (props: EntityTagPickerProps) => {
}, [queryParamTags]);
useEffect(() => {
+ const tags = Object.keys(availableTags ?? {});
updateFilters({
- tags: selectedTags.length ? new EntityTagFilter(selectedTags) : undefined,
+ tags:
+ selectedTags.length && tags.length
+ ? new EntityTagFilter(selectedTags)
+ : undefined,
});
- }, [selectedTags, updateFilters]);
+ }, [selectedTags, updateFilters, availableTags]);
if (!Object.keys(availableTags ?? {}).length) return null;