Current File : /var/www/pediatribu/wp-content/plugins/astra-widgets/assets/js/unminified/astra-widgets-backend.js |
(function($){
AstraWidgets = {
/**
* Init
*/
init: function()
{
this._init_colorpicker();
this._init_repeater();
this._getMarkup();
this._bind();
},
_init_colorpicker: function() {
$('.astra-widget-field-color .astra-widget-color > input').not('[id*="__i__"]').wpColorPicker({
change: function (event, ui) {
$( event.target ).val( ui.color.toString() );
$( event.target ).trigger('change');
}
});
},
/**
* Binds events
*/
_bind: function()
{
$( document ).on('widget-updated widget-added', AstraWidgets._reinit_controls );
$( document ).on('click', '.astra-select-icon', AstraWidgets._icon_selector );
$( document ).on('click', '.astra-widget-icon', AstraWidgets._set_icon );
// Bind repeater events.
$( document ).on('click', '.astra-repeater-sortable .clone', AstraWidgets._repeater_clone);
$( document ).on('click', '.astra-repeater-sortable .remove', AstraWidgets._repeater_remove);
$( document ).on('click', '.astra-repeater-field .actions', AstraWidgets._repeater_toggle_open);
$( document ).on('click', '.astra-repeater .add-new-btn', AstraWidgets._add_new );
$( document ).on('click', '.widget-control-save', AstraWidgets._repeater_reinit );
$( document ).on('click', '.astra-repeater-field .astra-select-image', AstraWidgets._repeater_add_image_field );
$( document ).on('click', '.astra-repeater-field .astra-remove-image', AstraWidgets._repeater_remove_image_field );
$( document ).on('input', '.astra-repeater-field [data-field-id="title"]', AstraWidgets._repeater_set_title );
$( document ).on('keyup', '.astra-repeater-field .search-icon', AstraWidgets._searchFuntionality );
$( document ).on('click', '.astra-repeater-field .astra-select-icon', AstraWidgets._showIconsMarkup );
},
_reinit_controls: function() {
AstraWidgets._init_colorpicker();
AstraWidgets._init_repeater();
},
_getMarkup: function() {
var font_awesome = fontAwesomeIcons.font_awesome;
var font_awesome_markup = '<input type="search" placeholder="Search icon..." class="search-icon">';
font_awesome_markup += '<ul class="astra-widget-icons-list">';
for (var key in font_awesome) {
if (font_awesome.hasOwnProperty(key)) {
var fontAwesome = font_awesome[key];
var viewbox_array = ( fontAwesome['svg'].hasOwnProperty("brands") ) ? fontAwesome['svg']['brands']['viewBox'] : fontAwesome['svg']['solid']['viewBox'];
var path = ( fontAwesome['svg'].hasOwnProperty("brands") ) ? fontAwesome['svg']['brands']['path'] : fontAwesome['svg']['solid']['path'];
var viewBox = viewbox_array.join( ' ' );
var terms = fontAwesome['search']['terms'].join( ' ' );
fontAwesome['search']['terms'].push( key );
fontAwesome['search']['terms'].push( fontAwesome['styles']['0'] );
font_awesome_markup += '<li class="astra-widget-icon ' + key + '" data-search-terms="' + terms + '" data-font="'+key+'" data-viewbox="'+viewBox+'" data-path="'+path+'">';
font_awesome_markup += '<svg xmlns="http://www.w3.org/2000/svg" viewBox="'+viewBox+'"><path d="'+path+'"></path></svg>';
font_awesome_markup += '</li>';
}
}
font_awesome_markup += '</ul>';
return font_awesome_markup;
},
_showIconsMarkup: function() {
font_awesome_markup = AstraWidgets._getMarkup();
if( $(this).hasClass( 'open' ) ) {
$(this).parents('.astra-widget-icon-selector').find('.astra-icons-list-wrap').append( font_awesome_markup );
} else {
$(this).parents('.astra-widget-icon-selector').find('.astra-widget-icons-list').remove();
$(this).parents('.astra-widget-icon-selector').find('.search-icon').remove();
}
},
_icon_selector: function(event) {
var parent = $(this).parents('.astra-widget-icon-selector');
parent.find('.astra-icons-list-wrap').slideToggle();
$(this).toggleClass( 'open' );
},
_set_icon: function(event) {
var parent = $(this).parents('.astra-widget-icon-selector');
var selected_icon_font = $(this).attr('data-font') || '';
var icon_selector = parent.find( '.astra-widget-icon.' + selected_icon_font );
var current_icon_preview = parent.find('.astra-selected-icon');
var current_icon_input = parent.find('.selected-icon');
var icon_selector_path = $(this).attr('data-path');
var icon_selector_viewbox = $(this).attr('data-viewbox');
var icon_selector_svg = icon_selector.html();
// current_icon_preview.removeClass();
current_icon_preview.html( icon_selector_svg );
parent.find('.astra-widget-icons-list .astra-widget-icon').removeClass( 'selected' );
icon_selector.addClass( 'selected' );
if( $(this).closest('.astra-repeater-field').find('.selected-icon').data('icon-visible') === 'yes' ) {
$(this).closest('.astra-repeater-field').find('.title').attr('class','title');
$(this).closest('.astra-repeater-field').find('.title').addClass( selected_icon_font );
}
iconObj = {
'name':selected_icon_font,
'path':icon_selector_path,
'viewbox': icon_selector_viewbox
};
var icon_data = JSON.stringify(iconObj);
current_icon_input.val( icon_data );
// Trigger the change event.
parent.find('.selected-icon').trigger( 'change' );
},
_searchFuntionality: function() {
// Declare variables
var input, filter, ul, li, a, i;
input = this;
filter = input.value.toUpperCase();
ul = $(this).parents('.astra-icons-list-wrap').find(".astra-widget-icons-list")[0];
setTimeout( function() {
li = ul.getElementsByTagName('li');
// Loop through all list items, and hide those who don't match the search query
for (i = 0; i < li.length; i++) {
search = $(li[i]).data('search-terms');
if( search ) {
if ( search.toUpperCase().indexOf( filter ) > -1 ) {
li[i].style.display = "";
} else {
li[i].style.display = "none";
}
}
}
}, 300 );
},
/**
* Repeater remove image field.
*
* @param {[type]} event [description]
* @return {[type]} [description]
*/
_repeater_remove_image_field: function(event) {
if( confirm('Do you want to remove this image?') ) {
var self = $(this);
var parent = self.parents('.astra-repeater-field');
parent.find('.astra-field-image-preview').html('');
parent.find('.astra-field-image-preview img').attr('src', '' );
parent.find('.astra-field-image-preview-id').val( '' );
parent.find('.astra-image-url').val( '' );
parent.find('.astra-image-alt').val( '' );
parent.find('.astra-image-title').val( '' );
parent.find('.astra-image-size-select, .astra-image-width').hide();
parent.find('.astra-select-image.button').css("display", "inline-block");
}
},
/**
* Repeater add image field
*
* @param {[type]} event [description]
* @return {[type]} [description]
*/
_repeater_add_image_field: function(event) {
var self = $(this);
var parent = self.parents('.astra-repeater-field');
var frame = wp.media({
title: 'Select or Upload Image',
button: {
text: 'Choose Image'
},
library: {
type: 'image'
},
multiple: false,
});
// Handle results from media manager.
frame.on('close',function( ) {
var attachments = frame.state().get('selection').toJSON();
if( $.isEmptyObject( attachments ) ) {
return;
}
if( attachments[0].sizes.hasOwnProperty('medium') ) {
var url = attachments[0].sizes.medium.url;
} else if( attachments[0].sizes.hasOwnProperty('thumbnail') ) {
var url = attachments[0].sizes.thumbnail.url;
} else {
var url = attachments[0].sizes.full.url;
}
if( parent.find('.astra-remove-image').length > 0 ) {
parent.find('.astra-field-image-preview img').attr('src', url );
} else {
parent.find('.astra-field-image-preview').append('<img src="'+url+'" /><span class="astra-remove-image button">Remove</span>');
}
parent.find('.astra-image-url').val( attachments[0].url );
parent.find('.astra-image-alt').val( attachments[0].alt );
parent.find('.astra-image-title').val( attachments[0].title );
parent.find('.astra-field-image-preview-id').val( attachments[0].id );
parent.find('.astra-select-image.button').css("display", "none");
parent.find('.astra-image-size-select, .astra-image-width').show();
// Trigger the change event.
parent.find('input').trigger( 'change' );
});
frame.open();
return false;
},
/**
* Return substring.
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_get_sub_string: function( val ) {
var str = '';
if( val.length > 24 ) {
var str = '..';
}
val = val.substring(0,24) + str;
return val;
},
/**
* Repeater set title.
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_repeater_set_title: function( e ) {
var val = $( this ).val() || '';
val = AstraWidgets._get_sub_string( val );
$(this).closest('.astra-repeater-field').find('.title').text( val )
},
/**
* Repeater reinit
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_repeater_reinit: function( e ) {
$('.astra-repeater-sortable').sortable();
},
/**
* Repeater add new
*
* @param {[type]} e [description]
*/
_add_new: function( e ) {
e.preventDefault();
var selector = $(this),
parent = selector.closest('.astra-repeater'),
length = $('.astra-repeater-field').length || 0,
fields = parent.find( '.astra-repeater-fields' ).html(),
title = parent.find( '.astra-repeater-fields' ).attr('title') || '',
repeater_id = parent.find( '.astra-repeater-fields' ).attr('data-id') || '';
fields = fields.replace('][][', ']['+length+'][');
var item = '<div class="astra-repeater-field">';
item += ' <div class="actions">';
item += ' <span class="index">'+length+'</span>';
item += ' <span class="dashicons dashicons-move"></span>';
item += ' <span class="title">'+title+'</span>';
item += ' <span class="dashicons dashicons-admin-page clone"></span>';
item += ' <span class="dashicons dashicons-trash remove"></span>';
item += ' <span class="dashicons toggle-arrow"></span>';
item += ' </div>';
item += ' <div class="markukp">';
item += fields
item += ' </div>';
item += '</div>';
parent.find('.astra-repeater-sortable').append( item );
// Set repeater fields names.
AstraWidgets._set_repeater_names();
},
/**
* Repeater set names
*/
_set_repeater_names: function() {
$('.astra-repeater').each(function(repeaterIndex, repeaterEl) {
var repeater_id = $(repeaterEl).find( '.astra-repeater-fields' ).attr('data-id') || '';
$(repeaterEl).find('.astra-repeater-sortable').find('.astra-repeater-field').each(function(repeaterFieldIndex, repeaterFieldEl){
$(repeaterFieldEl).find(':input').each(function(currentElindex, currentEl){
var field_id = $(currentEl).attr('data-field-id') || '';
var field_name = repeater_id + '['+repeaterFieldIndex+'][' + field_id + ']';
// Show index.
$(repeaterFieldEl).find('.index').text( repeaterFieldIndex );
// Set new name.
$(currentEl).attr('name', field_name);
});
});
});
},
/**
* Repeater Toggle Open
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_repeater_toggle_open: function(e) {
e.preventDefault();
// Toggle on click on move icon & title too.
if( ( e.target === this ) || $( e.target ).hasClass('title') || $( e.target ).hasClass('dashicons-move') ) {
$( this ).parents('.astra-repeater-field').toggleClass('field-open');
$( this ).parents('.astra-repeater-field').find('.markukp').slideToggle();
}
},
/**
* Repeater clone
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_repeater_clone: function(e) {
e.preventDefault();
var $item = $( this ),
parent = $item.closest('.astra-repeater'),
fields = parent.find( '.astra-repeater-fields' ).html(),
copyItem = $( $item ).closest('.astra-repeater-field').clone();
copyItem.insertAfter( $item.closest('.astra-repeater-field') );
$('.astra-repeater-sortable').sortable();
// Trigger the change event.
parent.find('input').trigger( 'change' );
// Set repeater fields names.
AstraWidgets._set_repeater_names();
},
/**
* Repeater remove
*
* @param {[type]} e [description]
* @return {[type]} [description]
*/
_repeater_remove: function( e ) {
e.preventDefault();
var $item = $( this );
var parent = $item.closest('.astra-repeater');
var title = $item.parent().find('.title').html();
var str = '';
if( title.length > 0 ) {
str = title;
} else {
str = 'this field';
}
if( confirm( 'Are you sure you want to delete ' + str + '?' ) ) {
$item.closest('.astra-repeater-field').remove();
}
// Set repeater fields names.
AstraWidgets._set_repeater_names();
// Trigger the change event.
parent.find('input').trigger( 'change' );
},
/**
* Repeater init
*
* @return {[type]} [description]
*/
_init_repeater: function()
{
$('.astra-repeater-sortable').sortable({
cursor: 'move',
stop: function( event, ui ) {
// Set repeater fields names.
AstraWidgets._set_repeater_names();
// Trigger the change event.
ui.item.find('input').trigger( 'change' );
},
});
// Set repeater fields names.
AstraWidgets._set_repeater_names();
if( $('.astra-repeater-field').length ) {
$('.astra-repeater-field').each(function(index, el) {
var title = $( el ).find('[data-field-id="title"]' ).val() || '';
var icon = $( el ).find('[data-field-id="icon"]' ).val() || '';
title = AstraWidgets._get_sub_string( title );
$(el).find('.title').text( title );
if( $(el).find('.selected-icon').data('icon-visible') === 'yes' ) {
$(el).find('.title').addClass( icon );
}
});
}
}
};
/**
* Initialization
*/
$(function(){
AstraWidgets.init();
});
})(jQuery);