feat: give component EntityMembersListCard a memberType prop

Signed-off-by: djamaile <rdjamaile@gmail.com>
This commit is contained in:
Djamaile Rahamat
2022-01-08 19:47:13 +01:00
committed by djamaile
parent 508b3ffb36
commit 3f08dcd696
4 changed files with 40 additions and 3 deletions
+13
View File
@@ -0,0 +1,13 @@
---
'@backstage/plugin-org': patch
---
For the component `EntityMembersListCard` you can now specify the type of members you have in a group. For example:
```tsx
<Grid item xs={12}>
<EntityMembersListCard memberType="Ninja's" />
</Grid>
```
If left empty it will by default use 'Members'.
+5 -1
View File
@@ -26,6 +26,7 @@ export const EntityGroupProfileCard: ({
// @public (undocumented)
export const EntityMembersListCard: (_props: {
entity?: GroupEntity | undefined;
memberType?: string | undefined;
}) => JSX.Element;
// Warning: (ae-missing-release-tag) "EntityOwnershipCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
@@ -63,7 +64,10 @@ export const GroupProfileCard: ({
// Warning: (ae-missing-release-tag) "MembersListCard" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export const MembersListCard: (_props: { entity?: GroupEntity }) => JSX.Element;
export const MembersListCard: (_props: {
entity?: GroupEntity;
memberType?: string;
}) => JSX.Element;
// Warning: (ae-missing-release-tag) "orgPlugin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
@@ -132,4 +132,19 @@ describe('MemberTab Test', () => {
expect(rendered.getByText('Members (1)')).toBeInTheDocument();
});
it('Can render different member type', async () => {
const rendered = await renderWithEffects(
wrapInTestApp(
<TestApiProvider apis={[[catalogApiRef, catalogApi]]}>
<EntityProvider entity={groupEntity}>
<MembersListCard memberType="Testers" />
</EntityProvider>
,
</TestApiProvider>,
),
);
expect(rendered.getByText('Testers (1)')).toBeInTheDocument();
});
});
@@ -111,8 +111,10 @@ const MemberComponent = ({ member }: { member: UserEntity }) => {
export const MembersListCard = (_props: {
/** @deprecated The entity is now grabbed from context instead */
entity?: GroupEntity;
memberType?: string;
}) => {
const { entity: groupEntity } = useEntity<GroupEntity>();
let { memberType } = _props;
const {
metadata: { name: groupName, namespace: grpNamespace },
spec: { profile },
@@ -128,6 +130,7 @@ export const MembersListCard = (_props: {
setPage(pageIndex);
};
const pageSize = 50;
memberType = memberType ? memberType : 'Members';
const {
loading,
@@ -173,7 +176,7 @@ export const MembersListCard = (_props: {
return (
<Grid item>
<InfoCard
title={`Members (${members?.length || 0}${paginationLabel})`}
title={`${memberType} (${members?.length || 0}${paginationLabel})`}
subheader={`of ${displayName}`}
{...(nbPages <= 1 ? {} : { actions: pagination })}
>
@@ -186,7 +189,9 @@ export const MembersListCard = (_props: {
))
) : (
<Box p={2}>
<Typography>This group has no members.</Typography>
<Typography>
This group has no ${memberType.toLocaleLowerCase()}.
</Typography>
</Box>
)}
</Grid>