//DOM READY : //1) FIRE SPECIFIC INPUT PLUGINS //2) ADD SOME COOL STUFFS //3) SPECIFIC CONTROLS ACTIONS (function (wp, $) { $( function($) { var api = wp.customize || api; /* GRID */ var _build_setId = function ( name ) { return -1 == name.indexOf( 'tc_theme_options') ? [ 'tc_theme_options[' , name , ']' ].join('') : name; }; var _grid_design_controls = [ 'tc_grid_in_blog', 'tc_grid_in_archive', 'tc_grid_in_search', 'tc_grid_thumb_height', 'tc_grid_shadow', 'tc_grid_bottom_border', 'tc_grid_icons', 'tc_grid_num_words' ]; var _build_control_id = function( _control ) { return [ '#' , 'customize-control-tc_theme_options-', _control ].join(''); }; var _get_grid_design_controls = function() { return $( _grid_design_controls.map( function( _control ) { return _build_control_id( _control ); }).join(',') ); }; //hide design controls on load $( _get_grid_design_controls() ).addClass('tc-grid-design').hide(); $('.tc-grid-toggle-controls').click( function() { $( _get_grid_design_controls() ).slideToggle('fast'); $(this).toggleClass('open'); } ); /* RECENTER CURRENT SECTIONS */ $('.accordion-section').not('.control-panel').click( function () { _recenter_current_section($(this)); }); function _recenter_current_section( section ) { var $siblings = section.siblings( '.open' ); //check if clicked element is above or below sibling with offset.top if ( 0 !== $siblings.length && $siblings.offset().top < 0 ) { $('.wp-full-overlay-sidebar-content').animate({ scrollTop: - $('#customize-theme-controls').offset().top - $siblings.height() + section.offset().top + $('.wp-full-overlay-sidebar-content').offset().top }, 700); } }//end of fn /* ADD GOOGLE IN TITLE */ $g_logo = $('' , {class : 'tc-title-google-logo' , src : 'http://www.google.com/images/logos/google_logo_41.png' , height : 20 }); $('#accordion-section-fonts_sec').prepend($g_logo); /* CHECK */ //init icheck only if not already initiated //exclude widget inputs $('input[type=checkbox]').not('input[id*="widget"]').each( function() { if ( 0 === $(this).closest('div[class^="icheckbox"]').length ) { $(this).iCheck({ checkboxClass: 'icheckbox_flat-green', radioClass: 'iradio_flat-green' }) .on( 'ifChanged', function(e){ $(e.currentTarget).trigger('change'); }); } }); /* SELECT */ //Exclude skin $('select[data-customize-setting-link]').not('.select2') .each( function() { $(this).selecter({ //triggers a change event on the view, passing the newly selected value + index as parameters. // callback : function(value, index) { // self.triggerSettingChange( window.event || {} , value, index); // first param is a null event. // } }); }); //Multipicker //http://ivaynberg.github.io/select2/#documentation $('select.tc_multiple_picker').select2({ closeOnSelect: false, formatSelection: tcEscapeMarkup }); function tcEscapeMarkup(obj) { //trim dashes return obj.text.replace(/\u2013|\u2014/g, ""); } //SKINS //http://ivaynberg.github.io/select2/#documentation $('select[data-customize-setting-link="tc_theme_options[tc_skin]"]').select2({ minimumResultsForSearch: -1, //no search box needed formatResult: paintSkinOptionElement, formatSelection: paintSkinOptionElement, escapeMarkup: function(m) { return m; } }).on("select2-highlight", function(e) { //triggerChange = true @see val method doc here http://ivaynberg.github.io/select2/#documentation $(this).select2("val" , e.val, true ); }); //Skins handled with select2 function paintSkinOptionElement(state) { if (!state.id) return state.text; // optgroup return '' + $(state.element).data('hex') + ''; } //FONTS $('select[data-customize-setting-link="tc_theme_options[tc_fonts]"]').select2({ minimumResultsForSearch: -1, //no search box needed formatResult: paintFontOptionElement, formatSelection: paintFontOptionElement, escapeMarkup: function(m) { return m; } }).on("select2-highlight", function(e) { //triggerChange = true @see val method doc here http://ivaynberg.github.io/select2/#documentation $(this).select2("val" , e.val, true ); }); function paintFontOptionElement(state) { if ( ! state.id && ( -1 != state.text.indexOf('Google') ) ) return ' Font pairs'; // google font optgroup else if ( ! state.id ) return state.text;// optgroup different than google font return '' + state.text + ''; } //Fixes the non closing bug for the select2 dropdown $('#customize-controls').on('click' , function() { $('select[data-customize-setting-link]').select2("close"); } ); /* NUMBER */ $('input[type="number"]').stepper(); });//end of $( function($) ) dom ready })( wp, jQuery);