-
-
-
-
-
+ hamburgerMenu.innerHTML = `
+
+
☰
+
Ticket Controls
+
- `;
- } else {
- hamburgerMenu.innerHTML = `
-
☰
-
-
☰
-
Filters
-
-
-
-
-
-
+
- `;
+
+
+
+
+ `;
+ } else {
+ hamburgerMenu.innerHTML = `
+
☰
+
+
☰
+
Filters
+
+
+
+
+
+
+
+ `;
- // Populate categories and types from data attributes
- const categoriesContainer = hamburgerMenu.querySelector('#category-filters');
- const typesContainer = hamburgerMenu.querySelector('#type-filters');
+ // Populate categories and types from data attributes
+ const categoriesContainer = hamburgerMenu.querySelector('#category-filters');
+ const typesContainer = hamburgerMenu.querySelector('#type-filters');
+
+ const categories = JSON.parse(document.body.dataset.categories || '[]');
+ const types = JSON.parse(document.body.dataset.types || '[]');
+
+ // Create checkboxes for categories
+ categories.forEach(category => {
+ const label = document.createElement('label');
+ const checkbox = document.createElement('input');
+ checkbox.type = 'checkbox';
+ checkbox.value = category;
+ checkbox.name = 'category';
+ label.appendChild(checkbox);
+ label.appendChild(document.createTextNode(category));
+ categoriesContainer.appendChild(label);
+ });
+
+ // Create checkboxes for types
+ types.forEach(type => {
+ const label = document.createElement('label');
+ const checkbox = document.createElement('input');
+ checkbox.type = 'checkbox';
+ checkbox.value = type;
+ checkbox.name = 'type';
+ label.appendChild(checkbox);
+ label.appendChild(document.createTextNode(type));
+ typesContainer.appendChild(label);
+ });
+
+ // Apply filters
+ const applyFiltersBtn = hamburgerMenu.querySelector('#apply-filters');
+ applyFiltersBtn.addEventListener('click', () => {
+ const selectedCategories = Array.from(
+ categoriesContainer.querySelectorAll('input:checked')
+ ).map(cb => cb.value);
- const categories = JSON.parse(document.body.dataset.categories || '[]');
- const types = JSON.parse(document.body.dataset.types || '[]');
+ const selectedTypes = Array.from(
+ typesContainer.querySelectorAll('input:checked')
+ ).map(cb => cb.value);
- // Create checkboxes for categories
- categories.forEach(category => {
- const label = document.createElement('label');
- const checkbox = document.createElement('input');
- checkbox.type = 'checkbox';
- checkbox.value = category;
- checkbox.name = 'category';
- label.appendChild(checkbox);
- label.appendChild(document.createTextNode(category));
- categoriesContainer.appendChild(label);
- });
-
- // Create checkboxes for types
- types.forEach(type => {
- const label = document.createElement('label');
- const checkbox = document.createElement('input');
- checkbox.type = 'checkbox';
- checkbox.value = type;
- checkbox.name = 'type';
- label.appendChild(checkbox);
- label.appendChild(document.createTextNode(type));
- typesContainer.appendChild(label);
- });
-
- // Apply filters
- const applyFiltersBtn = hamburgerMenu.querySelector('#apply-filters');
- applyFiltersBtn.addEventListener('click', () => {
- const selectedCategories = Array.from(
- categoriesContainer.querySelectorAll('input:checked')
- ).map(cb => cb.value);
-
- const selectedTypes = Array.from(
- typesContainer.querySelectorAll('input:checked')
- ).map(cb => cb.value);
-
- // Construct URL with filters
- const params = new URLSearchParams(window.location.search);
-
- if (selectedCategories.length > 0) {
- params.set('category', selectedCategories.join(','));
- } else {
- params.delete('category');
- }
-
- if (selectedTypes.length > 0) {
- params.set('type', selectedTypes.join(','));
- } else {
- params.delete('type');
- }
-
- // Reload with new filters
- window.location.search = params.toString();
- });
-
- // Clear filters
- const clearFiltersBtn = hamburgerMenu.querySelector('#clear-filters');
- clearFiltersBtn.addEventListener('click', () => {
- const params = new URLSearchParams(window.location.search);
+ // Construct URL with filters
+ const params = new URLSearchParams(window.location.search);
+
+ if (selectedCategories.length > 0) {
+ params.set('category', selectedCategories.join(','));
+ } else {
params.delete('category');
+ }
+
+ if (selectedTypes.length > 0) {
+ params.set('type', selectedTypes.join(','));
+ } else {
params.delete('type');
- window.location.search = params.toString();
- });
- }
- // Add to body
- document.body.appendChild(hamburgerMenu);
+ }
- // Toggle hamburger menu
- const hamburgerIcon = hamburgerMenu.querySelector('.hamburger-icon');
- const hamburgerContent = hamburgerMenu.querySelector('.hamburger-content');
- hamburgerIcon.addEventListener('click', () => {
- hamburgerContent.classList.toggle('open');
- document.body.classList.toggle('menu-open');
+ // Reload with new filters
+ window.location.search = params.toString();
});
- // Close hamburger menu
- const closeButton = hamburgerMenu.querySelector('.close-hamburger');
- closeButton.addEventListener('click', () => {
- hamburgerContent.classList.remove('open');
- document.body.classList.remove('menu-open');
+ // Clear filters
+ const clearFiltersBtn = hamburgerMenu.querySelector('#clear-filters');
+ clearFiltersBtn.addEventListener('click', () => {
+ const params = new URLSearchParams(window.location.search);
+ params.delete('category');
+ params.delete('type');
+ window.location.search = params.toString();
});
+ }
+ // Add to body
+ document.body.appendChild(hamburgerMenu);
+
+ // Toggle hamburger menu
+ const hamburgerIcon = hamburgerMenu.querySelector('.hamburger-icon');
+ const hamburgerContent = hamburgerMenu.querySelector('.hamburger-content');
+ hamburgerIcon.addEventListener('click', () => {
+ hamburgerContent.classList.toggle('open');
+ document.body.classList.toggle('menu-open');
+ });
+
+ // Close hamburger menu
+ const closeButton = hamburgerMenu.querySelector('.close-hamburger');
+ closeButton.addEventListener('click', () => {
+ hamburgerContent.classList.remove('open');
+ document.body.classList.remove('menu-open');
+ });
}
// Add to DOMContentLoaded