| @@ -656,16 +656,16 @@ | ||
| 656 | 656 | $this_ID = $this->get_id(); |
| 657 | 657 | $class_ID = 'king-addons-popup-' . $this_ID; |
| 658 | 658 | $overlay_ID = 'king-addons-popup-overlay-' . $this_ID; |
| 659 | 659 | |
| 660 | + $class_selector_js = esc_attr(wp_json_encode('.' . $class_ID)); | |
| 661 | + $overlay_selector_js = esc_attr(wp_json_encode('.' . $overlay_ID)); | |
| 662 | + | |
| 660 | 663 | if (!empty($settings['kng_popup_template'])) { |
| 661 | 664 | |
| 662 | 665 | echo '<div class="king-addons-popup-overlay ' . |
| 663 | 666 | esc_attr($overlay_ID) . '" onclick="'; |
| 664 | - echo "document.querySelector('." . | |
| 665 | - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." . | |
| 666 | - esc_attr($overlay_ID) . "').style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." . | |
| 667 | - esc_attr($overlay_ID) . "').style.display = 'none'; document.body.style.pointerEvents = '';}, 500);"; | |
| 667 | + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.display = 'none'; document.body.style.pointerEvents = '';}, 500);"; | |
| 668 | 668 | echo '"></div>'; |
| 669 | 669 | |
| 670 | 670 | echo '<div class="king-addons-popup ' . |
| 671 | 671 | esc_attr($class_ID) . ' king-addons-popup-position-' . |
| @@ -678,12 +678,9 @@ | ||
| 678 | 678 | if ('' != $settings['kng_popup_close_btn_icon']['value']) { |
| 679 | 679 | |
| 680 | 680 | echo '<div class="king-addons-popup-close-button king-addons-popup-close-button-' . |
| 681 | 681 | esc_attr($this_ID) . '" onclick="'; |
| 682 | - echo "document.querySelector('." . | |
| 683 | - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." . | |
| 684 | - esc_attr($overlay_ID) . "').style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." . | |
| 685 | - esc_attr($overlay_ID) . "').style.display = 'none'; document.body.style.pointerEvents = '';}, 500);"; | |
| 682 | + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.display = 'none'; document.body.style.pointerEvents = '';}, 500);"; | |
| 686 | 683 | echo '">'; |
| 687 | 684 | |
| 688 | 685 | Icons_Manager::render_icon($settings['kng_popup_close_btn_icon']); |
| 689 | 686 | echo '</div>'; |
| @@ -705,12 +702,9 @@ | ||
| 705 | 702 | if ('' == $settings['kng_popup_disable_btn']) { |
| 706 | 703 | |
| 707 | 704 | echo '<button class="king-addons-popup-button king-addons-popup-button-' . |
| 708 | 705 | esc_attr($this_ID) . '" onclick="'; |
| 709 | - echo "document.querySelector('." . | |
| 710 | - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." . | |
| 711 | - esc_attr($overlay_ID) . "').style.display = 'block'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." . | |
| 712 | - esc_attr($overlay_ID) . "').style.opacity = '1';}, 1); setTimeout(function () {document.body.style.pointerEvents = '';}, 500);"; | |
| 706 | + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.display = 'block'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.opacity = '1';}, 1); setTimeout(function () {document.body.style.pointerEvents = '';}, 500);"; | |
| 713 | 707 | echo '">' . |
| 714 | 708 | esc_html($settings['kng_popup_btn_text']) . '</button>'; |
| 715 | 709 | |
| 716 | 710 | } |
| @@ -722,8 +716,15 @@ | ||
| 722 | 716 | document.addEventListener('DOMContentLoaded', function () { |
| 723 | 717 | |
| 724 | 718 | const offCanvas = document.querySelector('." . esc_js($class_ID) . "'); |
| 725 | 719 | const overlay = document.querySelector('." . esc_js($overlay_ID) . "'); |
| 720 | + | |
| 721 | + // With no template picked the widget prints a placeholder instead of | |
| 722 | + // the panel markup, so these lookups come back empty. Bail out rather | |
| 723 | + // than throwing on insertBefore and losing the handlers below. | |
| 724 | + if (!offCanvas || !overlay) { | |
| 725 | + return; | |
| 726 | + } | |
| 726 | 727 | |
| 727 | 728 | // Moves all Popupes to right after the <body> opens |
| 728 | 729 | document.body.insertBefore(overlay, document.body.firstChild); |
| 729 | 730 | document.body.insertBefore(offCanvas, document.body.firstChild); |