"use strict"; jQuery(document).ready(function ($) { /** Tabs */ let activeIndex = $('.nav-tab-active').index(); const $contentList = $('.nav-tabs-content .section'), $tabsList = $('.nav-tab-wrapper a'), $importSettings = $('#import-settings'), $importSettingsInput = $('input[name="import_settings"]'); const savedTab = sessionStorage.getItem('sggActiveTab'); if (savedTab && $(`.nav-tab-wrapper a[data-id="${savedTab}"]`).length > 0) { activeIndex = $(`.nav-tab-wrapper a[data-id="${savedTab}"]`).index(); } $tabsList.removeClass('nav-tab-active'); $tabsList.eq(activeIndex).addClass('nav-tab-active'); $contentList.hide().eq(activeIndex).show(); $('.nav-tab-wrapper').on('click', 'a', function (e) { e.preventDefault(); let $current = $(e.currentTarget), index = $current.index(), id = $current.data('id'); $tabsList.removeClass('nav-tab-active'); $current.addClass('nav-tab-active'); $contentList.hide().eq(index).show(); sessionStorage.setItem('sggActiveTab', id); }); /** Dependency */ $('.has-dependency').click(function () { if (this.type === 'radio') { $(`input[name="${this.name}"]`).each(function () { sgg_dependency(`.${$(this).data('target')}`, !this.checked); }); } else { sgg_dependency(`.${$(this).data('target')}`, !this.checked); } }).each(function () { if (this.type === 'radio') { $(`input[name="${this.name}"]`).each(function () { sgg_dependency(`.${$(this).data('target')}`, !this.checked); }); } else { sgg_dependency(`.${$(this).data('target')}`, !this.checked); } }); /** Add Custom Sitemap */ $('#add_sitemap_url').on('click', function(e) { e.preventDefault(); $('.no_urls').remove(); $('#custom_sitemaps').append('' + '' + '' + '' + ''); }); /** Add Field */ $('#add_new_url').on('click', function(e) { e.preventDefault(); $('.no_urls').remove(); $('#additional_urls').append('' + '' + '' + $('#additional_priorities_selector').html() + '' + '' + $('#additional_frequencies_selector').html() + '' + '' + '' + ''); let $rows = $('#additional_urls').find('tr'); showAdditionalUrls(); normalizeVisibleRows($rows, 5); }); /** Add Bulk URLs */ $('#add_bulk_urls').on('click', function(e) { e.preventDefault(); $('.add-bulk-urls-section').removeClass('hidden'); showAdditionalUrls(); }); $('#run_add_bulk_urls').on('click', function(e) { e.preventDefault(); const $bulk_urls = $('#bulk_urls'); // Add URLs $bulk_urls.val().split('\n').forEach(url => { if (url.trim() !== '') { $('.no_urls').remove(); $('#additional_urls').append('' + '' + '' + $('#additional_priorities_selector').html() + '' + '' + $('#additional_frequencies_selector').html() + '' + '' + '' + ''); } }); $bulk_urls.val(''); $('.add-bulk-urls-section').addClass('hidden'); let $rows = $('#additional_urls').find('tr') normalizeVisibleRows($rows, 5); }); $('#cancel_add_bulk_urls').on('click', function(e) { e.preventDefault(); $('#bulk_urls').val(''); $('.add-bulk-urls-section').addClass('hidden'); }); /** Remove Field */ $(document).on('click', '.remove_url', function(e) { e.preventDefault(); const $row = $(this).closest('tr'); const $tbody = $row.closest('tbody'); $row.remove(); const $rows = $tbody.find('tr').not('.no_urls'); if ($tbody.find('tr').length === 0) { $tbody.prepend(` ${grimData.NoUrls} `); } normalizeVisibleRows($rows, 5); }); function normalizeVisibleRows($rows, limit = 5) { let visibleCount = 0; let $btn = $rows.closest('.grim-section').find('.grim-additional-urls-toggle'); if ( $btn && !$btn.hasClass('active')) { $rows.each(function () { const $row = $(this); if (!$row.hasClass('grim-term-hidden') && visibleCount < limit) { visibleCount++; return; } if (visibleCount < limit) { $row.removeClass('grim-term-hidden'); visibleCount++; } else { $row.addClass('grim-term-hidden'); } }); } toggleExpandButton($rows, $btn); } function showAdditionalUrls() { let $rows = $('#additional_urls').find('tr') let $btn = $rows.closest('.grim-section').find('.grim-additional-urls-toggle'); if ($btn.length && !$btn.hasClass('active')) { $btn.addClass('active'); $rows.removeClass('grim-term-hidden'); $btn.find('span').text('Show Less'); } } function toggleExpandButton($rows, $toggle, limit = 5) { $toggle.toggle($rows.length > limit); } /** Expand Additional URLs table */ $('.grim-additional-urls-toggle').on('click', function (e) { e.preventDefault(); const $btn = $(this); const $table = $btn.closest('.grim-section').find('.grim-additional-urls'); const $rows = $table.find('tbody tr').not('.no_urls'); $btn.toggleClass('active'); if ($btn.hasClass('active')) { $rows.removeClass('grim-term-hidden'); $btn.find('span').text('Show Less'); } else { $rows.each(function (index) { if (index >= 5) { $(this).addClass('grim-term-hidden'); } }); $btn.find('span').text('Show More'); } }); $('.grim-additional-urls tbody tr') .not('.no_urls') .each(function (index) { let $btn = $(this).closest('.grim-section').find('.grim-additional-urls-toggle'); if (index >= 5) { $btn.toggle(true); $(this).addClass('grim-term-hidden'); } else { $btn.toggle(false); } }); /** Expand */ $('.grim-expand-toggle').click(function (e) { e.preventDefault(); const $btn = $(this); const $rows = $btn.closest('.expand').find('tbody tr'); $btn.toggleClass('active'); if ($btn.hasClass('active')) { $rows.removeClass('grim-term-hidden'); } else { $rows.each(function(index){ if(index >= 5){ $(this).addClass('grim-term-hidden'); } }); } $btn.find('span').text( $btn.hasClass('active') ? 'Show Less' : 'Show More' ); }); /** Autocomplete */ $('.sgg-autocomplete').each(function() { let $el = $(this); let target = $el.data('target'); let type = $el.data('type'); let terms = sgg_get_terms(target); sgg_render_terms(terms, target); $el.autocomplete({ source: function (request, response) { $.ajax({ url: sgg.ajax_url, method: 'post', dataType: 'json', data: { action: 'sgg_autocomplete_search', term: request.term, type }, success: function (res) { if (res?.success) { response(res?.data); } else { response([{ label: res?.message, value: 'false' }]) } } }); }, minLength: 2, open: function(event, ui) { let menu = $(this).autocomplete('widget'); let currentTop = parseFloat(menu.css('top')); menu.css('top', currentTop + 1 + 'px'); }, select: function (event, ui) { terms = sgg_get_terms(target); if (terms.findIndex(el => el.value == ui.item.value) === -1) { terms.unshift(ui.item); let $target = $(`#${target}`).siblings('.expand'); $target.children('.grim-expand-toggle').removeClass('active').find('span').text('Show More'); $target.children('ul').addClass('active'); } sgg_update_terms(terms, target); this.value = ''; return false; } }).data('ui-autocomplete')._renderItem = function (ul, item) { if (item.value === 'false') { return $('
  • ' + item.label + '
  • ').appendTo(ul); } else { return $('
  • ').append(item.label).appendTo(ul); } }; }); /** Remove Term */ $(document).on('click', '.sgg-autocomplete-terms .remove-term', function (e) { e.preventDefault(); let termValue = $(this).data('value'); let target = $(this).data('target'); let terms = sgg_get_terms(target); if (termValue) { terms = terms.filter(el => el.value != termValue) sgg_update_terms(terms, target); } }); /** Form Actions */ $('#change-indexnow-key').on('mouseup', function () { $('input[name="change_indexnow_key"]').val('change'); }); $('#clear-sitemap-cache').on('mouseup', function () { $('input[name="clear_cache"]').val('clear'); }); $importSettings.on('mouseup', function () { $importSettingsInput.val('import'); }); $importSettings.on('click', function (e) { if ($importSettingsInput.val().trim() !== '' && !confirm('Your current Settings will be replaced with importing values. Would you like to continue?')) { e.preventDefault(); $importSettingsInput.val(''); } }); $('#sgg-indexnow').on('mouseup', function () { $('input[name="sgg-indexnow"]').val('check'); }); $('#sgg-flush-rewrite-rules').on('mouseup', function () { $('input[name="sgg-flush-rewrite-rules"]').val('check'); }); $('#sgg-clear-cache').on('mouseup', function () { $('input[name="sgg-clear-cache"]').val('check'); }); $('#youtube-check-api-key').on('mouseup', function () { $('input[name="youtube_check_api_key"]').val('check'); }); $('#vimeo-check-api-key').on('mouseup', function () { $('input[name="vimeo_check_api_key"]').val('check'); }); $('#clear-video-api-cache').on('mouseup', function () { $('input[name="clear_video_api_cache"]').val('clear'); }); function sgg_get_terms(target) { let selector = $(`#${target}`) return JSON.parse(!selector.val() ? '[]' : selector.val()); } function sgg_update_terms(terms, target) { $(`#${target}`).val(JSON.stringify(terms)); sgg_render_terms(terms, target); } function sgg_render_terms(terms, target) { let $target = $(`#${target}`); let $expand = $target.siblings('.expand'); let $tbody = $expand.find('.sgg-autocomplete-terms'); if (terms.length < 1) { $expand.find('.grim-table').attr('data-count', 0) } else { $expand.find('.grim-table').attr('data-count', terms.length); } $tbody.html(''); terms.forEach((term, index) => { const hiddenClass = index >= 5 ? 'grim-term-hidden' : ''; $tbody.append(` ${term.label} `); }); $expand.find('.grim-expand-toggle').toggle(terms.length > 5); updateAllTabCounts() } function updateAllTabCounts() { $('.grim-section').each(function() { let $section = $(this); $section.find('.grim-exclude-tab').each(function() { let tabId = $(this).data('tab'); let $panel = $section.find('#' + tabId); let count = $panel.find('.grim-table').attr('data-count') || 0; $(this).find('.grim-term-count').text(count); }); let $includePanel = $section.find('#others, #google-others'); if ($includePanel.length) { let count = $includePanel.find('.grim-table').attr('data-count') || 0; $section.find('.grim-term-count').text(count); } }); } function sgg_dependency(elements, checked) { $(elements).attr('disabled', checked).toggleClass('dependency-disabled', checked); } $(document).on('click', '.grim-select__trigger', function () { let $select = $(this).closest('.grim-select'); $('.grim-select').not($select).removeClass('open'); $select.toggleClass('open'); }); $(document).on('click', '.grim-select .grim-option', function () { let $option = $(this); let $select = $option.closest('.grim-select'); let value = $option.data('value'); let text = $option.text(); let $hiddenSelect = $select.next('select'); $select.find('.grim-option').removeClass('selected'); $option.addClass('selected'); $select.find('.grim-select__trigger span').text(text); if ($hiddenSelect.length) { $hiddenSelect.val(value).trigger('change'); } $select.removeClass('open'); }); $('.grim-exclude-tab-nav .grim-exclude-tab').on('click', function() { let tabId = $(this).data('tab'); let $container = $(this).closest('.grim-exclude-tab-nav'); $container.find('.grim-exclude-tab').removeClass('grim-exclude-tab--active'); $(this).addClass('grim-exclude-tab--active'); $container.find('.grim-exclude-tab-panel').removeClass('grim-exclude-tab-panel--active'); $container.find('#' + tabId).addClass('grim-exclude-tab-panel--active'); }); $(document).on('click', function (e) { if (!$(e.target).closest('.grim-select').length) { $('.grim-select').removeClass('open'); } }); $('#grim-import-file').on('change', function() { let fileName = this.files.length ? this.files[0].name : 'No file chosen'; $('#grim-file-name').text(fileName); }); $(".grim-btn-copied").on("click", function() { const targetId = $(this).data("target"); const text = $("#" + targetId).text() .replace(/\t+/g, " ") .replace(/\s*\n\s*/g, "\n") .trim(); const $btn = $(this); if (navigator.clipboard && window.isSecureContext) { navigator.clipboard.writeText(text).then(() => { showTooltip($btn); }); } else { let $temp = $("