feat: add remove member button

This commit is contained in:
Zhi
2026-03-12 12:13:28 +00:00
parent 98ba64e35c
commit 3ee1c9bc10

View File

@@ -58,6 +58,12 @@ export default function ProjectDetailPage() {
api.get<ProjectMember[]>(`/projects/${id}/members`).then(({ data }) => setMembers(data)) api.get<ProjectMember[]>(`/projects/${id}/members`).then(({ data }) => setMembers(data))
} }
const removeMember = async (userId: number) => {
if (!confirm('Remove this member?')) return
await api.delete(`/projects/${id}/members/${userId}`)
api.get<ProjectMember[]>(`/projects/${id}/members`).then(({ data }) => setMembers(data))
}
const addMilestone = async () => { const addMilestone = async () => {
if (!newMilestoneTitle.trim()) return if (!newMilestoneTitle.trim()) return
await api.post(`/projects/${id}/milestones`, { title: newMilestoneTitle, status: 'open' }) await api.post(`/projects/${id}/milestones`, { title: newMilestoneTitle, status: 'open' })
@@ -120,7 +126,10 @@ export default function ProjectDetailPage() {
{members.length > 0 ? ( {members.length > 0 ? (
<div className="member-list"> <div className="member-list">
{members.map((m) => ( {members.map((m) => (
<span key={m.id} className="badge">{`User #${m.user_id} (${m.role})`}</span> <span key={m.id} className="badge" style={{marginRight: 8}}>
{`User #${m.user_id} (${m.role})`}
<button onClick={(e) => { e.stopPropagation(); removeMember(m.user_id) }} style={{marginLeft: 8, background: 'none', border: 'none', color: 'red', cursor: 'pointer'}}>×</button>
</span>
))} ))}
</div> </div>
) : ( ) : (