/** * This file contains the script to handle the icon wizard and its operations. * * @version 4.0.0 */ jQuery(document).ready(function() { var RMP_Icon = { iconSelect: '#rmp-icon-dialog-select', iconContainer: '.rmp-menu-icons-dialog', clearSelector: '#rmp-icon-dialog-clear', closeSelector: '.rmp-menu-icons-dialog .rmp-dialog-header button.close', clear: function() { var self = this; jQuery(self.clearSelector).on('click', function() { jQuery(self.iconContainer).find('input').prop('checked', false); }); }, closeDialog: function() { var self = this; jQuery(self.closeSelector).on('click', function() { jQuery(self.iconContainer).hide(); }); }, openDialog: function(iconChooser) { var self = this; jQuery(iconChooser).on('click', function(e) { e.stopPropagation(); jQuery(self.iconContainer).show(); jQuery(self.iconSelect).attr('data-click', jQuery(e.target).attr('id')); }); }, getIconElementWrap: function(icon_class) { if (icon_class.includes('material-icons')) { icon_class = icon_class.replace('material-icons', ''); return '' + icon_class + ''; } return ''; }, removeIcon: function(iconChooser) { jQuery(iconChooser).on('click', '.rmp-icon-picker-trash', function(e) { e.preventDefault(); e.stopPropagation(); jQuery(this).parent('.rmp-icon-picker').siblings('input.rmp-icon-hidden-input').val(''); jQuery(this).siblings('.rmp-font-icon').remove(); jQuery(this).parent('.rmp-icon-picker').removeAttr('data-icon'); jQuery(this).remove(); if (!jQuery('#rmp-editor-main').find('#rmp-menu-update-notification').length) { jQuery('#rmp-editor-main').prepend( '
' + ' Update Required ' + 'UPDATE' + '
' ); } }); }, getIcon: function() { var self = this; jQuery(document).on('click', this.iconSelect, function() { let icon_class = jQuery(self.iconContainer).find('input:checked').val(); let clicker = '#' + jQuery(self.iconSelect).attr('data-click'); let icon_wrap = self.getIconElementWrap(icon_class); jQuery(clicker).find('.rmp-font-icon').remove(); jQuery(clicker).prev('input.rmp-icon-hidden-input').val(icon_wrap); jQuery(clicker).append(icon_wrap); jQuery(clicker).attr('data-icon', true); jQuery(clicker).find('.rmp-icon-picker-trash').remove(); jQuery(clicker).append(''); jQuery(self.iconSelect).removeAttr('data-click'); jQuery(self.closeSelector).click(); jQuery(clicker).prev('input').first().focus(); }); }, init: function(iconChooser) { this.openDialog(iconChooser); this.removeIcon(iconChooser); this.getIcon(); this.clear(); this.closeDialog(); jQuery('#rmp-icon-search').on('keyup', _.debounce(this.searchIcon, 500)); jQuery('#rmp-icon-search').on('keyup', function() { var query_string = this.value.toLocaleLowerCase(); if (query_string.length) { if (!jQuery('#rmp-icon-search-typing-message').length) { jQuery(this).after(' Waiting for more keystrokes... '); } else { jQuery('#rmp-icon-search-typing-message').html('Waiting for more keystrokes...'); jQuery('#rmp-icon-search-typing-message').show(); } } }); }, searchIcon: function(e) { jQuery('#rmp-icon-search-typing-message').html('Please wait moment..'); var query_string = this.value.toLocaleLowerCase(); var activeTab = jQuery('.rmp-menu-icons-dialog').find('.nav-tab-active'); if (!activeTab.length) { activeTab = jQuery('.rmp-menu-icons-dialog').find('.nav-tab').first(); } let icon_container = activeTab.attr('href'); var icon_selector = jQuery(icon_container + ' .font-icon'); var is_exist = false; icon_selector.each(function() { var icon_label = jQuery(this).children('input').val().toLocaleLowerCase(); if (icon_label.includes(query_string)) { jQuery(this).show(); is_exist = true; } else { jQuery(this).hide(); } if (is_exist) { jQuery('#rmp-icon-search-typing-message').html('Done, Check results..'); } else { jQuery('#rmp-icon-search-typing-message').html('Sorry, Not found..'); } }); } }; RMP_Icon.init('.rmp-icon-picker'); });