38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
export class BasketView {
|
||
constructor() {
|
||
this.basketButtons = document.querySelectorAll('.basket-btn');
|
||
}
|
||
|
||
bindAddToBasket(handler) {
|
||
this.basketButtons.forEach(button => {
|
||
button.addEventListener('click', async (e) => {
|
||
const card = e.target.closest('.card');
|
||
const productId = card.dataset.id;
|
||
const isInBasket = button.classList.contains('in-basket');
|
||
|
||
if (isInBasket) {
|
||
await handler(productId, 'remove');
|
||
button.classList.remove('in-basket');
|
||
button.innerHTML = '<i class="bi bi-cart-plus me-1"></i>В корзину';
|
||
} else {
|
||
await handler(productId, 'add');
|
||
button.classList.add('in-basket');
|
||
button.innerHTML = '<i class="bi bi-cart-check me-1"></i>В корзине';
|
||
}
|
||
});
|
||
});
|
||
}
|
||
|
||
updateBasketButton(productId, isInBasket) {
|
||
const buttons = document.querySelectorAll(`.basket-btn[data-id="${productId}"]`);
|
||
buttons.forEach(button => {
|
||
if (isInBasket) {
|
||
button.classList.add('in-basket');
|
||
button.innerHTML = '<i class="bi bi-cart-check me-1"></i>В корзине';
|
||
} else {
|
||
button.classList.remove('in-basket');
|
||
button.innerHTML = '<i class="bi bi-cart-plus me-1"></i>В корзину';
|
||
}
|
||
});
|
||
}
|
||
} |