Skip to content

Commit 0a5488a

Browse files
committed
MC-33593: The style of cart icon is broken
1 parent 7024122 commit 0a5488a

File tree

3 files changed

+97
-8
lines changed

3 files changed

+97
-8
lines changed

app/code/Magento/Ui/view/base/web/js/block-loader.js

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,18 @@ define([
1515
blockContentLoadingClass = '_block-content-loading',
1616
blockLoader,
1717
blockLoaderClass,
18-
loaderImageHref;
18+
blockLoaderElement = $.Deferred(),
19+
loaderImageHref = $.Deferred();
1920

2021
templateLoader.loadTemplate(blockLoaderTemplatePath).done(function (blockLoaderTemplate) {
21-
blockLoader = template($.trim(blockLoaderTemplate), {
22-
loaderImageHref: loaderImageHref
22+
loaderImageHref.done(function (loaderHref) {
23+
blockLoader = template($.trim(blockLoaderTemplate), {
24+
loaderImageHref: loaderHref
25+
});
26+
blockLoader = $(blockLoader);
27+
blockLoaderClass = '.' + blockLoader.attr('class');
28+
blockLoaderElement.resolve();
2329
});
24-
blockLoader = $(blockLoader);
25-
blockLoaderClass = '.' + blockLoader.attr('class');
2630
});
2731

2832
/**
@@ -70,7 +74,7 @@ define([
7074
}
7175

7276
return function (loaderHref) {
73-
loaderImageHref = loaderHref;
77+
loaderImageHref.resolve(loaderHref);
7478
ko.bindingHandlers.blockLoader = {
7579
/**
7680
* Process loader for block
@@ -81,9 +85,9 @@ define([
8185
element = $(element);
8286

8387
if (ko.unwrap(displayBlockLoader())) {
84-
addBlockLoader(element);
88+
blockLoaderElement.done(addBlockLoader(element));
8589
} else {
86-
removeBlockLoader(element);
90+
blockLoaderElement.done(removeBlockLoader(element));
8791
}
8892
}
8993
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<div data-role="loader" class="loading-mask" style="position: absolute;">
2+
<div class="loader">
3+
<img src="<%= loaderImageHref %>" alt="Loading..." title="Loading..." style="position: absolute;">
4+
</div>
5+
</div>
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/**
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
define([
7+
'squire',
8+
'jquery',
9+
'text!tests/assets/app/code/Magento/Ui/base/templates/block-loader.html'
10+
], function (Squire, $, blockLoaderTmpl) {
11+
'use strict';
12+
13+
var injector = new Squire(),
14+
mocks = {
15+
'Magento_Ui/js/lib/knockout/template/loader': {
16+
/** Method stub. */
17+
loadTemplate: function () {
18+
var defer = $.Deferred();
19+
20+
defer.resolve(blockLoaderTmpl);
21+
22+
return defer;
23+
}
24+
}
25+
},
26+
obj,
27+
ko;
28+
29+
beforeEach(function (done) {
30+
injector.mock(mocks);
31+
injector.require(['Magento_Ui/js/block-loader', 'ko'], function (blockLoader, knockout) {
32+
obj = blockLoader;
33+
ko = knockout;
34+
done();
35+
});
36+
});
37+
38+
afterEach(function () {
39+
try {
40+
injector.clean();
41+
injector.remove();
42+
} catch (e) {
43+
}
44+
});
45+
46+
describe('Magento_Ui/js/block-loader', function () {
47+
var blockContentLoadingClass = '_block-content-loading',
48+
loaderImageUrl = 'https://static.magento.com/loader.gif',
49+
element = $('<span data-bind="blockLoader: isLoading"/>'),
50+
isLoading,
51+
context;
52+
53+
beforeEach(function () {
54+
isLoading = ko.observable();
55+
context = ko.bindingContext.prototype.createChildContext({
56+
isLoading: isLoading
57+
});
58+
obj(loaderImageUrl);
59+
$('body').append(element);
60+
ko.applyBindings(context, element[0]);
61+
});
62+
63+
afterEach(function () {
64+
element.remove();
65+
});
66+
67+
it('Check adding loader block to element', function () {
68+
isLoading(true);
69+
expect(element.hasClass(blockContentLoadingClass)).toBeTruthy();
70+
expect(element.children().attr('class')).toEqual('loading-mask');
71+
expect(element.find('img').attr('src')).toEqual(loaderImageUrl);
72+
});
73+
74+
it('Check removing loader block from element', function () {
75+
isLoading(false);
76+
expect(element.hasClass(blockContentLoadingClass)).toBeFalsy();
77+
expect(element.children().length).toEqual(0);
78+
});
79+
});
80+
});

0 commit comments

Comments
 (0)