Merge pull request #575 from nagisa77/feature/ui_fix_v0

fix: 仅仅在主页显示
This commit is contained in:
Tim
2025-08-15 11:38:07 +08:00
committed by GitHub

View File

@@ -16,11 +16,7 @@
<NuxtPage keepalive /> <NuxtPage keepalive />
</div> </div>
<div <div v-if="showNewPostIcon" class="new-post-icon" @click="goToNewPost">
v-if="!menuVisible && route.path !== '/new-post'"
class="new-post-icon"
@click="goToNewPost"
>
<i class="fas fa-edit"></i> <i class="fas fa-edit"></i>
</div> </div>
</div> </div>
@@ -28,61 +24,56 @@
</div> </div>
</template> </template>
<script> <script setup>
import HeaderComponent from '~/components/HeaderComponent.vue' import HeaderComponent from '~/components/HeaderComponent.vue'
import MenuComponent from '~/components/MenuComponent.vue' import MenuComponent from '~/components/MenuComponent.vue'
import GlobalPopups from '~/components/GlobalPopups.vue' import GlobalPopups from '~/components/GlobalPopups.vue'
import { useIsMobile } from '~/utils/screen' import { useIsMobile } from '~/utils/screen'
export default { const isMobile = useIsMobile()
name: 'App', const menuVisible = ref(!isMobile.value)
components: { HeaderComponent, MenuComponent, GlobalPopups }, const route = useRoute()
setup() {
const isMobile = useIsMobile()
const menuVisible = ref(!isMobile.value)
const route = useRoute()
const hideMenu = computed(() => { const showNewPostIcon = computed(() => useRoute().path === '/')
return [
'/login',
'/signup',
'/404',
'/signup-reason',
'/github-callback',
'/twitter-callback',
'/discord-callback',
'/forgot-password',
'/google-callback',
].includes(useRoute().path)
})
const header = useTemplateRef('header') const hideMenu = computed(() => {
return [
'/login',
'/signup',
'/404',
'/signup-reason',
'/github-callback',
'/twitter-callback',
'/discord-callback',
'/forgot-password',
'/google-callback',
].includes(useRoute().path)
})
onMounted(() => { const header = useTemplateRef('header')
if (typeof window !== 'undefined') {
menuVisible.value = window.innerWidth > 768
}
})
const handleMenuOutside = (event) => { onMounted(() => {
const btn = header.value.$refs.menuBtn if (typeof window !== 'undefined') {
if (btn && (btn === event.target || btn.contains(event.target))) { menuVisible.value = window.innerWidth > 768
return // 如果是菜单按钮的点击,不处理关闭 }
} })
if (isMobile.value) { const handleMenuOutside = (event) => {
menuVisible.value = false const btn = header.value.$refs.menuBtn
} if (btn && (btn === event.target || btn.contains(event.target))) {
} return // 如果是菜单按钮的点击,不处理关闭
}
const goToNewPost = () => { if (isMobile.value) {
navigateTo('/new-post', { replace: false }) menuVisible.value = false
} }
}
return { menuVisible, hideMenu, handleMenuOutside, header, route, goToNewPost } const goToNewPost = () => {
}, navigateTo('/new-post', { replace: false })
} }
</script> </script>
<style src="~/assets/global.css"></style> <style src="~/assets/global.css"></style>
<style scoped> <style scoped>
.header-container { .header-container {