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);
|
const itemIndex = Array.from(cart.keys()).indexOf(cartKey);
|
||||||
|
|
||||||
if (itemIndex !== -1 && qtyInputs[itemIndex]) {
|
if (itemIndex !== -1 && qtyInputs[itemIndex]) {
|
||||||
|
// Устанавливаем фокус только на десктопных устройствах
|
||||||
|
if (!isMobileDevice()) {
|
||||||
qtyInputs[itemIndex].focus();
|
qtyInputs[itemIndex].focus();
|
||||||
qtyInputs[itemIndex].select(); // Выделяем весь текст
|
qtyInputs[itemIndex].select(); // Выделяем весь текст
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}, 50);
|
}, 50);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1659,7 +1662,7 @@ async function openEditKitModal(kitId) {
|
|||||||
document.getElementById('createTempKitModalLabel').textContent = 'Редактирование витринного букета';
|
document.getElementById('createTempKitModalLabel').textContent = 'Редактирование витринного букета';
|
||||||
document.getElementById('confirmCreateTempKit').textContent = 'Сохранить изменения';
|
document.getElementById('confirmCreateTempKit').textContent = 'Сохранить изменения';
|
||||||
|
|
||||||
// Показываем кнопку "Разобрать" и блок добавления товаров
|
// По<EFBFBD><EFBFBD>азываем кнопку "Разобрать" и блок добавления товаров
|
||||||
document.getElementById('disassembleKitBtn').style.display = 'block';
|
document.getElementById('disassembleKitBtn').style.display = 'block';
|
||||||
document.getElementById('showcaseKitQuantityBlock').style.display = 'none';
|
document.getElementById('showcaseKitQuantityBlock').style.display = 'none';
|
||||||
document.getElementById('addProductBlock').style.display = 'block';
|
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 токена (единая версия)
|
// Вспомогательная функция для получения CSRF токена (единая версия)
|
||||||
function getCookie(name) {
|
function getCookie(name) {
|
||||||
let cookieValue = null;
|
let cookieValue = null;
|
||||||
@@ -3242,8 +3262,10 @@ renderProducts(); // Сначала пустая сетка
|
|||||||
renderCart();
|
renderCart();
|
||||||
setupInfiniteScroll(); // Установка infinite scroll
|
setupInfiniteScroll(); // Установка infinite scroll
|
||||||
|
|
||||||
// Установить фокус на строку поиска
|
// Установить фокус на строку поиска только на десктопе
|
||||||
|
if (!isMobileDevice()) {
|
||||||
document.getElementById('searchInput').focus();
|
document.getElementById('searchInput').focus();
|
||||||
|
}
|
||||||
|
|
||||||
// ===== ОТЛОЖЕННЫЙ ЗАКАЗ =====
|
// ===== ОТЛОЖЕННЫЙ ЗАКАЗ =====
|
||||||
|
|
||||||
@@ -3305,7 +3327,7 @@ async function createDeferredOrder() {
|
|||||||
if (result.success) {
|
if (result.success) {
|
||||||
console.log(`✅ Заказ #${result.order_number} создан (черновик). ShowcaseItem зарезервированы.`);
|
console.log(`✅ Заказ #${result.order_number} создан (черновик). ShowcaseItem зарезервированы.`);
|
||||||
|
|
||||||
// КРИТИЧНО: Очищаем корзину POS (включая витринные букеты)
|
// КРИТИЧНО: Очищаем корзину POS (включая витринные <EFBFBD><EFBFBD>укеты)
|
||||||
cart.clear();
|
cart.clear();
|
||||||
renderCart();
|
renderCart();
|
||||||
saveCartToRedis(); // Сохраняем пустую корзину в Redis
|
saveCartToRedis(); // Сохраняем пустую корзину в Redis
|
||||||
|
|||||||
Reference in New Issue
Block a user