Amire80 has uploaded a new change for review.
https://gerrit.wikimedia.org/r/63843
Change subject: Scroll language settings on all changes
......................................................................
Scroll language settings on all changes
Change-Id: I550f309d713cb6aac6b18b326379b879dc0b9589
---
M resources/js/ext.uls.displaysettings.js
M resources/js/ext.uls.languagesettings.js
2 files changed, 70 insertions(+), 5 deletions(-)
git pull
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UniversalLanguageSelector
refs/changes/43/63843/1
diff --git a/resources/js/ext.uls.displaysettings.js
b/resources/js/ext.uls.displaysettings.js
index 19889d8..5b29f88 100644
--- a/resources/js/ext.uls.displaysettings.js
+++ b/resources/js/ext.uls.displaysettings.js
@@ -532,7 +532,14 @@
} );
$tabButtons.on( 'click', function () {
- var $button = $( this );
+ var scrollPosition,
+ panelHeight, panelTop, panelBottom,
+ padding,
+ $window,
+ windowHeight,
+ windowScrollTop,
+ windowBottom,
+ $button = $( this );
if ( $button.hasClass( 'down' ) ) {
return;
@@ -550,6 +557,33 @@
$tabButtons.filter( '.down' ).removeClass(
'down');
$button.addClass( 'down' );
+
+ padding = 10;
+ $window = $( window );
+ windowHeight = $window.height();
+ windowScrollTop = $window.scrollTop();
+ windowBottom = windowScrollTop + windowHeight;
+
+ panelHeight =
displaySettings.$parent.$window.height();
+ panelTop =
displaySettings.$parent.$window.offset().top;
+ panelBottom = panelTop + panelHeight;
+
+ // If the ULS panel is out of the viewport,
+ // scroll the window to show it
+ if ( ( panelTop < windowScrollTop ) || (
panelBottom > windowBottom ) ) {
+ if ( panelHeight > windowHeight ) {
+ // Scroll to show as much of
the upper
+ // part of ULS as possible
+ scrollPosition = panelTop -
padding;
+ } else {
+ // Scroll just enough to show
the ULS panel
+ scrollPosition = panelBottom -
windowHeight + padding;
+ }
+
+ $( 'html, body' ).stop().animate( {
+ scrollTop: scrollPosition
+ }, 500 );
+ }
} );
},
diff --git a/resources/js/ext.uls.languagesettings.js
b/resources/js/ext.uls.languagesettings.js
index 592f8fb..89ee7fd 100644
--- a/resources/js/ext.uls.languagesettings.js
+++ b/resources/js/ext.uls.languagesettings.js
@@ -96,10 +96,11 @@
* @param active boolean Make this module active and show by
default
*/
renderModule: function ( moduleName, active ) {
- var $settingsMenuItems, module, $settingsText,
$settingsTitle, $settingsLink;
+ var $settingsMenuItems, module, $settingsText,
$settingsTitle, $settingsLink,
+ languageSettings = this;
- $settingsMenuItems = this.$window.find(
'.settings-menu-items' );
- module = new $.fn.languagesettings.modules[moduleName](
this );
+ $settingsMenuItems = languageSettings.$window.find(
'.settings-menu-items' );
+ module = new $.fn.languagesettings.modules[moduleName](
languageSettings );
$settingsTitle = $( '<div>' )
.addClass( 'settings-title' )
.text( module.name );
@@ -116,8 +117,38 @@
$settingsMenuItems.append( $settingsLink );
$settingsLink.on( 'click', function () {
- var module = $( this ).data( 'module' );
+ var scrollPosition,
+ panelHeight, panelTop, panelBottom,
+ padding = 10,
+ $window = $( window ),
+ windowHeight = $window.height(),
+ windowScrollTop = $window.scrollTop(),
+ windowBottom = windowScrollTop +
windowHeight,
+ module = $( this ).data( 'module' );
+
module.render();
+
+ panelHeight = languageSettings.$window.height();
+ panelTop =
languageSettings.$window.offset().top;
+ panelBottom = panelTop + panelHeight;
+
+ // If the ULS panel is out of the viewport,
+ // scroll the window to show it
+ if ( ( panelTop < windowScrollTop ) || (
panelBottom > windowBottom ) ) {
+ if ( panelHeight > windowHeight ) {
+ // Scroll to show as much of
the upper
+ // part of ULS as possible
+ scrollPosition = panelTop -
padding;
+ } else {
+ // Scroll just enough to show
the ULS panel
+ scrollPosition = panelBottom -
windowHeight + padding;
+ }
+
+ $( 'html, body' ).stop().animate( {
+ scrollTop: scrollPosition
+ }, 500 );
+ }
+
$settingsMenuItems.find( '.menu-section'
).removeClass( 'active' );
$( this ).addClass( 'active' );
} );
--
To view, visit https://gerrit.wikimedia.org/r/63843
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I550f309d713cb6aac6b18b326379b879dc0b9589
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Amire80 <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits