mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-12-01 09:16:34 +00:00
874d9c9e3b
From TypeScript's do's and don'ts:[0] Don’t ever use the types Number, String, Boolean, or Object. These types refer to non-primitive boxed objects that are almost never used appropriately in JavaScript code. Although Minerva only uses JSDocs at this time which seemingly doesn't care about casing[1], we should endeavor to use the proper return types. This patch lowercases typing to indicate primitive / boxed type as appropriate.[2] As a special case, function types are uppercased for compatibility with TypeScript type checking. Also, JQuery types are of type "JQuery". The global JQuery object's identifier is "jQuery". This patch uppercases J's where appropriate. Lastly, replace unsupported type "Integer" with "number" and a comment. [0] https://www.typescriptlang.org/docs/handbook/declaration-files/do-s-and-don-ts.html#general-types [1] https://github.com/jsdoc3/jsdoc/issues/1046#issuecomment-126477791 [2] find resources tests -iname \*.js| xargs -rd\\n sed -ri ' s%\{\s*(number|string|boolean|object|null|undefined)%{\L\1%gi; s%\{\s*function%{Function%g; s%\{\s*jquery%{JQuery%gi; s%\{\s*integer\s*\}%{number} An integer.%gi ' Change-Id: I6cbac15940e4501aee7ede8f421b77ffd027170d
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
// FIXME: make this an object with a constructor to facilitate testing
|
|
// (see https://bugzilla.wikimedia.org/show_bug.cgi?id=44264)
|
|
/**
|
|
* mobileFrontend namespace
|
|
* @class mw.mobileFrontend
|
|
* @singleton
|
|
*/
|
|
( function ( M ) {
|
|
var skin = M.require( 'mobile.init/skin' ),
|
|
mainMenu = M.require( 'skins.minerva.scripts.top/mainMenu' ),
|
|
toast = M.require( 'mobile.startup/toast' );
|
|
|
|
// Proxy to MobileFrontend defined skin
|
|
M.define( 'skins.minerva.scripts/skin', skin );
|
|
|
|
/**
|
|
* Close navigation if skin is tapped
|
|
* @param {JQuery.Event} ev
|
|
* @private
|
|
*/
|
|
function onSkinClick( ev ) {
|
|
var $target = this.$( ev.target );
|
|
|
|
// Make sure the menu is open and we are not clicking on the menu button
|
|
if (
|
|
mainMenu &&
|
|
mainMenu.isOpen() &&
|
|
!$target.hasClass( 'main-menu-button' )
|
|
) {
|
|
mainMenu.closeNavigationDrawers();
|
|
ev.preventDefault();
|
|
}
|
|
}
|
|
skin.on( 'click', onSkinClick.bind( skin ) );
|
|
|
|
( function ( wgRedirectedFrom ) {
|
|
// If the user has been redirected, then show them a toast message (see
|
|
// https://phabricator.wikimedia.org/T146596).
|
|
|
|
var redirectedFrom;
|
|
|
|
if ( wgRedirectedFrom === null ) {
|
|
return;
|
|
}
|
|
|
|
redirectedFrom = mw.Title.newFromText( wgRedirectedFrom );
|
|
|
|
if ( redirectedFrom ) {
|
|
|
|
// mw.Title.getPrefixedText includes the human-readable namespace prefix.
|
|
toast.show( mw.msg(
|
|
'mobile-frontend-redirected-from',
|
|
redirectedFrom.getPrefixedText()
|
|
) );
|
|
}
|
|
}( mw.config.get( 'wgRedirectedFrom' ) ) );
|
|
/* eslint-enable no-console */
|
|
}( mw.mobileFrontend ) );
|