/* Auto-wraps ".wikitable" elements in a wrapper with helper elements to guarantee 100% width and indicate scrollability See detailed documentation in Dev/mediawiki deferrable:YES -- The user will not need (or see) this info immediately anyways */ (function () { const isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); $('table.wikitable').each( function() { let table = $(this); let wrapper = $('
'); let originalTableHeight = table.height(); function enrich() { wrapper.css( { height: originalTableHeight, margin: window.getComputedStyle( table[0] ).getPropertyValue('margin'), }); let tableContentDiv = wrapper.find('.table-content'); wrapper.insertBefore( table ); tableContentDiv.append( table ); if( isMobile && tableContentDiv.width() < tableContentDiv.prop('scrollWidth') ) { wrapper.addClass('scroll-overflow-mobile'); wrapper.css( 'top', - wrapper.children('.before').height() ); } } // Normal case if( originalTableHeight > 0 ) { enrich(); } // In cases where the table is hidden, for example in mw-collapsible else { if( IntersectionObserver ) { new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if(entry.intersectionRatio > 0) { originalTableHeight = table.height(); enrich(); // So it just happens once observer.disconnect(); } }); }).observe(table[0]); } } }); })(); /* [[Category:MultiWiki]] */