From 256cbafcbf5843ab1b956eb459cb822c4d9f723a Mon Sep 17 00:00:00 2001 From: Mohammed Noumaan Ahamed Date: Tue, 6 Jan 2026 12:32:15 +0530 Subject: [PATCH 1/5] fix: improve element selection logic for appendTo in Magnific Popup --- app/assets/js/vendors/magnific-popup.js | 27 ++++++++----------------- 1 file changed, 8 insertions(+), 19 deletions(-) diff --git a/app/assets/js/vendors/magnific-popup.js b/app/assets/js/vendors/magnific-popup.js index d2ac24602..a8de77a1f 100644 --- a/app/assets/js/vendors/magnific-popup.js +++ b/app/assets/js/vendors/magnific-popup.js @@ -364,26 +364,15 @@ MagnificPopup.prototype = { // add everything to DOM var appendToEl = mfp.st.prependTo || $(document.body); - - if (typeof mfp.st.prependTo === 'string') { - // Use document.querySelector to ensure the string is treated - try { - // 1. Attempt to query the element - var el = document.querySelector(mfp.st.prependTo); - - // 2. Check if the element actually exists (querySelector returns null if not found) - if (el) { - appendToEl = $(el); - } else { - // Valid selector but element not found in DOM -> Fallback to body - appendToEl = $(document.body); - } - } catch (e) { - // Fallback to body if the selector is invalid - appendToEl = $(document.body); - } + + // Ensure 'appendToEl' string is treated strictly as a selector, not HTML. + if (typeof appendToEl === 'string') { + var $target = $(document.body).find(appendToEl); + // If element is found, use it; otherwise fallback to body + appendToEl = $target.length ? $target : $(document.body); } - mfp.bgOverlay.add(mfp.wrap).prependTo( appendToEl ); + + mfp.bgOverlay.add(mfp.wrap).prependTo( appendToEl ); // Save last focused element mfp._lastFocusedEl = document.activeElement; From ba4b9192a11c433c9c937e02f8f7adcf9c7c200e Mon Sep 17 00:00:00 2001 From: Mohammed Noumaan Ahamed Date: Tue, 6 Jan 2026 12:37:10 +0530 Subject: [PATCH 2/5] fix: enhance element selection logic in Magnific Popup to handle non-string appendTo values --- app/assets/js/vendors/magnific-popup.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/app/assets/js/vendors/magnific-popup.js b/app/assets/js/vendors/magnific-popup.js index a8de77a1f..e3a54b8a9 100644 --- a/app/assets/js/vendors/magnific-popup.js +++ b/app/assets/js/vendors/magnific-popup.js @@ -366,11 +366,15 @@ MagnificPopup.prototype = { var appendToEl = mfp.st.prependTo || $(document.body); // Ensure 'appendToEl' string is treated strictly as a selector, not HTML. - if (typeof appendToEl === 'string') { - var $target = $(document.body).find(appendToEl); - // If element is found, use it; otherwise fallback to body - appendToEl = $target.length ? $target : $(document.body); - } + if (typeof appendToEl === 'string') { + var $target = $(document.body).find(appendToEl); + // If element is found, use it; otherwise fallback to body + appendToEl = $target.length ? $target : $(document.body); + } else if (!(appendToEl && appendToEl.jquery)) { + // If it's a DOM element or other truthy value, wrap it as a jQuery object; + // otherwise, fallback to body. + appendToEl = appendToEl ? $(appendToEl) : $(document.body); + } mfp.bgOverlay.add(mfp.wrap).prependTo( appendToEl ); From cda9541ed769b60a97fbcf0c61a2324053ceb520 Mon Sep 17 00:00:00 2001 From: Mohammed Noumaan Ahamed Date: Tue, 6 Jan 2026 12:53:55 +0530 Subject: [PATCH 3/5] fix: refine appendTo element selection logic --- app/assets/js/vendors/magnific-popup.js | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/app/assets/js/vendors/magnific-popup.js b/app/assets/js/vendors/magnific-popup.js index e3a54b8a9..3bdb21ad4 100644 --- a/app/assets/js/vendors/magnific-popup.js +++ b/app/assets/js/vendors/magnific-popup.js @@ -365,17 +365,12 @@ MagnificPopup.prototype = { // add everything to DOM var appendToEl = mfp.st.prependTo || $(document.body); - // Ensure 'appendToEl' string is treated strictly as a selector, not HTML. - if (typeof appendToEl === 'string') { - var $target = $(document.body).find(appendToEl); - // If element is found, use it; otherwise fallback to body - appendToEl = $target.length ? $target : $(document.body); - } else if (!(appendToEl && appendToEl.jquery)) { - // If it's a DOM element or other truthy value, wrap it as a jQuery object; - // otherwise, fallback to body. - appendToEl = appendToEl ? $(appendToEl) : $(document.body); - } + // This ensures the string is treated ONLY as a selector, not HTML. + if (typeof appendToEl === 'string') { + appendToEl = $(document.body).find(appendToEl); + } + // 3. The line where the alert was (now safe) mfp.bgOverlay.add(mfp.wrap).prependTo( appendToEl ); // Save last focused element From d2a5fe15a6a16810205917aec9e119d5eb5858e0 Mon Sep 17 00:00:00 2001 From: Mohammed Noumaan Ahamed Date: Tue, 6 Jan 2026 12:58:15 +0530 Subject: [PATCH 4/5] fix: improve appendTo element handling in Magnific Popup for safer DOM insertion --- app/assets/js/vendors/magnific-popup.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/assets/js/vendors/magnific-popup.js b/app/assets/js/vendors/magnific-popup.js index 3bdb21ad4..88fb865cf 100644 --- a/app/assets/js/vendors/magnific-popup.js +++ b/app/assets/js/vendors/magnific-popup.js @@ -362,16 +362,18 @@ MagnificPopup.prototype = { // remove scrollbar, add margin e.t.c $('html').css(windowStyles); - // add everything to DOM - var appendToEl = mfp.st.prependTo || $(document.body); + // Default to body + var $appendToEl = $(document.body); - // This ensures the string is treated ONLY as a selector, not HTML. - if (typeof appendToEl === 'string') { - appendToEl = $(document.body).find(appendToEl); - } + // Only allow DOM elements or jQuery objects + if (appendToEl instanceof HTMLElement) { + $appendToEl = $(appendToEl); + } else if (appendToEl && appendToEl.jquery) { + $appendToEl = appendToEl; + } - // 3. The line where the alert was (now safe) - mfp.bgOverlay.add(mfp.wrap).prependTo( appendToEl ); + // Safe DOM insertion + mfp.bgOverlay.add(mfp.wrap).prependTo($appendToEl); // Save last focused element mfp._lastFocusedEl = document.activeElement; From 6da3f9913d93d8b27eb6c25674d9f0d83ad00a80 Mon Sep 17 00:00:00 2001 From: Mohammed Noumaan Ahamed Date: Tue, 6 Jan 2026 13:23:17 +0530 Subject: [PATCH 5/5] fix: initialize appendTo element for Magnific Popup --- app/assets/js/vendors/magnific-popup.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/js/vendors/magnific-popup.js b/app/assets/js/vendors/magnific-popup.js index 88fb865cf..4dc39d005 100644 --- a/app/assets/js/vendors/magnific-popup.js +++ b/app/assets/js/vendors/magnific-popup.js @@ -361,7 +361,8 @@ MagnificPopup.prototype = { // remove scrollbar, add margin e.t.c $('html').css(windowStyles); - + + var appendToEl = mfp.st.prependTo; // Default to body var $appendToEl = $(document.body);