/**
* Customizer Controls
*
* @package Business_Aarambha
*/
/* global wp, jQuery */
( function( $, api ) {
// Assign dimensions sides object
const width_sides = {side_1:"Top", side_2:"Right", side_3:"Bottom", side_4:"Left"};
/**
* Utility function that linked sides.
*
* @param control id
* @param key target class
*/
const business_aarambha_linked = ( id, key ) => {
let holder = $('.customize-control .control-wrap.' + key );
holder.find('.dimensions').addClass( 'linked' ).removeClass( 'unlinked' );
holder.find('.dimensions .dimension').each( function() {
$( this ).find('input[type="number"]').addClass( 'linked' ).attr( 'data-element',id );
});
holder.find('.link-dimensions-wrap .link-dimensions').removeClass( 'unlinked' );
holder.find('.link-dimensions-wrap .link-dimensions input[type="hidden"]').val( 'on' );
}
/**
* Utility function that unlinked sides.
*
* @param key target class
*/
const business_aarambha_unlinked = ( key ) => {
let holder = $('.customize-control .control-wrap.' + key );
holder.find('.dimensions').addClass( 'unlinked' ).removeClass( 'linked' );
holder.find('.dimensions .dimension').each( function() {
$( this ).find('input[type="number"]').removeClass( 'linked' ).attr( 'data-element','' );
});
holder.find('.link-dimensions-wrap .link-dimensions').addClass( 'unlinked' );
holder.find('.link-dimensions-wrap .link-dimensions input[type="hidden"]').val( 'off' );
}
// Group Settings
/**
* Utility function that hides all the controls in the panel except the tabs control.
*
* @param customizerSection
* @param customizerTab
*/
const business_aarambha_hide_controls = ( customizerSection , customizerTab ) => {
let newControls = [];
$(customizerSection).find( '#'+ customizerTab +' .customizer-tab' ).each( function() {
let input_wrap = $(this).find('input'),
input_controls = input_wrap.data('controls');
$.merge( newControls, input_controls.split(','));
});
$.each( newControls, function( i, val ) {
$( customizerSection ).children( 'li#customize-control-'+val ).removeClass( 'group-control-wrap' ).css( 'display', 'none' );
// $( customizerSection ).children( 'li#customize-control-'+val ).css( 'display', 'none' );
});
}
/**
* Handles showing the controls when the tab is clicked.
*
* @param customizerSection
* @param controlsToShowArray
*/
const business_aarambha_show_controls = ( customizerSection, controlsToShowArray ) => {
$.each( controlsToShowArray, function ( index, controlId ) {
let parentSection = customizerSection[0];
if ( controlId === 'widgets' ) {
$( parentSection ).children( 'li[class*="widget"]' ).css( 'display', 'list-item' );
return true;
}
let controlWrap = $( '#customize-control-' + controlId ),
controlClass = '';
if ( ( controlsToShowArray.length === 1 ) && ( index === 0 ) ) {
controlClass = 'first-child last-child';
} else if ( index === 0 ) {
controlClass = 'first-child';
} else if ( index === ( controlsToShowArray.length - 1 ) ) {
controlClass = 'last-child';
}
controlWrap.addClass( 'group-control-wrap' + ' ' + controlClass ).css( 'display', 'list-item' );
});
}
/**
* Icon options
*
* @param icon
* @return string
*/
const business_aarambha_format_Text = ( icon ) => {
return $(' ' + icon.text + '');
}
/**
* Add color pick custom class
*/
$(window).on("load", function() {
$('html').addClass('color-picker-ready');
});
/**
* Document Ready jQuery
*/
$( document ).ready( function() {
'use strict';
// Disconnected button
$( '.control-wrap .link-dimensions .unlinked' ).on( 'click', function() {
let holder = $( this ).closest( '.control-wrap'),
element = $( this ).data('element');
holder.find('ul.dimensions').addClass('linked').removeClass('unlinked');
holder.find('.link-dimensions-wrap .link-dimensions input[type="hidden"]').val('on').trigger( 'change' );
holder.find('.link-dimensions-wrap .link-dimensions').removeClass('unlinked');
holder.find('.dimensions li.dimension').each( function() {
$( this ).find('input[type="number"]').addClass( 'linked' ).attr( 'data-element', element );
});
} );
// Connected button
$( '.control-wrap .link-dimensions .linked' ).on( 'click', function() {
let holder = $( this ).closest( '.control-wrap');
holder.find('ul.dimensions').addClass('unlinked').removeClass('linked');
holder.find('.link-dimensions-wrap .link-dimensions input[type="hidden"]').val('off').trigger( 'change' );
holder.find('.link-dimensions-wrap .link-dimensions').addClass('unlinked');
holder.find('.dimensions li.dimension').each( function() {
$( this ).find('input[type="number"]').removeClass( 'linked' ).attr( 'data-element','' );
});
} );
// Values linked inputs
$( '.control-wrap .dimensions' ).on( 'input', '.dimension-input', function() {
let dataElement = $(this).attr( 'data-element' ),
currentFieldValue = $(this).val();
if ( dataElement !== '' ) {
$(this).closest('.control-wrap').find('.dimension .linked[ data-element="' + dataElement + '" ]').each(function() {
$(this).val( currentFieldValue ).change();
} );
}
else {
$(this).val( currentFieldValue ).change();
}
} );
// Units select
$( '.units-wrap .units .single-unit' ).on( 'click', function() {
let $this = $(this);
if ( $this.hasClass('active') ) {
return false;
}
$this.siblings().removeClass('active');
$this.addClass('active');
} );
// Range slide
$( '.control-wrap' ).on( 'input change', 'input[type="range"].range', function() {
let input_number = $( this ).closest( '.control-wrap' ).find( '.range-input input[type="number"]' ),
value = $( this ).val();
input_number.val( value );
input_number.trigger( 'change' );
});
// $( '.control-wrap' ).on( 'input change', 'input[type="number"].range-input', function() {
// let input_slide = $( this ).closest( '.control-wrap' ).find( 'input[type="range"].range' ),
// value = $( this ).val();
// input_slide.val( value );
// input_slide.trigger( 'change' );
// });
// Toggle
$( '.custom-toggle-btn-wrap input[type="checkbox"]' ).on( 'click', function() {
let toggle = $( this ).closest( '.control-wrap.active' ).find( '.custom-toggle-btn-wrap .custom-toggle-btn' ),
value = $( this ).is(':checked') ? true : false;
toggle.val( value ).trigger( 'change' );
} );
// Buttonset
// $( '.buttonset-control input[type="radio"]' ).on( 'click', function() {
//
// let buttonset = $( this ).closest( '.control-wrap.active' ).find( '.buttonset' ),
// value = $( this ).val();
// buttonset.prop( 'checked', true );
// buttonset.val( value ).trigger( 'change' );
// } );
// Icon Picker Preview
$( '.fa-icons-list li' ).on( 'click', function() {
$(this).parents('.fa-icons-list').find('li').removeClass();
$(this).addClass('selected');
var iconVal = $(this).parents('.icons-list-wrapper').find('li.selected').children('i').attr('class');
var inpiconVal = iconVal.split(' ');
$(this).parents( '.fa-icons-list' ).find('.ap-icon-value').val(inpiconVal[1]);
$(this).parents( '.fa-icons-list' ).find('.selected-icon-preview').html('');
$('.ap-icon-value').trigger('change');
});
// Radio image label dynamic active class to label
$( 'label.radio-image-label' ).on( 'click', function() {
$(this).closest( '.control-wrap').find( 'label.radio-image-label' ).each( function () {
$(this).removeClass('radio-image-label-on');
});
$(this).addClass('radio-image-label-on');
});
// Buttonset label dynamic active class to label
$( 'label.buttonset-label' ).on( 'click', function() {
$(this).closest( '.control-wrap').find( 'label.buttonset-label' ).each( function () {
$(this).removeClass('buttonset-label-on');
});
$(this).addClass('buttonset-label-on');
});
});
/**
* Responsive Device Toggle Active Class
*/
$( document ).ready( function() {
$( '.responsive-devices button' ).on( 'click', function( event ) {
// Set up variables
let $this = $( this ),
$devices = $( '.responsive-devices' ),
$device = $( event.currentTarget ).data( 'device' ),
$control = $( '.has-responsive-switcher' ),
$body = $( '.wp-full-overlay' ),
$customizer_builder = $( '.customize-builder' ),
$footer_devices = $( '.wp-full-overlay-footer' );
// 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 );
// Customizer builder
$customizer_builder.find( '.cb-devices-switcher a' ).removeClass( 'tab-active' ).attr( 'aria-pressed', false );
$customizer_builder.find( '.cb-devices-switcher a.switch-to-' + $device ).addClass( 'tab-active' ).attr( 'aria-pressed', true );
} );
// If panel footer buttons clicked
$( '.wp-full-overlay-footer .devices button' ).on( 'click', function( event ) {
// Set up variables
let $this = $( this ),
$devices = $( '.responsive-devices' ),
$device = $( event.currentTarget ).data( 'device' ),
$control = $( '.has-responsive-switcher' ),
$body = $( '.wp-full-overlay' ),
$footer_devices = $( '.wp-full-overlay-footer' );
// 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 );
} );
} );
/**
* Group control to hide on document ready
*
*/
$( document ).ready( function() {
// Hide all controls
$( '.customizer-group-control' ).each( function () {
let customizerSection = $( this ).closest( '.accordion-section' ),
customizerTab = $(this).closest('.customize-control-business_aarambha_group').attr('id'),
shownCtrls = $(this).find( '.customizer-tab > .active' ).data( 'controls' );
// Hide all controls in section.
business_aarambha_hide_controls( customizerSection, customizerTab );
// Show controls under first radio button.
business_aarambha_show_controls( customizerSection, shownCtrls.split(',') );
} );
} );
api.sectionConstructor['business_aarambha_custom_section'] = api.Section.extend( {
// No events for this type of section.
attachEvents: function() {
},
// Always make the section active.
isContextuallyActive: function() {
return true
}
});
/**
* Customizer Control: business_aarambha_background
*/
api.controlConstructor['business_aarambha_background'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
// Upload Image
control.container.on( 'click', '.background-image .attachment-media-view .upload-button', function( e ) {
let $this = $(this),
url_field = $this.closest( '.background-image').find( '.background-image-url' );
let image = wp.media({ multiple: false }).open().on( 'select', function() {
// This will return the selected image from the Media Uploader, the result is an object.
let uploadedImage = image.state().get( 'selection' ).first(),
previewImage = uploadedImage.toJSON().sizes.full.url,
imageUrl,
// imageID,
// imageWidth,
// imageHeight,
preview;
if ( ! _.isUndefined( uploadedImage.toJSON().sizes.medium ) ) {
previewImage = uploadedImage.toJSON().sizes.medium.url;
} else if ( ! _.isUndefined( uploadedImage.toJSON().sizes.thumbnail ) ) {
previewImage = uploadedImage.toJSON().sizes.thumbnail.url;
}
imageUrl = uploadedImage.toJSON().sizes.full.url;
// imageID = uploadedImage.toJSON().id;
// imageWidth = uploadedImage.toJSON().width;
// imageHeight = uploadedImage.toJSON().height;
url_field.val(imageUrl).trigger( 'change' );
preview = control.container.find( '.background-image .attachment-media-view' );
if ( preview.length ) {
preview.addClass( 'attachment-media-view-image landscape' ).html( '

' );
}
});
e.preventDefault();
});
// Remove Image
control.container.on( 'click', '.background-image .attachment-media-view .actions .remove-button', function( e ) {
e.preventDefault();
let $this = $(this);
$this.closest( '.background-image').find( '.background-image-url' ).val( '' ).trigger( 'change' );
$this.closest( '.background-image').find( '.attachment-media-view' ).removeClass( 'attachment-media-view-image landscape' ).html( '' );
});
},
/**
* Setup values
*/
setValues: function(){
let control = this;
const colors = control.params.colors;
if ( control.params.value.length <= 0 ) {
// Initial color picker
Object.keys( colors ).forEach( function ( key ) {
$('.background-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
['color_1', 'color_2'].forEach( function ( key ) {
$('.background-gradient .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
return ;
}
// Assign constant variables
const fields = control.params.fields,
values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for gradient
if ( item === 'gradient' ) {
['color_1','color_2'].forEach( ( key ) => {
let v = values[item] !== undefined ? values[item][key] : '';
$('.background-gradient .color-picker .' + key, control.container).val(v);
$('.background-gradient .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
}
// for background
else if ( item === 'background' ) {
$( '.background', control.container ).find( 'input.buttonset' ).each( function() {
let choiceID = $( this).attr("id"),
targetID = control.id + '-' + values[item];
if ( choiceID === targetID ) {
$( this ).attr( 'checked', 'checked' );
$( this ).next('label').addClass('buttonset-label-on');
}
else {
$( this ).next('label').removeClass('buttonset-label-on');
}
});
}
// for image
else if ( item === 'image' && values[item] ) {
$('.background-image .attachment-media-view', control.container).addClass( 'attachment-media-view-image landscape' ).html( '' );
$('.control-wrap .background-' + item + '-url', control.container).val( values[item] );
}
// for colors
else if ( item === 'colors' ) {
Object.keys( colors ).forEach( ( key ) => {
let v = values[item] !== undefined ? values[item][key] : '';
$('.background-colors .color-picker .' + key, control.container).val(v);
$('.background-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
}
else {
$('.control-wrap .background-' + item + '-select', control.container).find('option[value="' + values[item] + '"]').attr('selected', 'selected');
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,
css = {};
// Assign constant variables
const fields = control.params.fields;
const colors = control.params.colors;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for background type
if ( item === 'background' ) {
$( '.background', control.container ).find( 'input.buttonset' ).each( function() {
let choice = $( this ),
v = choice.val();
if( choice.is(':checked') ) {
css[item] = v;
}
});
}
// for image
else if ( item === 'image' ) {
v = $('.control-wrap .background-' + item + '-url', control.container).val();
if ( v ) {
css[item] = v;
}
}
// for colors
else if ( item === 'colors' ) {
let color_values = {};
Object.keys( colors ).forEach( ( key ) => {
v = $('.background-colors .color-picker .' + key, control.container).val();
if ( v ) {
color_values[key] = v;
}
});
css[item] = color_values;
}
// for gradient
else if ( item === 'gradient' ) {
let gradient_values = {};
['color_1','color_2'].forEach( ( key ) => {
v = $('.background-gradient .color-picker .' + key, control.container).val();
if ( v ) {
gradient_values[key] = v;
}
});
css[item] = gradient_values;
}
else {
v = $('.control-wrap .background-' + item + '-select', control.container).val();
if ( v ) {
css[item] = v;
}
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, v, r;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_background',control.container);
Object.keys( control.params.fields ).forEach( function ( item ) {
// for image
if ( item === 'image' ) {
holder.find( '.background-' + item + ' input[type="hidden"]' ).each( function() {
r = $( this ).data('reset');
if ( r === '' ) {
holder.find('.background-image .attachment-media-view').removeClass( 'attachment-media-view-image landscape' ).html( '' );
}
else {
holder.find('.background-image .attachment-media-view').addClass( 'attachment-media-view-image landscape' ).html( '' );
}
$( this ).val( r ).trigger( 'change' );
});
}
// for colors
else if ( item === 'colors' ) {
holder.find( '.background-colors .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
}
// for gradient
else if ( item === 'gradient' ) {
holder.find( '.background-gradient .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
}
// for background type
else if ( item === 'background' ) {
holder.find( '.background input.buttonset' ).each( function() {
r = $( this ).data( 'reset' );
r = ( '' !== r ) ? r : 'color';
let choiceID = $( this).attr("id"),
targetID = $( this).attr("name") + '-' + r;
if ( choiceID === targetID ) {
$( this ).prop( 'checked', true );
$( this ).next('label').addClass('buttonset-label-on');
}
else {
$( this ).prop( 'checked', false );
$( this ).next('label').removeClass('buttonset-label-on');
}
});
}
// for select
else {
holder.find( '.background-' + item + ' .background-' + item + '-select' ).each( function() {
r = $( this ).data( 'reset' );
v = $( this ).find( 'option:selected' ).val();
if ( r !== v ) {
// remove attr
$( this ).find('option').removeAttr('selected' );
// add attr
$( this ).find( 'option[value="' + r + '"]' ).attr('selected', 'selected').trigger( 'change' );
}
});
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_border
*/
api.controlConstructor['business_aarambha_border'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u;
const colors = control.params.colors;
if ( control.params.value.length <= 0 ) {
// Initial color picker
Object.keys( colors ).forEach( function ( key ) {
$('.border-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
return ;
}
// Assign constant variables
const fields = control.params.fields,
values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Units
const units = control.params.units;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
Object.keys( colors ).forEach( ( key ) => {
let v = values[item] !== undefined ? values[item][key] : '';
$('.border-colors .color-picker .' + key, control.container).val(v);
$('.border-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
}
// for Style
if ( item === 'style' ) {
$('.control-wrap .border-' + item + '-select', control.container).find('option[value="' + values[item] + '"]').attr('selected', 'selected');
}
// for Width
if ( item === 'width' ) {
// Sides
Object.keys( width_sides ).forEach( ( side, index ) => {
if ( values[item] !== undefined && values[item][side] !== undefined ) {
v = isNaN( parseFloat( values[item][side] ) ) ? '' : parseFloat( values[item][side] );
u = ( values[item][side] && !$.isNumeric(values[item][side] ) ) ? values[item][side].replace(v,'') : units[0];
$('.border-' + item + ' .border-width-' + side + ' input[type="number"].on-field', control.container).val( v );
}
});
// Active unit
$('.units-wrap .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.units-wrap .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
// Linked
if ( values[item] !== undefined && values[item]['linked'] !== undefined ) {
if ( values[item]['linked'] === 'on' ) {
business_aarambha_linked( control.id, 'border-control' );
}
else {
business_aarambha_unlinked( 'border-control' );
}
}
}
// for radius
if ( item === 'radius' ) {
v = isNaN( parseFloat( values[item] ) ) ? '' : parseFloat( values[item] );
u = ( values[item] && !$.isNumeric(values[item] ) ) ? values[item].replace(v,'') : units[0];
$('.border-' + item + ' input[type="range"]', control.container).val( v );
$('.border-' + item + ' input[type="number"]', control.container).val( v );
// Active unit
$('.border-' + item + ' .units-wrap .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.border-' + item + ' .units-wrap .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,u,
css = {};
// Assign constant variables
const fields = control.params.fields;
const colors = control.params.colors;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
let color_values = {};
Object.keys( colors ).forEach( ( key ) => {
v = $('.border-colors .color-picker .' + key, control.container).val();
if ( v ) {
color_values[key] = v;
}
});
css[item] = color_values;
}
// for widths
if ( item === 'width' ) {
let sides = {};
Object.keys( width_sides ).forEach( ( side, index ) => {
v = $('.border-' + item + ' .border-width-'+ side +' input[type="number"].on-field', control.container).val();
u = $('.units-wrap .units', control.container ).find('.single-unit.active').data('unit');
if ( v ) {
sides[side] = v + u;
}
});
// linked
sides['linked'] = $('.border-linked .link-dimensions input[type="hidden"]', control.container).val();
css[item] = sides;
}
// for style
if ( item === 'style' ) {
v = $('.control-wrap .border-' + item + '-select', control.container).val();
if ( v ) {
css[item] = v;
}
}
// for radius
if ( item === 'radius' ) {
v = $('.border-' + item + ' input[type="number"]', control.container).val();
u = $('.border-' + item + ' .units-wrap .units', control.container).find('.single-unit.active').data('unit');
if ( v ) {
css[item] = v + u ;
}
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, v, r, u;
// Units
const units = control.params.units;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_border',control.container);
Object.keys( control.params.fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
holder.find( '.border-colors .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
}
// for select
if ( item === 'style' ) {
holder.find( '.border-' + item + ' .border-' + item + '-select' ).each( function() {
r = $( this ).data( 'reset' );
v = $( this ).find( 'option:selected' ).val();
if ( r !== v ) {
// remove attr
$( this ).find('option').removeAttr('selected' );
// add attr
$( this ).find( 'option[value="' + r + '"]' ).attr('selected', 'selected').trigger( 'change' );
}
});
}
// for radius
if ( item === 'radius' ) {
// sides
holder.find( '.border-' + item + ' input[type="number"]' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.border-' + item + ' .units li.single-unit').removeClass('active');
holder.find('.border-' + item + ' .units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
}
// for Width
if ( item === 'width' ) {
// sides
holder.find( '.border-' + item + ' .dimension input[type="number"].on-field' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.units li.single-unit').removeClass('active');
holder.find('.units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
// Linked
holder.find( '.border-linked .link-dimensions input[type="hidden"]' ).each( function() {
r = $( this ).data('reset')
r = r === '' ? 'on' : r;
if ( r === 'on' ) {
business_aarambha_linked( control.id, 'border-control' );
}
else {
business_aarambha_unlinked( 'border-control' );
}
});
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_box_shadow
*/
api.controlConstructor['business_aarambha_box_shadow'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u;
const colors = control.params.colors;
if ( control.params.value.length <= 0 ) {
// Initial color picker
Object.keys( colors ).forEach( function ( key ) {
$('.box-shadow-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
return ;
}
// Assign constant variables
const fields = control.params.fields,
values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Units
const units = control.params.units;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
Object.keys( colors ).forEach( ( key ) => {
let v = values[item] !== undefined ? values[item][key] : '';
$('.box-shadow-colors .color-picker .' + key, control.container).val(v);
$('.box-shadow-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
}
// for toggle
else if ( item === 'inset' && values['inset'] !== undefined ) {
$('.box-shadow-' + item + ' .custom-toggle-btn-wrap input[type="checkbox"]', control.container).prop( 'checked', true );
}
// for sliders
else {
v = isNaN( parseFloat( values[item] ) ) ? '' : parseFloat( values[item] );
u = ( values[item] && !$.isNumeric(values[item] ) ) ? values[item].replace(v,'') : units[0];
$('.box-shadow-' + item + ' input[type="range"]', control.container).val( v );
$('.box-shadow-' + item + ' input[type="number"]', control.container).val( v );
// Active unit
$('.box-shadow-' + item + ' .units-wrap .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.box-shadow-' + item + ' .units-wrap .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,u,
css = {};
// Assign constant variables
const fields = control.params.fields;
const colors = control.params.colors;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
let color_values = {};
Object.keys( colors ).forEach( ( key ) => {
v = $('.box-shadow-colors .color-picker .' + key, control.container).val();
if ( v ) {
color_values[key] = v;
}
});
css[item] = color_values;
}
// for toggle
else if ( item === 'inset' ) {
$( '.box-shadow-' + item, control.container ).find( '.custom-toggle-btn-wrap input[type="checkbox"]' ).each( function() {
let toggle = $( this );
v = toggle.val();
if( toggle.is(':checked') ) {
css[item] = v;
}
});
}
// for range fields
else {
v = $('.box-shadow-' + item + ' input[type="number"]', control.container).val();
u = $('.box-shadow-' + item + ' .units-wrap .units', control.container).find('.single-unit.active').data('unit');
if ( v ) {
css[item] = v + u ;
}
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, v, r, u;
// Units
const units = control.params.units;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_box_shadow',control.container);
Object.keys( control.params.fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
holder.find( '.box-shadow-colors .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
}
// for toggle
else if ( item === 'inset' ) {
holder.find('.box-shadow-' + item + ' .custom-toggle-btn-wrap input[type="checkbox"]' ).each( function() {
r = $( this ).data( 'reset' );
if ( r !== '' ) {
$( this ).prop( 'checked', true );
}
else {
$( this ).prop( 'checked', false );
}
});
}
// for slides
else {
holder.find( '.box-shadow-' + item + ' input[type="number"]' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.box-shadow-' + item + ' .units li.single-unit').removeClass('active');
holder.find('.box-shadow-' + item + ' .units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_typography
*/
api.controlConstructor['business_aarambha_typography'] = api.Control.extend( {
ready: function() {
let control = this;
// Font Options
control.selectFontOptions( window.businessAarambhaAllFonts['allFonts'] );
$( '.typography-font_family select', control.container).html( window.fontFamiliesOptions );
// Font variants
control.setFontVariants('');
control.container.on( 'change', '.typography-font_family select', function() {
let v = $( this ).val();
control.setFontVariants( v );
});
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u,id;
const colors = control.params.colors;
if ( control.params.value.length <= 0 ) {
// Initial color picker
Object.keys( colors ).forEach( function ( key ) {
$('.typography-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
return ;
}
// Assign constant variables
const fields = control.params.fields,
values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Units
const units = control.params.units;
const devices = control.params.responsive;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
Object.keys( colors ).forEach( ( key ) => {
let v = values[item] !== undefined ? values[item][key] : '';
$('.typography-colors .color-picker .' + key, control.container).val(v);
$('.typography-colors .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
}
// for font family
if ( item === 'font_family' ) {
// Get font id
id = control.getFontId( values[item] );
$('.typography-' + item + ' select', control.container).find('option[value="' + ( id ) + '"]').attr('selected', 'selected');
}
// for variant, text transform. text decoration
if ( item === 'font_variant' ) {
control.setFontVariants( id );
$('.typography-' + item + ' select', control.container).find('option[value="' + ( values[item] ) + '"]').attr('selected', 'selected');
}
// for text transform and text decoration
if ( item === 'text_transform' || item === 'text_decoration' ) {
$('.typography-' + item + ' select', control.container).find('option[value="' + ( values[item] ) + '"]').attr('selected', 'selected');
}
// for font size, line height, letter spacing
if ( item === 'font_size' || item === 'letter_spacing' || item === 'line_height' ) {
( devices ).forEach( ( key ) => {
if ( values[item] !== undefined ) {
v = isNaN( parseFloat( values[item][key] ) ) ? '' : parseFloat( values[item][key] );
u = ( values[item][key] && !$.isNumeric(values[item][key] ) ) ? values[item][key].replace(v,'') : units[0];
$('.typography-' + item + ' .control-wrap.' + key + ' input[type="range"]', control.container).val( v );
$('.typography-' + item + ' .control-wrap.' + key + ' input[type="number"]', control.container).val( v );
// Active unit
$('.typography-' + item + ' .control-wrap.' + key + ' .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.typography-' + item + ' .control-wrap.' + key + ' .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
}
});
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,u,id,
css = {};
// Assign constant variables
const fields = control.params.fields;
const colors = control.params.colors;
const devices = control.params.responsive;
// Dynamic loop to set values with related fields
Object.keys( fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
let color_values = {};
Object.keys( colors ).forEach( ( key ) => {
v = $('.typography-colors .color-picker .' + key, control.container).val();
if ( v ) {
color_values[key] = v;
}
});
css[item] = color_values;
}
// for slides
if ( item === 'line_height' || item === 'letter_spacing' || item === 'font_size' ) {
let object = {};
( devices ).forEach( ( key ) => {
v = $('.typography-' + item + ' .control-wrap.' + key + ' input[type="number"]', control.container).val();
u = $('.typography-' + item + ' .control-wrap.' + key + ' .units', control.container).find('.single-unit.active').data('unit');
if ( v ) {
object[key] = v + u ;
}
});
css[item] = object;
}
// for text transform and text decoration
if ( item === 'text_transform' || item === 'text_decoration' ) {
v = $('.typography-' + item + ' select', control.container).val();
if ( v ) {
css[item] = v;
}
}
// for font family
if ( item === 'font_family' ) {
v = $('.typography-' + item + ' select', control.container).val();
if ( v ) {
id = control.getFontId( v );
if ( typeof id !== 'undefined') {
if ( typeof window.businessAarambhaAllFonts['allFonts'][id] !== 'undefined') {
let font = window.businessAarambhaAllFonts['allFonts'][id];
css[item] = font.name;
}
}
}
}
// for font variant
if ( item === 'font_variant' ) {
v = $('.typography-' + item + ' select', control.container).val();
if ( v ) {
let style, weight = parseInt(v);
if (isNaN(weight)) {
weight = '400';
if (v !== 'regular') {
style = v;
}
} else {
style = v.slice(weight.toString().length);
}
css[item] = v;
if ( style !== '') {
css['style'] = style;
}
if ( weight !== '' ) {
css['weight'] = weight;
}
}
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, v, r, u;
// Units
const units = control.params.units;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_typography',control.container);
Object.keys( control.params.fields ).forEach( function ( item ) {
// for colors
if ( item === 'colors' ) {
holder.find( '.typography-colors .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
}
// for select options
else if ( item === 'font_family' || item === 'font_variant' || item === 'text_transform' || item === 'text_decoration' ) {
holder.find( '.typography-' + item + ' select' ).each( function() {
r = $( this ).data( 'reset' );
v = $( this ).find( 'option:selected' ).val();
if ( r !== v ) {
// remove attr
$( this ).find('option').removeAttr('selected' );
// add attr
$( this ).find( 'option[value="' + r + '"]' ).attr('selected', 'selected').trigger( 'change' );
}
});
}
// for slides
else {
holder.find( '.typography-' + item + ' input[type="number"]' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.typography-' + item + ' .units li.single-unit').removeClass('active');
holder.find('.typography-' + item + ' .units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
}
});
control.settings['default'].set( control.params.default );
});
},
/**
* Load font options
*/
selectFontOptions: function( fonts ){
let control = this;
if ( typeof window.fontFamiliesOptions === "undefined" ) {
let fontOptions = {};
_.each( fonts, function (font, id) {
let html = '';
if (typeof ( font.font_type ) === "undefined" || font.font_type === '') {
font.font_type = 'standard-fonts';
}
if (typeof fontOptions[font.font_type] === "undefined") {
fontOptions[font.font_type] = {};
}
fontOptions[font.font_type][id] = html;
});
let optionsSelect = '';
_.each(fontOptions, function (v, id ) {
if (typeof v !== 'string') {
if ( id === 'google_font' ) {
optionsSelect += '';
} else {
optionsSelect += '';
}
} else {
optionsSelect += v;
}
});
window.fontFamiliesOptions = ''+optionsSelect;
}
},
/**
* Set font variants
*/
setFontVariants: function( font_id ){
// font_variant
let control = this, output = '';
output += '';
if ( typeof window.businessAarambhaAllFonts['allFonts'][ font_id ] !== 'undefined' && font_id !== '' ) {
_.each( window.businessAarambhaAllFonts['allFonts'][ font_id ]['font_variants'], function (value, id) {
output += ''
});
}
$('.typography-font_variant select', control.container ).html( output );
},
/**
* Get font id
*/
getFontId: function( fontName ){
if ( fontName !== undefined ) {
let font_id = fontName.toLowerCase();
return font_id.replace(/ /g, '_');
}
},
} );
/**
* Customizer Control: business_aarambha_sortable
*/
api.controlConstructor['business_aarambha_sortable'] = api.Control.extend( {
ready: function() {
let control = this;
// Set the sortable container.
control.sortableContainer = control.container.find( 'ul.sortable' ).first();
// Init sortable.
control.sortableContainer.sortable({
// Update value when we stop sorting.
stop: function() {
// Update value on sortable stop.
control.updateInputValue();
control.saveValues();
}
});
// visibility changes.
control.container.on( 'click', '.sortable-item i.visibility', function() {
$( this ).toggleClass( 'dashicons-hidden' ).parents( 'li:eq(0)' ).toggleClass( 'invisible' );
// Update value on click.
control.updateInputValue();
control.saveValues();
});
// Set values
control.setValues();
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 || control.params.value === false ) {
$('.control-wrap', control.container).each( function() {
$.each( control.params.choices, function ( choiceId, choiceLabel ) {
$('.control-wrap', control.container).append('' + choiceLabel + '');
});
});
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
const choices = control.params.choices;
if ( values ) {
// show visible option
$.each( values, function( index, value ) {
$('.control-wrap', control.container).append('' + choices[value] + '');
});
// show invisible option
$.each( choices, function ( choiceId, choiceLabel ) {
if ( false === values.includes( choiceId ) ) {
$('.control-wrap', control.container).append('' + choiceLabel + '');
}
});
$('.control-wrap input[type="hidden"]', control.container).val( values.join());
}
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,
css = {};
v = $('.control-wrap input[type="hidden"].sortable-field', control.container).val();
if ( v ) {
css = v.split(',');
}
control.settings['default'].set( css );
},
/**
* Update input value
*/
updateInputValue: function(){
let control = this,v;
v = $('.control-wrap li', control.container).map( function(){
if ( ! $( this ).is( '.invisible' ) ) {
return $( this ).data( 'value' );
}
}).get().join();
$('.control-wrap input[type="hidden"].sortable-field', control.container ).val( v );
},
/**
* Reset values
*/
resetValues: function(){
let control = this,v, r;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_sortable',control.container);
holder.find('.control-wrap input').each( function() {
r = $( this ).data( 'reset' );
$(this).closest('.sortable').find('li').each( function() {
v = $(this).data('value');
if ( r ) {
if ( ( r.split(',') ).includes( v ) ) {
$(this).removeClass('invisible');
}
else {
$(this).addClass('invisible');
}
}
else {
$(this).addClass('invisible');
}
});
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_group
*/
api.controlConstructor['business_aarambha_group'] = api.Control.extend( {
ready: function() {
let control = this;
control.container.on( 'click', '.customizer-tab > label', function() {
// Customizer Custom Tabs
$(this).closest('.customizer-group-control').find('input').removeClass('active').addClass('inactive');
$(this).closest('.customizer-tab').find('input').removeClass('inactive').addClass('active');
});
control.container.on( 'click', '.customizer-tab > label', function( e ) {
let customizerSection = $(this).closest( '.accordion-section' ),
customizerTab = $(this).closest( '.customize-control-business_aarambha_group' ).attr('id'),
controls = $(this).prev().closest('.customizer-tab').find('input').data( 'controls' );
// Hide all controls in section
business_aarambha_hide_controls( customizerSection, customizerTab );
business_aarambha_show_controls( customizerSection, controls.split(',') );
e.preventDefault();
});
},
} );
/**
* Customizer Control: business_aarambha_toggle
*/
api.controlConstructor['business_aarambha_toggle'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
const devices = control.params.responsive;
// Dynamic loop to set values with related fields
( devices ).forEach( ( key ) => {
if ( values[key] !== undefined ) {
$('.control-wrap.' + key + ' .custom-toggle-btn-wrap input[type="checkbox"]', control.container).prop( 'checked', true );
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, css = {};
// Dynamic loop to set values with related fields
( control.params.responsive ).forEach( device => {
$( '.toggle-control.' + device, control.container ).find( '.custom-toggle-btn-wrap input[type="checkbox"]' ).each( function() {
let toggle = $( this ),
v = toggle.val();
if( toggle.is(':checked') ) {
css[device] = v;
}
});
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, r;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_toggle',control.container);
holder.find('.toggle-control .custom-toggle-btn-wrap input[type="checkbox"]' ).each( function() {
r = $( this ).data( 'reset' );
if ( r !== '' ) {
$( this ).prop( 'checked', true );
}
else {
$( this ).prop( 'checked', false );
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_color
*/
api.controlConstructor['business_aarambha_color'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this;
const colors = control.params.colors;
if ( control.params.value.length <= 0 ) {
// Initial color picker
Object.keys( colors ).forEach( function ( key ) {
$('.color-control .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// for colors
Object.keys( colors ).forEach( ( key ) => {
let v = values[key] !== undefined ? values[key] : '';
$('.color-control .color-picker .' + key, control.container).val(v);
$('.color-control .color-picker .' + key, control.container).wpColorPicker({
change: function(event, ui) {
if ( $('html').hasClass('color-picker-ready') ) {
setTimeout( function() {
// Save value on change
control.saveValues();
}, 100 );
}
}
});
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this, v,
css = {};
// Assign constant variables
const colors = control.params.colors;
// Dynamic loop to set values with related fields
Object.keys( colors ).forEach( ( key ) => {
v = $('.color-control .color-picker .' + key, control.container).val();
if ( v ) {
css[key] = v;
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_color',control.container);
// for colors
holder.find( '.color-control .color-picker' ).each( function() {
let colors = $( this ).find('.wp-picker-container .alpha-color-control'),
r = colors.data( 'reset' );
colors.val(r).trigger( 'change' );
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_buttonset
*/
api.controlConstructor['business_aarambha_buttonset'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
const devices = control.params.responsive;
// Dynamic loop to set values with related fields
( devices ).forEach( ( key ) => {
$( '.buttonset-control.' + key, control.container ).find( 'input.buttonset' ).each( function() {
let choiceID = $( this).attr("id"),
targetID = key + '-' + control.id + '-' + values[key];
if ( choiceID === targetID ) {
$( this ).attr( 'checked', 'checked' );
$( this ).next('label').addClass('buttonset-label-on');
}
});
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this,css = {};
// Dynamic loop to set values with related fields
( control.params.responsive ).forEach( device => {
$( '.buttonset-control.' + device, control.container ).find( 'input.buttonset' ).each( function() {
let choice = $( this ),
v = choice.val();
if( choice.is(':checked') ) {
css[device] = v;
}
});
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this, r;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_buttonset',control.container)
holder.find( '.buttonset-control input.buttonset' ).each( function() {
r = $( this ).data( 'reset' );
let choiceID = $( this).attr("id"),
targetID = $( this).attr("name") + '-' + r;
if ( choiceID === targetID ) {
$( this ).prop( 'checked', true );
$( this ).next('label').addClass('buttonset-label-on');
}
else {
$( this ).prop( 'checked', false );
$( this ).next('label').removeClass('buttonset-label-on');
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_range
*/
api.controlConstructor['business_aarambha_range'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Responsive Devices
const devices = control.params.responsive;
// Units
const units = control.params.units;
// Dynamic loop to set values with related fields
( devices ).forEach( ( key ) => {
v = isNaN( parseFloat( values[key] ) ) ? '' : parseFloat( values[key] );
u = ( values[key] && !$.isNumeric(values[key] ) ) ? values[key].replace(v,'') : units[0];
$('.range-control.' + key + ' input[type="range"]', control.container).val( v );
$('.range-control.' + key + ' input[type="number"]', control.container).val( v );
// Active unit
$('.range-control.' + key + ' .units-wrap .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.range-control.' + key + ' .units-wrap .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this,v,u,css = {};
// Units
const units = control.params.units;
// Dynamic loop to set values with related fields
( control.params.responsive ).forEach( device => {
v = $('.range-control.' + device + ' input[type="number"]', control.container).val();
u = $('.range-control.' + device + ' .units-wrap .units', control.container).find('.single-unit.active').data('unit');
if ( v ) {
css[device] = ( typeof units != "undefined"
&& units != null
&& units.length != null
&& units.length > 0) ? v + u : v ;
}
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this,r,v,u;
// Units
const units = control.params.units;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_range',control.container);
holder.find( '.range-control input[type="number"]' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.range-control .units li.single-unit').removeClass('active');
holder.find('.range-control .units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_dimensions
*/
api.controlConstructor['business_aarambha_dimensions'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
// Responsive Devices
const devices = control.params.responsive;
// Units
const units = control.params.units;
// Dynamic loop to set values with related fields
( devices ).forEach( ( key ) => {
if ( values[key] !== undefined ) {
// Sides
Object.keys( width_sides ).forEach( ( side, index ) => {
if ( values[key][side] !== undefined ) {
v = isNaN( parseFloat( values[key][side] ) ) ? '' : parseFloat( values[key][side] );
u = ( values[key][side] && !$.isNumeric(values[key][side] ) ) ? values[key][side].replace(v,'') : units[0];
$('.dimensions-control.' + key + ' .dimension-' + side + ' input[type="number"].on-field', control.container).val( v );
}
});
// Active unit
$('.dimensions-control.' + key + ' .units-wrap .units', control.container).find('.single-unit').siblings().removeClass('active');
$('.dimensions-control.' + key + ' .units-wrap .units', control.container).find('.single-unit[data-unit="' + u + '"]').addClass('active');
// Linked
if ( values[key]['linked'] !== undefined ) {
if ( values[key]['linked'] === 'on' ) {
business_aarambha_linked( control.id, key );
}
else {
business_aarambha_unlinked( key );
}
}
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this,v,u,css = {};
// Dynamic loop to set values with related fields
( control.params.responsive ).forEach( device => {
let sides = {};
Object.keys( width_sides ).forEach( ( side, index ) => {
v = $('.dimensions-control.' + device + ' .dimension-'+ side +' input[type="number"].on-field', control.container).val();
u = $('.dimensions-control.' + device + ' .units-wrap .units', control.container ).find('.single-unit.active').data('unit');
if ( v ) {
sides[side] = v + u;
// linked
sides['linked'] = $('.dimensions-control.' + device + ' .link-dimensions input[type="hidden"]', control.container).val();
}
});
css[device] = sides;
});
control.settings['default'].set( css );
},
/**
* Reset values
*/
resetValues: function(){
let control = this,r,v,u;
// Units
const units = control.params.units;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_dimensions',control.container);
holder.find( '.dimensions-control input[type="number"]' ).each( function() {
r = $( this ).data( 'reset' );
v = isNaN( parseFloat( r ) ) ? '' : parseFloat( r );
u = ( r && !$.isNumeric( r ) ) ? r.replace(v,'') : units[0];
$(this).val(v).trigger( 'change' );
});
// unit
holder.find('.dimensions-control .units li.single-unit').removeClass('active');
holder.find('.dimensions-control .units li.single-unit[data-unit="' + u + '"]').addClass('active').trigger( 'change' );
// Linked
holder.find( '.dimensions-control .link-dimensions input[type="hidden"]' ).each( function() {
r = $( this ).data('reset')
r = r === '' ? 'on' : r;
if ( r === 'on' ) {
business_aarambha_linked( control.id, 'dimensions-control' );
}
else {
business_aarambha_unlinked( 'dimensions-control' );
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_radio_image
*/
api.controlConstructor['business_aarambha_radio_image'] = api.Control.extend( {
ready: function() {
let control = this;
// Set Values
control.setValues();
// Save values
control.container.on( 'change keyup paste', 'select, input', function() {
control.saveValues();
});
// Reset Data
control.resetValues();
},
/**
* Setup values
*/
setValues: function(){
let control = this,v,u;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
const values = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
$( '.radio-image-control', control.container ).find( 'input.radio-image' ).each( function() {
let choiceID = $( this).attr("id"),
targetID = control.id + '-' + values;
if ( choiceID === targetID ) {
$( this ).attr( 'checked', 'checked' );
$( this ).next('label').addClass('radio-image-label-on');
}
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this;
$( '.radio-image-control', control.container ).find( 'input.radio-image' ).each( function() {
let choice = $( this ),
v = choice.val();
if( choice.is(':checked') ) {
control.settings['default'].set( v );
}
});
},
/**
* Reset values
*/
resetValues: function(){
let control = this,r;
control.container.on( 'click', '.reset-value', function() {
const holder = $( this ).closest('.customize-control-business_aarambha_radio_image',control.container);
holder.find( '.radio-image-control input.radio-image' ).each( function() {
r = $( this ).data( 'reset' );
let choiceID = $( this).attr("id"),
targetID = $( this).attr("name") + '-' + r;
if ( choiceID === targetID ) {
$( this ).prop( 'checked', true );
$( this ).next('label').addClass('radio-image-label-on');
}
else {
$( this ).prop( 'checked', false );
$( this ).next('label').removeClass('radio-image-label-on');
}
});
control.settings['default'].set( control.params.default );
});
}
} );
/**
* Customizer Control: business_aarambha_select
*/
api.controlConstructor['business_aarambha_select'] = api.Control.extend( {
ready: function() {
let control = this,
element = $('.select-control', control.container).find( 'select' ),
select2Options = {
escapeMarkup: function( markup ) {
return markup;
},
allowClear: true
};
if ( $( element ).hasClass( 'select2-hidden-accessible' ) ) {
$( element ).select2( 'destroy' );
$( element ).empty();
}
// Set Data
control.setValues();
// Save Data
$( element ).select2( select2Options ).on( 'change', function() {
control.saveValues();
});
},
/**
* Setup values
*/
setValues: function(){
let control = this;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
let value = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
$('.select-control select', control.container).find('option[value="' + value + '"]').attr('selected', 'selected');
},
/**
* Save Values
*/
saveValues: function(){
let control = this,v;
v = $('.select-control select', control.container).val();
if ( v ) {
control.settings['default'].set( v );
}
}
} );
/**
* Customizer Control: business_aarambha_icon_select
*/
api.controlConstructor['business_aarambha_icon_select'] = api.Control.extend( {
ready: function() {
let control = this,
element = $('.icon-select-control', control.container).find( 'select' ),
select2Options = {
escapeMarkup: function( markup ) {
return markup;
},
allowClear: true,
templateSelection: business_aarambha_format_Text,
templateResult: business_aarambha_format_Text
};
if ( $( element ).hasClass( 'select2-hidden-accessible' ) ) {
$( element ).select2( 'destroy' );
$( element ).empty();
}
// Set Data
control.setValues();
// Save Data
$( element ).select2( select2Options ).on( 'change', function() {
control.saveValues();
});
},
/**
* Setup values
*/
setValues: function(){
let control = this;
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
let value = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
$('.icon-select-control select', control.container).find('option[value="' + value + '"]').attr('selected', 'selected');
},
/**
* Save Values
*/
saveValues: function(){
let control = this,v;
v = $('.icon-select-control select', control.container).val();
if ( v ) {
control.settings['default'].set( v );
}
}
} );
/**
* Customizer Control: business_aarambha_editor
*/
api.controlConstructor['business_aarambha_editor'] = api.Control.extend( {
ready : function () {
'use strict';
var control = this,
id = 'editor_' + control.id;
wp.editor.initialize( id, {
tinymce : {
wpautop : false,
forced_root_block : "",
},
quicktags : true,
mediaButtons : true
} );
},
onChangeActive : function ( active, args ) {
'use strict';
var control = this,
id = 'editor_' + control.id,
element = control.container.find( 'textarea' ),
editor;
editor = tinyMCE.get( id );
if ( editor ) {
editor.onChange.add( function ( ed ) {
var content;
ed.save();
content = editor.getContent();
element.val( content ).trigger( 'change' );
api.instance( control.id ).set( content );
} );
}
}
} );
/**
* Customizer Control: business_aarambha_multi_select
*/
api.controlConstructor['business_aarambha_multi_select'] = api.Control.extend( {
ready: function() {
let control = this,
element = $('.multi-select-control', control.container).find( 'select' ),
select2Options = {
escapeMarkup: function( markup ) {
return markup;
},
allowClear: true
};
if ( $( element ).hasClass( 'select2-hidden-accessible' ) ) {
$( element ).select2( 'destroy' );
$( element ).empty();
}
// Set Data
control.setValues();
// Save Data
$( element ).select2( select2Options ).on( 'change', function() {
control.saveValues();
});
},
/**
* Setup values
*/
setValues: function(){
let control = this;
console.log(control.params);
// terminate process if value not set or black is given
if ( control.params.value.length <= 0 ) {
return ;
}
// Assign constant variables
let value = ( control.setting._value !== '' ) ? control.setting._value : control.params.value;
let multi_options = value.split(',');
( multi_options ).forEach( ( key ) => {
$('.multi-select-control select', control.container).find('option[value="' + key + '"]').attr('selected', 'selected');
});
},
/**
* Save Values
*/
saveValues: function(){
let control = this,v;
v = $('.multi-select-control select', control.container).val();
if ( v ) {
control.settings['default'].set( v.join() );
}
}
} );
}( jQuery, wp.customize ) );