96 lines
4.0 KiB
PHP
96 lines
4.0 KiB
PHP
<div class="px-4 py-2 border-b border-gray-100 dark:border-gray-800/60 mb-2">
|
|
<div class="relative">
|
|
<input
|
|
type="text"
|
|
id="sidebar-menu-search"
|
|
placeholder="Cerca menù (es. anagrafica, nominativi, unità)..."
|
|
class="w-full text-xs rounded-lg border border-gray-200 dark:border-gray-800 bg-white dark:bg-gray-950 px-3 py-1.5 focus:border-amber-400 focus:ring-1 focus:ring-amber-400 focus:outline-none dark:text-gray-100 shadow-sm transition-all"
|
|
/>
|
|
<div class="absolute inset-y-0 right-0 flex items-center pr-3 pointer-events-none text-gray-400">
|
|
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2.5" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path>
|
|
</svg>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
(function () {
|
|
const customKeywords = {
|
|
'anagrafica': ['anagrafica unica', 'anagrafica', 'rubrica', 'persone'],
|
|
'nominativi': ['nominativi', 'condomini', 'inquilini', 'proprietari'],
|
|
'unita': ['unità immobiliare', 'scheda unità', 'selettore unità', 'unita-immobiliare'],
|
|
'fornitori': ['fornitori', 'gestione fornitori', 'archivio fornitori']
|
|
};
|
|
|
|
function filterSidebarMenu(query) {
|
|
query = (query || '').toLowerCase().trim();
|
|
const sidebarNav = document.querySelector('.fi-sidebar-nav');
|
|
const scrollPos = sidebarNav ? sidebarNav.scrollTop : 0;
|
|
const groups = document.querySelectorAll('.fi-sidebar-group');
|
|
|
|
groups.forEach(group => {
|
|
const items = group.querySelectorAll('.fi-sidebar-item');
|
|
let hasVisibleItems = false;
|
|
|
|
items.forEach(item => {
|
|
const text = item.textContent.toLowerCase();
|
|
const href = (item.querySelector('a')?.getAttribute('href') || '').toLowerCase();
|
|
|
|
let isMatch = query === '' || text.includes(query) || href.includes(query);
|
|
|
|
if (!isMatch && query.length >= 2) {
|
|
for (const [key, synonyms] of Object.entries(customKeywords)) {
|
|
if (key.includes(query) || query.includes(key)) {
|
|
if (synonyms.some(s => text.includes(s) || href.includes(s))) {
|
|
isMatch = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isMatch) {
|
|
item.style.display = '';
|
|
hasVisibleItems = true;
|
|
} else {
|
|
item.style.display = 'none';
|
|
}
|
|
});
|
|
|
|
if (query !== '' && !hasVisibleItems) {
|
|
group.style.display = 'none';
|
|
} else {
|
|
group.style.display = '';
|
|
}
|
|
});
|
|
|
|
if (sidebarNav) {
|
|
sidebarNav.scrollTop = scrollPos;
|
|
}
|
|
}
|
|
|
|
document.addEventListener('input', function (e) {
|
|
if (e.target && e.target.id === 'sidebar-menu-search') {
|
|
filterSidebarMenu(e.target.value);
|
|
}
|
|
});
|
|
|
|
document.addEventListener('keyup', function (e) {
|
|
if (e.target && e.target.id === 'sidebar-menu-search') {
|
|
filterSidebarMenu(e.target.value);
|
|
}
|
|
});
|
|
|
|
// Initialize on DOM Ready
|
|
if (document.readyState === 'loading') {
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
const searchInput = document.getElementById('sidebar-menu-search');
|
|
if (searchInput && searchInput.value) {
|
|
filterSidebarMenu(searchInput.value);
|
|
}
|
|
});
|
|
}
|
|
})();
|
|
</script>
|