theme-elegance/_dev/js/components/block-cart.js

92 lines
3.0 KiB
JavaScript

/**
* Copyright since 2007 PrestaShop SA and Contributors
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
*
* NOTICE OF LICENSE
*
* This source file is subject to the Academic Free License 3.0 (AFL-3.0)
* that is bundled with this package in the file LICENSE.md.
* It is also available through the world-wide-web at this URL:
* https://opensource.org/licenses/AFL-3.0
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to https://devdocs.prestashop.com/ for more information.
*
* @author PrestaShop SA and Contributors <contact@prestashop.com>
* @copyright Since 2007 PrestaShop SA and Contributors
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0)
*/
import prestashop from 'prestashop';
import $ from 'jquery';
import 'jquery-toast-plugin';
import 'jquery-toast-plugin/dist/jquery.toast.min.css';
$(() => {
prestashop.blockcart = prestashop.blockcart || {};
const showModal = prestashop.blockcart.showModal
|| function (modal) {
const $body = $('body');
$body.append(modal);
$('#blockcart-modal').modal();
console.log('called');
$body.one('click', '#blockcart-modal', (event) => {
if (event.target.id === 'blockcart-modal') {
$.modal.close();
}
});
};
prestashop.on('updateCart', (event) => {
const refreshURL = $('.blockcart').data('refresh-url');
let 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((resp) => {
$('.blockcart').replaceWith($(resp.preview).find('.blockcart'));
if (resp.modal) {
$.toast({
heading: 'Added to Cart',
text: 'You can checkout or continue shopping.',
position: {
top: '100px',
right: '20px',
},
bgColor: '#ffffff',
textColor: '#111827',
loaderBg: '#172554',
class: 'rounded-none border border-gray-200',
});
}
})
.fail((resp) => {
prestashop.emit('handleError', {
eventType: 'updateShoppingCart',
resp,
});
});
});
});