1
0
Fork 0
mirror of https://github.com/Kozea/Radicale.git synced 2025-06-26 16:45:52 +00:00

Implement side menu for narrow screens

This commit is contained in:
Unrud 2020-03-01 20:12:40 +01:00
parent ec4f2a40d6
commit b9c93d3e11
6 changed files with 122 additions and 29 deletions

View file

@ -80,7 +80,7 @@ BDO[DIR="rtl"] { direction: rtl; unicode-bidi: bidi-override }
/* END: https://www.w3.org/TR/CSS22/ */
@media not screen {
header select.documentBranch, nav, .headerlink {
header select.documentBranch, nav, .navButtonContainer, .headerlink {
display: none;
}

View file

@ -0,0 +1,15 @@
window.addEventListener("load", function() {
document.querySelector("button[data-name=nav-open]").addEventListener("click", function() {
document.documentElement.classList.add("nav-opened");
});
document.querySelector("button[data-name=nav-close]").addEventListener("click", function() {
document.documentElement.classList.remove("nav-opened");
});
for (let link of document.querySelectorAll("nav a")) {
link.addEventListener("click", function() {
if (link.parentElement.classList.contains("active") || link.parentElement.classList.contains("level4")) {
document.documentElement.classList.remove("nav-opened");
}
});
}
});

View file

@ -0,0 +1,76 @@
.documentContainer {
width: 100%;
}
header .logoContainer {
padding: 2em 10px;
background-position: 50%;
min-height: 320px;
text-align: center;
}
header .logoContainer, header select.documentBranch {
text-shadow: 0 0 3px #050a02, 0 0 3px #050a02;
}
header .logoContainer, header ul, main {
max-width: initial;
}
nav {
position: fixed;
width: 0;
height: 100vh;
top: 0;
left: 0;
background-color: #E4E9F6;
z-index: 1;
scrollbar-width: initial;
transition: width ease .2s;
max-height: initial !important;
}
html.nav-opened {
overflow: hidden;
}
.nav-opened nav {
width: 100vw;
}
nav::-webkit-scrollbar {
display: initial;
}
main, .navContainer {
position: relative;
}
.navButtonContainer {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
display: flex;
align-items: start;
justify-content: end;
pointer-events: none;
}
.navButtonContainer button {
background: #a40000;
color: white;
border: none;
font-size: 1em;
font-weight: normal;
font-family: sans-serif;
cursor: pointer;
padding: 10px;
top: 10px;
position: sticky;
margin: 10px;
z-index: 1;
border-radius: 3px;
pointer-events: initial;
}

View file

@ -25,3 +25,13 @@ nav .level4 {
nav .level4 > a::after {
display: none !important;
}
@media screen and (max-width: 50em) {
nav, .navButtonContainer {
display: none;
}
html.nav-opened {
overflow: initial;
}
}

View file

@ -236,7 +236,6 @@ nav ul {
}
nav {
padding: 10px 0;
margin-right: 2rem;
flex: 1;
position: sticky;
@ -246,6 +245,10 @@ nav {
scrollbar-width: none;
}
.navContainer {
padding: 10px 0;
}
nav::-webkit-scrollbar {
display: none;
}
@ -307,6 +310,10 @@ nav .active > ul > .level4 {
display: initial;
}
.navButtonContainer {
display: none;
}
.documentContainer p, .documentContainer ul, .documentContainer ol {
max-width: 42em;
box-sizing: border-box;
@ -339,28 +346,3 @@ td, th {
section > *:first-child:hover .headerlink {
display: initial;
}
@media all and (max-width: 50em) {
nav {
display: none;
}
.documentContainer {
width: 100%;
}
header .logoContainer {
padding: 2em 10px;
background-position: 50%;
min-height: 320px;
text-align: center;
}
header .logoContainer, header select.documentBranch {
text-shadow: 0 0 3px #050a02, 0 0 3px #050a02;
}
header .logoContainer, header ul, main {
max-width: initial;
}
}

View file

@ -11,6 +11,7 @@ $if(math)$
$endif$
<link href="assets/default.css" media="all" rel="stylesheet">
<link href="assets/screen.css" media="screen" rel="stylesheet">
<link href="assets/screen-narrow.css" media="screen and (max-width: 50em)" rel="stylesheet">
<noscript><link href="assets/screen-noscript.css" media="screen" rel="stylesheet"></noscript>
<link href="https://github.com/Kozea/Radicale/releases.atom" type="application/atom+xml" rel="alternate" title="Radicale Releases">
<link href="assets/icon.png" type="image/png" rel="shortcut icon">
@ -18,6 +19,7 @@ $endif$
<meta name="description" content="Free and Open-Source CalDAV and CardDAV Server">
<script src="assets/navigation.js"></script>
<script src="assets/document-branches.js"></script>
<script src="assets/narrow-menu.js"></script>
<script>
const documentBranch = "$branch$";
const documentBranches = ["$for(branches)$$branches$$sep$", "$endfor$"];
@ -41,9 +43,17 @@ $endif$
</header>
<main>
<div class="navButtonContainer">
<button data-name="nav-open">Contents</button>
</div>
<nav>
<div class="navContainer">
<div class="navButtonContainer">
<button data-name="nav-close">Close</button>
</div>
<h2>Contents</h2>
$table-of-contents$
</div>
</nav>
<div class="documentContainer">
$body$