You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.2 KiB
JavaScript
41 lines
1.2 KiB
JavaScript
4 years ago
|
import Slideout from 'slideout';
|
||
|
|
||
|
import { AutoloadPage } from 'vj/misc/Page';
|
||
|
import request from 'vj/utils/request';
|
||
|
|
||
|
function handleNavLogoutClick(ev) {
|
||
|
const $logoutLink = $(ev.currentTarget);
|
||
|
request
|
||
|
.post($logoutLink.attr('href'))
|
||
|
.then(() => window.location.reload());
|
||
|
ev.preventDefault();
|
||
|
}
|
||
|
|
||
|
const navigationPage = new AutoloadPage('navigationPage', () => {
|
||
|
if (!document.getElementById('panel') || !document.getElementById('menu')) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
$(document).on('click', '[name="nav_logout"]', handleNavLogoutClick);
|
||
|
|
||
|
const slideout = new Slideout({
|
||
|
panel: document.getElementById('panel'),
|
||
|
menu: document.getElementById('menu'),
|
||
|
padding: 200,
|
||
|
tolerance: 70,
|
||
|
side: 'right',
|
||
|
});
|
||
|
[['beforeopen', 'add'], ['beforeclose', 'remove']].forEach(([event, action]) => {
|
||
|
slideout.on(event, () => $('.header__hamburger .hamburger')[`${action}Class`]('is-active'));
|
||
|
});
|
||
|
|
||
|
const $slideoutOverlay = $('.slideout-overlay');
|
||
|
$slideoutOverlay.click(() => slideout.close());
|
||
|
slideout.on('beforeopen', () => $slideoutOverlay.show());
|
||
|
slideout.on('beforeclose', () => $slideoutOverlay.hide());
|
||
|
|
||
|
$('.header__hamburger').click(() => slideout.toggle());
|
||
|
});
|
||
|
|
||
|
export default navigationPage;
|