mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Merge branch 'lukas-easier-navigation' into 'dev'
Added better navigation. See merge request crafty-controller/crafty-commander!162
This commit is contained in:
commit
d3b601b29c
@ -207,6 +207,10 @@ if ($('canvas').length) {
|
|||||||
body.toggleClass('sidebar-hidden');
|
body.toggleClass('sidebar-hidden');
|
||||||
} else {
|
} else {
|
||||||
body.toggleClass('sidebar-icon-only');
|
body.toggleClass('sidebar-icon-only');
|
||||||
|
const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
||||||
|
if (vw >= 1200) {
|
||||||
|
localStorage.setItem('crafty-sidebar-expanded', !body.hasClass('sidebar-icon-only'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -47,8 +47,17 @@
|
|||||||
<img src="/static/assets/images/logo_small.svg" alt="logo" /> </a>
|
<img src="/static/assets/images/logo_small.svg" alt="logo" /> </a>
|
||||||
</div>
|
</div>
|
||||||
<div class="navbar-menu-wrapper d-flex align-items-center">
|
<div class="navbar-menu-wrapper d-flex align-items-center">
|
||||||
|
<style>
|
||||||
|
body:not(.sidebar-icon-only) .navbar-toggler .mdi-chevron-double-right {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
body.sidebar-icon-only .navbar-toggler .mdi-chevron-double-left {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-toggle="minimize">
|
<button class="navbar-toggler navbar-toggler align-self-center" type="button" data-toggle="minimize">
|
||||||
<span class="mdi mdi-menu"></span>
|
<span class="mdi mdi-chevron-double-left"></span>
|
||||||
|
<span class="mdi mdi-chevron-double-right"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
{% include notify.html %}
|
{% include notify.html %}
|
||||||
|
@ -1,6 +1,68 @@
|
|||||||
<!-- partial -->
|
<!-- partial -->
|
||||||
<div class="container-fluid page-body-wrapper">
|
<div class="container-fluid page-body-wrapper">
|
||||||
<!-- partial:partials/_sidebar.html -->
|
<!-- partial:partials/_sidebar.html -->
|
||||||
|
<style>
|
||||||
|
@media screen and (max-width: 991px) {
|
||||||
|
.sidebar-offcanvas {
|
||||||
|
-webkit-transition: all 0.25s cubic-bezier(.22,.61,.36,1);
|
||||||
|
transition: all 0.25s cubic-bezier(.22,.61,.36,1);
|
||||||
|
box-shadow: 0px 8px 17px 2px rgba(0,0,0,0.14) , 0px 3px 14px 2px rgba(0,0,0,0.12) , 0px 5px 5px -3px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
function debounce(func, wait, immediate) {
|
||||||
|
var timeout;
|
||||||
|
return function() {
|
||||||
|
var context = this, args = arguments;
|
||||||
|
var later = function() {
|
||||||
|
timeout = null;
|
||||||
|
if (!immediate) func.apply(context, args);
|
||||||
|
};
|
||||||
|
var callNow = immediate && !timeout;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
timeout = setTimeout(later, wait);
|
||||||
|
if (callNow) func.apply(context, args);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
function isExtraLargeBreakpoint() {
|
||||||
|
const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
||||||
|
return vw >= 1200;
|
||||||
|
}
|
||||||
|
function isLargeBreakpoint() {
|
||||||
|
const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
||||||
|
return vw >= 992;
|
||||||
|
}
|
||||||
|
$(document).ready(function() {
|
||||||
|
sidebarResizeHandler(null);
|
||||||
|
$(window).on(
|
||||||
|
'resize',
|
||||||
|
debounce(sidebarResizeHandler, 25, true)
|
||||||
|
);
|
||||||
|
});
|
||||||
|
function sidebarResizeHandler(e) {
|
||||||
|
/*
|
||||||
|
Viewport sizes: Extra large (vw >= 1200px), large (vw >= 992px), medium (vw >= 768px)
|
||||||
|
- A localstorage item is set to remember a user's preference between collapsed or expanded.
|
||||||
|
- For extra large viewports, the sidebar is the user's preference (by default expanded). When
|
||||||
|
expanded or collapsed manually, it doesn't overlap the page content and the preference
|
||||||
|
gets saved to a localstorage item.
|
||||||
|
- For large viewports, the sidebar is collapsed. When expanded manually, it doesn't overlap
|
||||||
|
the page content. The user's localstorage preference is not overridden during this state.
|
||||||
|
- For medium and below viewports, the sidebar is hidden behing a hamburger icon. When expanded, the sidebar
|
||||||
|
overlaps the page content. The user's localstorage preference is not overridden during this state.
|
||||||
|
|
||||||
|
More code in `app/frontend/static/assets/js/shared/misc.js` and `app/frontend/templates/base.html`
|
||||||
|
*/
|
||||||
|
if (isExtraLargeBreakpoint()) {
|
||||||
|
let value = localStorage.getItem('crafty-sidebar-expanded') !== 'false';
|
||||||
|
$('body').toggleClass('sidebar-icon-only', !value);
|
||||||
|
localStorage.setItem('crafty-sidebar-expanded', value);
|
||||||
|
} else if (isLargeBreakpoint()) {
|
||||||
|
$('body').toggleClass('sidebar-icon-only', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
<nav class="sidebar sidebar-offcanvas" id="sidebar">
|
||||||
<ul class="nav">
|
<ul class="nav">
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user