Skip to content

Commit 4f9b705

Browse files
authored
Merge pull request #2502 from magento-trigger/team3-delivery
[Team 3] Sprint 7 Delivery
2 parents 57037a4 + 32c2cf6 commit 4f9b705

File tree

2 files changed

+43
-24
lines changed

2 files changed

+43
-24
lines changed

app/code/Magento/Ui/view/base/web/js/lib/knockout/bindings/color-picker.js

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ define([
1111
], function (ko, $, renderer, spectrum, tinycolor) {
1212
'use strict';
1313

14+
/**
15+
* Change color picker status to be enabled or disabled
16+
*
17+
* @param {HTMLElement} element - Element to apply colorpicker enable/disable status to.
18+
* @param {Object} viewModel - Object, which represents view model binded to el.
19+
*/
20+
function changeColorPickerStateBasedOnViewModel(element, viewModel) {
21+
$(element).spectrum(viewModel.disabled() ? 'disable' : 'enable');
22+
}
23+
1424
ko.bindingHandlers.colorPicker = {
1525
/**
1626
* Binding init callback.
@@ -31,35 +41,34 @@ define([
3141
config.value(value.toString());
3242
};
3343

34-
if (!viewModel.disabled()) {
35-
config.change = changeValue;
44+
config.change = changeValue;
3645

37-
config.hide = changeValue;
46+
config.hide = changeValue;
3847

39-
/** show value */
40-
config.show = function () {
41-
if (!viewModel.focused()) {
42-
viewModel.focused(true);
43-
}
48+
/** show value */
49+
config.show = function () {
50+
if (!viewModel.focused()) {
51+
viewModel.focused(true);
52+
}
4453

45-
return true;
46-
};
47-
$(element).spectrum(config);
48-
} else {
49-
$(element).spectrum({
50-
disabled: true
51-
});
52-
}
54+
return true;
55+
};
56+
57+
$(element).spectrum(config);
58+
59+
changeColorPickerStateBasedOnViewModel(element, viewModel);
5360
},
5461

5562
/**
5663
* Reads params passed to binding, parses component declarations.
5764
* Fetches for those found and attaches them to the new context.
5865
*
59-
* @param {HTMLElement} element
60-
* @param {Function} valueAccessor
66+
* @param {HTMLElement} element - Element to apply bindings to.
67+
* @param {Function} valueAccessor - Function that returns value, passed to binding.
68+
* @param {Object} allBindings - Object, which represents all bindings applied to element.
69+
* @param {Object} viewModel - Object, which represents view model binded to element.
6170
*/
62-
update: function (element, valueAccessor) {
71+
update: function (element, valueAccessor, allBindings, viewModel) {
6372
var config = valueAccessor();
6473

6574
if (tinycolor(config.value()).isValid() || config.value() === '') {
@@ -69,6 +78,8 @@ define([
6978
config.value($(element).spectrum('get').toString());
7079
}
7180
}
81+
82+
changeColorPickerStateBasedOnViewModel(element, viewModel);
7283
}
7384
};
7485

dev/tests/js/jasmine/tests/app/code/Magento/Ui/base/js/lib/ko/bind/color-picker.test.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,10 @@ define([
2929

3030
describe('Colorpicker binding', function () {
3131
it('Should call spectrum on $input with disabled configuration if view model disabled', function () {
32-
var valueAccessor = jasmine.createSpy().and.returnValue({}),
32+
var value = {
33+
configStuffInHere: true
34+
},
35+
valueAccessor = jasmine.createSpy().and.returnValue(value),
3336
viewModel = {
3437
disabled: jasmine.createSpy().and.returnValue(true)
3538
};
@@ -39,9 +42,13 @@ define([
3942

4043
ko.bindingHandlers.colorPicker.init($input, valueAccessor, null, viewModel);
4144

42-
expect($.fn.spectrum).toHaveBeenCalledWith({
43-
disabled: true
44-
});
45+
expect(value.change).toEqual(jasmine.any(Function));
46+
expect(value.hide).toEqual(jasmine.any(Function));
47+
expect(value.show).toEqual(jasmine.any(Function));
48+
expect(value.change).toBe(value.hide);
49+
50+
expect($.fn.spectrum.calls.allArgs()).toEqual([[value], ['disable']]);
51+
expect(viewModel.disabled).toHaveBeenCalled();
4552

4653
$.fn.init = jasmine.createSpy().and.returnValue($.fn);
4754

@@ -69,7 +76,8 @@ define([
6976
expect(value.show).toEqual(jasmine.any(Function));
7077
expect(value.change).toBe(value.hide);
7178

72-
expect($.fn.spectrum).toHaveBeenCalledWith(value);
79+
expect($.fn.spectrum.calls.allArgs()).toEqual([[value], ['enable']]);
80+
expect(viewModel.disabled).toHaveBeenCalled();
7381

7482
$.fn.init = jasmine.createSpy().and.returnValue($.fn);
7583

0 commit comments

Comments
 (0)