Stop propagating first click handler when loading languagesettings
The languagesettings dialog does not open when clicking the uls.trigger for the first time. This issue occurs when the user is not logged in, ULSPosition is personal, and ULSAnonCanChangeLanguage is false. Without this change, the following happens: * uls.languagesettings is loaded via uls.interface * uls.languagesettings::hide is called via uls.languagesettings::init * click method is triggered immediately via script in uls.interface * uls.languagesettings::show is called * uls.languagesettings::hide is called - triggered via ::show method - $( document.documentElement ).trigger( 'click' ); but dialog is not visible yet, so this does nothing * uls.languagesettings::show displays the uls.languagesettings * hide method called again via click handler for documentElement With this change in place the hide method is not called again due to e.stopPropagation(); Additionally add a parameter autoOpen that can be set to open the dialog automatically. Bug: T301882 Change-Id: I54e8172ae017c4a9c6ab5b841d9328b2f24f97a8
This commit is contained in:
@@ -329,10 +329,13 @@
|
||||
}
|
||||
} else {
|
||||
mw.loader.using( languageSettingsModules, function () {
|
||||
$trigger.languagesettings();
|
||||
|
||||
$trigger.trigger( 'click' );
|
||||
$trigger.languagesettings( { autoOpen: true } );
|
||||
mw.hook( 'mw.uls.settings.open' ).fire( 'personal' );
|
||||
} );
|
||||
// Stop propagating the event to avoid closing the languagesettings dialog
|
||||
// when the event propagates to the document click handler inside
|
||||
// languagesettings
|
||||
e.stopPropagation();
|
||||
}
|
||||
};
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user