mirror of
https://github.com/sotam0316/drawNET_test.git
synced 2026-04-24 19:48:37 +09:00
36 lines
1.3 KiB
JavaScript
36 lines
1.3 KiB
JavaScript
import { state } from '../state.js';
|
|
|
|
/**
|
|
* initSearch - Initializes the asset search input listener
|
|
*/
|
|
export function initSearch() {
|
|
const searchInput = document.getElementById('asset-search');
|
|
if (!searchInput) return;
|
|
|
|
searchInput.addEventListener('input', (e) => {
|
|
const query = e.target.value.toLowerCase().trim();
|
|
const categories = document.querySelectorAll('.asset-category');
|
|
|
|
categories.forEach(cat => {
|
|
const items = cat.querySelectorAll('.asset-item');
|
|
let hasVisibleItem = false;
|
|
|
|
items.forEach(item => {
|
|
const assetId = item.dataset.assetId;
|
|
const asset = state.assetMap[assetId];
|
|
if (!asset) return;
|
|
|
|
const matches = (asset.type && asset.type.toLowerCase().includes(query)) ||
|
|
(asset.label && asset.label.toLowerCase().includes(query)) ||
|
|
(asset.vendor && asset.vendor.toLowerCase().includes(query));
|
|
|
|
item.style.display = matches ? 'flex' : 'none';
|
|
if (matches) hasVisibleItem = true;
|
|
});
|
|
|
|
cat.style.display = (hasVisibleItem || query === '') ? 'block' : 'none';
|
|
if (query !== '' && hasVisibleItem) cat.classList.add('active');
|
|
});
|
|
});
|
|
}
|