mirror of
https://github.com/janishutz/libreevent.git
synced 2025-11-25 05:14:23 +00:00
make admin panel mobile-compatible
This commit is contained in:
@@ -12,17 +12,20 @@
|
|||||||
<div class="top-bar">
|
<div class="top-bar">
|
||||||
<h1>Admin panel</h1>
|
<h1>Admin panel</h1>
|
||||||
</div>
|
</div>
|
||||||
<button class="hideNav">☰</button>
|
<button class="hideNav navHidden" @click="navMenu( 'toggle' );">☰</button>
|
||||||
<nav class="side-nav">
|
<nav class="side-nav">
|
||||||
<img src="@/assets/logo.png" alt="libreevent logo" style="width: 80%; margin-left: 10%; margin-bottom: 5%;">
|
<div class="side-nav-wrapper">
|
||||||
<router-link to="/admin" class="admin-menu">Home</router-link>
|
<img src="@/assets/logo.png" alt="libreevent logo" style="width: 80%; margin-left: 10%; margin-bottom: 5%;">
|
||||||
<router-link to="/admin/pages" class="admin-menu">Pages</router-link>
|
<router-link to="/admin" class="admin-menu" @click="navMenu( 'hide' )">Home</router-link>
|
||||||
<router-link to="/admin/events" class="admin-menu">Events</router-link>
|
<router-link to="/admin/pages" class="admin-menu" @click="navMenu( 'hide' )">Pages</router-link>
|
||||||
<router-link to="/admin/locations" class="admin-menu">Locations</router-link>
|
<router-link to="/admin/events" class="admin-menu" @click="navMenu( 'hide' )">Events</router-link>
|
||||||
<router-link to="/admin/plugins" class="admin-menu">Plugins</router-link>
|
<router-link to="/admin/locations" class="admin-menu" @click="navMenu( 'hide' )">Locations</router-link>
|
||||||
<router-link to="/admin/settings" class="admin-menu">Settings</router-link>
|
<router-link to="/admin/plugins" class="admin-menu" @click="navMenu( 'hide' )">Plugins</router-link>
|
||||||
<button to="/admin/login" class="admin-menu" @click="logout()">Logout</button>
|
<router-link to="/admin/settings" class="admin-menu" @click="navMenu( 'hide' )">Settings</router-link>
|
||||||
|
<button to="/admin/login" class="admin-menu" @click="logout()">Logout</button>
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
<div class="backdrop" @click="navMenu( 'hide' )"></div>
|
||||||
<div class="main-view">
|
<div class="main-view">
|
||||||
<router-view v-slot="{ Component, route }">
|
<router-view v-slot="{ Component, route }">
|
||||||
<transition :name="route.meta.transition || 'fade'" mode="out-in">
|
<transition :name="route.meta.transition || 'fade'" mode="out-in">
|
||||||
@@ -35,47 +38,54 @@
|
|||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.admin-wrapper {
|
.admin-wrapper {
|
||||||
display: grid;
|
display: block;
|
||||||
grid-template-areas:
|
|
||||||
'sidebar top top top'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main'
|
|
||||||
'sidebar main main main';
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-bar {
|
.top-bar {
|
||||||
grid-area: top;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 100%;
|
height: 10vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-view {
|
.main-view {
|
||||||
grid-area: main;
|
grid-area: main;
|
||||||
height: 100%;
|
height: 90vh;
|
||||||
width: 80vw;
|
width: 100vw;
|
||||||
min-height: 80vh;
|
min-height: 80vh;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.backdrop {
|
||||||
|
width: 100vw;
|
||||||
|
height: 100vh;
|
||||||
|
z-index: 1;
|
||||||
|
display: none;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
background-color: rgba( 0, 0, 0, 0.7 );
|
||||||
|
}
|
||||||
|
|
||||||
.side-nav {
|
.side-nav {
|
||||||
grid-area: sidebar;
|
position: fixed;
|
||||||
display: flex;
|
display: none;
|
||||||
flex-direction: column;
|
height: 100vh;
|
||||||
height: 100%;
|
top: 0;
|
||||||
width: 20vw;
|
width: 30vw;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
background-color: var( --accent-background );
|
background-color: var( --accent-background );
|
||||||
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.side-nav-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
overflow: scroll;
|
overflow: scroll;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.admin-menu {
|
.admin-menu {
|
||||||
@@ -108,12 +118,88 @@
|
|||||||
width: fit-content;
|
width: fit-content;
|
||||||
background-color: rgba( 0, 0, 0, 0 );
|
background-color: rgba( 0, 0, 0, 0 );
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
cursor: pointer;
|
||||||
|
top: 1vw;
|
||||||
|
left: 2vw;
|
||||||
|
z-index: 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navHidden {
|
||||||
|
color: var( --primary-color );
|
||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (min-width: 1299px) {
|
@media only screen and (min-width: 1299px) {
|
||||||
.hideNav {
|
.hideNav, .backdrop {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.admin-wrapper {
|
||||||
|
display: grid;
|
||||||
|
grid-template-areas:
|
||||||
|
'sidebar top top top'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main'
|
||||||
|
'sidebar main main main';
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.top-bar {
|
||||||
|
grid-area: top;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-view {
|
||||||
|
grid-area: main;
|
||||||
|
height: 100%;
|
||||||
|
width: 80vw;
|
||||||
|
min-height: 80vh;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.side-nav {
|
||||||
|
position: initial;
|
||||||
|
grid-area: sidebar;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
width: 20vw;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
background-color: var( --accent-background );
|
||||||
|
justify-content: center;
|
||||||
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.admin-menu {
|
||||||
|
padding: 4% 0%;
|
||||||
|
width: 100%;
|
||||||
|
background-color: rgba( 0, 0, 0, 0 );
|
||||||
|
color: var( --secondary-color );
|
||||||
|
cursor: pointer;
|
||||||
|
font-family: Avenir, Helvetica, Arial, sans-serif;
|
||||||
|
font-weight: bold;
|
||||||
|
text-decoration: none;
|
||||||
|
transition: 1s;
|
||||||
|
font-size: 100%;
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav a.router-link-exact-active {
|
||||||
|
background-color: var( --accent-background-hover );
|
||||||
|
}
|
||||||
|
|
||||||
|
.admin-menu:hover {
|
||||||
|
background-color: var( --accent-background-hover );
|
||||||
|
transition: 0.4s;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
@@ -144,6 +230,23 @@
|
|||||||
this.$router.push( '/admin/login' );
|
this.$router.push( '/admin/login' );
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
navMenu ( action ) {
|
||||||
|
if ( screen.width < 1300 ) {
|
||||||
|
if ( action === 'toggle' ) {
|
||||||
|
$( '.side-nav' ).toggle( 300 );
|
||||||
|
$( '.hideNav' ).toggleClass( 'navHidden' );
|
||||||
|
$( '.backdrop' ).toggle( 300 );
|
||||||
|
} else if ( action === 'show' ) {
|
||||||
|
$( '.backdrop' ).show( 300 );
|
||||||
|
$( '.side-nav' ).show( 300 );
|
||||||
|
$( '.hideNav' ).removeClass( 'navHidden' );
|
||||||
|
} else {
|
||||||
|
$( '.side-nav' ).hide( 300 );
|
||||||
|
$( '.backdrop' ).hide( 300 );
|
||||||
|
$( '.hideNav' ).addClass( 'navHidden' );
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
<option value="TestLocation">TestLocation</option>
|
<option value="TestLocation">TestLocation</option>
|
||||||
</select><br>
|
</select><br>
|
||||||
<input v-model="event.date" class="small-text" type="date"><br>
|
<input v-model="event.date" class="small-text" type="date"><br>
|
||||||
|
<router-link to="/admin/ticketEditor">Edit ticket layout</router-link>
|
||||||
</div>
|
</div>
|
||||||
<div class="ticket-settings">
|
<div class="ticket-settings">
|
||||||
<h3>Ticket Settings</h3>
|
<h3>Ticket Settings</h3>
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="ticketEditor">
|
<div id="ticketEditor">
|
||||||
<h1>Ticket Editor</h1>
|
<h1>Ticket Editor</h1>
|
||||||
|
<router-link to="/admin/events/view">Back to event settings</router-link>
|
||||||
<div id="editor">Loading editor...</div>
|
<div id="editor">Loading editor...</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user