Skip to content

Commit fdeeb76

Browse files
committed
feat: add onRemove and onAssignRole props to DNamespaceMember components for enhanced member management
1 parent 96ec910 commit fdeeb76

File tree

3 files changed

+16
-9
lines changed

3 files changed

+16
-9
lines changed

src/components/d-member/DNamespaceMemberCard.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@ import {NamespaceMember} from "@code0-tech/sagittarius-graphql-types";
22
import {Card} from "../card/Card";
33
import React from "react";
44
import {DNamespaceMemberContent} from "./DNamespaceMemberContent";
5+
import {DNamespaceMemberView} from "./DNamespaceMember.view";
56

67
export interface DNamespaceMemberCardProps {
78
memberId: NamespaceMember["id"]
9+
onRemove?: (member: DNamespaceMemberView) => void
10+
onAssignRole?: (member: DNamespaceMemberView) => void
811
}
912

1013
export const DNamespaceMemberCard: React.FC<DNamespaceMemberCardProps> = (props) => {
11-
const {
12-
memberId
13-
} = props
14+
const {memberId, onRemove, onAssignRole} = props
1415

1516
return <Card>
16-
<DNamespaceMemberContent memberId={memberId}/>
17+
<DNamespaceMemberContent onRemove={onRemove} onAssignRole={onAssignRole} memberId={memberId}/>
1718
</Card>
1819
}

src/components/d-member/DNamespaceMemberContent.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,18 @@ import {Button} from "../button/Button";
1313
import {Tooltip, TooltipArrow, TooltipContent, TooltipPortal, TooltipTrigger} from "../tooltip/Tooltip";
1414
import {DNamespaceRolePermissions} from "../d-role/DNamespaceRolePermissions";
1515
import {Menu, MenuContent, MenuItem, MenuLabel, MenuPortal, MenuTrigger} from "../menu/Menu";
16+
import {DNamespaceMemberView} from "./DNamespaceMember.view";
1617

1718
export interface DNamespaceMemberContentProps {
1819
memberId: NamespaceMember['id']
20+
onRemove?: (member: DNamespaceMemberView) => void
21+
onAssignRole?: (member: DNamespaceMemberView) => void
1922
}
2023

2124
export const DNamespaceMemberContent: React.FC<DNamespaceMemberContentProps> = (props) => {
2225

23-
const {memberId} = props
26+
const {memberId, onAssignRole = () => undefined, onRemove = () => undefined} = props
27+
2428
const memberService = useService(DNamespaceMemberReactiveService)
2529
const memberStore = useStore(DNamespaceMemberReactiveService)
2630
const userService = useService(DUserReactiveService)
@@ -92,13 +96,13 @@ export const DNamespaceMemberContent: React.FC<DNamespaceMemberContentProps> = (
9296
<MenuContent align={"end"} side={"bottom"} sideOffset={8}>
9397
<MenuLabel>Actions</MenuLabel>
9498
{member?.userAbilities?.deleteMember && (
95-
<MenuItem>
99+
<MenuItem onSelect={() => onRemove(member)}>
96100
<IconUserOff size={16}/>
97101
<Text>Remove member</Text>
98102
</MenuItem>
99103
)}
100104
{member?.userAbilities?.assignMemberRoles && (
101-
<MenuItem>
105+
<MenuItem onSelect={() => onAssignRole(member)}>
102106
<IconUserCog size={16}/>
103107
<Text>Assign role</Text>
104108
</MenuItem>

src/components/d-member/DNamespaceMemberList.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ import {DNamespaceMemberContent} from "./DNamespaceMemberContent";
1212
export interface DNamespaceMemberListProps extends Omit<Card, "children" | "onSelect"> {
1313
namespaceId: Namespace["id"]
1414
filter?: (runtime: DNamespaceMemberView, index: number) => boolean
15+
onRemove?: (member: DNamespaceMemberView) => void
16+
onAssignRole?: (member: DNamespaceMemberView) => void
1517
}
1618

1719
export const DNamespaceMemberList: React.FC<DNamespaceMemberListProps> = (props) => {
1820

19-
const {namespaceId, filter = () => true, ...rest} = props
21+
const {namespaceId, filter = () => true, onRemove, onAssignRole, ...rest} = props
2022

2123
const memberService = useService(DNamespaceMemberReactiveService)
2224
const memberStore = useStore(DNamespaceMemberReactiveService)
@@ -26,7 +28,7 @@ export const DNamespaceMemberList: React.FC<DNamespaceMemberListProps> = (props)
2628
return <Card {...rest}>
2729
{members.filter(filter).map((member) => member && member.id && (
2830
<CardSection border key={member.id}>
29-
<DNamespaceMemberContent memberId={member?.id}/>
31+
<DNamespaceMemberContent onRemove={onRemove} onAssignRole={onAssignRole} memberId={member?.id}/>
3032
</CardSection>
3133
))}
3234
</Card>

0 commit comments

Comments
 (0)