import $ from 'jquery' var currentTask function singleProductAddToCart(wrapper) { if (!$) return var form = wrapper.closest('form') var button = form.find('.button') var formUrl = form.attr('action') var formMethod = form.attr('method') if (typeof formMethod === 'undefined' || formMethod == '') { formMethod = 'POST' } var formData = new FormData(form[0]) formData.append(button.attr('name'), button.val()) button.removeClass('added') button.addClass('loading') // Trigger event. $(document.body).trigger('adding_to_cart', [button, {}]) currentTask = $.ajax({ url: formUrl, method: formMethod, data: formData, cache: false, contentType: false, processData: false }) .done((data, textStatus, jqXHR) => { $(document.body).trigger('wc_fragment_refresh') $.ajax({ url: wc_cart_fragments_params.wc_ajax_url .toString() .replace('%%endpoint%%', 'get_refreshed_fragments'), type: 'POST', success: data => { if (data && data.fragments) { $.each(data.fragments, function(key, value) { $(key).replaceWith(value) }) $(document.body).trigger('wc_fragments_refreshed') } $(document.body).trigger('added_to_cart', [ data.fragments, data.cart_hash, button, formData.get('quantity') ]) } }) }) .fail(() => button.removeClass('loading')) .always(function(jqXHR, textStatus, errorThrown) { $('.cart').off('submit') listenAddToCart() }) } function listenAddToCart() { if (!$) return $('.cart').on('submit', function(e) { e.preventDefault() singleProductAddToCart($(this)) }) } export const mount = () => { listenAddToCart() }