KI-AGENT: Chatgruppen einklappbar machen
This commit is contained in:
@@ -15,6 +15,7 @@ const matrixMembers = ref([])
|
|||||||
const matrixMessageDraft = ref("")
|
const matrixMessageDraft = ref("")
|
||||||
const matrixMessagesViewport = ref(null)
|
const matrixMessagesViewport = ref(null)
|
||||||
const roomCreateOpen = ref(false)
|
const roomCreateOpen = ref(false)
|
||||||
|
const collapsedRoomGroups = ref({})
|
||||||
const matrixCallOpen = ref(false)
|
const matrixCallOpen = ref(false)
|
||||||
const matrixCallMode = ref("video")
|
const matrixCallMode = ref("video")
|
||||||
const matrixCallLoading = ref(false)
|
const matrixCallLoading = ref(false)
|
||||||
@@ -167,6 +168,15 @@ const groupedRooms = computed(() => [
|
|||||||
}
|
}
|
||||||
].filter((group) => group.rooms.length > 0))
|
].filter((group) => group.rooms.length > 0))
|
||||||
|
|
||||||
|
const isRoomGroupCollapsed = (groupKey) => Boolean(collapsedRoomGroups.value[groupKey])
|
||||||
|
|
||||||
|
const toggleRoomGroup = (groupKey) => {
|
||||||
|
collapsedRoomGroups.value = {
|
||||||
|
...collapsedRoomGroups.value,
|
||||||
|
[groupKey]: !isRoomGroupCollapsed(groupKey)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const normalizeRoomKey = (value) => {
|
const normalizeRoomKey = (value) => {
|
||||||
const normalized = String(value || "")
|
const normalized = String(value || "")
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
@@ -951,12 +961,28 @@ onBeforeUnmount(() => {
|
|||||||
:key="group.key"
|
:key="group.key"
|
||||||
class="space-y-1"
|
class="space-y-1"
|
||||||
>
|
>
|
||||||
<div class="flex items-center justify-between px-2">
|
<button
|
||||||
<p class="text-[11px] font-semibold uppercase tracking-wide text-muted">
|
type="button"
|
||||||
|
class="flex w-full items-center justify-between rounded-md px-2 py-1 text-left text-muted transition hover:bg-muted hover:text-highlighted"
|
||||||
|
:aria-expanded="!isRoomGroupCollapsed(group.key)"
|
||||||
|
@click="toggleRoomGroup(group.key)"
|
||||||
|
>
|
||||||
|
<span class="flex min-w-0 items-center gap-2">
|
||||||
|
<UIcon
|
||||||
|
name="i-heroicons-chevron-right"
|
||||||
|
class="size-3.5 shrink-0 transition-transform"
|
||||||
|
:class="!isRoomGroupCollapsed(group.key) ? 'rotate-90' : ''"
|
||||||
|
/>
|
||||||
|
<span class="truncate text-[11px] font-semibold uppercase tracking-wide">
|
||||||
{{ group.label }}
|
{{ group.label }}
|
||||||
</p>
|
</span>
|
||||||
<span class="text-[11px] text-muted">{{ group.rooms.length }}</span>
|
</span>
|
||||||
</div>
|
<span class="text-[11px]">{{ group.rooms.length }}</span>
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
v-if="!isRoomGroupCollapsed(group.key)"
|
||||||
|
class="space-y-1"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
v-for="room in group.rooms"
|
v-for="room in group.rooms"
|
||||||
:key="room.key"
|
:key="room.key"
|
||||||
@@ -1001,6 +1027,7 @@ onBeforeUnmount(() => {
|
|||||||
offen
|
offen
|
||||||
</UBadge>
|
</UBadge>
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
</aside>
|
</aside>
|
||||||
|
|||||||
Reference in New Issue
Block a user