diff --git a/myproject/pos/static/pos/js/terminal.js b/myproject/pos/static/pos/js/terminal.js index da8fe9d..a64466c 100644 --- a/myproject/pos/static/pos/js/terminal.js +++ b/myproject/pos/static/pos/js/terminal.js @@ -848,13 +848,18 @@ function renderProducts() { let filtered; - // Если выбран режим витрины - показываем витринные комплекты - if (isShowcaseView) { + // Если активен поиск (3+ символов) - показываем результаты поиска по всем товарам + // независимо от режима (витрина или обычный) + if (currentSearchQuery && currentSearchQuery.length >= 3 && !isShowcaseView) { + // Обычный режим - ITEMS уже отфильтрованы на сервере (поиск по всем товарам) + filtered = ITEMS; + } else if (isShowcaseView) { + // Режим витрины - показываем витринные комплекты filtered = showcaseKits; - // Для витрины — клиентская фильтрация по поиску + // Для витрины — клиентская фильтрация по поиску (только если менее 3 символов) const searchTerm = document.getElementById('searchInput').value.toLowerCase().trim(); - if (searchTerm) { + if (searchTerm && searchTerm.length < 3) { const tokens = searchTerm.split(/\s+/).filter(t => t.length > 0); filtered = filtered.filter(item => { const name = (item.name || '').toLowerCase(); @@ -864,7 +869,7 @@ function renderProducts() { }); } } else { - // Обычный режим - ITEMS уже отфильтрованы на сервере (категория + поиск) + // Обычный режим без поиска - ITEMS отфильтрованы по категории filtered = ITEMS; } @@ -3864,10 +3869,12 @@ searchInput.addEventListener('input', (e) => { return; } - // Для витрины — мгновенная клиентская фильтрация (витрина не участвует в глобальном поиске) + // Для витрины при 3+ символах - переключаемся на глобальный поиск по всем товарам if (isShowcaseView) { - renderProducts(); - return; + // Выходим из режима витрины для глобального поиска + isShowcaseView = false; + // Обновляем UI категорий (снимаем выделение с витрины) + renderCategories(); } // Для обычных товаров/комплектов — серверный поиск с debounce 300мс