fix(prefs): 🐛 incorrect function call for addPortlet

Closes: #832
This commit is contained in:
alistair3149 2024-04-27 21:07:45 -04:00
parent 59fc003294
commit 99fe5f970e
No known key found for this signature in database

View file

@ -40,48 +40,53 @@ function addDefaultPortlet( portlet ) {
} }
/** /**
* Polyfill for mw.util.addPortlet for < MW 1.42 * Polyfill for mw.util.addPortlet for < MW 1.41
* Creates a detached portlet Element in the skin with no elements.
* *
* @return {Element} * @param {string} id of the new portlet.
* @param {string} [label] of the new portlet.
* @param {string} [before] selector of the element preceding the new portlet. If not passed
* the caller is responsible for appending the element to the DOM before using addPortletLink.
* @return {HTMLElement|null} will be null if it was not possible to create an portlet with
* the required information e.g. the selector given in before parameter could not be resolved
* to an existing element in the page.
*/ */
function addPortlet() { function addPortlet( id, label, before ) {
if ( mw.util.addPortlet ) { if ( mw.util.addPortlet ) {
return mw.util.addPortlet; return mw.util.addPortlet( id, label, before );
} }
return function ( id, label, before ) { const portlet = document.createElement( 'div' );
const portlet = document.createElement( 'div' ); portlet.classList.add( 'mw-portlet', 'mw-portlet-' + id, 'emptyPortlet',
portlet.classList.add( 'mw-portlet', 'mw-portlet-' + id, 'emptyPortlet', // Additional class is added to allow skins to track portlets added via this mechanism.
// Additional class is added to allow skins to track portlets added via this mechanism. 'mw-portlet-js'
'mw-portlet-js' );
); portlet.id = id;
portlet.id = id; if ( label ) {
if ( label ) { const labelNode = document.createElement( 'label' );
const labelNode = document.createElement( 'label' ); labelNode.textContent = label;
labelNode.textContent = label; portlet.appendChild( labelNode );
portlet.appendChild( labelNode ); }
const listWrapper = document.createElement( 'div' );
const list = document.createElement( 'ul' );
listWrapper.appendChild( list );
portlet.appendChild( listWrapper );
if ( before ) {
let referenceNode;
try {
referenceNode = document.querySelector( before );
} catch ( e ) {
// CSS selector not supported by browser.
} }
const listWrapper = document.createElement( 'div' ); if ( referenceNode ) {
const list = document.createElement( 'ul' ); const parentNode = referenceNode.parentNode;
listWrapper.appendChild( list ); parentNode.insertBefore( portlet, referenceNode );
portlet.appendChild( listWrapper ); } else {
if ( before ) { return null;
let referenceNode;
try {
referenceNode = document.querySelector( before );
} catch ( e ) {
// CSS selector not supported by browser.
}
if ( referenceNode ) {
const parentNode = referenceNode.parentNode;
parentNode.insertBefore( portlet, referenceNode );
} else {
return null;
}
} }
mw.hook( 'util.addPortlet' ).fire( portlet, before ); }
return portlet; mw.hook( 'util.addPortlet' ).fire( portlet, before );
}; return portlet;
} }
/** @module addDefaultPortlet, addPortlet */ /** @module addDefaultPortlet, addPortlet */