Skip to content

Commit c512dd5

Browse files
author
Olexii Korshenko
committed
Merge branch 'shopping-cart' into checkout
2 parents 01e21c1 + d37d0fd commit c512dd5

File tree

3 files changed

+45
-4
lines changed

3 files changed

+45
-4
lines changed

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

Lines changed: 34 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() {
@@ -49,6 +56,9 @@ define([
4956

5057
ajaxSubmit: function(form) {
5158
var self = this;
59+
$(self.options.minicartSelector).trigger('contentLoading');
60+
self.disableAddToCartButton(form);
61+
5262
$.ajax({
5363
url: form.attr('action'),
5464
data: form.serialize(),
@@ -82,8 +92,30 @@ define([
8292
.find('span')
8393
.html(res.product.statusText);
8494
}
95+
self.enableAddToCartButton(form);
8596
}
8697
});
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);
87119
}
88120
});
89121

app/code/Magento/Checkout/view/frontend/templates/cart/minicart.phtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
/** @var $block \Magento\Checkout\Block\Cart\Sidebar */
1010
?>
1111

12-
<div data-block="minicart" class="minicart-wrapper" >
12+
<div data-block="minicart" class="minicart-wrapper">
1313
<a class="action showcart" href="<?php echo $block->getShoppingCartUrl(); ?>"
1414
data-bind="scope: 'minicart_content'">
1515
<span class="text"><?php echo __('My Cart'); ?></span>
1616
<span class="counter qty empty"
17-
data-bind="css: { empty: cart().summary_count == 0 }">
17+
data-bind="css: { empty: cart().summary_count == 0 }, blockLoader: isLoading">
1818
<span class="counter-number"><!-- ko text: cart().summary_count --><!-- /ko --></span>
1919
<span class="counter-label">
2020
<!-- ko if: cart().summary_count -->

app/code/Magento/Checkout/view/frontend/web/js/view/minicart.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ define([
1212
'use strict';
1313

1414
var sidebarInitialized = false;
15+
var addToCartCalls = 0;
1516
url.setBaseUrl(window.checkout.baseUrl);
1617

1718
function initSidebar() {
@@ -57,12 +58,20 @@ define([
5758
return Component.extend({
5859
shoppingCartUrl: window.checkout.shoppingCartUrl,
5960
initialize: function () {
61+
var self = this;
6062
this._super();
6163
this.cart = customerData.get('cart');
6264
this.cart.subscribe(function () {
65+
addToCartCalls--;
66+
this.isLoading(addToCartCalls > 0);
6367
sidebarInitialized = false;
68+
}, this);
69+
$('[data-block="minicart"]').on('contentLoading', function(event) {
70+
addToCartCalls++;
71+
self.isLoading(true);
6472
});
6573
},
74+
isLoading: ko.observable(false),
6675
initSidebar: ko.observable(initSidebar),
6776
closeSidebar: function(element) {
6877
var minicart = $('[data-block="minicart"]');

0 commit comments

Comments
 (0)