MediaWiki:Common.js: Difference between revisions
Appearance
Cdjensen94 (talk | contribs) |
Cdjensen94 (talk | contribs) |
||
| Line 1: | Line 1: | ||
(function() { | |||
function resizeSlideshowContainer(mwSlideshow) { | |||
const slideshow = mwSlideshow.querySelector('.slideshow'); | |||
if (slideshow) { | |||
// Get the current computed height of the slideshow (based on content) | |||
const computedHeight = slideshow.scrollHeight; | |||
// Apply that height directly to the parent container | |||
mwSlideshow.style.height = computedHeight + 'px'; | |||
// Optional: If you want to also resize the parent on window resize | |||
window.addEventListener('resize', () => { | |||
mwSlideshow.style.height = slideshow.scrollHeight + 'px'; | |||
}); | |||
} | |||
} | |||
function cleanAndResizeSlideshows() { | |||
document.querySelectorAll('.mw-jsslideshow').forEach(mwSlideshow => { | |||
const slideshow = mwSlideshow.querySelector('.slideshow'); | |||
if (slideshow) { | |||
// Remove inline styles from slideshow and slides | |||
slideshow.style.width = ''; | |||
slideshow.style.height = ''; | |||
slideshow.querySelectorAll('div').forEach(slide => { | |||
slide.style.width = ''; | |||
slide.style.height = ''; | |||
}); | |||
// Immediately resize the parent to match slideshow height | |||
resizeSlideshowContainer(mwSlideshow); | |||
// Observe changes to keep it dynamic (slides changing, etc.) | |||
const observer = new MutationObserver(() => { | |||
resizeSlideshowContainer(mwSlideshow); | |||
}); | |||
observer.observe(slideshow, { | |||
attributes: true, | |||
attributeFilter: ['style'], | |||
childList: true, | |||
subtree: true | |||
}); | |||
} | |||
}); | |||
} | |||
// Init once DOM is ready | |||
if (document.readyState === 'complete' || document.readyState === 'interactive') { | |||
cleanAndResizeSlideshows(); | |||
} else { | |||
document.addEventListener('DOMContentLoaded', cleanAndResizeSlideshows); | |||
} | |||
})(); | |||
(function() { | (function() { | ||
function cleanSlideshowStyles(slideshowContainer) { | function cleanSlideshowStyles(slideshowContainer) { | ||