diff --git a/resources/skins.minerva.options/backtotop.js b/resources/skins.minerva.options/backtotop.js index 66b98c4..0fee288 100644 --- a/resources/skins.minerva.options/backtotop.js +++ b/resources/skins.minerva.options/backtotop.js @@ -2,7 +2,8 @@ var BackToTopOverlay = M.require( 'skins.minerva.options/BackToTopOverlay' ), backtotop = new BackToTopOverlay(), features = mw.config.get( 'wgMinervaFeatures', {} ), - browser = M.require( 'mobile.startup/Browser' ).getSingleton(); + browser = M.require( 'mobile.startup/Browser' ).getSingleton(), + eventBus = M.require( 'mobile.startup/eventBusSingleton' ); // check if browser user agent is iOS (T141598) if ( browser.isIos() || !features.backToTop ) { @@ -12,7 +13,7 @@ // initialize the back to top element backtotop.appendTo( 'body' ); - M.on( 'scroll', function () { + eventBus.on( 'scroll', function () { if ( $( window ).height() - $( window ).scrollTop() <= 0 ) { backtotop.show(); } else { diff --git a/resources/skins.minerva.options/categories.js b/resources/skins.minerva.options/categories.js index 6930b3e..0bfda1f 100644 --- a/resources/skins.minerva.options/categories.js +++ b/resources/skins.minerva.options/categories.js @@ -3,6 +3,7 @@ var loader = M.require( 'mobile.startup/rlModuleLoader' ), features = mw.config.get( 'wgMinervaFeatures', {} ), overlayManager = M.require( 'skins.minerva.scripts/overlayManager' ), + eventBus = M.require( 'mobile.startup/eventBusSingleton' ), isAnon = mw.user.isAnon(); // check the categories feature has been turned on @@ -14,7 +15,7 @@ overlayManager.add( /^\/categories$/, function () { return loader.loadModule( 'mobile.categories.overlays', true ).then( function ( loadingOverlay ) { var CategoryOverlay = M.require( 'mobile.categories.overlays/CategoryOverlay' ); - M.on( 'category-added', function () { + eventBus.on( 'category-added', function () { window.location.hash = '#/categories'; } ); @@ -22,7 +23,8 @@ return new CategoryOverlay( { api: new mw.Api(), isAnon: isAnon, - title: M.getCurrentPage().title + title: M.getCurrentPage().title, + eventBus: eventBus } ); } ); } ); @@ -36,7 +38,8 @@ return new CategoryAddOverlay( { api: new mw.Api(), isAnon: isAnon, - title: M.getCurrentPage().title + title: M.getCurrentPage().title, + eventBus: eventBus } ); } ); } ); diff --git a/resources/skins.minerva.scripts/init.js b/resources/skins.minerva.scripts/init.js index b100ab1..1c95d3e 100644 --- a/resources/skins.minerva.scripts/init.js +++ b/resources/skins.minerva.scripts/init.js @@ -16,7 +16,8 @@ overlayManager = OverlayManager.getSingleton(), page = M.getCurrentPage(), api = new mw.Api(), - thumbs = page.getThumbnails(); + thumbs = page.getThumbnails(), + eventBus = M.require( 'mobile.startup/eventBusSingleton' ); /** * Event handler for clicking on an image thumbnail @@ -116,7 +117,8 @@ imageOverlay = new ImageOverlay( { api: api, thumbnails: thumbs, - title: decodeURIComponent( title ) + title: decodeURIComponent( title ), + eventBus: eventBus } ); imageOverlay.on( ImageOverlay.EVENT_EXIT, function () { // Actually dismiss the overlay whenever the cross is closed. @@ -361,7 +363,7 @@ initModifiedInfo(); initRegistrationInfo(); initHistoryLink( $( '.last-modifier-tagline a' ) ); - M.on( 'resize', loadTabletModules ); + eventBus.on( 'resize', loadTabletModules ); loadTabletModules(); appendDownloadButton(); initRedlinksCta(); diff --git a/resources/skins.minerva.tablet.scripts/toc.js b/resources/skins.minerva.tablet.scripts/toc.js index 1237319..7b2681a 100644 --- a/resources/skins.minerva.tablet.scripts/toc.js +++ b/resources/skins.minerva.tablet.scripts/toc.js @@ -1,6 +1,7 @@ ( function ( M ) { var TableOfContents = M.require( 'mobile.toc/TableOfContents' ), - Toggler = M.require( 'mobile.toggle/Toggler' ); + Toggler = M.require( 'mobile.toggle/Toggler' ), + eventBus = M.require( 'mobile.startup/eventBusSingleton' ); /** * Create TableOfContents if the given Page has sections and is not the main page @@ -19,7 +20,13 @@ } ); // eslint-disable-next-line no-new - new Toggler( toc.$el, 'toc-', null, true ); + new Toggler( { + $container: toc.$el, + prefix: 'toc-', + page: null, + isClosed: true, + eventBus: eventBus + } ); // if there is a toc already, replace it if ( $toc.length > 0 ) { // don't show toc at end of page, when no sections there diff --git a/resources/skins.minerva.toggling/init.js b/resources/skins.minerva.toggling/init.js index 1a9ec50..c442c32 100644 --- a/resources/skins.minerva.toggling/init.js +++ b/resources/skins.minerva.toggling/init.js @@ -1,7 +1,8 @@ ( function ( M ) { var page = M.getCurrentPage(), $contentContainer = $( '#mw-content-text > .mw-parser-output' ), - Toggler = M.require( 'mobile.toggle/Toggler' ); + Toggler = M.require( 'mobile.toggle/Toggler' ), + eventBus = M.require( 'mobile.startup/eventBusSingleton' ); if ( !page.getLeadSectionElement() ) { // Operating in desktop Minerva mode. Stop execution. (T172948) @@ -31,7 +32,12 @@ delete window.mfTempOpenSection; } // eslint-disable-next-line no-new - new Toggler( $container, prefix, page ); + new Toggler( { + $container: $container, + prefix: prefix, + page: page, + eventBus: eventBus + } ); } // avoid this running on Watchlist diff --git a/tests/qunit/skins.minerva.scripts/DownloadIcon.test.js b/tests/qunit/skins.minerva.scripts/DownloadIcon.test.js index 9ab6c7d..9fcf64f 100644 --- a/tests/qunit/skins.minerva.scripts/DownloadIcon.test.js +++ b/tests/qunit/skins.minerva.scripts/DownloadIcon.test.js @@ -11,7 +11,12 @@ QUnit.module( 'Minerva DownloadIcon', { beforeEach: function () { - this.skin = new Skin( {} ); + this.skin = new Skin( { + eventBus: { + on: function () {}, + off: function () {} + } + } ); } } ); @@ -74,6 +79,10 @@ QUnit.module( 'Minerva DownloadIcon.isAvailable()', { beforeEach: function () { this.skin = new Skin( { + eventBus: { + on: function () {}, + off: function () {} + }, page: new Page( { id: 0, title: 'Test',