diff --git a/.changeset/eight-melons-cough.md b/.changeset/eight-melons-cough.md new file mode 100644 index 0000000000..23d7b901f1 --- /dev/null +++ b/.changeset/eight-melons-cough.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog': patch +--- + +Create an experimental `CatalogSearchResultItemExtension` for declarative integration with Backstage; it can be accessed via the `/alpha` import. diff --git a/plugins/catalog/alpha-api-report.md b/plugins/catalog/alpha-api-report.md index 060baeccbf..e89807ac34 100644 --- a/plugins/catalog/alpha-api-report.md +++ b/plugins/catalog/alpha-api-report.md @@ -5,19 +5,14 @@ ```ts import { BackstagePlugin } from '@backstage/frontend-plugin-api'; import { Extension } from '@backstage/frontend-plugin-api'; -import { TranslationRef } from '@backstage/core-plugin-api/alpha'; // @alpha (undocumented) export const CatalogApi: Extension<{}>; // @alpha (undocumented) -export const catalogTranslationRef: TranslationRef< - 'catalog', - { - readonly catalog_page_title: '{{orgName}} Catalog'; - readonly catalog_page_create_button_title: 'Create'; - } ->; +export const CatalogSearchResultListItemExtension: Extension<{ + noTrack?: boolean | undefined; +}>; // @alpha (undocumented) const _default: BackstagePlugin; diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 4ef0db4910..8ae615ec36 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -10,13 +10,13 @@ }, "exports": { ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", + "./alpha": "./src/alpha.tsx", "./package.json": "./package.json" }, "typesVersions": { "*": { "alpha": [ - "src/alpha.ts" + "src/alpha.tsx" ], "package.json": [ "package.json" diff --git a/plugins/catalog/src/alpha.ts b/plugins/catalog/src/alpha.tsx similarity index 75% rename from plugins/catalog/src/alpha.ts rename to plugins/catalog/src/alpha.tsx index 82e592d5b7..5e78a52f9b 100644 --- a/plugins/catalog/src/alpha.ts +++ b/plugins/catalog/src/alpha.tsx @@ -14,8 +14,6 @@ * limitations under the License. */ -export * from './translation'; - import { createApiFactory, discoveryApiRef, @@ -31,6 +29,7 @@ import { catalogApiRef, starredEntitiesApiRef, } from '@backstage/plugin-catalog-react'; +import { createSearchResultListItemExtension } from '@backstage/plugin-search-react/alpha'; import { DefaultStarredEntitiesApi } from './apis'; /** @alpha */ @@ -55,8 +54,23 @@ export const StarredEntitiesApi = createApiExtension({ }), }); +/** @alpha */ +export const CatalogSearchResultListItemExtension = + createSearchResultListItemExtension({ + id: 'catalog', + predicate: result => result.type === 'software-catalog', + component: () => + import('./components/CatalogSearchResultListItem').then( + m => m.CatalogSearchResultListItem, + ), + }); + /** @alpha */ export default createPlugin({ id: 'catalog', - extensions: [CatalogApi, StarredEntitiesApi], + extensions: [ + CatalogApi, + StarredEntitiesApi, + CatalogSearchResultListItemExtension, + ], });