fix(pos): отключить автофокус на мобильных устройствах
Добавлено определение мобильных устройств через User-Agent и ширину экрана. Фокус на поле поиска и поле ввода количества теперь устанавливается только на десктопах, чтобы избежать появления экранной клавиатуры на мобильных.
This commit is contained in:
@@ -1113,9 +1113,12 @@ async function addToCart(item) {
|
||||
const itemIndex = Array.from(cart.keys()).indexOf(cartKey);
|
||||
|
||||
if (itemIndex !== -1 && qtyInputs[itemIndex]) {
|
||||
// Устанавливаем фокус только на десктопных устройствах
|
||||
if (!isMobileDevice()) {
|
||||
qtyInputs[itemIndex].focus();
|
||||
qtyInputs[itemIndex].select(); // Выделяем весь текст
|
||||
}
|
||||
}
|
||||
}, 50);
|
||||
}
|
||||
}
|
||||
@@ -1659,7 +1662,7 @@ async function openEditKitModal(kitId) {
|
||||
document.getElementById('createTempKitModalLabel').textContent = 'Редактирование витринного букета';
|
||||
document.getElementById('confirmCreateTempKit').textContent = 'Сохранить изменения';
|
||||
|
||||
// Показываем кнопку "Разобрать" и блок добавления товаров
|
||||
// По<EFBFBD><EFBFBD>азываем кнопку "Разобрать" и блок добавления товаров
|
||||
document.getElementById('disassembleKitBtn').style.display = 'block';
|
||||
document.getElementById('showcaseKitQuantityBlock').style.display = 'none';
|
||||
document.getElementById('addProductBlock').style.display = 'block';
|
||||
@@ -2192,6 +2195,23 @@ document.getElementById('disassembleKitBtn').addEventListener('click', async ()
|
||||
}
|
||||
});
|
||||
|
||||
// Вспомогательная функция для определения мобильного устройства
|
||||
function isMobileDevice() {
|
||||
// Проверяем по юзер-агенту и размеру экрана
|
||||
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
|
||||
|
||||
// Проверка по юзер-агенту
|
||||
const mobileKeywords = ['Android', 'webOS', 'iPhone', 'iPad', 'iPod', 'BlackBerry', 'Windows Phone'];
|
||||
const isMobileUA = mobileKeywords.some(keyword =>
|
||||
userAgent.indexOf(keyword) > -1
|
||||
);
|
||||
|
||||
// Проверка по размеру экрана (ширина меньше 768px часто указывает на мобильные устройства)
|
||||
const isSmallScreen = window.innerWidth < 768;
|
||||
|
||||
return isMobileUA || isSmallScreen;
|
||||
}
|
||||
|
||||
// Вспомогательная функция для получения CSRF токена (единая версия)
|
||||
function getCookie(name) {
|
||||
let cookieValue = null;
|
||||
@@ -3242,8 +3262,10 @@ renderProducts(); // Сначала пустая сетка
|
||||
renderCart();
|
||||
setupInfiniteScroll(); // Установка infinite scroll
|
||||
|
||||
// Установить фокус на строку поиска
|
||||
document.getElementById('searchInput').focus();
|
||||
// Установить фокус на строку поиска только на десктопе
|
||||
if (!isMobileDevice()) {
|
||||
document.getElementById('searchInput').focus();
|
||||
}
|
||||
|
||||
// ===== ОТЛОЖЕННЫЙ ЗАКАЗ =====
|
||||
|
||||
@@ -3305,7 +3327,7 @@ async function createDeferredOrder() {
|
||||
if (result.success) {
|
||||
console.log(`✅ Заказ #${result.order_number} создан (черновик). ShowcaseItem зарезервированы.`);
|
||||
|
||||
// КРИТИЧНО: Очищаем корзину POS (включая витринные букеты)
|
||||
// КРИТИЧНО: Очищаем корзину POS (включая витринные <EFBFBD><EFBFBD>укеты)
|
||||
cart.clear();
|
||||
renderCart();
|
||||
saveCartToRedis(); // Сохраняем пустую корзину в Redis
|
||||
|
||||
Reference in New Issue
Block a user