jQuery(document).ready(function ($) {
'use strict';
// Select Preloader
$('.ms-preloader-selector').on('change', function () {
var activePreloader = $(this).val();
$(this).next('.ms-preloader-container').find('.ms-preloader').hide();
$(this).next('.ms-preloader-container').find('.ms-' + activePreloader).show();
});
var delay = (function () {
var timer = 0;
return function (callback, ms) {
clearTimeout(timer);
timer = setTimeout(callback, ms);
};
})();
$('body').on('click', '#customize-control-bigmart_social_link a', function () {
wp.customize.section('bigmart_social_section').expand();
return false;
});
wp.customize('bigmart_mh_layout', function (setting) {
var setupControl1 = function (control) {
var visibility = function () {
if ('header-style2' === setting.get()) {
control.container.addClass('customizer-hidden');
} else {
control.container.removeClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
var setupControl2 = function (control) {
var visibility = function () {
if ('header-style2' === setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
wp.customize.control('bigmart_contact_no', setupControl2);
});
wp.customize('bigmart_show_toggle_menu', function (setting) {
var setupControl = function (control) {
var visibility = function () {
if ('1' == setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
wp.customize.control('bigmart_toggle_menu_label', setupControl);
wp.customize.control('bigmart_toggle_menu', setupControl);
wp.customize.control('bigmart_show_menu_on', setupControl);
});
/** Display Breadcrumb settings only if breadcrumb is enabled */
wp.customize('bigmart_breadcrumb', function (setting) {
var setupControl = function (control) {
var visibility = function () {
if (true === setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
wp.customize.control('bigmart_pg_textcolor', setupControl);
wp.customize.control('bigmart_pg_linkcolor', setupControl);
});
/** Top Header Display */
wp.customize('bigmart_top_header_display', function (setting) {
var setupControl = function (control) {
var visibility = function () {
if ('center' === setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
var setupControl1 = function (control) {
var visibility = function () {
if ('left' === setting.get() || 'left-right' === setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
var setupControl2 = function (control) {
var visibility = function () {
if ('right' === setting.get() || 'left-right' === setting.get()) {
control.container.removeClass('customizer-hidden');
} else {
control.container.addClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
var setupControl3 = function (control) {
var visibility = function () {
if ('none' === setting.get()) {
control.container.addClass('customizer-hidden');
} else {
control.container.removeClass('customizer-hidden');
}
};
visibility();
setting.bind(visibility);
};
wp.customize.control('bigmart_th_center_display', setupControl);
wp.customize.control('bigmart_th_left_display', setupControl1);
wp.customize.control('bigmart_th_right_display', setupControl2);
wp.customize.control('bigmart_th_separator1', setupControl3);
wp.customize.control('bigmart_th_separator2', setupControl3);
});
// Icon Control JS
$('body').on('click', '.ms-icon-box-wrap .ms-icon-list li', function () {
var icon_class = $(this).find('i').attr('class');
$(this).closest('.ms-icon-box').find('.ms-icon-list li').removeClass('icon-active');
$(this).addClass('icon-active');
$(this).closest('.ms-icon-box').prev('.ms-selected-icon').children('i').attr('class', '').addClass(icon_class);
$(this).closest('.ms-icon-box').next('input').val(icon_class).trigger('change');
$(this).closest('.ms-icon-box').slideUp();
});
$('body').on('click', '.ms-icon-box-wrap .ms-selected-icon', function () {
$(this).next().slideToggle();
});
$('body').on('change', '.ms-icon-box-wrap .ms-icon-search select', function () {
var selected = $(this).val();
$(this).closest('.ms-icon-box').find('.ms-icon-search-input').val('');
$(this).closest('.ms-icon-box').find('.ms-icon-list li').show();
$(this).closest('.ms-icon-box').find('.ms-icon-list').hide().removeClass('active');
$(this).closest('.ms-icon-box').find('.' + selected).fadeIn().addClass('active');
});
$('body').on('keyup', '.ms-icon-box-wrap .ms-icon-search input', function (e) {
var $input = $(this);
var keyword = $input.val().toLowerCase();
var search_criteria = $input.closest('.ms-icon-box').find('.ms-icon-list.active i');
delay(function () {
$(search_criteria).each(function () {
if ($(this).attr('class').indexOf(keyword) > -1) {
$(this).parent().show();
} else {
$(this).parent().hide();
}
});
}, 500);
});
// Switch Control
$('body').on('click', '.onoffswitch', function () {
var $this = $(this);
if ($this.hasClass('ms-switch-on')) {
$(this).removeClass('ms-switch-on');
$this.next('input').val('off').trigger('change');
} else {
$(this).addClass('ms-switch-on');
$this.next('input').val('on').trigger('change');
}
});
// MultiCheck box Control JS
$('.customize-control-ms-checkbox-multiple input[type="checkbox"]').on('change', function () {
var checkbox_values = $(this).parents('.customize-control').find('input[type="checkbox"]:checked').map(function () {
return $(this).val();
}).get().join(',');
$(this).parents('.customize-control').find('input[type="hidden"]').val(checkbox_values).trigger('change');
});
// Chosen JS
$('.ms-chosen-select, .customize-control-typography select').chosen({
width: '100%'
});
// Image Selector JS
$('body').on('click', '.ms-selector-labels label', function () {
var $this = $(this);
var value = $this.attr('data-val');
$this.siblings().removeClass('selector-selected');
$this.addClass('selector-selected');
$this.closest('.ms-selector-labels').next('input').val(value).trigger('change');
});
$('body').on('change', '.ms-type-radio input[type="radio"]', function () {
var $this = $(this);
$this.parent('label').siblings('label').find('input[type="radio"]').prop('checked', false);
var value = $this.closest('.radio-labels').find('input[type="radio"]:checked').val();
$this.closest('.radio-labels').next('input').val(value).trigger('change');
});
$('body').on('change', '.ms-type-radio input[type="radio"]', function () {
var $this = $(this);
$this.parent('label').siblings('label').find('input[type="radio"]').prop('checked', false);
var value = $this.closest('.radio-labels').find('input[type="radio"]:checked').val();
$this.closest('.radio-labels').next('input').val(value).trigger('change');
});
// Range JS
$('.customize-control-ms-range-slider').each(function () {
var sliderValue = $(this).find('.ms-slider-input').val();
var newSlider = $(this).find('.ms-range-slider');
var sliderMinValue = parseFloat(newSlider.attr('slider-min-value'));
var sliderMaxValue = parseFloat(newSlider.attr('slider-max-value'));
var sliderStepValue = parseFloat(newSlider.attr('slider-step-value'));
newSlider.slider({
value: sliderValue,
min: sliderMinValue,
max: sliderMaxValue,
step: sliderStepValue,
range: 'min',
slide: function (e, ui) {
$(this).parent().find('.ms-slider-input').trigger('change');
},
change: function (e, ui) {
$(this).parent().find('.ms-slider-input').trigger('change');
}
});
});
// Change the value of the input field as the slider is moved
$('.customize-control-ms-range-slider .ms-range-slider').on('slide', function (event, ui) {
$(this).parent().find('.ms-slider-input').val(ui.value);
});
// Reset slider and input field back to the default value
$('.customize-control-ms-range-slider .ms-slider-reset').on('click', function () {
var resetValue = $(this).attr('slider-reset-value');
$(this).parents('.customize-control-ms-range-slider').find('.ms-slider-input').val(resetValue);
$(this).parents('.customize-control-ms-range-slider').find('.ms-range-slider').slider('value', resetValue);
});
// Update slider if the input field loses focus as it's most likely changed
$('.customize-control-ms-res-range-slider .ms-slider-input').blur(function () {
var resetValue = $(this).val();
var slider = $(this).parents('.customize-control-ms-range-slider').find('.ms-range-slider');
var sliderMinValue = parseInt(slider.attr('slider-min-value'));
var sliderMaxValue = parseInt(slider.attr('slider-max-value'));
// Make sure our manual input value doesn't exceed the minimum & maxmium values
if (resetValue < sliderMinValue) {
resetValue = sliderMinValue;
$(this).val(resetValue);
}
if (resetValue > sliderMaxValue) {
resetValue = sliderMaxValue;
$(this).val(resetValue);
}
$(this).parents('.customize-control-ms-range-slider').find('.ms-range-slider').slider('value', resetValue);
});
// TinyMCE Editor
$(document).on('tinymce-editor-init', function () {
$('.customize-control').find('.wp-editor-area').each(function () {
var tArea = $(this),
id = tArea.attr('id'),
input = $('input[data-customize-setting-link="' + id + '"]'),
editor = tinyMCE.get(id),
content;
if (editor) {
editor.onChange.add(function () {
this.save();
content = editor.getContent();
input.val(content).trigger('change');
});
}
tArea.css({
visibility: 'visible'
}).on('keyup', function () {
content = tArea.val();
input.val(content).trigger('change');
});
});
});
// Select Image
$('.ms-image-selector').on('change', function () {
var activeImage = $(this).find(':selected').attr('data-image');
$(this).next('.ms-image-container').find('img').attr('src', activeImage);
});
// Date Picker
$('.ms-datepicker').datepicker({
dateFormat: 'yy/mm/dd'
});
// Color Tab
$('.ms-color-tab-toggle').on('click', function () {
$(this).closest('.customize-control').find('.ms-color-tab-wrap').slideToggle();
});
$('.ms-color-tab-switchers li').on('click', function () {
if ($(this).hasClass('active')) {
return false;
}
var clicked = $(this).attr('data-tab');
$(this).parent('.ms-color-tab-switchers').find('li').removeClass('active');
$(this).addClass('active');
$(this).closest('.ms-color-tab-wrap').find('.ms-color-tab-contents > div').hide();
$(this).closest('.ms-color-tab-wrap').find('.' + clicked).fadeIn();
});
// Scroll to Footer - add scroll to header as well
$('.customize-control-ms-repeater').on('click', '#accordion-section-ms_footer_section .accordion-section-title', function (event) {
var preview_section_id = 'ht-colophon';
var $contents = jQuery('#customize-preview iframe').contents();
if ($contents.find('#' + preview_section_id).length > 0) {
$contents.find('html, body').animate({
scrollTop: $contents.find('#' + preview_section_id).offset().top
}, 1000);
}
});
// Repeater Fields
$('.customize-control-ms-repeater').on('click', '.ms-repeater-field-title', function () {
$(this).next().slideToggle();
$(this).closest('.ms-repeater-field-control').toggleClass('expanded');
});
$('.customize-control-ms-repeater').on('click', '.ms-repeater-field-close', function () {
$(this).closest('.ms-repeater-fields').slideUp();
$(this).closest('.ms-repeater-field-control').toggleClass('expanded');
});
$('.customize-control-ms-repeater').on('click', '.ms-add-control-field', function () {
var $this = $(this).parent();
if (typeof $this != 'undefined') {
var field = $this.find('.ms-repeater-field-control:first').clone();
if (typeof field != 'undefined') {
field.find('input[type="text"][data-name]').each(function () {
var defaultValue = $(this).attr('data-default');
$(this).val(defaultValue);
});
field.find('textarea[data-name]').each(function () {
var defaultValue = $(this).attr('data-default');
$(this).val(defaultValue);
});
field.find('select[data-name]').each(function () {
var defaultValue = $(this).attr('data-default');
$(this).val(defaultValue);
});
field.find('.radio-labels input[type="radio"]').each(function () {
var defaultValue = $(this).closest('.radio-labels').next('input[data-name]').attr('data-default');
$(this).closest('.radio-labels').next('input[data-name]').val(defaultValue);
if ($(this).val() == defaultValue) {
$(this).prop('checked', true);
} else {
$(this).prop('checked', false);
}
});
field.find('.ms-selector-labels label').each(function () {
var defaultValue = $(this).closest('.ms-selector-labels').next('input[data-name]').attr('data-default');
var dataVal = $(this).attr('data-val');
$(this).closest('.ms-selector-labels').next('input[data-name]').val(defaultValue);
if (defaultValue == dataVal) {
$(this).addClass('selector-selected');
} else {
$(this).removeClass('selector-selected');
}
});
field.find('.range-input').each(function () {
var $dis = $(this);
$dis.removeClass('ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all').empty();
var defaultValue = parseFloat($dis.attr('data-defaultvalue'));
$dis.siblings('.range-input-selector').val(defaultValue);
$dis.slider({
range: 'min',
value: parseFloat($dis.attr('data-defaultvalue')),
min: parseFloat($dis.attr('data-min')),
max: parseFloat($dis.attr('data-max')),
step: parseFloat($dis.attr('data-step')),
slide: function (event, ui) {
$dis.siblings('.range-input-selector').val(ui.value);
ms_refresh_repeater_values();
}
});
});
field.find('.onoffswitch').each(function () {
var defaultValue = $(this).next('input[data-name]').attr('data-default');
$(this).next('input[data-name]').val(defaultValue);
if (defaultValue == 'on') {
$(this).addClass('ms-switch-on');
} else {
$(this).removeClass('ms-switch-on');
}
});
field.find('.ms-toggle').each(function () {
var defaultValue = $(this).find('input[data-name]').attr('data-default');
$(this).find('input[data-name]').val(defaultValue);
if (defaultValue == 'yes') {
$(this).find('.ms-onoff-switch-label').addClass('ms-toggle-on');
} else {
$(this).find('.ms-onoff-switch-label').removeClass('ms-toggle-on');
}
});
field.find('.ms-color-picker').each(function () {
$colorPicker = $(this);
$colorPicker.closest('.wp-picker-container').after($(this));
$colorPicker.prev('.wp-picker-container').remove();
$(this).wpColorPicker({
change: function (event, ui) {
setTimeout(function () {
ms_refresh_repeater_values();
}, 100);
}
});
});
field.find('.attachment-media-view').each(function () {
var defaultValue = $(this).find('input[data-name]').attr('data-default');
$(this).find('input[data-name]').val(defaultValue);
if (defaultValue) {
$(this).find('.thumbnail-image').html('
').prev('.placeholder').addClass('hidden');
} else {
$(this).find('.thumbnail-image').html('').prev('.placeholder').removeClass('hidden');
}
});
field.find('.ms-icon-list').each(function () {
var defaultValue = $(this).next('input[data-name]').attr('data-default');
$(this).next('input[data-name]').val(defaultValue);
$(this).prev('.ms-selected-icon').children('i').attr('class', '').addClass(defaultValue);
$(this).find('li').each(function () {
var icon_class = $(this).find('i').attr('class');
if (defaultValue == icon_class) {
$(this).addClass('icon-active');
} else {
$(this).removeClass('icon-active');
}
});
});
field.find('.ms-multi-category-list').each(function () {
var defaultValue = $(this).next('input[data-name]').attr('data-default');
$(this).next('input[data-name]').val(defaultValue);
$(this).find('input[type="checkbox"]').each(function () {
if ($(this).val() == defaultValue) {
$(this).prop('checked', true);
} else {
$(this).prop('checked', false);
}
});
});
//field.find('.ms-fields').show();
$this.find('.ms-repeater-field-control-wrap').append(field);
field.addClass('expanded').find('.ms-repeater-fields').show();
$('.accordion-section-content').animate({
scrollTop: $this.height()
}, 1000);
ms_refresh_repeater_values();
}
}
return false;
});
$('.customize-control-ms-repeater').on('click', '.ms-repeater-field-remove', function () {
if (typeof $(this).parent() != 'undefined') {
$(this).closest('.ms-repeater-field-control').slideUp('normal', function () {
$(this).remove();
ms_refresh_repeater_values();
});
}
return false;
});
$('.customize-control-ms-repeater').on('keyup change', '[data-name]', function () {
delay(function () {
ms_refresh_repeater_values();
return false;
}, 500);
});
$('.customize-control-ms-repeater').on('change', 'input[type="checkbox"][data-name]', function () {
if ($(this).is(':checked')) {
$(this).val('yes');
$(this).parent('label').addClass('ms-toggle-on');
} else {
$(this).val('no');
$(this).parent('label').removeClass('ms-toggle-on');
}
return false;
});
// Drag and drop to change order
$('.ms-repeater-field-control-wrap').sortable({
orientation: 'vertical',
handle: '.ms-repeater-field-title',
update: function (event, ui) {
ms_refresh_repeater_values();
}
});
// Set all variables to be used in scope
var frame;
// ADD IMAGE LINK
$('.customize-control-ms-repeater').on('click', '.ms-upload-button', function (event) {
event.preventDefault();
var imgContainer = $(this).closest('.ms-fields-wrap').find('.thumbnail-image'),
placeholder = $(this).closest('.ms-fields-wrap').find('.placeholder'),
imgIdInput = $(this).siblings('.upload-id');
// Create a new media frame
frame = wp.media({
title: 'Select or Upload Image',
button: {
text: 'Use Image'
},
multiple: false // Set to true to allow multiple files to be selected
});
// When an image is selected in the media frame...
frame.on('select', function () {
// Get media attachment details from the frame state
var attachment = frame.state().get('selection').first().toJSON();
// Send the attachment URL to our custom image input field.
imgContainer.html('
');
placeholder.addClass('hidden');
// Send the attachment id to our hidden input
imgIdInput.val(attachment.url).trigger('change');
});
// Finally, open the modal on click
frame.open();
});
// DELETE IMAGE LINK
$('.customize-control-ms-repeater').on('click', '.ms-delete-button', function (event) {
event.preventDefault();
var imgContainer = $(this).closest('.ms-fields-wrap').find('.thumbnail-image'),
placeholder = $(this).closest('.ms-fields-wrap').find('.placeholder'),
imgIdInput = $(this).siblings('.upload-id');
// Clear out the preview image
imgContainer.find('img').remove();
placeholder.removeClass('hidden');
// Delete the image id from the hidden input
imgIdInput.val('').trigger('change');
});
var ColorChange = false;
$('.customize-control-ms-repeater .ms-color-picker').wpColorPicker({
change: function (event, ui) {
if (ColorChange) {
ms_refresh_repeater_values();
}
}
});
ColorChange = true;
//MultiCheck box Control JS
$('.customize-control-ms-repeater').on('change', '.ms-type-multicategory input[type="checkbox"]', function () {
var checkbox_values = $(this).parents('.ms-type-multicategory').find('input[type="checkbox"]:checked').map(function () {
return $(this).val();
}).get().join(',');
$(this).parents('.ms-type-multicategory').find('input[type="hidden"]').val(checkbox_values).trigger('change');
ms_refresh_repeater_values();
});
$('.ms-repeater-fields .range-input').each(function () {
var $dis = $(this);
$dis.slider({
range: 'min',
value: parseFloat($dis.attr('data-value')),
min: parseFloat($dis.attr('data-min')),
max: parseFloat($dis.attr('data-max')),
step: parseFloat($dis.attr('data-step')),
slide: function (event, ui) {
$dis.siblings('.range-input-selector').val(ui.value);
ms_refresh_repeater_values();
}
});
});
function ms_refresh_repeater_values() {
$('.control-section.open .ms-repeater-field-control-wrap').each(function () {
var values = [];
var $this = $(this);
$this.find('.ms-repeater-field-control').each(function () {
var valueToPush = {};
$(this).find('[data-name]').each(function () {
var dataName = $(this).attr('data-name');
var dataValue = $(this).val();
valueToPush[dataName] = dataValue;
});
values.push(valueToPush);
});
$this.next('.ms-repeater-collector').val(JSON.stringify(values)).trigger('change');
});
}
});
function ms_set_bg_color_value($container, $element, $obj) {
$container.find($element).wpColorPicker({
change: function (event, ui) {
var color = ui.color.to_s();
$obj.set(color);
},
clear: function (event) {
var element = jQuery(event.target).closest('.wp-picker-input-wrap').find('.wp-color-picker')[0];
var color = '';
if (element) {
$obj.set(color);
}
},
});
}
(function (api) {
api.controlConstructor['background-image'] = api.Control.extend({
ready: function () {
var control = this;
control.container.on('click', '.ms-upload-button', function (event) {
event.preventDefault();
var imgContainer = jQuery(this).closest('.customize-control-background-image').find('.ms-thumbnail'),
placeholder = jQuery(this).closest('.customize-control-background-image').find('.ms-placeholder'),
imgIdInput = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-id'),
imgUrlInput = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-url'),
backgroundFields = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-fields');
var frame = wp.media({
title: 'Select or Upload Image',
button: {
text: 'Select Image'
},
multiple: false
});
frame.on('select', function () {
var attachment = frame.state().get('selection').first().toJSON();
imgContainer.html('
');
placeholder.addClass('hidden');
imgIdInput.val(attachment.id).trigger('change');
imgUrlInput.val(attachment.url).trigger('change');
backgroundFields.show();
});
// Finally, open the modal on click
frame.open();
});
// DELETE IMAGE LINK
control.container.on('click', '.ms-remove-button', function (event) {
event.preventDefault();
var imgContainer = jQuery(this).closest('.customize-control-background-image').find('.ms-thumbnail'),
placeholder = jQuery(this).closest('.customize-control-background-image').find('.ms-placeholder'),
imgIdInput = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-id'),
imgUrlInput = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-url'),
backgroundFields = jQuery(this).closest('.customize-control-background-image').find('.ms-background-image-fields');
imgContainer.find('img').remove();
placeholder.removeClass('hidden');
imgIdInput.val('').trigger('change');
imgUrlInput.val('').trigger('change');
backgroundFields.hide();
});
control.container.on('change', '.background-image-repeat select', function () {
control.settings['repeat'].set(jQuery(this).val());
});
control.container.on('change', '.background-image-size select', function () {
control.settings['size'].set(jQuery(this).val());
});
control.container.on('change', '.background-image-attach select', function () {
control.settings['attach'].set(jQuery(this).val());
});
control.container.on('change', '.background-image-position select', function () {
control.settings['position'].set(jQuery(this).val());
});
ms_set_bg_color_value(control.container, '.background-image-color input', control.settings['color']);
ms_set_bg_color_value(control.container, '.background-image-overlay input', control.settings['overlay']);
}
});
// Tab Control
api.Tabs = [];
api.Tab = api.Control.extend({
ready: function () {
var control = this;
control.container.find('a.ms-customizer-tab').click(function (evt) {
var tab = jQuery(this).data('tab');
evt.preventDefault();
control.container.find('a.ms-customizer-tab').removeClass('active');
jQuery(this).addClass('active');
control.toggleActiveControls(tab);
});
api.Tabs.push(control.id);
},
toggleActiveControls: function (tab) {
var control = this,
currentFields = control.params.buttons[tab].fields;
_.each(control.params.fields, function (id) {
var tabControl = api.control(id);
if (undefined !== tabControl) {
if (tabControl.active() && jQuery.inArray(id, currentFields) >= 0) {
tabControl.toggle(true);
} else {
tabControl.toggle(false);
}
}
});
}
});
jQuery.extend(api.controlConstructor, {
'ms-tab': api.Tab
});
api.bind('ready', function () {
_.each(api.Tabs, function (id) {
var control = api.control(id);
control.toggleActiveControls(0);
});
});
// Alpha Color Picker Control
api.controlConstructor['ms-alpha-color'] = api.Control.extend({
ready: function () {
var control = this;
var paletteInput = control.container.find('.ms-alpha-color-control').data('palette');
if (true == paletteInput) {
palette = true;
} else if (typeof paletteInput !== 'undefined' && paletteInput.indexOf('|') !== -1) {
palette = paletteInput.split('|');
} else {
palette = false;
}
control.container.find('.ms-alpha-color-control').wpColorPicker({
change: function (event, ui) {
var color = ui.color.to_s();
control.setting.set(color);
},
clear: function (event) {
var element = jQuery(event.target).closest('.wp-picker-input-wrap').find('.wp-color-picker')[0];
var color = '';
if (element) {
control.setting.set(color);
}
},
palettes: palette
});
}
});
// Color Tab Control
api.controlConstructor['ms-color-tab'] = api.Control.extend({
ready: function () {
var control = this;
control.container.find('.ms-alpha-color-control').each(function () {
var $elem = jQuery(this);
var paletteInput = $elem.data('palette');
var setting = jQuery(this).attr('data-customize-setting-link');
if (true == paletteInput) {
palette = true;
} else if (typeof paletteInput !== 'undefined' && paletteInput.indexOf('|') !== -1) {
palette = paletteInput.split('|');
} else {
palette = false;
}
$elem.wpColorPicker({
change: function (event, ui) {
var color = ui.color.to_s();
wp.customize(setting, function (obj) {
obj.set(color);
});
},
clear: function (event) {
var element = jQuery(event.target).closest('.wp-picker-input-wrap').find('.wp-color-picker')[0];
var color = '';
if (element) {
wp.customize(setting, function (obj) {
obj.set(color);
});
}
},
palettes: palette
});
});
}
});
// Dimenstion Control
api.controlConstructor['dimensions'] = wp.customize.Control.extend({
ready: function () {
var control = this;
control.container.on('change keyup paste', '.ms-dimension-desktop_top', function () {
control.settings['desktop_top'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-desktop_right', function () {
control.settings['desktop_right'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-desktop_bottom', function () {
control.settings['desktop_bottom'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-desktop_left', function () {
control.settings['desktop_left'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-tablet_top', function () {
control.settings['tablet_top'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-tablet_right', function () {
control.settings['tablet_right'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-tablet_bottom', function () {
control.settings['tablet_bottom'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-tablet_left', function () {
control.settings['tablet_left'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-mobile_top', function () {
control.settings['mobile_top'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-mobile_right', function () {
control.settings['mobile_right'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-mobile_bottom', function () {
control.settings['mobile_bottom'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.ms-dimension-mobile_left', function () {
control.settings['mobile_left'].set(jQuery(this).val());
});
}
});
// Range Slider Control
api.controlConstructor['ms-responsive-range-slider'] = wp.customize.Control.extend({
ready: function () {
var control = this,
desktop_slider = control.container.find('.ms-res-range-slider.desktop-slider'),
desktop_slider_input = desktop_slider.next('.ms-res-range-slider-input').find('input.desktop-input'),
tablet_slider = control.container.find('.ms-res-range-slider.tablet-slider'),
tablet_slider_input = tablet_slider.next('.ms-res-range-slider-input').find('input.tablet-input'),
mobile_slider = control.container.find('.ms-res-range-slider.mobile-slider'),
mobile_slider_input = mobile_slider.next('.ms-res-range-slider-input').find('input.mobile-input'),
slider_input,
$this,
val;
// Desktop slider
desktop_slider.slider({
range: 'min',
value: desktop_slider_input.val(),
min: +desktop_slider_input.attr('min'),
max: +desktop_slider_input.attr('max'),
step: +desktop_slider_input.attr('step'),
slide: function (event, ui) {
desktop_slider_input.val(ui.value).keyup();
},
change: function (event, ui) {
control.settings['desktop'].set(ui.value);
}
});
// Tablet slider
tablet_slider.slider({
range: 'min',
value: tablet_slider_input.val(),
min: +tablet_slider_input.attr('min'),
max: +tablet_slider_input.attr('max'),
step: +desktop_slider_input.attr('step'),
slide: function (event, ui) {
tablet_slider_input.val(ui.value).keyup();
},
change: function (event, ui) {
control.settings['tablet'].set(ui.value);
}
});
// Mobile slider
mobile_slider.slider({
range: 'min',
value: mobile_slider_input.val(),
min: +mobile_slider_input.attr('min'),
max: +mobile_slider_input.attr('max'),
step: +desktop_slider_input.attr('step'),
slide: function (event, ui) {
mobile_slider_input.val(ui.value).keyup();
},
change: function (event, ui) {
control.settings['mobile'].set(ui.value);
}
});
// Update the slider when the number value change
jQuery('input.desktop-input').on('change keyup paste', function () {
$this = jQuery(this);
val = $this.val();
slider_input = $this.parent().prev('.ms-res-range-slider.desktop-slider');
slider_input.slider('value', val);
});
jQuery('input.tablet-input').on('change keyup paste', function () {
$this = jQuery(this);
val = $this.val();
slider_input = $this.parent().prev('.ms-res-range-slider.tablet-slider');
slider_input.slider('value', val);
});
jQuery('input.mobile-input').on('change keyup paste', function () {
$this = jQuery(this);
val = $this.val();
slider_input = $this.parent().prev('.ms-res-range-slider.mobile-slider');
slider_input.slider('value', val);
});
// Save the values
control.container.on('change keyup paste', '.desktop input', function () {
control.settings['desktop'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.tablet input', function () {
control.settings['tablet'].set(jQuery(this).val());
});
control.container.on('change keyup paste', '.mobile input', function () {
control.settings['mobile'].set(jQuery(this).val());
});
}
});
// Sortable Control
api.controlConstructor['ms-sortable'] = wp.customize.Control.extend({
ready: function () {
var control = this;
// Set the sortable container.
control.sortableContainer = control.container.find('ul.ms-sortable').first();
// Init sortable.
control.sortableContainer.sortable({
// Update value when we stop sorting.
stop: function () {
control.updateValue();
}
}).disableSelection().find('li').each(function () {
// Enable/disable options when we click on the eye of Thundera.
jQuery(this).find('i.visibility').click(function () {
jQuery(this).toggleClass('dashicons-visibility-faint').parents('li:eq(0)').toggleClass('invisible');
});
}).click(function () {
// Update value on click.
control.updateValue();
});
},
/**
* Updates the sorting list
*/
updateValue: function () {
var control = this,
newValue = [];
this.sortableContainer.find('li').each(function () {
if (!jQuery(this).is('.invisible')) {
newValue.push(jQuery(this).data('value'));
}
});
control.setting.set(newValue);
}
});
api.sectionConstructor['ms-upgrade-section'] = 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 ($) {
// Responsive switchers
$('.customize-control .responsive-switchers button').on('click', function (event) {
// Set up variables
var $this = $(this),
$devices = $('.responsive-switchers'),
$device = $(event.currentTarget).data('device'),
$control = $('.customize-control.has-switchers'),
$body = $('.wp-full-overlay'),
$footer_devices = $('.wp-full-overlay-footer .devices');
// Button class
$devices.find('button').removeClass('active');
$devices.find('button.preview-' + $device).addClass('active');
// Control class
$control.find('.control-wrap').removeClass('active');
$control.find('.control-wrap.' + $device).addClass('active');
$control.removeClass('control-device-desktop control-device-tablet control-device-mobile').addClass('control-device-' + $device);
// 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);
// Open switchers
if ($this.hasClass('preview-desktop')) {
$control.toggleClass('responsive-switchers-open');
}
});
// If panel footer buttons clicked
$('.wp-full-overlay-footer .devices button').on('click', function (event) {
// Set up variables
var $this = $(this),
$devices = $('.customize-control.has-switchers .responsive-switchers'),
$device = $(event.currentTarget).data('device'),
$control = $('.customize-control.has-switchers');
// Button class
$devices.find('button').removeClass('active');
$devices.find('button.preview-' + $device).addClass('active');
// Control class
$control.find('.control-wrap').removeClass('active');
$control.find('.control-wrap.' + $device).addClass('active');
$control.removeClass('control-device-desktop control-device-tablet control-device-mobile').addClass('control-device-' + $device);
// Open switchers
if (!$this.hasClass('preview-desktop')) {
$control.addClass('responsive-switchers-open');
} else {
$control.removeClass('responsive-switchers-open');
}
});
// Linked button
$('.ms-linked').on('click', function () {
// Set up variables
var $this = $(this);
// Remove linked class
$this.parent().parent('.ms-dimension-wrap').prevAll().slice(0, 4).find('input').removeClass('linked').attr('data-element', '');
// Remove class
$this.parent('.ms-link-dimensions').removeClass('unlinked');
});
// Unlinked button
$('.ms-unlinked').on('click', function () {
// Set up variables
var $this = $(this),
$element = $this.data('element');
// Add linked class
$this.parent().parent('.ms-dimension-wrap').prevAll().slice(0, 4).find('input').addClass('linked').attr('data-element', $element);
// Add class
$this.parent('.ms-link-dimensions').addClass('unlinked');
});
// Values linked inputs
$('.ms-dimension-wrap').on('input', '.linked', function () {
var $data = $(this).attr('data-element'),
$val = $(this).val();
$('.linked[ data-element="' + $data + '" ]').each(function (key, value) {
$(this).val($val).change();
});
});
});