Commit 01994e26 authored by Artem's avatar Artem

improve update cart event listener

parent d1889f3b
......@@ -20,7 +20,7 @@ class Cart {
<td>€ ${product.item.price}</td>
<td>
<input type="number"
min="0"
min="1"
class="js-qty-input form-control text-center"
data-product-id="${product.item.id}"
value="${product.qty}">
......@@ -53,10 +53,10 @@ class Cart {
document.querySelector('.js-cart').addEventListener('click', this.bindedRemoveItemFromCart);
function removeItemFromCart(e) {
if (!e.target.classList.contains('js-remove-btn')) return;
const actionUrl = e.target.dataset.action;
const productId = e.target.dataset.productId;
function removeItemFromCart(event) {
if (!event.target.classList.contains('js-remove-btn')) return;
const actionUrl = event.target.dataset.action;
const productId = event.target.dataset.productId;
loaderElem.classList.toggle('loader-show');
......@@ -70,7 +70,7 @@ class Cart {
return;
}
document.querySelector('.js-cart').removeEventListener('click', this.bindedRemoveItemFromCart);
this.removeEventListeners();
this.show();
loaderElem.classList.toggle('loader-show');
toastr.success('Product deleted');
......@@ -84,38 +84,39 @@ class Cart {
}
setUpdateItemQtyEventListener() {
document.querySelectorAll('.js-qty-input').forEach(changeQtyInput => {
let isChanged;
changeQtyInput.addEventListener('change', (event) => {
if (isChanged) {
return;
}
this.bindedUpdateItemQty = bindedUpdateItemQty.bind(this);
isChanged = true;
const actionUrl = this.updateItemUrl;
const productId = event.target.dataset.productId;
document.querySelector('.js-cart').addEventListener('change', this.bindedUpdateItemQty);
loaderElem.classList.toggle('loader-show');
function bindedUpdateItemQty(event) {
if (!event.target.classList.contains('js-qty-input')) return;
const actionUrl = this.updateItemUrl;
const productId = event.target.dataset.productId;
loaderElem.classList.toggle('loader-show');
axios.post(actionUrl, {
productId: productId,
changedQty: event.target.value,
axios.post(actionUrl, {
productId: productId,
changedQty: event.target.value,
})
.then( (response) => {
this.removeEventListeners();
this.show();
loaderElem.classList.toggle('loader-show');
toastr.success('Quantity updated');
})
.then( (response) => {
document.querySelector('.js-cart').removeEventListener('click', this.bindedRemoveItemFromCart);
this.show();
loaderElem.classList.toggle('loader-show');
toastr.success('Quantity updated');
})
.catch(function (error) {
console.log(error);
loaderElem.classList.toggle('loader-show');
toastr.error('Error, something went wrong');
});
isChanged = false;
});
});
.catch(function (error) {
console.log(error);
loaderElem.classList.toggle('loader-show');
toastr.error('Error, something went wrong');
});
};
}
removeEventListeners() {
this.cartHtmlElem.removeEventListener('change', this.bindedUpdateItemQty);
this.cartHtmlElem.removeEventListener('click', this.bindedRemoveItemFromCart);
}
events() {
......@@ -157,4 +158,3 @@ const cartElem = document.querySelector('.js-cart');
const cart = new Cart(cartElem);
cart.show();
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment