后台管理手机端适配:侧栏收成 ☰ 抽屉,列表/总览响应式单列,编辑器贴边与工具栏收紧,修 iOS 聚焦缩放
This commit is contained in:
1 parent
92654dec9f
commit
bf3ce934dd
4 files changed
+168
-21
No files matched your search
@@ -14,6 +14,7 @@ const route = useRoute()
|
||||
const ready = ref(false)
|
||||
const paletteOpen = ref(false)
|
||||
const shortcutsOpen = ref(false)
|
||||
const sideOpen = ref(false)
|
||||
const counts = ref({ published: 0, draft: 0, tags: 0 })
|
||||
|
||||
async function loadCounts() {
|
||||
@@ -75,6 +76,8 @@ function onKeydown(e) {
|
||||
paletteOpen.value = true
|
||||
return
|
||||
}
|
||||
// Esc 收起手机端抽屉
|
||||
if (e.key === 'Escape') sideOpen.value = false
|
||||
// ?
|
||||
if (e.key === '?' && !e.metaKey && !e.ctrlKey && !e.altKey) {
|
||||
const t = e.target
|
||||
@@ -91,14 +94,17 @@ function onKeydown(e) {
|
||||
onMounted(() => window.addEventListener('keydown', onKeydown))
|
||||
onBeforeUnmount(() => window.removeEventListener('keydown', onKeydown))
|
||||
|
||||
// refresh counts when route changes (posts / tags edited)
|
||||
watch(() => route.path, () => loadCounts())
|
||||
// refresh counts when route changes (posts / tags edited); 顺手收起手机端抽屉
|
||||
watch(() => route.path, () => {
|
||||
sideOpen.value = false
|
||||
loadCounts()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="ready" class="admin-shell">
|
||||
<ToastStack />
|
||||
<aside class="admin-side">
|
||||
<aside class="admin-side" :class="{ open: sideOpen }">
|
||||
<div class="brand">
|
||||
<RouterLink to="/admin" class="name">{{ site.site_title || 'ONE' }}</RouterLink>
|
||||
<span class="label">· 后台</span>
|
||||
@@ -162,12 +168,16 @@ watch(() => route.path, () => loadCounts())
|
||||
<div class="admin-main">
|
||||
<header class="admin-topbar">
|
||||
<div class="crumbs">
|
||||
<!-- 手机端唤出侧栏抽屉(≤860px 显示,桌面隐藏) -->
|
||||
<button class="menu-btn" type="button" aria-label="后台菜单" @click="sideOpen = !sideOpen">☰</button>
|
||||
<strong>{{ crumb }}</strong>
|
||||
</div>
|
||||
<div class="right">
|
||||
<button class="cmd-hint" @click="paletteOpen = true">
|
||||
搜索 / 命令 <kbd>⌘K</kbd>
|
||||
</button>
|
||||
<!-- 手机端侧栏进抽屉后,退出固定放顶栏;桌面隐藏,退出仍走侧栏 footer -->
|
||||
<button class="btn leave-m" @click="logout">退出</button>
|
||||
</div>
|
||||
</header>
|
||||
<main class="admin-content">
|
||||
@@ -175,6 +185,8 @@ watch(() => route.path, () => loadCounts())
|
||||
<RouterView :key="route.name === 'admin-edit' ? route.params.id : undefined" />
|
||||
</main>
|
||||
</div>
|
||||
<!-- 手机端抽屉遮罩:点空白收回 -->
|
||||
<div class="side-scrim" :class="{ on: sideOpen }" @click="sideOpen = false"></div>
|
||||
|
||||
<Transition name="pop">
|
||||
<CommandPalette v-if="paletteOpen" @close="paletteOpen = false" />
|
||||
|
||||
Reference in new issue
Block a user