Skip to content

Commit b3825ca

Browse files
author
Ihor Melnychenko
committed
MAGETWO-38867: Create mixin for declarative widget description
1 parent 7bfc174 commit b3825ca

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

lib/web/mage/apply/main.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,24 +37,25 @@ define([
3737
*
3838
* @param {Object} mixinList - object contains mixins list.
3939
* @param {Object} itemContainer - object with component config and DOM element link.
40+
* @return {Promise}
4041
*/
4142
function initMixins(mixinList, itemContainer){
42-
var configStack = {},
43-
element = itemContainer.el;
43+
var configStack,
44+
element = itemContainer.el,
45+
result = $.Deferred();
4446

4547
_.each(mixinList, function (mixinArray, componentName) {
4648
configStack = itemContainer.data[componentName];
4749
require(mixinArray, function(){
4850
for (var i = 0, len = arguments.length; i < len; i++){
49-
configStack = arguments[i](configStack, element);
51+
$.extend(true, configStack, arguments[i](configStack, element));
5052
}
5153

54+
result.resolve(itemContainer);
5255
});
53-
itemContainer.data[componentName] = configStack;
5456
});
55-
delete itemContainer.data.mixins;
5657

57-
return itemContainer;
58+
return result;
5859
}
5960
/**
6061
* Parses elements 'data-mage-init' attribute as a valid JSON data.
@@ -90,9 +91,17 @@ define([
9091
.concat(virtuals)
9192
.forEach(function (itemContainer) {
9293
var mixins = itemContainer.data.mixins;
94+
delete itemContainer.data.mixins;
9395

9496
if (mixins) {
95-
$.when(itemContainer = initMixins(mixins, itemContainer)).then(_.each(itemContainer.data, init.bind(null, itemContainer.el)));
97+
$.when(
98+
initMixins(mixins, itemContainer)
99+
).then(function (mergedItemContainer) {
100+
_.each(
101+
mergedItemContainer.data,
102+
init.bind(null, mergedItemContainer.el)
103+
)
104+
});
96105
} else {
97106
_.each(itemContainer.data, init.bind(null, itemContainer.el));
98107
}

0 commit comments

Comments
 (0)