Add login and signup pages with hidden menu

This commit is contained in:
Tim
2025-07-03 20:12:22 +08:00
parent 31f1aa2145
commit 93a3621462
5 changed files with 64 additions and 4 deletions

View File

@@ -1,9 +1,12 @@
<template> <template>
<div id="app"> <div id="app">
<HeaderComponent @toggle-menu="menuVisible = !menuVisible" /> <HeaderComponent
@toggle-menu="menuVisible = !menuVisible"
:show-menu-btn="!hideMenu"
/>
<div class="main-container"> <div class="main-container">
<MenuComponent :visible="menuVisible" /> <MenuComponent :visible="!hideMenu && menuVisible" />
<div class="content"> <div class="content">
<router-view /> <router-view />
</div> </div>
@@ -20,6 +23,11 @@ export default {
components: { HeaderComponent, MenuComponent }, components: { HeaderComponent, MenuComponent },
data() { data() {
return { menuVisible: true } return { menuVisible: true }
},
computed: {
hideMenu() {
return ['/login', '/signup'].includes(this.$route.path)
}
} }
} }
</script> </script>

View File

@@ -1,8 +1,8 @@
<template> <template>
<header class="header"> <header class="header">
<div class="header-content"> <div class="header-content">
<button class="menu-btn" @click="$emit('toggle-menu')"> <button v-if="showMenuBtn" class="menu-btn" @click="$emit('toggle-menu')">
<i class="fas fa-bars"></i> <i class="fas fa-bars"></i>
</button> </button>
<div class="logo-container" @click="goToHome"> <div class="logo-container" @click="goToHome">
<img alt="OpenIsle" src="https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/image.png" width="60" height="60"> <img alt="OpenIsle" src="https://openisle-1307107697.cos.ap-guangzhou.myqcloud.com/assert/image.png" width="60" height="60">
@@ -15,6 +15,12 @@
<script> <script>
export default { export default {
name: 'HeaderComponent', name: 'HeaderComponent',
props: {
showMenuBtn: {
type: Boolean,
default: true
}
},
methods: { methods: {
goToHome() { goToHome() {
this.$router.push('/') this.$router.push('/')

View File

@@ -3,6 +3,8 @@ import HomePageView from '../views/HomePageView.vue'
import MessagePageView from '../views/MessagePageView.vue' import MessagePageView from '../views/MessagePageView.vue'
import AboutPageView from '../views/AboutPageView.vue' import AboutPageView from '../views/AboutPageView.vue'
import PostPageView from '../views/PostPageView.vue' import PostPageView from '../views/PostPageView.vue'
import LoginPageView from '../views/LoginPageView.vue'
import SignupPageView from '../views/SignupPageView.vue'
const routes = [ const routes = [
{ {
@@ -24,6 +26,16 @@ const routes = [
path: '/posts/:id', path: '/posts/:id',
name: 'post', name: 'post',
component: PostPageView component: PostPageView
},
{
path: '/login',
name: 'login',
component: LoginPageView
},
{
path: '/signup',
name: 'signup',
component: SignupPageView
} }
] ]

View File

@@ -0,0 +1,17 @@
<template>
<div class="login-page">
<h1>Login</h1>
</div>
</template>
<script>
export default {
name: 'LoginPageView'
}
</script>
<style scoped>
.login-page {
padding: 20px;
}
</style>

View File

@@ -0,0 +1,17 @@
<template>
<div class="signup-page">
<h1>Sign Up</h1>
</div>
</template>
<script>
export default {
name: 'SignupPageView'
}
</script>
<style scoped>
.signup-page {
padding: 20px;
}
</style>