From 64ac2eb6e47af90615bc4688a4c2ba188aaac9eb Mon Sep 17 00:00:00 2001 From: Marcus Quinn <marcus@agentdesign.co.uk> Date: Sun, 16 Mar 2025 01:30:43 +0000 Subject: [PATCH] Fix accordion toggle functionality with improved code organization and reliability --- admin/settings.php | 70 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 12 deletions(-) diff --git a/admin/settings.php b/admin/settings.php index 9123528..52acc5f 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -741,45 +741,91 @@ function wp_allstars_settings_page() { </div> <style> + /* Accordion Toggle Styles */ + .wp-allstars-toggle { + background: #fff; + border: 1px solid #ccd0d4; + border-radius: 4px; + margin-bottom: 15px; + } + + .wp-allstars-toggle-header { + padding: 15px; + } + .wp-allstars-toggle-main { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; } + + .wp-allstars-toggle label { + display: flex; + align-items: center; + gap: 10px; + margin: 0; + cursor: pointer; + } + .wp-allstars-expand-settings { background: none; border: none; padding: 4px; cursor: pointer; color: #2271b1; + transition: transform 0.2s ease; } + .wp-allstars-expand-settings:hover { color: #135e96; } + .wp-allstars-expand-settings:focus { outline: 1px solid #2271b1; box-shadow: none; } + + .wp-allstars-expand-settings[aria-expanded="true"] .dashicons { + transform: rotate(180deg); + } + + .wp-allstars-toggle-settings { + border-top: 1px solid #ccd0d4; + padding: 15px; + } + + /* Description text */ + .wp-allstars-toggle .description { + margin: 8px 0 0; + color: #646970; + } </style> <script> jQuery(document).ready(function($) { - $('.wp-allstars-expand-settings').on('click', function() { - var $button = $(this); - var $settings = $button.closest('.wp-allstars-toggle').find('.wp-allstars-toggle-settings'); - var isExpanded = $button.attr('aria-expanded') === 'true'; + // Store references to frequently accessed elements + const $expandButton = $('.wp-allstars-expand-settings'); + const $toggleSettings = $('.wp-allstars-toggle-settings'); + + // Handle expand/collapse functionality + $expandButton.on('click', function(e) { + e.preventDefault(); + e.stopPropagation(); - // Toggle aria-expanded state + const $button = $(this); + const isExpanded = $button.attr('aria-expanded') === 'true'; + + // Update button state $button.attr('aria-expanded', !isExpanded); - // Toggle icon - $button.find('.dashicons') - .removeClass(isExpanded ? 'dashicons-arrow-up-alt2' : 'dashicons-arrow-down-alt2') - .addClass(isExpanded ? 'dashicons-arrow-down-alt2' : 'dashicons-arrow-up-alt2'); - - // Toggle settings panel with animation - $settings.slideToggle(200); + // Animate the settings panel + $toggleSettings.stop().slideToggle(200); + }); + + // Prevent settings panel from closing when clicking inside it + $toggleSettings.on('click', function(e) { + e.stopPropagation(); }); }); </script>