feat: desktop sidebar collapse and hidden folder scrollbar
ci / docker (push) Successful in 3m24s

This commit is contained in:
2026-09-07 10:22:05 +08:00
parent fa69a817ff
commit 5217bb1c19
3 changed files with 26 additions and 3 deletions
+12 -2
View File
@@ -35,6 +35,7 @@ const error = ref('')
const notice = ref('')
const loading = ref(false)
const mobileSidebar = ref(false)
const sidebarCollapsed = ref(false)
const mobileDetail = ref(false)
const mobileMore = ref(false)
const moreSettingsOpen = ref(false)
@@ -50,6 +51,15 @@ const taskSwipeStart = ref<{ id: string; x: number; y: number } | null>(null)
const taskSwipeOffsets = ref<Record<string, number>>({})
let suppressTaskClickId = ''
function toggleSidebar() {
const compact = window.matchMedia('(max-width: 930px)').matches
if (compact) {
mobileSidebar.value = !mobileSidebar.value
} else {
sidebarCollapsed.value = !sidebarCollapsed.value
}
}
const modalVisible = ref(false)
const modalTitle = ref('')
const modalLabel = ref('')
@@ -401,7 +411,7 @@ onMounted(bootstrap)
<small v-if="error" role="alert">{{ error }}</small>
</section>
</div>
<div v-else class="shell">
<div v-else class="shell" :class="{ 'sidebar-collapsed': sidebarCollapsed }">
<div v-if="mobileSidebar || mobileDetail" class="scrim" @click="mobileSidebar=false;mobileDetail=false" />
<aside class="sidebar" :class="{ open: mobileSidebar }">
<div class="brand-row"><div class="brand small">do<span>do</span></div><button class="icon mobile-only" aria-label="关闭菜单" @click="mobileSidebar=false"><X /></button></div>
@@ -430,7 +440,7 @@ onMounted(bootstrap)
<main>
<header class="topbar">
<button class="icon mobile-only" aria-label="打开菜单" @click="mobileSidebar=true"><Menu /></button>
<button class="icon" :aria-label="(sidebarCollapsed ? '展开' : '收起') + '菜单'" :aria-expanded="sidebarCollapsed ? 'false' : 'true'" @click="toggleSidebar"><Menu /></button>
<div><h1>{{ activeName }}</h1></div>
<label v-if="['tasks','today','upcoming','trash'].includes(activeView)" class="search"><Search/><input v-model="query" placeholder="搜索任务…" aria-label="搜索任务"><kbd> K</kbd></label>
</header>