POS search improvements: clear button, 600ms debounce, empty screen on clear
This commit is contained in:
@@ -1013,25 +1013,51 @@ function getCsrfToken() {
|
||||
|
||||
// Обработчик поиска с debounce
|
||||
const searchInput = document.getElementById('searchInput');
|
||||
const clearSearchBtn = document.getElementById('clearSearchBtn');
|
||||
|
||||
searchInput.addEventListener('input', (e) => {
|
||||
const query = e.target.value.trim();
|
||||
|
||||
// Показываем/скрываем кнопку очистки
|
||||
if (e.target.value.length > 0) {
|
||||
clearSearchBtn.style.display = 'block';
|
||||
} else {
|
||||
clearSearchBtn.style.display = 'none';
|
||||
}
|
||||
|
||||
// Отменяем предыдущий таймер
|
||||
if (searchDebounceTimer) {
|
||||
clearTimeout(searchDebounceTimer);
|
||||
}
|
||||
|
||||
// Если поле пустое — очищаем экран
|
||||
if (query === '') {
|
||||
currentSearchQuery = '';
|
||||
ITEMS = []; // Очистка
|
||||
renderProducts(); // Пустой экран
|
||||
return;
|
||||
}
|
||||
|
||||
// Для витрины — мгновенная клиентская фильтрация
|
||||
if (isShowcaseView) {
|
||||
renderProducts();
|
||||
return;
|
||||
}
|
||||
|
||||
// Для обычных товаров/комплектов — серверный поиск с debounce 300мс
|
||||
// Для обычных товаров/комплектов — серверный поиск с debounce 600мс
|
||||
searchDebounceTimer = setTimeout(async () => {
|
||||
currentSearchQuery = query;
|
||||
await loadItems(); // Перезагрузка с серверным поиском
|
||||
}, 300);
|
||||
}, 600);
|
||||
});
|
||||
|
||||
// Обработчик кнопки очистки поиска
|
||||
clearSearchBtn.addEventListener('click', () => {
|
||||
searchInput.value = '';
|
||||
clearSearchBtn.style.display = 'none';
|
||||
currentSearchQuery = '';
|
||||
ITEMS = [];
|
||||
renderProducts(); // Пустой экран
|
||||
});
|
||||
|
||||
// Инициализация
|
||||
|
||||
Reference in New Issue
Block a user