STRATO-apps/wordpress_03/app/wp-content/plugins/bdthemes-element-pack/admin/assets/js/ep-admin.js

SHA-256: dae4a8ac53ce6b4827532e3b282608d56f35c90cec6af37e152cf1a83daef657
jQuery(document).ready(function ($) {

    if (jQuery('.wrap').hasClass('element-pack-dashboard')) {

        // modules
        var moduleUsedWidget = jQuery('#element_pack_active_modules_page').find('.ep-used-widget');
        var moduleUsedWidgetCount = jQuery('#element_pack_active_modules_page').find('.ep-options .ep-used').length;
        moduleUsedWidget.text(moduleUsedWidgetCount);
        var moduleUnusedWidget = jQuery('#element_pack_active_modules_page').find('.ep-unused-widget');
        var moduleUnusedWidgetCount = jQuery('#element_pack_active_modules_page').find('.ep-options .ep-unused').length;
        moduleUnusedWidget.text(moduleUnusedWidgetCount);

        // 3rd party
        var thirdPartyUsedWidget = jQuery('#element_pack_third_party_widget_page').find('.ep-used-widget');
        var thirdPartyUsedWidgetCount = jQuery('#element_pack_third_party_widget_page').find('.ep-options .ep-used').length;
        thirdPartyUsedWidget.text(thirdPartyUsedWidgetCount);
        var thirdPartyUnusedWidget = jQuery('#element_pack_third_party_widget_page').find('.ep-unused-widget');
        var thirdPartyUnusedWidgetCount = jQuery('#element_pack_third_party_widget_page').find('.ep-options .ep-unused').length;
        thirdPartyUnusedWidget.text(thirdPartyUnusedWidgetCount);
        
        // Function to update admin menu active state
        function updateAdminMenuState(hash) {
            // Remove current/aria-current from all Element Pack submenu items
            jQuery('#toplevel_page_element_pack_options .wp-submenu li').removeClass('current');
            jQuery('#toplevel_page_element_pack_options .wp-submenu a').removeClass('current').removeAttr('aria-current');
            
            var $targetMenuItem;
            
            if (!hash || hash === '#element_pack_welcome') {
                // Dashboard - no hash - match exact href without hash
                $targetMenuItem = jQuery('#toplevel_page_element_pack_options .wp-submenu a').filter(function() {
                    var itemHref = jQuery(this).attr('href');
                    return itemHref && itemHref === 'admin.php?page=element_pack_options';
                });
            } else {
                // Other tabs - match by hash
                $targetMenuItem = jQuery('#toplevel_page_element_pack_options .wp-submenu a[href*="' + hash + '"]');
            }
            
            if ($targetMenuItem.length) {
                $targetMenuItem.addClass('current').attr('aria-current', 'page');
                $targetMenuItem.parent('li').addClass('current');
            }
        }
        
        // Initialize admin menu state on page load
        updateAdminMenuState(window.location.hash);
        
        // Add scroll-to-top functionality for all tab navigation clicks
        jQuery(document).on('click', '.bdt-dashboard-navigation a, .bdt-tab a, .bdt-tab-item, .ep-widget-filter a, .bdt-subnav a', function() {
            // Get the hash from the clicked element
            var href = jQuery(this).attr('href');
            var hash = href && href.includes('#') ? href.substring(href.indexOf('#')) : '';
            
            // Update admin menu state
            updateAdminMenuState(hash);
            
            // Scroll to top smoothly when any tab or navigation link is clicked
            window.scrollTo({
                top: 0,
                behavior: 'smooth'
            });
        });
        
        // Handle WordPress admin sub menu clicks - Prevent reload when clicking Dashboard while on dashboard
        jQuery(document).on('click', '#adminmenu .wp-submenu a, .toplevel_page_element_pack_options .wp-submenu a', function(e) {
            var href = jQuery(this).attr('href');
            
            // Allow upgrade link and license renew to navigate normally
            if (href && (href.includes('element_pack_options_upgrade') || href.includes('element_pack_options_license_renew'))) {
                return true; // Let it navigate normally
            }
            
            // Check if clicking Dashboard menu item while already on Element Pack page
            if (href && href.includes('page=element_pack_options')) {
                // Get current page query without hash
                var currentSearch = window.location.search;
                
                // Check if link has no hash (dashboard link)
                var linkHasHash = href.includes('#');
                
                // If clicking dashboard link (no hash)
                if (!linkHasHash && currentSearch.includes('page=element_pack_options')) {
                    e.preventDefault();
                    e.stopPropagation();
                    
                    // Clear any hash from URL if present
                    if (window.location.hash) {
                        history.pushState("", document.title, window.location.pathname + window.location.search);
                    }
                    
                    // Activate the dashboard tab (tab index 0)
                    var $tab = jQuery('.element-pack-dashboard .bdt-dashboard-navigation .bdt-tab');
                    if ($tab.length && typeof bdtUIkit !== 'undefined' && bdtUIkit.tab) {
                        bdtUIkit.tab($tab).show(0);
                    }
                    
                    // Scroll to top smoothly
                    window.scrollTo({
                        top: 0,
                        behavior: 'smooth'
                    });
                    
                    return false;
                }
            }
            
            // Only scroll to top if it's an Element Pack related link
            if (href && (href.includes('element_pack') || href.includes('#'))) {
                window.scrollTo({
                    top: 0,
                    behavior: 'smooth'
                });
            }
        });
        
        // Also handle hash change events to scroll to top
        jQuery(window).on('hashchange', function() {
            // Update admin menu based on current hash
            updateAdminMenuState(window.location.hash);
            
            // Small delay to ensure tab content is loaded before scrolling
            setTimeout(function() {
                window.scrollTo({
                    top: 0,
                    behavior: 'smooth'
                });
            }, 100);
        });
    }

    jQuery('.element-pack-biggopti.biggopti-error img').css({
        'margin-right': '8px',
        'vertical-align': 'middle'
    });

    // Variations swatches
    const variationSwatchesBtn = jQuery(".ep-feature-option-parent");
    const variationDependentOptions = variationSwatchesBtn.length > 0 
        ? variationSwatchesBtn.closest(".ep-option-item").nextAll()
        : jQuery('.ep-option-item[class*="ep-ep_variation_swatches_"]');
    
    const toggleVariationOptions = function() {
        if (variationSwatchesBtn.length > 0 && variationSwatchesBtn.prop("checked")) {
            variationDependentOptions.fadeIn(250);
        } else {
            variationDependentOptions.hide();
        }
    };
    
    toggleVariationOptions();
    
    if (variationSwatchesBtn.length > 0) {
        variationSwatchesBtn.on("change", toggleVariationOptions);
    }
    
    jQuery("#bdt-element_pack_other_settings").on("click", toggleVariationOptions);

    //End Variations swatches

});