মিডিয়াউইকি:Common.js: সংশোধিত সংস্করণের মধ্যে পার্থক্য
অবয়ব
সম্পাদনা সারাংশ নেই ট্যাগ: পুনর্বহালকৃত |
সম্পাদনা সারাংশ নেই ট্যাগ: পুনর্বহালকৃত |
||
| ১ নং লাইন: | ১ নং লাইন: | ||
// MediaWiki Search Collapse | // MediaWiki Sticky Header Search Collapse | ||
(function() { | (function() { | ||
'use strict'; | 'use strict'; | ||
function initSearchToggle() { | |||
// Find the search toggle button | |||
const searchToggle = document.querySelector('.vector-sticky-header-visible .search-toggle'); | |||
const searchBox = document.querySelector('.vector-sticky-header-visible .vector-search-box'); | |||
const searchContainer = document.querySelector('.vector-sticky-header-visible .vector-typeahead-search-container'); | |||
const searchInput = document.querySelector('.vector-sticky-header-visible .cdx-text-input__input'); | |||
function | |||
// Find the search | |||
const | |||
const searchBox = | |||
const | |||
const | |||
if (!searchToggle || !searchBox || !searchContainer) return; | |||
// | // Remove old event listeners by cloning | ||
const newToggle = searchToggle.cloneNode(true); | |||
searchToggle.parentNode.replaceChild(newToggle, searchToggle); | |||
// Toggle | // Toggle search on icon click | ||
newToggle.addEventListener('click', function(e) { | |||
e.preventDefault(); | |||
e.stopPropagation(); | e.stopPropagation(); | ||
searchContainer.classList.add('search-active'); | |||
searchInput.focus(); | newToggle.classList.add('search-hidden'); | ||
// Focus the input | |||
if (searchInput) { | |||
setTimeout(function() { | |||
searchInput.focus(); | |||
}, 50); | |||
} | |||
}); | }); | ||
// | // Close when clicking outside | ||
document.addEventListener('click', function(e) { | document.addEventListener('click', function(e) { | ||
if (!searchBox.contains(e.target)) { | if (!searchBox.contains(e.target)) { | ||
searchContainer.classList.remove('search-active'); | |||
newToggle.classList.remove('search-hidden'); | |||
} | } | ||
}); | }); | ||
// Prevent closing when clicking inside search | // Prevent closing when clicking inside search | ||
searchContainer.addEventListener('click', function(e) { | |||
e.stopPropagation(); | e.stopPropagation(); | ||
}); | }); | ||
} | } | ||
// | // Run when page loads | ||
if (document.readyState === 'loading') { | |||
document.addEventListener('DOMContentLoaded', function() { | |||
setTimeout(initSearchToggle, 500); | |||
}); | }); | ||
} else { | |||
setTimeout(initSearchToggle, 500); | |||
} | |||
// Re-run when sticky header appears (when scrolling) | |||
let scrollTimeout; | |||
window.addEventListener('scroll', function() { | |||
clearTimeout(scrollTimeout); | |||
scrollTimeout = setTimeout(initSearchToggle, 100); | |||
}); | |||
// Also observe for class changes on body | |||
const observer = new MutationObserver(function() { | |||
initSearchToggle(); | |||
}); | }); | ||
const body = document.querySelector('body'); | |||
const | if (body) { | ||
if ( | observer.observe(body, { | ||
observer.observe( | |||
attributes: true, | attributes: true, | ||
attributeFilter: ['class'] | attributeFilter: ['class'] | ||
২২:২২, ৪ জানুয়ারি ২০২৬ তারিখে সংশোধিত সংস্করণ
// MediaWiki Sticky Header Search Collapse
(function() {
'use strict';
function initSearchToggle() {
// Find the search toggle button
const searchToggle = document.querySelector('.vector-sticky-header-visible .search-toggle');
const searchBox = document.querySelector('.vector-sticky-header-visible .vector-search-box');
const searchContainer = document.querySelector('.vector-sticky-header-visible .vector-typeahead-search-container');
const searchInput = document.querySelector('.vector-sticky-header-visible .cdx-text-input__input');
if (!searchToggle || !searchBox || !searchContainer) return;
// Remove old event listeners by cloning
const newToggle = searchToggle.cloneNode(true);
searchToggle.parentNode.replaceChild(newToggle, searchToggle);
// Toggle search on icon click
newToggle.addEventListener('click', function(e) {
e.preventDefault();
e.stopPropagation();
searchContainer.classList.add('search-active');
newToggle.classList.add('search-hidden');
// Focus the input
if (searchInput) {
setTimeout(function() {
searchInput.focus();
}, 50);
}
});
// Close when clicking outside
document.addEventListener('click', function(e) {
if (!searchBox.contains(e.target)) {
searchContainer.classList.remove('search-active');
newToggle.classList.remove('search-hidden');
}
});
// Prevent closing when clicking inside search
searchContainer.addEventListener('click', function(e) {
e.stopPropagation();
});
}
// Run when page loads
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
setTimeout(initSearchToggle, 500);
});
} else {
setTimeout(initSearchToggle, 500);
}
// Re-run when sticky header appears (when scrolling)
let scrollTimeout;
window.addEventListener('scroll', function() {
clearTimeout(scrollTimeout);
scrollTimeout = setTimeout(initSearchToggle, 100);
});
// Also observe for class changes on body
const observer = new MutationObserver(function() {
initSearchToggle();
});
const body = document.querySelector('body');
if (body) {
observer.observe(body, {
attributes: true,
attributeFilter: ['class']
});
}
})();