(function($){ AstraWidgets = { /** * Init */ init: function() { this._init_colorpicker(); this._init_repeater(); this._getMarkup(); this._bind(); }, _init_colorpicker: function() { $('.astra-widget-field-color input').wpColorPicker({ change: function (event, ui) { // $(event.target).closest('.widget-content').find('input').trigger('change'); } }); // .wpColorPicker({ // /** // * @param {Event} event - standard jQuery event, produced by whichever // * control was changed. // * @param {Object} ui - standard jQuery UI object, with a color member // * containing a Color.js object. // */ // change: function (event, ui) { // var element = event.target; // var color = ui.color.toString(); // if ( jQuery('html').hasClass('colorpicker-ready') ) { // control.setting.set( color ); // } // }, // /** // * @param {Event} event - standard jQuery event, produced by "Clear" // * button. // */ // clear: function (event) { // var element = jQuery(event.target).closest('.wp-picker-input-wrap').find('.wp-color-picker')[0]; // var color = ''; // if (element) { // // Add your code here // control.setting.set( color ); // } // } // }); }, /** * 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 = ''; font_awesome_markup += '
'; 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]; console.log( ul ); 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(); } }, /** * 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('