Server IP : 172.67.157.199 / Your IP : 3.133.146.158 [ Web Server : Apache System : Linux b70eb322-3aee-0c53-7c82-0db91281f2c6.secureserver.net 6.1.90-1.el9.elrepo.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 2 12:09:22 EDT 2024 x86_64 User : root ( 0) PHP Version : 8.0.30.2 Disable Function : NONE Domains : 0 Domains MySQL : ON | cURL : ON | WGET : ON | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /var/www/wp-content/themes/izo/inc/customizer/custom-controls/repeater/ |
Upload File : |
jQuery( document ).ready(function($) { "use strict"; // Update the values for all our input fields and initialise the sortable repeater $('.izo-sortable_repeater_control').each(function() { // If there is an existing customizer value, populate our rows var defaultValuesArray = $(this).find('.customize-control-sortable-repeater').val().split(','); var numRepeaterItems = defaultValuesArray.length; if(numRepeaterItems > 0) { // Add the first item to our existing input field $(this).find('.repeater-input').val(defaultValuesArray[0]); // Create a new row for each new value if(numRepeaterItems > 1) { var i; for (i = 1; i < numRepeaterItems; ++i) { izoAppendRow($(this), defaultValuesArray[i]); } } } }); // Make our Repeater fields sortable $(this).find('.izo-sortable_repeater.sortable').sortable({ update: function(event, ui) { izoGetAllInputs($(this).parent()); } }); // Remove item starting from it's parent element $('.izo-sortable_repeater.sortable').on('click', '.customize-control-sortable-repeater-delete', function(event) { event.preventDefault(); var numItems = $(this).parent().parent().find('.repeater').length; if(numItems > 1) { $(this).parent().slideUp('fast', function() { var parentContainer = $(this).parent().parent(); $(this).remove(); izoGetAllInputs(parentContainer); }) } else { $(this).parent().find('.repeater-input').val(''); izoGetAllInputs($(this).parent().parent().parent()); } }); // Add new item $('.customize-control-sortable-repeater-add').click(function(event) { event.preventDefault(); izoAppendRow($(this).parent()); izoGetAllInputs($(this).parent()); }); // Refresh our hidden field if any fields change $('.izo-sortable_repeater.sortable').change(function() { izoGetAllInputs($(this).parent()); }) // Add https:// to the start of the URL if it doesn't have it $('.izo-sortable_repeater.sortable').on('blur', '.repeater-input', function() { var url = $(this); var val = url.val(); if(val && !val.match(/^.+:\/\/.*/)) { // Important! Make sure to trigger change event so Customizer knows it has to save the field url.val('https://' + val).trigger('change'); } }); // Append a new row to our list of elements function izoAppendRow($element, defaultValue = '') { var newRow = '<div class="repeater" style="display:none"><input type="text" value="' + defaultValue + '" class="repeater-input" placeholder="https://" /><span class="dashicons dashicons-sort"></span><a class="customize-control-sortable-repeater-delete" href="#"><span class="dashicons dashicons-no-alt"></span></a></div>'; $element.find('.sortable').append(newRow); $element.find('.sortable').find('.repeater:last').slideDown('slow', function(){ $(this).find('input').focus(); }); } // Get the values from the repeater input fields and add to our hidden field function izoGetAllInputs($element) { var inputValues = $element.find('.repeater-input').map(function() { return $(this).val(); }).toArray(); // Add all the values from our repeater fields to the hidden field (which is the one that actually gets saved) $element.find('.customize-control-sortable-repeater').val(inputValues); // Important! Make sure to trigger change event so Customizer knows it has to save the field $element.find('.customize-control-sortable-repeater').trigger('change'); } });