2025-08-07 00:11:59 +07:00

62 lines
2.0 KiB
JavaScript

let filterState = {};
$(document).ready(function(){
const jenisMenuAwal = $("#tabJenisMenu .nav-link.active").data("filter")
filterState ={
jenis_menu: jenisMenuAwal,
search:'',
per_page: 12,
}
fetchMenu(filterState, getActiveFilters())
$('#tabJenisMenu .nav-link').on('click', function(e){
e.preventDefault();
const jenis = $(this).data('filter')
$('#tabJenisMenu .nav-link').removeClass('active text-success').addClass('text-black');
$(this).closest('.nav-link').removeClass('text-black').addClass('active text-success');
filterState.jenis_menu = jenis
fetchMenu(filterState, getActiveFilters())
})
let searchTimout;
$('#searchMenu').on('input', function(){
clearTimeout(searchTimout);
const keyword = $(this).val();
searchTimout = setTimeout(() => {
filterState.search = keyword;
fetchMenu(filterState, getActiveFilters())
}, 300)
})
})
function changePerPage(select) {
const newPerPage = parseInt(select.value);
filterState.per_page = newPerPage
fetchMenu(filterState, getActiveFilters())
}
const menuAvailable = document.getElementById('menu_available')
document.querySelectorAll('[data-filter-menu]').forEach(btn => {
btn.addEventListener('click', function(){
this.classList.toggle('active')
const normalBtns = document.querySelectorAll('[data-filter-menu="normal"]');
const normalIsActive = Array.from(normalBtns).some(btn => btn.classList.contains('active'));
if(normalIsActive){
menuAvailable.classList.remove('d-none')
}else{
menuAvailable.classList.add('d-none')
}
fetchMenu(filterState, getActiveFilters())
})
})
function getActiveFilters() {
return Array.from(document.querySelectorAll('[data-filter-menu].active'))
.map(btn => btn.dataset.filterMenu);
}