+
{{ memberHint }}
+
-
{{ participantLabel(participant) }}
-
+
@@ -29,9 +30,21 @@ export default {
props: {
title: { type: String, required: true },
members: { type: Array, required: true },
- participants: { type: Array, required: true }
+ participants: { type: Array, required: true },
+ allowMembers: { type: Boolean, default: true },
+ allowManual: { type: Boolean, default: true },
+ readonly: { type: Boolean, default: false },
+ memberHint: { type: String, default: '' }
},
emits: ['add-member', 'add-manual', 'remove'],
+ computed: {
+ availableMembers() {
+ const selected = new Set((this.participants || [])
+ .filter((participant) => participant?.type === 'member')
+ .map((participant) => Number(participant.memberId)));
+ return (this.members || []).filter((member) => !selected.has(Number(member.id)));
+ }
+ },
data() {
return {
selectedMemberId: '',
@@ -104,4 +117,10 @@ export default {
background: var(--background-soft, #f7f7f7);
border-radius: 6px;
}
+
+.friendly-participant-hint {
+ margin: 0;
+ color: var(--text-muted, #666);
+ font-size: 0.9rem;
+}
diff --git a/frontend/src/views/ClubSettings.vue b/frontend/src/views/ClubSettings.vue
index c17a88f4..cb3ea3da 100644
--- a/frontend/src/views/ClubSettings.vue
+++ b/frontend/src/views/ClubSettings.vue
@@ -4,24 +4,30 @@
-
-
-
+
@@ -138,6 +144,57 @@