Current File : /home/escuelai/public_html/wp-content/themes/coursector/modules/kirki/controls/js/src/multicolor.js |
/* global kirkiControlLoader */
wp.customize.controlConstructor['kirki-multicolor'] = wp.customize.Control.extend({
// When we're finished loading continue processing
ready: function() {
'use strict';
var control = this;
// Init the control.
if ( ! _.isUndefined( window.kirkiControlLoader ) && _.isFunction( kirkiControlLoader ) ) {
kirkiControlLoader( control );
} else {
control.initKirkiControl();
}
},
initKirkiControl: function() {
'use strict';
var control = this,
colors = control.params.choices,
keys = Object.keys( colors ),
value = this.params.value,
i = 0;
// Proxy function that handles changing the individual colors
function kirkiMulticolorChangeHandler( control, value, subSetting ) {
var picker = control.container.find( '.multicolor-index-' + subSetting ),
args = {
change: function() {
// Color controls require a small delay.
setTimeout( function() {
// Set the value.
control.saveValue( subSetting, picker.val() );
// Trigger the change.
control.container.find( '.multicolor-index-' + subSetting ).trigger( 'change' );
}, 100 );
}
};
if ( _.isObject( colors.irisArgs ) ) {
_.each( colors.irisArgs, function( irisValue, irisKey ) {
args[ irisKey ] = irisValue;
});
}
// Did we change the value?
picker.wpColorPicker( args );
}
// Colors loop
while ( i < Object.keys( colors ).length ) {
kirkiMulticolorChangeHandler( this, value, keys[ i ] );
i++;
}
},
/**
* Saves the value.
*/
saveValue: function( property, value ) {
var control = this,
input = control.container.find( '.multicolor-hidden-value' ),
val = control.setting._value;
val[ property ] = value;
jQuery( input ).attr( 'value', JSON.stringify( val ) ).trigger( 'change' );
control.setting.set( val );
}
});