add blueprint extension for result type filter in search plugin

Signed-off-by: Mark Dunphy <markd@spotify.com>
This commit is contained in:
Mark Dunphy
2025-01-07 17:17:13 -05:00
parent aaad211d68
commit d90f71068a
7 changed files with 271 additions and 23 deletions
+12 -2
View File
@@ -61,7 +61,10 @@ import {
} from '@backstage/plugin-search-react';
import { SearchResult } from '@backstage/plugin-search-common';
import { searchApiRef } from '@backstage/plugin-search-react';
import { SearchResultListItemBlueprint } from '@backstage/plugin-search-react/alpha';
import {
SearchResultListItemBlueprint,
SearchFilterResultTypeBlueprint,
} from '@backstage/plugin-search-react/alpha';
import { rootRouteRef } from './plugin';
import { SearchClient } from './apis';
@@ -106,6 +109,9 @@ export const searchPage = PageBlueprint.makeWithOverrides({
},
inputs: {
items: createExtensionInput([SearchResultListItemBlueprint.dataRefs.item]),
resultTypes: createExtensionInput([
SearchFilterResultTypeBlueprint.dataRefs.resultType,
]),
},
factory(originalFactory, { config, inputs }) {
return originalFactory({
@@ -124,6 +130,10 @@ export const searchPage = PageBlueprint.makeWithOverrides({
);
};
const resultTypes = inputs.resultTypes.map(item =>
item.get(SearchFilterResultTypeBlueprint.dataRefs.resultType),
);
const Component = () => {
const classes = useSearchPageStyles();
const { isMobile } = useSidebarPinState();
@@ -155,7 +165,7 @@ export const searchPage = PageBlueprint.makeWithOverrides({
name: 'Documentation',
icon: <DocsIcon />,
},
]}
].concat(resultTypes)}
/>
<Paper className={classes.filters}>
{types.includes('techdocs') && (