diff --git a/twinkle.js b/twinkle.js index 966dfa5fc..9aa0953a6 100644 --- a/twinkle.js +++ b/twinkle.js @@ -262,11 +262,27 @@ Twinkle.addPortlet = function(navigation, id, text, type, nextnodeid) { } return null; } + if (type === 'menu') { // In order to get mw.util.addPortlet to generate a dropdown menu in vector and vector-2022, the nextnodeid must be p-cactions. Any other nextnodeid will generate a non-dropdown portlet instead. nextnodeid = 'p-cactions'; } - return mw.util.addPortlet(id, text, '#' + nextnodeid); + + var portlet = mw.util.addPortlet(id, text, '#' + nextnodeid); + + // The Twinkle dropdown menu has been added to the left of p-cactions. Move it to the right. + if (mw.config.get('skin') === 'vector') { + $('#p-twinkle').insertAfter('#p-cactions'); + } else if (mw.config.get('skin') === 'vector-2022') { + $('#p-twinkle-dropdown').appendTo('.vector-page-tools-landmark'); + + // .vector-page-tools-landmark is unstable and could change. If so, log it to console, to hopefully get someone's attention. + if (!document.querySelector('.vector-page-tools-landmark')) { + mw.log.warn('Unexpected change in DOM'); + } + } + + return portlet; }; /**