Skip to content

Счётчик в корзине на карточке

Компонент показывает, сколько единиц варианта уже лежит в корзине, и меняет это количество кнопками на карточке. Он стоит внутри формы с data-product-id и полем name="variant_id".

Краткий пример разметки есть также в разделе товара.

Атрибуты

Атрибут Назначение
data-add-cart-counter Корень. В значении JSON можно передать step и min
data-add-cart-counter-btn Кнопка первого добавления
data-add-cart-counter-minus Уменьшить количество или убрать товар
data-add-cart-counter-plus Увеличить количество
data-add-cart-counter-count Текст с текущим количеством
data-add-cart-counter-max-quantity Максимум, который можно положить в корзину
data-add-cart-counter-is-ready Стоит на кнопке, когда счётчик уже можно нажимать
<div class="add-cart-counter" data-add-cart-counter='{"step": "1"}'>
  <button type="button" data-add-cart-counter-btn>В корзину</button>
  <div>
    <button type="button" data-add-cart-counter-minus>-</button>
    <span data-add-cart-counter-count></span>
    <button type="button" data-add-cart-counter-plus>+</button>
  </div>
</div>

Когда товар добавлен, у корня появляется класс is-add-cart. По нему показывают блок с количеством и скрывают кнопку первого добавления.

Счётчик учитывает выбранный вариант, опции товара и обновление корзины. Если в магазине нельзя заказать больше остатка и следующее нажатие превысит data-add-cart-counter-max-quantity, количество не меняется.

События

unchange_quantity:insales:ui_add-cart-counter — нажатие не изменило количество, потому что достигнут максимум. В данных есть button.

EventBus.subscribe('unchange_quantity:insales:ui_add-cart-counter', function (data) {
  console.log(data.button);
});