1 /* global colorScheme, Color */
3 * Add a listener to the Color Scheme control to update other color controls to new values/defaults.
4 * Also trigger an update of the Color Scheme CSS when a color is changed.
8 var cssTemplate = wp.template( 'twentysixteen-color-scheme' ),
11 'page_background_color',
14 'secondary_text_color'
18 'page_background_color',
21 'secondary_text_color'
24 api.controlConstructor.select = api.Control.extend( {
26 if ( 'color_scheme' === this.id ) {
27 this.setting.bind( 'change', function( value ) {
28 var colors = colorScheme[value].colors;
30 // Update Background Color.
31 var color = colors[0];
32 api( 'background_color' ).set( color );
33 api.control( 'background_color' ).container.find( '.color-picker-hex' )
34 .data( 'data-default-color', color )
35 .wpColorPicker( 'defaultColor', color );
37 // Update Page Background Color.
39 api( 'page_background_color' ).set( color );
40 api.control( 'page_background_color' ).container.find( '.color-picker-hex' )
41 .data( 'data-default-color', color )
42 .wpColorPicker( 'defaultColor', color );
46 api( 'link_color' ).set( color );
47 api.control( 'link_color' ).container.find( '.color-picker-hex' )
48 .data( 'data-default-color', color )
49 .wpColorPicker( 'defaultColor', color );
51 // Update Main Text Color.
53 api( 'main_text_color' ).set( color );
54 api.control( 'main_text_color' ).container.find( '.color-picker-hex' )
55 .data( 'data-default-color', color )
56 .wpColorPicker( 'defaultColor', color );
58 // Update Secondary Text Color.
60 api( 'secondary_text_color' ).set( color );
61 api.control( 'secondary_text_color' ).container.find( '.color-picker-hex' )
62 .data( 'data-default-color', color )
63 .wpColorPicker( 'defaultColor', color );
69 // Generate the CSS for the current Color Scheme.
70 function updateCSS() {
71 var scheme = api( 'color_scheme' )(),
73 colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors );
75 // Merge in color scheme overrides.
76 _.each( colorSettings, function( setting ) {
77 colors[ setting ] = api( setting )();
80 // Add additional color.
82 colors.border_color = Color( colors.main_text_color ).toCSS( 'rgba', 0.2 );
85 css = cssTemplate( colors );
87 api.previewer.send( 'update-color-scheme-css', css );
90 // Update the CSS whenever a color setting is changed.
91 _.each( colorSettings, function( setting ) {
92 api( setting, function( setting ) {
93 setting.bind( updateCSS );