feat(pos): добавить редактирование цены товара в корзине

- Добавить модалку редактирования товара в корзине (edit_cart_item_modal.html)
- Создать JS модуль cart-item-editor.js для логики редактирования
- При клике на строку товара открывается модалка с возможностью изменения цены и количества
- Добавить визуальную индикацию изменённой цены (оранжевый цвет и звёздочка)
- Экспортировать корзину в window.cart для доступа из других модулей
- Добавить авто-выделение текста при фокусе в полях ввода

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-18 22:08:58 +03:00
parent 961cfcb9cd
commit 017fa4b744
5 changed files with 317 additions and 1 deletions

View File

@@ -19,6 +19,8 @@ let showcaseKits = JSON.parse(document.getElementById('showcaseKitsData').textCo
let currentCategoryId = null;
let isShowcaseView = false;
const cart = new Map();
// Экспорт корзины для использования в других модулях
window.cart = cart;
// Переменные для пагинации
let currentPage = 1;
@@ -1270,6 +1272,13 @@ function renderCart() {
cart.forEach((item, cartKey) => {
const row = document.createElement('div');
row.className = 'cart-item mb-2';
row.style.cursor = 'pointer';
row.title = 'Нажмите для редактирования';
// Индикатор изменённой цены
if (item.price_overridden) {
row.classList.add('price-overridden');
}
// СПЕЦИАЛЬНАЯ СТИЛИЗАЦИЯ для витринных комплектов
const isShowcaseKit = item.type === 'showcase_kit';
@@ -1416,7 +1425,21 @@ function renderCart() {
row.appendChild(qtyControl);
row.appendChild(itemTotal);
row.appendChild(deleteBtn);
// Обработчик клика для редактирования товара
row.addEventListener('click', function(e) {
// Игнорируем клики на кнопки управления количеством и удаления
if (e.target.closest('button') || e.target.closest('input')) {
return;
}
console.log('Cart row clicked, cartKey:', cartKey, 'CartItemEditor:', typeof window.CartItemEditor);
if (window.CartItemEditor) {
window.CartItemEditor.openModal(cartKey);
} else {
console.error('CartItemEditor not available!');
}
});
list.appendChild(row);
total += item.qty * item.price;