From 0b259ff50db5458613a320099d5714a4c0fd71d4 Mon Sep 17 00:00:00 2001 From: humancopy Date: Fri, 30 Oct 2015 14:09:55 +0100 Subject: [PATCH 01/12] Add events to notify of drawer opening / closing --- assets/timber.js.liquid | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/assets/timber.js.liquid b/assets/timber.js.liquid index 4322de2f2..d9238a0af 100755 --- a/assets/timber.js.liquid +++ b/assets/timber.js.liquid @@ -404,6 +404,9 @@ timber.Drawers = (function () { return this.close(); } + // Notify the drawer is going to open + $(document.body).trigger('beforeDrawerOpen.timber', this); + // Add is-transitioning class to moved elements on open so drawer can have // transition for close animation this.$nodes.moved.addClass('is-transitioning'); @@ -435,6 +438,9 @@ timber.Drawers = (function () { this.close(); return false; }, this)); + + // Notify the drawer has opened + $(document.body).trigger('afterDrawerOpen.timber', this); }; Drawer.prototype.close = function () { @@ -442,6 +448,9 @@ timber.Drawers = (function () { return; } + // Notify the drawer is going to close + $(document.body).trigger('beforeDrawerClose.timber', this); + // deselect any focused form elements $(document.activeElement).trigger('blur'); @@ -457,6 +466,9 @@ timber.Drawers = (function () { this.removeTrapFocus(this.$drawer, 'drawer_focus'); this.$nodes.page.off('.drawer'); + + // Notify the drawer is closed now + $(document.body).trigger('afterDrawerClose.timber', this); }; Drawer.prototype.trapFocus = function ($container, eventNamespace) { From aa00267be2d07dc004ba4fae2b3cf031e9b29ccc Mon Sep 17 00:00:00 2001 From: humancopy Date: Fri, 30 Oct 2015 18:28:18 +0100 Subject: [PATCH 02/12] Use timber.cache.$body for event triggering --- assets/timber.js.liquid | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/timber.js.liquid b/assets/timber.js.liquid index d9238a0af..ff6ea69d7 100755 --- a/assets/timber.js.liquid +++ b/assets/timber.js.liquid @@ -405,7 +405,7 @@ timber.Drawers = (function () { } // Notify the drawer is going to open - $(document.body).trigger('beforeDrawerOpen.timber', this); + timber.cache.$body.trigger('beforeDrawerOpen.timber', this); // Add is-transitioning class to moved elements on open so drawer can have // transition for close animation @@ -440,7 +440,7 @@ timber.Drawers = (function () { }, this)); // Notify the drawer has opened - $(document.body).trigger('afterDrawerOpen.timber', this); + timber.cache.$body.trigger('afterDrawerOpen.timber', this); }; Drawer.prototype.close = function () { @@ -449,7 +449,7 @@ timber.Drawers = (function () { } // Notify the drawer is going to close - $(document.body).trigger('beforeDrawerClose.timber', this); + timber.cache.$body.trigger('beforeDrawerClose.timber', this); // deselect any focused form elements $(document.activeElement).trigger('blur'); @@ -468,7 +468,7 @@ timber.Drawers = (function () { this.$nodes.page.off('.drawer'); // Notify the drawer is closed now - $(document.body).trigger('afterDrawerClose.timber', this); + timber.cache.$body.trigger('afterDrawerClose.timber', this); }; Drawer.prototype.trapFocus = function ($container, eventNamespace) { From b1df47870e32d2879bad569fc44682d637f4b562 Mon Sep 17 00:00:00 2001 From: humancopy Date: Sat, 14 May 2016 09:55:41 +0200 Subject: [PATCH 03/12] Add more triggers --- assets/ajax-cart.js.liquid | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index 5faab3452..9f3a8d776 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -44,6 +44,9 @@ ShopifyAPI.updateCartNote = function(note, callback) { url: '/cart/update.js', data: 'note=' + attributeToString(note), dataType: 'json', + beforeSend: function() { + $('body').trigger('ajaxCart.updateCartNote', note); + }, success: function(cart) { if ((typeof callback) === 'function') { callback(cart); @@ -51,8 +54,10 @@ ShopifyAPI.updateCartNote = function(note, callback) { else { ShopifyAPI.onCartUpdate(cart); } + $('body').trigger('ajaxCart.updatedCartNote', note, cart); }, error: function(XMLHttpRequest, textStatus) { + $('body').trigger('ajaxCart.updateCartNoteError', XMLHttpRequest, textStatus); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -77,6 +82,9 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { url: '/cart/add.js', data: jQuery(form).serialize(), dataType: 'json', + beforeSend: function(jqxhr, settings) { + $('body').trigger('ajaxCart.addItem', form); + }, success: function(line_item) { if ((typeof callback) === 'function') { callback(line_item, form); @@ -84,6 +92,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onItemAdded(line_item, form); } + $('body').trigger('ajaxCart.addedItem', line_item, form); }, error: function(XMLHttpRequest, textStatus) { if ((typeof errorCallback) === 'function') { @@ -92,6 +101,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onError(XMLHttpRequest, textStatus); } + $('body').trigger('ajaxCart.addItemError', XMLHttpRequest, textStatus); } }; jQuery.ajax(params); @@ -99,6 +109,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { // Get from cart.js returns the cart in JSON ShopifyAPI.getCart = function(callback) { + $('body').trigger('ajaxCart.getCart'); jQuery.getJSON('/cart.js', function (cart, textStatus) { if ((typeof callback) === 'function') { callback(cart); @@ -106,6 +117,7 @@ ShopifyAPI.getCart = function(callback) { else { ShopifyAPI.onCartUpdate(cart); } + $('body').trigger('ajaxCart.gotCart', cart); }); }; @@ -116,6 +128,9 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { url: '/cart/change.js', data: 'quantity=' + quantity + '&line=' + line, dataType: 'json', + beforeSend: function() { + $('body').trigger('ajaxCart.changeItem', line, quantity); + }, success: function(cart) { if ((typeof callback) === 'function') { callback(cart); @@ -123,8 +138,10 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { else { ShopifyAPI.onCartUpdate(cart); } + $('body').trigger('ajaxCart.changedItem', line, quantity, cart); }, error: function(XMLHttpRequest, textStatus) { + $('body').trigger('ajaxCart.changeItemError', XMLHttpRequest, textStatus); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -217,6 +234,7 @@ var ajaxCart = (function(module, $) { formOverride = function () { $formContainer.on('submit', function(evt) { + $body.trigger('ajaxCart.beforeSubmit'); evt.preventDefault(); // Add class to be styled if desired @@ -226,6 +244,7 @@ var ajaxCart = (function(module, $) { $('.qty-error').remove(); ShopifyAPI.addItemFromForm(evt.target, itemAddedCallback, itemErrorCallback); + $body.trigger('ajaxCart.afterSubmit', evt); }); }; @@ -241,6 +260,7 @@ var ajaxCart = (function(module, $) { if (!!data.message) { if (data.status == 422) { + $body.trigger('ajaxCart.itemError', data); $formContainer.after('
'+ data.description +'
') } } From da2e6db16ce21550aa291713d1792c6c00ddffb9 Mon Sep 17 00:00:00 2001 From: humancopy Date: Sat, 14 May 2016 09:56:35 +0200 Subject: [PATCH 04/12] Event namespace should come last --- assets/ajax-cart.js.liquid | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index 9f3a8d776..f894316fa 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -45,7 +45,7 @@ ShopifyAPI.updateCartNote = function(note, callback) { data: 'note=' + attributeToString(note), dataType: 'json', beforeSend: function() { - $('body').trigger('ajaxCart.updateCartNote', note); + $('body').trigger('updateCartNote.ajaxCart', note); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -54,10 +54,10 @@ ShopifyAPI.updateCartNote = function(note, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('ajaxCart.updatedCartNote', note, cart); + $('body').trigger('updatedCartNote.ajaxCart', note, cart); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('ajaxCart.updateCartNoteError', XMLHttpRequest, textStatus); + $('body').trigger('updateCartNoteError.ajaxCart', XMLHttpRequest, textStatus); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -83,7 +83,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { data: jQuery(form).serialize(), dataType: 'json', beforeSend: function(jqxhr, settings) { - $('body').trigger('ajaxCart.addItem', form); + $('body').trigger('addItem.ajaxCart', form); }, success: function(line_item) { if ((typeof callback) === 'function') { @@ -92,7 +92,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onItemAdded(line_item, form); } - $('body').trigger('ajaxCart.addedItem', line_item, form); + $('body').trigger('addedItem.ajaxCart', line_item, form); }, error: function(XMLHttpRequest, textStatus) { if ((typeof errorCallback) === 'function') { @@ -101,7 +101,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onError(XMLHttpRequest, textStatus); } - $('body').trigger('ajaxCart.addItemError', XMLHttpRequest, textStatus); + $('body').trigger('addItemError.ajaxCart', XMLHttpRequest, textStatus); } }; jQuery.ajax(params); @@ -109,7 +109,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { // Get from cart.js returns the cart in JSON ShopifyAPI.getCart = function(callback) { - $('body').trigger('ajaxCart.getCart'); + $('body').trigger('getCart.ajaxCart'); jQuery.getJSON('/cart.js', function (cart, textStatus) { if ((typeof callback) === 'function') { callback(cart); @@ -117,7 +117,7 @@ ShopifyAPI.getCart = function(callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('ajaxCart.gotCart', cart); + $('body').trigger('gotCart.ajaxCart', cart); }); }; @@ -129,7 +129,7 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { data: 'quantity=' + quantity + '&line=' + line, dataType: 'json', beforeSend: function() { - $('body').trigger('ajaxCart.changeItem', line, quantity); + $('body').trigger('changeItem.ajaxCart', line, quantity); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -138,10 +138,10 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('ajaxCart.changedItem', line, quantity, cart); + $('body').trigger('changedItem.ajaxCart', line, quantity, cart); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('ajaxCart.changeItemError', XMLHttpRequest, textStatus); + $('body').trigger('changeItemError.ajaxCart', XMLHttpRequest, textStatus); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -234,7 +234,7 @@ var ajaxCart = (function(module, $) { formOverride = function () { $formContainer.on('submit', function(evt) { - $body.trigger('ajaxCart.beforeSubmit'); + $body.trigger('beforeSubmit.ajaxCart'); evt.preventDefault(); // Add class to be styled if desired @@ -244,7 +244,7 @@ var ajaxCart = (function(module, $) { $('.qty-error').remove(); ShopifyAPI.addItemFromForm(evt.target, itemAddedCallback, itemErrorCallback); - $body.trigger('ajaxCart.afterSubmit', evt); + $body.trigger('afterSubmit.ajaxCart', evt); }); }; @@ -260,7 +260,7 @@ var ajaxCart = (function(module, $) { if (!!data.message) { if (data.status == 422) { - $body.trigger('ajaxCart.itemError', data); + $body.trigger('itemError.ajaxCart', data); $formContainer.after('
'+ data.description +'
') } } @@ -345,7 +345,7 @@ var ajaxCart = (function(module, $) { cartCallback = function(cart) { $body.removeClass('drawer--is-loading'); - $body.trigger('ajaxCart.afterCartLoad', cart); + $body.trigger('afterCartLoad.ajaxCart', cart); }; adjustCart = function () { From 9e0a5c869445b0a75d966f9829e99a00183f71de Mon Sep 17 00:00:00 2001 From: humancopy Date: Sat, 14 May 2016 10:02:40 +0200 Subject: [PATCH 05/12] Add complete triggers for add / change item --- assets/ajax-cart.js.liquid | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index f894316fa..10a37a5a9 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -102,6 +102,9 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { ShopifyAPI.onError(XMLHttpRequest, textStatus); } $('body').trigger('addItemError.ajaxCart', XMLHttpRequest, textStatus); + }, + complete: function(jqxhr, text) { + $('body').trigger('addItemComplete.ajaxCart', this, text); } }; jQuery.ajax(params); @@ -143,6 +146,9 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { error: function(XMLHttpRequest, textStatus) { $('body').trigger('changeItemError.ajaxCart', XMLHttpRequest, textStatus); ShopifyAPI.onError(XMLHttpRequest, textStatus); + }, + complete: function(jqxhr, text) { + $('body').trigger('changeItemComplete.ajaxCart', this, text); } }; jQuery.ajax(params); From 0e83b52fe02af0751bb5092b3ce0e1eee98220d2 Mon Sep 17 00:00:00 2001 From: humancopy Date: Sat, 14 May 2016 11:07:36 +0200 Subject: [PATCH 06/12] Fix multiple arguments trigger and add 2 triggers for adjustCart --- assets/ajax-cart.js.liquid | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index 10a37a5a9..f2659c509 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -54,10 +54,10 @@ ShopifyAPI.updateCartNote = function(note, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('updatedCartNote.ajaxCart', note, cart); + $('body').trigger('updatedCartNote.ajaxCart', [note, cart]); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('updateCartNoteError.ajaxCart', XMLHttpRequest, textStatus); + $('body').trigger('updateCartNoteError.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -92,7 +92,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onItemAdded(line_item, form); } - $('body').trigger('addedItem.ajaxCart', line_item, form); + $('body').trigger('addedItem.ajaxCart', [line_item, form]); }, error: function(XMLHttpRequest, textStatus) { if ((typeof errorCallback) === 'function') { @@ -101,10 +101,10 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onError(XMLHttpRequest, textStatus); } - $('body').trigger('addItemError.ajaxCart', XMLHttpRequest, textStatus); + $('body').trigger('addItemError.ajaxCart', [XMLHttpRequest, textStatus]); }, complete: function(jqxhr, text) { - $('body').trigger('addItemComplete.ajaxCart', this, text); + $('body').trigger('addItemComplete.ajaxCart', [this, text]); } }; jQuery.ajax(params); @@ -132,7 +132,7 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { data: 'quantity=' + quantity + '&line=' + line, dataType: 'json', beforeSend: function() { - $('body').trigger('changeItem.ajaxCart', line, quantity); + $('body').trigger('changeItem.ajaxCart', [line, quantity]); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -141,14 +141,14 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('changedItem.ajaxCart', line, quantity, cart); + $('body').trigger('changedItem.ajaxCart', [line, quantity, cart]); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('changeItemError.ajaxCart', XMLHttpRequest, textStatus); + $('body').trigger('changeItemError.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); }, complete: function(jqxhr, text) { - $('body').trigger('changeItemComplete.ajaxCart', this, text); + $('body').trigger('changeItemComplete.ajaxCart', [this, text]); } }; jQuery.ajax(params); @@ -380,6 +380,7 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart. // Otherwise, just update the input's number + $('body').trigger('adjustCart.ajaxCart', [this, line, qty]); if (line) { updateQuantity(line, qty); } else { @@ -401,6 +402,7 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart if (line) { + $('body').trigger('adjustCart.ajaxCart', [this, line, qty]); updateQuantity(line, qty); } }); From bbcf781c53b5452ce73d05aa1175a1bb1a3a2b41 Mon Sep 17 00:00:00 2001 From: humancopy Date: Mon, 16 May 2016 13:14:59 +0200 Subject: [PATCH 07/12] Cache $('body') --- assets/ajax-cart.js.liquid | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index f2659c509..3269bd43d 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -39,13 +39,14 @@ ShopifyAPI.onCartUpdate = function(cart) { }; ShopifyAPI.updateCartNote = function(note, callback) { - var params = { + var $body = $('body'), + params = { type: 'POST', url: '/cart/update.js', data: 'note=' + attributeToString(note), dataType: 'json', beforeSend: function() { - $('body').trigger('updateCartNote.ajaxCart', note); + $body.trigger('updateCartNote.ajaxCart', note); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -54,10 +55,10 @@ ShopifyAPI.updateCartNote = function(note, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('updatedCartNote.ajaxCart', [note, cart]); + $body.trigger('updatedCartNote.ajaxCart', [note, cart]); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('updateCartNoteError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('updateCartNoteError.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); } }; @@ -77,13 +78,14 @@ ShopifyAPI.onError = function(XMLHttpRequest, textStatus) { - Allow custom error callback ==============================================================================*/ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { - var params = { + var $body = $('body'), + params = { type: 'POST', url: '/cart/add.js', data: jQuery(form).serialize(), dataType: 'json', beforeSend: function(jqxhr, settings) { - $('body').trigger('addItem.ajaxCart', form); + $body.trigger('addItem.ajaxCart', form); }, success: function(line_item) { if ((typeof callback) === 'function') { @@ -92,7 +94,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onItemAdded(line_item, form); } - $('body').trigger('addedItem.ajaxCart', [line_item, form]); + $body.trigger('addedItem.ajaxCart', [line_item, form]); }, error: function(XMLHttpRequest, textStatus) { if ((typeof errorCallback) === 'function') { @@ -101,10 +103,10 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onError(XMLHttpRequest, textStatus); } - $('body').trigger('addItemError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('addItemError.ajaxCart', [XMLHttpRequest, textStatus]); }, complete: function(jqxhr, text) { - $('body').trigger('addItemComplete.ajaxCart', [this, text]); + $body.trigger('addItemComplete.ajaxCart', [this, text]); } }; jQuery.ajax(params); @@ -126,13 +128,14 @@ ShopifyAPI.getCart = function(callback) { // POST to cart/change.js returns the cart in JSON ShopifyAPI.changeItem = function(line, quantity, callback) { - var params = { + var $body = $('body'), + params = { type: 'POST', url: '/cart/change.js', data: 'quantity=' + quantity + '&line=' + line, dataType: 'json', beforeSend: function() { - $('body').trigger('changeItem.ajaxCart', [line, quantity]); + $body.trigger('changeItem.ajaxCart', [line, quantity]); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -141,14 +144,14 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('changedItem.ajaxCart', [line, quantity, cart]); + $body.trigger('changedItem.ajaxCart', [line, quantity, cart]); }, error: function(XMLHttpRequest, textStatus) { - $('body').trigger('changeItemError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('changeItemError.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); }, complete: function(jqxhr, text) { - $('body').trigger('changeItemComplete.ajaxCart', [this, text]); + $body.trigger('changeItemComplete.ajaxCart', [this, text]); } }; jQuery.ajax(params); @@ -380,7 +383,7 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart. // Otherwise, just update the input's number - $('body').trigger('adjustCart.ajaxCart', [this, line, qty]); + $body.trigger('adjustCart.ajaxCart', [this, line, qty]); if (line) { updateQuantity(line, qty); } else { @@ -402,7 +405,7 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart if (line) { - $('body').trigger('adjustCart.ajaxCart', [this, line, qty]); + $body.trigger('adjustCart.ajaxCart', [this, line, qty]); updateQuantity(line, qty); } }); From c44fab424408e86f95f30187a37130e8449b71f6 Mon Sep 17 00:00:00 2001 From: humancopy Date: Wed, 18 May 2016 17:33:33 +0200 Subject: [PATCH 08/12] $('body') -> $(document.body) --- assets/ajax-cart.js.liquid | 12 ++++++------ assets/timber.js.liquid | 2 +- layout/theme.liquid | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index 3269bd43d..efe5d2e9a 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -39,7 +39,7 @@ ShopifyAPI.onCartUpdate = function(cart) { }; ShopifyAPI.updateCartNote = function(note, callback) { - var $body = $('body'), + var $body = $(document.body), params = { type: 'POST', url: '/cart/update.js', @@ -78,7 +78,7 @@ ShopifyAPI.onError = function(XMLHttpRequest, textStatus) { - Allow custom error callback ==============================================================================*/ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { - var $body = $('body'), + var $body = $(document.body), params = { type: 'POST', url: '/cart/add.js', @@ -114,7 +114,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { // Get from cart.js returns the cart in JSON ShopifyAPI.getCart = function(callback) { - $('body').trigger('getCart.ajaxCart'); + $(document.body).trigger('getCart.ajaxCart'); jQuery.getJSON('/cart.js', function (cart, textStatus) { if ((typeof callback) === 'function') { callback(cart); @@ -122,13 +122,13 @@ ShopifyAPI.getCart = function(callback) { else { ShopifyAPI.onCartUpdate(cart); } - $('body').trigger('gotCart.ajaxCart', cart); + $(document.body).trigger('gotCart.ajaxCart', cart); }); }; // POST to cart/change.js returns the cart in JSON ShopifyAPI.changeItem = function(line, quantity, callback) { - var $body = $('body'), + var $body = $(document.body), params = { type: 'POST', url: '/cart/change.js', @@ -204,7 +204,7 @@ var ajaxCart = (function(module, $) { $cartCostSelector = $(settings.cartCostSelector); // General Selectors - $body = $('body'); + $body = $(document.body); // Track cart activity status isUpdating = false; diff --git a/assets/timber.js.liquid b/assets/timber.js.liquid index 7198c996e..767a67efe 100755 --- a/assets/timber.js.liquid +++ b/assets/timber.js.liquid @@ -68,7 +68,7 @@ timber.cacheSelectors = function () { timber.cache = { // General $html : $('html'), - $body : $('body'), + $body : $(document.body), // Navigation $navigation : $('#AccessibleNav'), diff --git a/layout/theme.liquid b/layout/theme.liquid index e29955dee..a1920bd67 100755 --- a/layout/theme.liquid +++ b/layout/theme.liquid @@ -424,7 +424,7 @@ }); }); - jQuery('body').on('ajaxCart.afterCartLoad', function(evt, cart) { + jQuery(document.body).on('ajaxCart.afterCartLoad', function(evt, cart) { // Bind to 'ajaxCart.afterCartLoad' to run any javascript after the cart has loaded in the DOM timber.RightDrawer.open(); }); From e7946c87637232a186c89fc443e194dad58d7190 Mon Sep 17 00:00:00 2001 From: humancopy Date: Wed, 18 May 2016 17:42:51 +0200 Subject: [PATCH 09/12] Change to before / after name scheme for events --- assets/ajax-cart.js.liquid | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index efe5d2e9a..d8560a0d9 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -46,7 +46,7 @@ ShopifyAPI.updateCartNote = function(note, callback) { data: 'note=' + attributeToString(note), dataType: 'json', beforeSend: function() { - $body.trigger('updateCartNote.ajaxCart', note); + $body.trigger('beforeUpdateCartNote.ajaxCart', note); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -55,11 +55,14 @@ ShopifyAPI.updateCartNote = function(note, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $body.trigger('updatedCartNote.ajaxCart', [note, cart]); + $body.trigger('afterUpdateCartNote.ajaxCart', [note, cart]); }, error: function(XMLHttpRequest, textStatus) { - $body.trigger('updateCartNoteError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('errorUpdateCartNote.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); + }, + complete: function(jqxhr, text) { + $body.trigger('completeUpdateCartNote.ajaxCart', [this, jqxhr, text]); } }; jQuery.ajax(params); @@ -85,7 +88,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { data: jQuery(form).serialize(), dataType: 'json', beforeSend: function(jqxhr, settings) { - $body.trigger('addItem.ajaxCart', form); + $body.trigger('beforeAddItem.ajaxCart', form); }, success: function(line_item) { if ((typeof callback) === 'function') { @@ -94,7 +97,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onItemAdded(line_item, form); } - $body.trigger('addedItem.ajaxCart', [line_item, form]); + $body.trigger('afterAddItem.ajaxCart', [line_item, form]); }, error: function(XMLHttpRequest, textStatus) { if ((typeof errorCallback) === 'function') { @@ -103,10 +106,10 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { else { ShopifyAPI.onError(XMLHttpRequest, textStatus); } - $body.trigger('addItemError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('errorAddItem.ajaxCart', [XMLHttpRequest, textStatus]); }, complete: function(jqxhr, text) { - $body.trigger('addItemComplete.ajaxCart', [this, text]); + $body.trigger('completeAddItem.ajaxCart', [this, jqxhr, text]); } }; jQuery.ajax(params); @@ -114,7 +117,7 @@ ShopifyAPI.addItemFromForm = function(form, callback, errorCallback) { // Get from cart.js returns the cart in JSON ShopifyAPI.getCart = function(callback) { - $(document.body).trigger('getCart.ajaxCart'); + $(document.body).trigger('beforeGetCart.ajaxCart'); jQuery.getJSON('/cart.js', function (cart, textStatus) { if ((typeof callback) === 'function') { callback(cart); @@ -122,7 +125,7 @@ ShopifyAPI.getCart = function(callback) { else { ShopifyAPI.onCartUpdate(cart); } - $(document.body).trigger('gotCart.ajaxCart', cart); + $(document.body).trigger('afterGotCart.ajaxCart', cart); }); }; @@ -135,7 +138,7 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { data: 'quantity=' + quantity + '&line=' + line, dataType: 'json', beforeSend: function() { - $body.trigger('changeItem.ajaxCart', [line, quantity]); + $body.trigger('beforeChangeItem.ajaxCart', [line, quantity]); }, success: function(cart) { if ((typeof callback) === 'function') { @@ -144,14 +147,14 @@ ShopifyAPI.changeItem = function(line, quantity, callback) { else { ShopifyAPI.onCartUpdate(cart); } - $body.trigger('changedItem.ajaxCart', [line, quantity, cart]); + $body.trigger('afterChangeItem.ajaxCart', [line, quantity, cart]); }, error: function(XMLHttpRequest, textStatus) { - $body.trigger('changeItemError.ajaxCart', [XMLHttpRequest, textStatus]); + $body.trigger('errorChangeItem.ajaxCart', [XMLHttpRequest, textStatus]); ShopifyAPI.onError(XMLHttpRequest, textStatus); }, complete: function(jqxhr, text) { - $body.trigger('changeItemComplete.ajaxCart', [this, text]); + $body.trigger('completeChangeItem.ajaxCart', [this, jqxhr, text]); } }; jQuery.ajax(params); @@ -365,7 +368,7 @@ var ajaxCart = (function(module, $) { if (isUpdating) { return; } - + var $el = $(this), line = $el.data('line'), $qtySelector = $el.siblings('.ajaxcart__qty-num'), @@ -396,7 +399,7 @@ var ajaxCart = (function(module, $) { if (isUpdating) { return; } - + var $el = $(this), line = $el.data('line'), qty = parseInt($el.val().replace(/\D/g, '')); From d1ebe56fa4e32c7600f670d688ea9f494a6b5b02 Mon Sep 17 00:00:00 2001 From: humancopy Date: Fri, 20 May 2016 19:25:40 +0200 Subject: [PATCH 10/12] afterCartLoad.ajaxCart not ajaxCart.afterCartLoad --- layout/theme.liquid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layout/theme.liquid b/layout/theme.liquid index a1920bd67..c78bc650b 100755 --- a/layout/theme.liquid +++ b/layout/theme.liquid @@ -424,8 +424,8 @@ }); }); - jQuery(document.body).on('ajaxCart.afterCartLoad', function(evt, cart) { - // Bind to 'ajaxCart.afterCartLoad' to run any javascript after the cart has loaded in the DOM + jQuery(document.body).on('afterCartLoad.ajaxCart', function(evt, cart) { + // Bind to 'afterCartLoad.ajaxCart' to run any javascript after the cart has loaded in the DOM timber.RightDrawer.open(); }); From fd1b169b5caa3a12414b42ac3516ac99d07038ed Mon Sep 17 00:00:00 2001 From: humancopy Date: Fri, 20 May 2016 20:05:19 +0200 Subject: [PATCH 11/12] afterGetCart --- assets/ajax-cart.js.liquid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index d8560a0d9..474f74780 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -125,7 +125,7 @@ ShopifyAPI.getCart = function(callback) { else { ShopifyAPI.onCartUpdate(cart); } - $(document.body).trigger('afterGotCart.ajaxCart', cart); + $(document.body).trigger('afterGetCart.ajaxCart', cart); }); }; From ee91ccfa4805ad6e35e48b856ab0b14438ad6bee Mon Sep 17 00:00:00 2001 From: humancopy Date: Fri, 20 May 2016 23:38:20 +0200 Subject: [PATCH 12/12] Remove redundant events --- assets/ajax-cart.js.liquid | 5 ----- 1 file changed, 5 deletions(-) diff --git a/assets/ajax-cart.js.liquid b/assets/ajax-cart.js.liquid index 474f74780..3fc7d899e 100644 --- a/assets/ajax-cart.js.liquid +++ b/assets/ajax-cart.js.liquid @@ -246,7 +246,6 @@ var ajaxCart = (function(module, $) { formOverride = function () { $formContainer.on('submit', function(evt) { - $body.trigger('beforeSubmit.ajaxCart'); evt.preventDefault(); // Add class to be styled if desired @@ -256,7 +255,6 @@ var ajaxCart = (function(module, $) { $('.qty-error').remove(); ShopifyAPI.addItemFromForm(evt.target, itemAddedCallback, itemErrorCallback); - $body.trigger('afterSubmit.ajaxCart', evt); }); }; @@ -272,7 +270,6 @@ var ajaxCart = (function(module, $) { if (!!data.message) { if (data.status == 422) { - $body.trigger('itemError.ajaxCart', data); $formContainer.after('
'+ data.description +'
') } } @@ -386,7 +383,6 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart. // Otherwise, just update the input's number - $body.trigger('adjustCart.ajaxCart', [this, line, qty]); if (line) { updateQuantity(line, qty); } else { @@ -408,7 +404,6 @@ var ajaxCart = (function(module, $) { // If it has a data-line, update the cart if (line) { - $body.trigger('adjustCart.ajaxCart', [this, line, qty]); updateQuantity(line, qty); } });