feat: enhance attendee display with toggle for showing all participants
This commit is contained in:
parent
2950e8c993
commit
65f11d7c8f
@ -89,7 +89,7 @@
|
|||||||
<PeopleIcon class="size-4" />
|
<PeopleIcon class="size-4" />
|
||||||
<div>{{ __('{0} Attendees', [peoples.length + 1]) }}</div>
|
<div>{{ __('{0} Attendees', [peoples.length + 1]) }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col gap-1 -ml-1">
|
<div class="flex flex-col gap-2 -ml-1">
|
||||||
<Button
|
<Button
|
||||||
:key="_event.owner"
|
:key="_event.owner"
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
@ -108,7 +108,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
<Button
|
||||||
v-for="att in peoples"
|
v-for="att in displayedPeoples"
|
||||||
:key="att.email"
|
:key="att.email"
|
||||||
:label="att.email"
|
:label="att.email"
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
@ -120,6 +120,22 @@
|
|||||||
<UserAvatar :user="att.email" class="-ml-1 !size-5" />
|
<UserAvatar :user="att.email" class="-ml-1 !size-5" />
|
||||||
</template>
|
</template>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button
|
||||||
|
v-if="!showAllParticipants && peoples.length > 2"
|
||||||
|
variant="ghost"
|
||||||
|
:label="__('See all participants')"
|
||||||
|
iconLeft="more-horizontal"
|
||||||
|
class="!justify-start w-fit"
|
||||||
|
@click="showAllParticipants = true"
|
||||||
|
/>
|
||||||
|
<Button
|
||||||
|
v-else
|
||||||
|
variant="ghost"
|
||||||
|
:label="__('Show less')"
|
||||||
|
iconLeft="chevron-up"
|
||||||
|
class="!justify-start w-fit"
|
||||||
|
@click="showAllParticipants = false"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@ -419,12 +435,18 @@ const title = computed(() => {
|
|||||||
|
|
||||||
const eventTitle = ref(null)
|
const eventTitle = ref(null)
|
||||||
const error = ref(null)
|
const error = ref(null)
|
||||||
|
const showAllParticipants = ref(false)
|
||||||
|
|
||||||
const oldEvent = ref(null)
|
const oldEvent = ref(null)
|
||||||
const dirty = computed(() => {
|
const dirty = computed(() => {
|
||||||
return JSON.stringify(oldEvent.value) !== JSON.stringify(_event.value)
|
return JSON.stringify(oldEvent.value) !== JSON.stringify(_event.value)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const displayedPeoples = computed(() => {
|
||||||
|
if (showAllParticipants.value) return peoples.value
|
||||||
|
return peoples.value.slice(0, 2)
|
||||||
|
})
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
[() => props.mode, () => props.event],
|
[() => props.mode, () => props.event],
|
||||||
() => {
|
() => {
|
||||||
@ -458,6 +480,7 @@ function fetchEvent() {
|
|||||||
_event.value = props.event
|
_event.value = props.event
|
||||||
oldEvent.value = { ...props.event }
|
oldEvent.value = { ...props.event }
|
||||||
}
|
}
|
||||||
|
showAllParticipants.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
function parseEvent(_e) {
|
function parseEvent(_e) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user