@@ -11,6 +11,16 @@ define([
11
11
] , function ( ko , $ , renderer , spectrum , tinycolor ) {
12
12
'use strict' ;
13
13
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
+
14
24
ko . bindingHandlers . colorPicker = {
15
25
/**
16
26
* Binding init callback.
@@ -31,35 +41,34 @@ define([
31
41
config . value ( value . toString ( ) ) ;
32
42
} ;
33
43
34
- if ( ! viewModel . disabled ( ) ) {
35
- config . change = changeValue ;
44
+ config . change = changeValue ;
36
45
37
- config . hide = changeValue ;
46
+ config . hide = changeValue ;
38
47
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
+ }
44
53
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 ) ;
53
60
} ,
54
61
55
62
/**
56
63
* Reads params passed to binding, parses component declarations.
57
64
* Fetches for those found and attaches them to the new context.
58
65
*
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.
61
70
*/
62
- update : function ( element , valueAccessor ) {
71
+ update : function ( element , valueAccessor , allBindings , viewModel ) {
63
72
var config = valueAccessor ( ) ;
64
73
65
74
if ( tinycolor ( config . value ( ) ) . isValid ( ) || config . value ( ) === '' ) {
@@ -69,6 +78,8 @@ define([
69
78
config . value ( $ ( element ) . spectrum ( 'get' ) . toString ( ) ) ;
70
79
}
71
80
}
81
+
82
+ changeColorPickerStateBasedOnViewModel ( element , viewModel ) ;
72
83
}
73
84
} ;
74
85
0 commit comments