mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/Vector.git
synced 2024-12-18 19:00:50 +00:00
5d83c55f5e
Bug: T367248 Change-Id: If4267e083cd6721bdb80d32a84c1fd9306096b50
44 lines
1.1 KiB
JavaScript
44 lines
1.1 KiB
JavaScript
const config = require( './config.json' );
|
|
const init = () => {
|
|
if ( !config.VectorWrapTablesTemporary ) {
|
|
return;
|
|
}
|
|
const tables = document.querySelectorAll( '.mw-parser-output > table.wikitable' );
|
|
let numberBigTables = 0;
|
|
Array.from( tables ).forEach( ( table ) => {
|
|
const styles = window.getComputedStyle( table );
|
|
const isFloat = styles.getPropertyValue( 'float' ) === 'right' || styles.getPropertyValue( 'float' ) === 'left';
|
|
|
|
// Don't wrap tables within tables
|
|
const parent = table.parentElement;
|
|
if (
|
|
parent &&
|
|
!parent.matches( '.noresize' ) &&
|
|
!parent.closest( 'table' ) &&
|
|
!isFloat
|
|
) {
|
|
const tableRect = table.getBoundingClientRect();
|
|
const tableWidth = tableRect && tableRect.width;
|
|
const wrapper = document.createElement( 'div' );
|
|
wrapper.classList.add( 'noresize' );
|
|
parent.insertBefore( wrapper, table );
|
|
wrapper.appendChild( table );
|
|
|
|
if ( tableWidth > 948 ) {
|
|
numberBigTables++;
|
|
}
|
|
}
|
|
} );
|
|
if ( numberBigTables > 0 ) {
|
|
// @ts-ignore
|
|
mw.errorLogger.logError(
|
|
new Error( `T374493: ${ numberBigTables } tables wrapped` ),
|
|
'error.web-team'
|
|
);
|
|
}
|
|
};
|
|
|
|
module.exports = {
|
|
init
|
|
};
|