Merge pull request #27936 from janogonzalez/has-subdomains-card-columns

Configurable columns for HasSubdomainsCard and new defaults
This commit is contained in:
Patrik Oldsberg
2024-12-09 15:57:00 +01:00
committed by GitHub
5 changed files with 40 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-catalog': minor
---
Adds an optional columns attribute to HasSubdomainsCardProps and changes its default columns
+3
View File
@@ -10,6 +10,7 @@ import { BackstagePlugin } from '@backstage/core-plugin-api';
import { CatalogApi } from '@backstage/plugin-catalog-react';
import { ComponentEntity } from '@backstage/catalog-model';
import { CompoundEntityRef } from '@backstage/catalog-model';
import { DomainEntity } from '@backstage/catalog-model';
import { Entity } from '@backstage/catalog-model';
import { EntityListContextProps } from '@backstage/plugin-catalog-react';
import { EntityListPagination } from '@backstage/plugin-catalog-react';
@@ -585,6 +586,8 @@ export interface HasSubcomponentsCardProps {
// @public (undocumented)
export interface HasSubdomainsCardProps {
// (undocumented)
columns?: TableColumn<DomainEntity>[];
// (undocumented)
tableOptions?: TableOptions;
// (undocumented)
@@ -14,12 +14,17 @@
* limitations under the License.
*/
import { RELATION_HAS_PART } from '@backstage/catalog-model';
import { InfoCardVariants, TableOptions } from '@backstage/core-components';
import { DomainEntity, RELATION_HAS_PART } from '@backstage/catalog-model';
import {
InfoCardVariants,
TableColumn,
TableOptions,
} from '@backstage/core-components';
import React from 'react';
import {
asComponentEntities,
componentEntityColumns,
asDomainEntities,
domainEntityColumns,
domainEntityHelpLink,
RelatedEntitiesCard,
} from '../RelatedEntitiesCard';
import { catalogTranslationRef } from '../../alpha/translation';
@@ -29,6 +34,7 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha';
export interface HasSubdomainsCardProps {
variant?: InfoCardVariants;
tableOptions?: TableOptions;
columns?: TableColumn<DomainEntity>[];
title?: string;
}
@@ -36,8 +42,9 @@ export function HasSubdomainsCard(props: HasSubdomainsCardProps) {
const { t } = useTranslationRef(catalogTranslationRef);
const {
variant = 'gridItem',
tableOptions = {},
title = t('hasSubdomainsCard.title'),
columns = domainEntityColumns,
tableOptions = {},
} = props;
return (
<RelatedEntitiesCard
@@ -45,10 +52,10 @@ export function HasSubdomainsCard(props: HasSubdomainsCardProps) {
title={title}
entityKind="Domain"
relationType={RELATION_HAS_PART}
columns={componentEntityColumns}
asRenderableEntities={asComponentEntities}
columns={columns}
asRenderableEntities={asDomainEntities}
emptyMessage={t('hasSubdomainsCard.emptyMessage')}
emptyHelpLink="https://backstage.io/docs/features/software-catalog/descriptor-format/#specsubdomainof-optional"
emptyHelpLink={domainEntityHelpLink}
tableOptions={tableOptions}
/>
);
@@ -33,10 +33,13 @@ import {
} from '@backstage/core-components';
import {
asComponentEntities,
asDomainEntities,
asResourceEntities,
asSystemEntities,
componentEntityColumns,
componentEntityHelpLink,
domainEntityColumns,
domainEntityHelpLink,
resourceEntityColumns,
resourceEntityHelpLink,
systemEntityColumns,
@@ -137,3 +140,6 @@ RelatedEntitiesCard.asResourceEntities = asResourceEntities;
RelatedEntitiesCard.systemEntityColumns = systemEntityColumns;
RelatedEntitiesCard.systemEntityHelpLink = systemEntityHelpLink;
RelatedEntitiesCard.asSystemEntities = asSystemEntities;
RelatedEntitiesCard.domainEntityColums = domainEntityColumns;
RelatedEntitiesCard.domainEntityHelpLink = domainEntityHelpLink;
RelatedEntitiesCard.asDomainEntities = asDomainEntities;
@@ -15,6 +15,7 @@
*/
import {
ComponentEntity,
DomainEntity,
Entity,
ResourceEntity,
SystemEntity,
@@ -55,3 +56,13 @@ export const systemEntityHelpLink: string =
'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-system';
export const asSystemEntities = (entities: Entity[]): SystemEntity[] =>
entities as SystemEntity[];
export const domainEntityColumns: TableColumn<DomainEntity>[] = [
EntityTable.columns.createEntityRefColumn({ defaultKind: 'domain' }),
EntityTable.columns.createOwnerColumn(),
EntityTable.columns.createMetadataDescriptionColumn(),
];
export const domainEntityHelpLink: string =
'https://backstage.io/docs/features/software-catalog/descriptor-format#kind-domain';
export const asDomainEntities = (entities: Entity[]): DomainEntity[] =>
entities as DomainEntity[];