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( 'twentyfifteen-color-scheme' ),
11 'header_background_color',
12 'box_background_color',
15 'meta_box_background_color'
19 'header_background_color',
23 api.controlConstructor.select = api.Control.extend( {
25 if ( 'color_scheme' === this.id ) {
26 this.setting.bind( 'change', function( value ) {
27 // Update Background Color.
28 api( 'background_color' ).set( colorScheme[value].colors[0] );
29 api.control( 'background_color' ).container.find( '.color-picker-hex' )
30 .data( 'data-default-color', colorScheme[value].colors[0] )
31 .wpColorPicker( 'defaultColor', colorScheme[value].colors[0] );
33 // Update Header/Sidebar Background Color.
34 api( 'header_background_color' ).set( colorScheme[value].colors[1] );
35 api.control( 'header_background_color' ).container.find( '.color-picker-hex' )
36 .data( 'data-default-color', colorScheme[value].colors[1] )
37 .wpColorPicker( 'defaultColor', colorScheme[value].colors[1] );
39 // Update Header/Sidebar Text Color.
40 api( 'sidebar_textcolor' ).set( colorScheme[value].colors[4] );
41 api.control( 'sidebar_textcolor' ).container.find( '.color-picker-hex' )
42 .data( 'data-default-color', colorScheme[value].colors[4] )
43 .wpColorPicker( 'defaultColor', colorScheme[value].colors[4] );
49 // Generate the CSS for the current Color Scheme.
50 function updateCSS() {
51 var scheme = api( 'color_scheme' )(), css,
52 colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors );
54 // Merge in color scheme overrides.
55 _.each( colorSettings, function( setting ) {
56 colors[ setting ] = api( setting )();
59 // Add additional colors.
60 colors.secondary_textcolor = Color( colors.textcolor ).toCSS( 'rgba', 0.7 );
61 colors.border_color = Color( colors.textcolor ).toCSS( 'rgba', 0.1 );
62 colors.border_focus_color = Color( colors.textcolor ).toCSS( 'rgba', 0.3 );
63 colors.secondary_sidebar_textcolor = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.7 );
64 colors.sidebar_border_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.1 );
65 colors.sidebar_border_focus_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.3 );
67 css = cssTemplate( colors );
69 api.previewer.send( 'update-color-scheme-css', css );
72 // Update the CSS whenever a color setting is changed.
73 _.each( colorSettings, function( setting ) {
74 api( setting, function( setting ) {
75 setting.bind( updateCSS );