v1.12.29 접속자 요약과 회원 작성 이력 및 댓글 표시 정리
This commit is contained in:
@@ -39,6 +39,7 @@ const cancelClose = () => { clearTimeout(closeTimer) }
|
||||
* @returns {Promise<void>} 위치 반영
|
||||
*/
|
||||
const openPages = async () => {
|
||||
if (pages.value.length <= 1) return
|
||||
cancelClose()
|
||||
isOpen.value = true
|
||||
await nextTick()
|
||||
@@ -103,6 +104,10 @@ const handleKeydown = (event) => {
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => pages.value.length, (count) => {
|
||||
if (count <= 1) closePages()
|
||||
})
|
||||
|
||||
onMounted(() => {
|
||||
document.addEventListener('pointerdown', handleOutside)
|
||||
document.addEventListener('keydown', handleKeydown)
|
||||
@@ -120,12 +125,14 @@ onBeforeUnmount(() => {
|
||||
|
||||
<template>
|
||||
<div class="admin-realtime-pages min-w-0">
|
||||
<button ref="triggerRef" type="button" class="admin-realtime-pages__trigger flex w-full min-w-0 items-center gap-1 text-left text-xs text-muted hover:text-ink" :aria-expanded="isOpen" :aria-controls="popoverId" aria-label="열린 페이지 목록" @mouseenter="openPages" @mouseleave="scheduleClose" @focus="openPages" @blur="scheduleClose" @click="togglePinned">
|
||||
<button v-if="pages.length > 1" ref="triggerRef" type="button" class="admin-realtime-pages__trigger flex w-full min-w-0 items-center gap-1 text-left text-xs text-muted hover:text-ink" :aria-expanded="isOpen" :aria-controls="popoverId" aria-label="열린 페이지 목록" @mouseenter="openPages" @mouseleave="scheduleClose" @focus="openPages" @blur="scheduleClose" @click="togglePinned">
|
||||
<span class="admin-realtime-pages__latest min-w-0 truncate">{{ getActivePageTitle(pages[0]) }}</span>
|
||||
<span v-if="pages.length > 1" class="admin-realtime-pages__extra shrink-0 font-medium">외 {{ formatAnalyticsCount(pages.length - 1) }}개</span>
|
||||
<span v-if="pages.length > 1" class="admin-realtime-pages__extra shrink-0 font-medium text-[#2563eb]">외 <strong class="admin-realtime-pages__extra-number font-bold">{{ formatAnalyticsCount(pages.length - 1) }}</strong>개</span>
|
||||
</button>
|
||||
<a v-else-if="getActivePageHref(pages[0])" :href="getActivePageHref(pages[0])" target="_blank" rel="noopener noreferrer" class="admin-realtime-pages__single block truncate text-xs text-muted hover:text-ink hover:underline">{{ getActivePageTitle(pages[0]) }}</a>
|
||||
<span v-else class="admin-realtime-pages__single block truncate text-xs text-muted">{{ getActivePageTitle(pages[0]) }}</span>
|
||||
<Teleport to="body">
|
||||
<AdminPopoverSurface v-if="isOpen" :id="popoverId" root-class="admin-realtime-pages__popover admin-layout--light-controls fixed z-[80] overflow-y-auto rounded-lg border-line p-3 text-xs text-[#15171a]" :surface-style="popoverStyle" @mouseenter="cancelClose" @mouseleave="scheduleClose" @focusin="cancelClose" @focusout="scheduleClose">
|
||||
<AdminPopoverSurface v-if="isOpen && pages.length > 1" :id="popoverId" root-class="admin-realtime-pages__popover admin-layout--light-controls fixed z-[80] overflow-y-auto rounded-lg border-line p-3 text-xs text-[#15171a]" :surface-style="popoverStyle" @mouseenter="cancelClose" @mouseleave="scheduleClose" @focusin="cancelClose" @focusout="scheduleClose">
|
||||
<div ref="panelRef">
|
||||
<div class="mb-2 flex items-center justify-between gap-3">
|
||||
<p class="font-semibold">열린 페이지 {{ formatAnalyticsCount(pages.length) }}개 · 최근 확인순</p>
|
||||
|
||||
Reference in New Issue
Block a user