Skip to content

Commit 689e99e

Browse files
author
Stanislav Idolov
committed
MAGETWO-37087: [Folks] AJAX Add to Cart
1 parent 11771c7 commit 689e99e

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

app/code/Magento/Catalog/view/frontend/web/js/catalog-add-to-cart.js

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
*/
55
define([
66
'jquery',
7+
'mage/translate',
78
'jquery/ui'
8-
], function($) {
9+
], function($, $t) {
910
"use strict";
1011

1112
$.widget('mage.catalogAddToCart', {
@@ -16,7 +17,13 @@ define([
1617
bindSubmit: true,
1718
minicartSelector: '[data-block="minicart"]',
1819
messagesSelector: '[data-placeholder="messages"]',
19-
productStatusSelector: '.stock.available'
20+
productStatusSelector: '.stock.available',
21+
addToCartButtonSelector: '.action.tocart',
22+
addToCartButtonDisabledClass: 'disabled',
23+
addToCartButtonTextWhileAdding: $t('Adding...'),
24+
addToCartButtonTextAdded: $t('Added'),
25+
addToCartButtonTextDefault: $t('Add to Cart')
26+
2027
},
2128

2229
_create: function() {
@@ -50,6 +57,8 @@ define([
5057
ajaxSubmit: function(form) {
5158
var self = this;
5259
$(self.options.minicartSelector).trigger('contentLoading');
60+
self.disableAddToCartButton(form);
61+
5362
$.ajax({
5463
url: form.attr('action'),
5564
data: form.serialize(),
@@ -83,8 +92,30 @@ define([
8392
.find('span')
8493
.html(res.product.statusText);
8594
}
95+
self.enableAddToCartButton(form);
8696
}
8797
});
98+
},
99+
100+
disableAddToCartButton: function(form) {
101+
var addToCartButton = $(form).find(this.options.addToCartButtonSelector);
102+
addToCartButton.addClass(this.options.addToCartButtonDisabledClass);
103+
addToCartButton.attr('title', this.options.addToCartButtonTextWhileAdding);
104+
addToCartButton.find('span').text(this.options.addToCartButtonTextWhileAdding);
105+
},
106+
107+
enableAddToCartButton: function(form) {
108+
var self = this,
109+
addToCartButton = $(form).find(this.options.addToCartButtonSelector);
110+
111+
addToCartButton.find('span').text(this.options.addToCartButtonTextAdded);
112+
addToCartButton.attr('title', this.options.addToCartButtonTextAdded);
113+
114+
setTimeout(function() {
115+
addToCartButton.removeClass(self.options.addToCartButtonDisabledClass);
116+
addToCartButton.find('span').text(self.options.addToCartButtonTextDefault);
117+
addToCartButton.attr('title', self.options.addToCartButtonTextDefault);
118+
}, 1000);
88119
}
89120
});
90121

0 commit comments

Comments
 (0)