188 lines
5.7 KiB
JavaScript
188 lines
5.7 KiB
JavaScript
/* Range */
|
|
wp.customize.controlConstructor['range-value'] = wp.customize.Control.extend({
|
|
|
|
ready: function(){
|
|
'use strict';
|
|
|
|
jQuery.fn.exists = function(){return this.length>0;};
|
|
var control = this,
|
|
changeAction;
|
|
var theme_controls = jQuery('#customize-theme-controls');
|
|
|
|
function syncRangeText( slider, input, from ){
|
|
switch (from){
|
|
case 'slider':
|
|
input.val( slider.val());
|
|
break;
|
|
case 'input':
|
|
slider.val( input.val() );
|
|
break;
|
|
}
|
|
}
|
|
|
|
function updateValues( control ){
|
|
var collector = control.find('.range-collector');
|
|
var values = getSliderValues( control );
|
|
var have_queries = Object.keys(values).length > 1;
|
|
if( have_queries ){
|
|
collector.val(JSON.stringify(values));
|
|
} else {
|
|
collector.val(values.desktop);
|
|
}
|
|
collector.trigger( 'change' );
|
|
|
|
}
|
|
|
|
function getSliderValues( control ) {
|
|
var values = {};
|
|
var desktopSelector = control.find('.range-slider__range[data-query="desktop"]'),
|
|
tabletSelector = control.find('.range-slider__range[data-query="tablet"]') ,
|
|
mobileSelector = control.find('.range-slider__range[data-query="mobile"]'),
|
|
desktopValue, tabletValue, mobileValue;
|
|
|
|
if( desktopSelector.exists() ){
|
|
desktopValue = desktopSelector.val();
|
|
if( desktopValue !== 'undefined' && desktopValue !== '' ){
|
|
values.desktop = desktopValue;
|
|
}
|
|
}
|
|
|
|
if( tabletSelector.exists() ){
|
|
tabletValue = tabletSelector.val();
|
|
if( tabletValue !== 'undefined' && tabletValue !== '' ){
|
|
values.tablet = tabletValue;
|
|
}
|
|
}
|
|
|
|
if( mobileSelector.exists() ){
|
|
mobileValue = mobileSelector.val();
|
|
if( mobileValue !== 'undefined' && mobileValue !== '' ){
|
|
values.mobile = mobileValue;
|
|
}
|
|
}
|
|
|
|
return values;
|
|
}
|
|
|
|
function responsiveSwitcher(){
|
|
// Responsive switchers
|
|
jQuery( '.customize-control .responsive-switchers button' ).on( 'click', function( event ) {
|
|
event.preventDefault();
|
|
// Set up variables
|
|
var $devices = jQuery( '.responsive-switchers' ),
|
|
$device = jQuery( event.currentTarget ).data( 'device' ),
|
|
$body = jQuery( '.wp-full-overlay' ),
|
|
$footer_devices = jQuery( '.wp-full-overlay-footer .devices' );
|
|
|
|
// Button class
|
|
$devices.find( 'button' ).removeClass( 'active' );
|
|
$devices.find( 'button.preview-' + $device ).addClass( 'active' );
|
|
|
|
var control = jQuery('.range-slider.has-media-queries');
|
|
control.find('.desktop-range').removeClass('active');
|
|
control.find('.tablet-range').removeClass('active');
|
|
control.find('.mobile-range').removeClass('active');
|
|
control.find('.' + $device + '-range').addClass('active');
|
|
|
|
// Wrapper class
|
|
$body.removeClass( 'preview-desktop preview-tablet preview-mobile' ).addClass( 'preview-' + $device );
|
|
|
|
// Panel footer buttons
|
|
$footer_devices.find( 'button' ).removeClass( 'active' ).attr( 'aria-pressed', false );
|
|
$footer_devices.find( 'button.preview-' + $device ).addClass( 'active' ).attr( 'aria-pressed', true );
|
|
|
|
} );
|
|
|
|
jQuery('#customize-footer-actions .devices button').on( 'click', function( event ) {
|
|
event.preventDefault();
|
|
var device = jQuery(this).data('device');
|
|
var queries = jQuery( '.responsive-switchers' );
|
|
|
|
queries.find( 'button' ).removeClass( 'active' );
|
|
queries.find( 'button.preview-' + device ).addClass( 'active' );
|
|
|
|
var control = jQuery('.range-slider.has-media-queries');
|
|
control.find('.desktop-range').removeClass('active');
|
|
control.find('.tablet-range').removeClass('active');
|
|
control.find('.mobile-range').removeClass('active');
|
|
control.find('.' + device + '-range').addClass('active');
|
|
});
|
|
}
|
|
|
|
|
|
|
|
theme_controls.unbind().on('click', '.preview-desktop.active', function () {
|
|
jQuery( this ).parent().parent().toggleClass( 'responsive-switchers-open' );
|
|
});
|
|
|
|
theme_controls.on('input', '.range-slider__range', function () {
|
|
var slider = jQuery(this);
|
|
var input = jQuery(this).next();
|
|
var control = jQuery(this).parent().parent();
|
|
syncRangeText( slider, input, 'slider');
|
|
updateValues( control );
|
|
});
|
|
|
|
theme_controls.on('keyup', '.range-slider-value', function(){
|
|
var control = jQuery(this).parent().parent();
|
|
updateValues( control );
|
|
});
|
|
theme_controls.on('keydown', '.range-slider-value', function(){
|
|
var slider = jQuery(this).prev();
|
|
var input = jQuery(this);
|
|
syncRangeText( slider, input, 'input');
|
|
});
|
|
|
|
|
|
theme_controls.on('click', '.range-reset-slider', function (event) {
|
|
event.preventDefault();
|
|
var input = jQuery(this).prev();
|
|
var slider = input.prev();
|
|
var control = jQuery(this).parent().parent();
|
|
var defaultValue = slider.data('default');
|
|
input.val( defaultValue );
|
|
slider.val( defaultValue );
|
|
updateValues( control );
|
|
});
|
|
|
|
responsiveSwitcher();
|
|
|
|
if ( 'postMessage' === control.setting.transport ) {
|
|
changeAction = 'mousemove change';
|
|
} else {
|
|
changeAction = 'change';
|
|
}
|
|
|
|
// Change the value
|
|
this.container.on( changeAction, '.range-collector', function() {
|
|
control.setting.set( jQuery( this ).val() );
|
|
});
|
|
}
|
|
});
|
|
|
|
|
|
/* Upsale */
|
|
( function( api ) {
|
|
|
|
// Extends our custom "chromax" section.
|
|
api.sectionConstructor['chromax'] = api.Section.extend( {
|
|
|
|
// No events for this type of section.
|
|
attachEvents: function () {},
|
|
|
|
// Always make the section active.
|
|
isContextuallyActive: function () {
|
|
return true;
|
|
}
|
|
} );
|
|
|
|
} )( wp.customize );
|
|
|
|
jQuery(document).ready(function($) {
|
|
jQuery("#sub-accordion-section-chromax_sidebar_options select:not(#_customize-input-chromax_default_pg_sidebar_option), #sub-accordion-section-chromax_typography_options select, #sub-accordion-section-chromax_headings_typography select").prop('disabled', true);
|
|
});
|
|
|
|
|
|
jQuery(document).ready(function($) {
|
|
jQuery('.contact-icon-picker.iconPicker').fontIconPicker();
|
|
}); |