From d6e2d03ac6f058c726a5e0b4ec42dbfa7323df35 Mon Sep 17 00:00:00 2001 From: LQ63 Date: Wed, 10 Dec 2025 13:23:44 +0100 Subject: [PATCH 1/3] feat(ui): Main Menu Changed construction of mainmenu to render children. Added a rules section. --- src/components/DefaultMenu.vue | 21 ++++++ src/components/MainMenuBoxes.vue | 7 ++ src/components/Rules.vue | 107 +++++++++++++++++++++++++++++++ src/main.ts | 5 +- src/router/index.ts | 45 ++++++++----- src/views/CreateGame.vue | 29 +++------ src/views/JoinGameView.vue | 9 --- src/views/MainMenuView.vue | 11 +--- 8 files changed, 179 insertions(+), 55 deletions(-) create mode 100644 src/components/DefaultMenu.vue create mode 100644 src/components/Rules.vue diff --git a/src/components/DefaultMenu.vue b/src/components/DefaultMenu.vue new file mode 100644 index 0000000..434e116 --- /dev/null +++ b/src/components/DefaultMenu.vue @@ -0,0 +1,21 @@ + + + + + diff --git a/src/components/MainMenuBoxes.vue b/src/components/MainMenuBoxes.vue index 3b6ab03..38e9897 100644 --- a/src/components/MainMenuBoxes.vue +++ b/src/components/MainMenuBoxes.vue @@ -23,6 +23,13 @@ const menuItems = [ icon: 'settings', routeName: 'settings', color: 'grey-8' + }, + { + title: 'Rules', + description: 'Look at the rules to have a clear understanding for playing the game.', + icon: 'settings', + routeName: 'rules-Game', + color: 'grey-8' } ]; diff --git a/src/components/Rules.vue b/src/components/Rules.vue new file mode 100644 index 0000000..964dfe8 --- /dev/null +++ b/src/components/Rules.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/src/main.ts b/src/main.ts index 13dd503..a7d595c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,7 +5,7 @@ import App from './App.vue' import router from './router' import Particles from "@tsparticles/vue3"; import { loadFull } from "tsparticles"; -import { Quasar, Notify } from 'quasar' +import { Quasar, Notify, QExpansionItem } from 'quasar' import '@quasar/extras/material-icons/material-icons.css' import 'quasar/dist/quasar.css' import { createPinia } from 'pinia' @@ -22,6 +22,9 @@ app.use(Quasar, { plugins: { Notify }, + components: { + QExpansionItem + } }) app.use(VueAxios, axios) app.use(Particles, { diff --git a/src/router/index.ts b/src/router/index.ts index 0c2ed87..9ca6e56 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -3,8 +3,10 @@ import LoginView from '../views/LoginView.vue' import MainMenuView from '../views/MainMenuView.vue' import createGameView from '../views/CreateGame.vue' import joinGameView from "@/views/JoinGameView.vue"; +import defaultMenu from "../components/DefaultMenu.vue" import axios from "axios"; import { useUserInfo } from "@/composables/useUserInfo"; +import rulesView from "../components/Rules.vue"; const api = window?.__RUNTIME_CONFIG__?.API_URL; @@ -12,10 +14,35 @@ const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), routes: [ { - path: '/', - name: 'mainmenu', + path: '/mainmenu/', component: MainMenuView, - meta: { requiresAuth: true } + meta: { requiresAuth: false }, + children: [ + { + path: '', + name: 'mainmenu', + component: defaultMenu, + meta: { requiresAuth: false } + }, + { + path: 'create', + name: 'create-Game', + component: createGameView, + meta: {requiresAuth: false } + }, + { + path: 'join', + name: 'join-Game', + component: joinGameView, + meta: {requiresAuth: false } + }, + { + path: 'rules', + name: 'rules-Game', + component: rulesView, + meta: {requiresAuth: false } + }, + ], }, { path: '/login', @@ -23,18 +50,6 @@ const router = createRouter({ component: LoginView, meta: { requiresAuth: false } }, - { - path: '/create', - name: 'create-Game', - component: createGameView, - meta: { requiresAuth: true } - }, - { - path: '/join', - name: 'join-Game', - component: joinGameView, - meta: { requiresAuth: true } - } ], }) diff --git a/src/views/CreateGame.vue b/src/views/CreateGame.vue index bcfde33..6544af4 100644 --- a/src/views/CreateGame.vue +++ b/src/views/CreateGame.vue @@ -30,24 +30,16 @@ const createGameQuasar = async () => {