Files
WKVS/www/intern/js/sidebar.js
2026-04-12 21:25:44 +02:00

104 lines
3.2 KiB
JavaScript

(function () {
const STORAGE_KEY = 'intern_sidebar_open';
document.addEventListener('DOMContentLoaded', function () {
const toggle = document.getElementById('sidebar-toggle');
const sidebar = document.getElementById('sidebar-nav');
const overlay = document.getElementById('sidebar-overlay');
if (!toggle || !sidebar || !overlay) return;
function openSidebar() {
sidebar.classList.add('open');
overlay.classList.add('open');
toggle.classList.add('open');
localStorage.setItem(STORAGE_KEY, 'true');
}
function closeSidebar() {
sidebar.classList.remove('open');
overlay.classList.remove('open');
toggle.classList.remove('open');
localStorage.setItem(STORAGE_KEY, 'false');
}
function toggleSidebar() {
if (sidebar.classList.contains('open')) {
closeSidebar();
} else {
openSidebar();
}
}
toggle.addEventListener('click', toggleSidebar);
overlay.addEventListener('click', closeSidebar);
// Keyboard shortcut: press 'M' to toggle
document.addEventListener('keydown', function (e) {
if (e.key.toLowerCase() === 'm' && !e.ctrlKey && !e.altKey && !e.metaKey) {
const tag = document.activeElement?.tagName;
if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;
toggleSidebar();
}
});
// Restore state
if (localStorage.getItem(STORAGE_KEY) === 'true') {
openSidebar();
}
});
})();
function changeFreigabe(freigabe) {
const params = new URLSearchParams();
params.append('freigabe', freigabe);
params.append('type', siteType);
fetch('/intern/scripts/kampfrichter/ajax/ajax-update_selected_kampfrichter.php', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: params
})
.then(res => res.json())
.then(data => {
if (data.success) {
window.location.reload(); // reload page to reflect changes
} else {
alert('Error: ' + data.data);
}
})
.catch(err => {
console.error(err);
alert('AJAX request failed');
});
}
$(document).on('click', '.sidebar-nav .selectTrigger', function (e) {
e.stopPropagation();
$(this).closest('.customSelect').toggleClass('open');
});
$(document).on('click', '.sidebar-nav .selectOptions li', function (e) {
e.stopPropagation();
const $item = $(this);
const $container = $item.closest('.customSelect');
const val = $item.data('value');
const text = $item.text();
const $input = $container.find('.selectValue');
const $label = $container.find('.selectLabel');
const $allOptions = $container.find('.selectOptions li');
$allOptions.removeClass('selected');
$item.addClass('selected');
$input.val(val);
$label.text(text);
$container.removeClass('open');
changeFreigabe(val);
});
$(document).on('click', () => $('.sidebar-nav .customSelect').removeClass('open'));