catalog: replace configure with i18n

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2023-09-23 17:37:56 +02:00
parent e232feec21
commit 28f1ab2e1a
9 changed files with 88 additions and 34 deletions
+20
View File
@@ -0,0 +1,20 @@
---
'@backstage/plugin-catalog': minor
---
The catalog plugin no longer implements the experimental reconfiguration API. The create button title can now instead be configured using the new experimental internationalization API, via the `catalogTranslationRef` exported at `/alpha`. For example:
```ts
import { catalogTranslationRef } from '@backstage/plugin-catalog/alpha';
const app = createApp({
__experimentalTranslations: {
resources: [
createTranslationMessages({
ref: catalogTranslationRef,
catalog_page_create_button_title: 'Create Software',
}),
],
},
});
```
+18
View File
@@ -0,0 +1,18 @@
## API Report File for "@backstage/plugin-catalog"
> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).
```ts
import { TranslationRef } from '@backstage/core-plugin-api/alpha';
// @alpha (undocumented)
export const catalogTranslationRef: TranslationRef<
'catalog',
{
readonly catalog_page_title: '{{orgName}} Catalog';
readonly catalog_page_create_button_title: 'Create';
}
>;
// (No @packageDocumentation comment for this package)
```
+1 -2
View File
@@ -117,8 +117,7 @@ export const catalogPlugin: BackstagePlugin<
},
true
>;
},
CatalogInputPluginOptions
}
>;
// @public (undocumented)
+16 -3
View File
@@ -6,9 +6,22 @@
"types": "src/index.ts",
"license": "Apache-2.0",
"publishConfig": {
"access": "public",
"main": "dist/index.esm.js",
"types": "dist/index.d.ts"
"access": "public"
},
"exports": {
".": "./src/index.ts",
"./alpha": "./src/alpha.ts",
"./package.json": "./package.json"
},
"typesVersions": {
"*": {
"alpha": [
"src/alpha.ts"
],
"package.json": [
"package.json"
]
}
},
"backstage": {
"role": "frontend-plugin"
+17
View File
@@ -0,0 +1,17 @@
/*
* Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
export * from './translation';
@@ -29,7 +29,6 @@ import {
MockStarredEntitiesApi,
starredEntitiesApiRef,
} from '@backstage/plugin-catalog-react';
import { MockPluginProvider } from '@backstage/test-utils/alpha';
import {
mockBreakpoint,
MockStorageApi,
@@ -133,7 +132,7 @@ describe('DefaultCatalogPage', () => {
[starredEntitiesApiRef, new MockStarredEntitiesApi()],
]}
>
<MockPluginProvider>{children}</MockPluginProvider>
{children}
</TestApiProvider>,
{
mountedRoutes: {
@@ -41,7 +41,8 @@ import {
import React, { ReactNode } from 'react';
import { createComponentRouteRef } from '../../routes';
import { CatalogTable, CatalogTableRow } from '../CatalogTable';
import { useCatalogPluginOptions } from '../../options';
import { catalogTranslationRef } from '../../translation';
import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
/**
* Props for root catalog pages.
@@ -71,15 +72,14 @@ export function DefaultCatalogPage(props: DefaultCatalogPageProps) {
const orgName =
useApi(configApiRef).getOptionalString('organization.name') ?? 'Backstage';
const createComponentLink = useRouteRef(createComponentRouteRef);
const { createButtonTitle } = useCatalogPluginOptions();
const { t } = useTranslationRef(catalogTranslationRef);
return (
<PageWithHeader title={`${orgName} Catalog`} themeId="home">
<PageWithHeader title={t('catalog_page_title', { orgName })} themeId="home">
<Content>
<ContentHeader title="">
<CreateButton
title={createButtonTitle}
title={t('catalog_page_create_button_title')}
to={createComponentLink && createComponentLink()}
/>
<SupportButton>All your software catalog entities</SupportButton>
-9
View File
@@ -52,7 +52,6 @@ import { HasSystemsCardProps } from './components/HasSystemsCard';
import { RelatedEntitiesCardProps } from './components/RelatedEntitiesCard';
import { CatalogSearchResultListItemProps } from './components/CatalogSearchResultListItem';
import { rootRouteRef } from './routes';
import { CatalogInputPluginOptions, CatalogPluginOptions } from './options';
/** @public */
export const catalogPlugin = createPlugin({
@@ -83,14 +82,6 @@ export const catalogPlugin = createPlugin({
viewTechDoc: viewTechDocRouteRef,
createFromTemplate: createFromTemplateRouteRef,
},
__experimentalConfigure(
options?: CatalogInputPluginOptions,
): CatalogPluginOptions {
const defaultOptions = {
createButtonTitle: 'Create',
};
return { ...defaultOptions, ...options };
},
});
/** @public */
@@ -1,5 +1,5 @@
/*
* Copyright 2020 The Backstage Authors
* Copyright 2023 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,16 +14,13 @@
* limitations under the License.
*/
import { usePluginOptions } from '@backstage/core-plugin-api/alpha';
import { createTranslationRef } from '@backstage/core-plugin-api/alpha';
export type CatalogPluginOptions = {
createButtonTitle: string;
};
/** @ignore */
export type CatalogInputPluginOptions = {
createButtonTitle: string;
};
export const useCatalogPluginOptions = () =>
usePluginOptions<CatalogPluginOptions>();
/** @alpha */
export const catalogTranslationRef = createTranslationRef({
id: 'catalog',
messages: {
catalog_page_title: `{{orgName}} Catalog`,
catalog_page_create_button_title: 'Create',
},
});