refactor: move the blockcart code from theme to blockcart file

pagebuilder
Dinesh Salunke 2023-12-06 13:17:49 +05:30
parent e81cdd9d00
commit d6ccccdfa7
2 changed files with 65 additions and 62 deletions

View File

@ -25,26 +25,69 @@
import prestashop from 'prestashop';
import $ from 'jquery';
// TODO: kept here as a reference, to be removed in future once we have our own modal implementaion
// prestashop.blockcart.showModal = (html) => {
// function getBlockCartModal() {
// return $('#blockcart-modal');
// }
//
// let $blockCartModal = getBlockCartModal();
//
// if ($blockCartModal.length) {
// $blockCartModal.remove();
// }
//
// $('body').append(html);
//
// $blockCartModal = getBlockCartModal();
// $blockCartModal.modal('show').on('hidden.bs.modal', (event) => {
// prestashop.emit('updateProduct', {
// reason: event.currentTarget.dataset,
// event,
// });
// });
// };
$(function() {
prestashop.blockcart = prestashop.blockcart || {};
prestashop.blockcart.showModal = (html) => {
function getBlockCartModal() {
return $('#blockcart-modal');
var showModal = prestashop.blockcart.showModal || function(modal) {
var $body = $('body');
$body.append(modal);
$body.one('click', '#blockcart-modal', function(event) {
if (event.target.id === 'blockcart-modal') {
$(event.target).remove()
}
let $blockCartModal = getBlockCartModal();
if ($blockCartModal.length) {
$blockCartModal.remove();
})
}
$('body').append(html);
$blockCartModal = getBlockCartModal();
$blockCartModal.modal('show').on('hidden.bs.modal', (event) => {
prestashop.emit('updateProduct', {
reason: event.currentTarget.dataset,
event,
});
});
};
;
prestashop.on('updateCart', function(event) {
var refreshURL = $('.blockcart').data('refresh-url');
var requestData = {};
if (event && event.reason && typeof event.resp !== 'undefined' && !event.resp.hasError) {
requestData = {
id_customization: event.reason.idCustomization,
id_product_attribute: event.reason.idProductAttribute,
id_product: event.reason.idProduct,
action: event.reason.linkAction
}
}
if (event && event.resp && event.resp.hasError) {
prestashop.emit('showErrorNextToAddtoCartButton', {
errorMessage: event.resp.errors.join('<br/>')
})
}
$.post(refreshURL, requestData).then(function(resp) {
// TODO: keeping this over here, for later purposes if need be
var html = $('<div />').append($.parseHTML(resp.preview));
$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
if (resp.modal) {
showModal(resp.modal)
}
}).fail(function(resp) {
prestashop.emit('handleError', {
eventType: 'updateShoppingCart',
resp: resp
})
})
})
})

View File

@ -23,6 +23,7 @@
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*/
/* eslint-disable */
// import 'bootstrap/dist/js/bootstrap.min';
import "jquery-offcanvas/dist/jquery.offcanvas.min.css";
import touchspin from "bootstrap-touchspin";
import "jquery-touchswipe";
@ -163,45 +164,4 @@ $(function () {
$(".th-accordion").thaccordion();
prestashop.blockcart = prestashop.blockcart || {};
var showModal = prestashop.blockcart.showModal || function(modal) {
var $body = $('body');
$body.append(modal);
$body.one('click', '#blockcart-modal', function(event) {
if (event.target.id === 'blockcart-modal') {
$(event.target).remove()
}
})
}
;
prestashop.on('updateCart', function(event) {
var refreshURL = $('.blockcart').data('refresh-url');
var requestData = {};
if (event && event.reason && typeof event.resp !== 'undefined' && !event.resp.hasError) {
requestData = {
id_customization: event.reason.idCustomization,
id_product_attribute: event.reason.idProductAttribute,
id_product: event.reason.idProduct,
action: event.reason.linkAction
}
}
if (event && event.resp && event.resp.hasError) {
prestashop.emit('showErrorNextToAddtoCartButton', {
errorMessage: event.resp.errors.join('<br/>')
})
}
$.post(refreshURL, requestData).then(function(resp) {
// TODO: keeping this over here, for later purposes if need be
// var html = $('<div />').append($.parseHTML(resp.preview));
// $('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
// if (resp.modal) {
// showModal(resp.modal)
// }
}).fail(function(resp) {
prestashop.emit('handleError', {
eventType: 'updateShoppingCart',
resp: resp
})
})
})
});