Isarra has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/354378 )

Change subject: Determine callout directionality based on position as opposed 
to language
......................................................................

Determine callout directionality based on position as opposed to language

For interlanguage toggle, interlanguage position is no longer assumed to be a
left sidebar, and is determined on the fly in order to appear correctly
regardless of where it is, and not go off the side of the page. This works
across most skins, and regardless of language directionality.

Does not necessarily resolve issues with interlanguage links appearing in the
middle of the page (header/footer), or the callout just plain not fitting for
other reasons (mobile devices).

bug: T161586
Change-Id: Icd55498a945e12c0ff79ba891c094d60ce791115
---
M extension.json
R resources/css/ext.uls.less
M resources/js/ext.uls.interface.js
3 files changed, 53 insertions(+), 12 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/UniversalLanguageSelector 
refs/changes/78/354378/1

diff --git a/extension.json b/extension.json
index aa4cb66..273c92b 100644
--- a/extension.json
+++ b/extension.json
@@ -157,7 +157,7 @@
                "ext.uls.common": {
                        "targets": [ "desktop", "mobile" ],
                        "scripts": "js/ext.uls.common.js",
-                       "styles": "css/ext.uls.css",
+                       "styles": "css/ext.uls.less",
                        "skinStyles": {
                                "monobook": "css/ext.uls-monobook.css"
                        },
diff --git a/resources/css/ext.uls.css b/resources/css/ext.uls.less
similarity index 65%
rename from resources/css/ext.uls.css
rename to resources/css/ext.uls.less
index 7e3c988..d09263a 100644
--- a/resources/css/ext.uls.css
+++ b/resources/css/ext.uls.less
@@ -16,25 +16,62 @@
        border-bottom-left-radius: 4px;
 }
 
+/* Caret */
 .uls-menu.callout .caret-before,
 .uls-menu.callout .caret-after {
        border-top: 10px solid transparent;
-       border-right: 10px solid #c9c9c9;
        border-bottom: 10px solid transparent;
        display: inline-block;
-       left: -11px;
        /* 17px aligns nicely with the size of the search row in language 
selection */
        top: 17px;
        position: absolute;
 }
-
 .uls-menu.callout .caret-after {
-       border-right: 10px solid #fcfcfc;
        display: inline-block;
-       left: -10px;
 }
 
-.uls-menu.callout--languageselection .caret-after {
+// How do you do switch for flipping in less? These are very redundant.
+.uls-menu.callout .caret-right {
+       .caret-before,
+       .caret-after {
+               /* @noflip */
+               border-left: 10px solid #c9c9c9;
+               /* @noflip */
+               right: -11px;
+       }
+
+       .caret-after {
+               /* @noflip */
+               border-left: 10px solid #fcfcfc;
+               /* @noflip */
+               right: -10px;
+       }
+
+}
+.uls-menu.callout--languageselection .caret-right .caret-after {
+       /* @noflip */
+       border-left: 10px solid #fff;
+}
+
+.uls-menu.callout .caret-left {
+       .caret-before,
+       .caret-after {
+               /* @noflip */
+               border-right: 10px solid #c9c9c9;
+               /* @noflip */
+               left: -11px;
+       }
+
+       .caret-after {
+               /* @noflip */
+               border-right: 10px solid #fcfcfc;
+               /* @noflip */
+               left: -10px;
+       }
+
+}
+.uls-menu.callout--languageselection .caret-left .caret-after {
+       /* @noflip */
        border-right: 10px solid #fff;
 }
 
diff --git a/resources/js/ext.uls.interface.js 
b/resources/js/ext.uls.interface.js
index 2284dfd..0dfe1ec 100644
--- a/resources/js/ext.uls.interface.js
+++ b/resources/js/ext.uls.interface.js
@@ -294,7 +294,6 @@
                var $triggers,
                        $pLang,
                        $ulsTrigger = $( '.uls-trigger' ),
-                       rtlPage = $( 'body' ).hasClass( 'rtl' ),
                        anonMode = ( mw.user.isAnon() &&
                                !mw.config.get( 'wgULSAnonCanChangeLanguage' ) 
),
                        ulsPosition = mw.config.get( 'wgULSPosition' );
@@ -337,6 +336,7 @@
                                                        var caretRadius, 
caretPosition,
                                                                $caretBefore = 
$( '<span>' ).addClass( 'caret-before' ),
                                                                $caretAfter = 
$( '<span>' ).addClass( 'caret-after' ),
+                                                               $caretWrapper = 
$( '<span>' ),
                                                                
ulsTriggerHeight = this.$element.height(),
                                                                ulsTriggerWidth 
= this.$element.width(),
                                                                
ulsTriggerOffset = this.$element.offset();
@@ -344,19 +344,23 @@
                                                        // Add the callout 
caret triangle
                                                        // pointing to the 
trigger icon
                                                        this.$window.addClass( 
'callout' );
-                                                       this.$window.prepend( 
$caretBefore, $caretAfter );
+                                                       this.$window.prepend( 
$caretWrapper.prepend( $caretBefore, $caretAfter ) );
 
                                                        // Calculate the 
positioning of the panel
                                                        // according to the 
position of the trigger icon
 
                                                        caretRadius = parseInt( 
$caretBefore.css( 'border-top-width' ), 10 );
-                                                       if ( rtlPage ) {
+
+                                                       if ( 
ulsTriggerOffset.left > ( this.$window.width() - caretRadius ) / 2 ) {
                                                                this.left = 
ulsTriggerOffset.left - this.$window.width() - caretRadius;
+                                                               
$caretWrapper.addClass( 'caret-right' );
+                                                               caretPosition = 
$caretBefore.position();
+
                                                        } else {
                                                                this.left = 
ulsTriggerOffset.left + ulsTriggerWidth + caretRadius;
+                                                               
$caretWrapper.addClass( 'caret-left' );
+                                                               caretPosition = 
$caretAfter.position();
                                                        }
-
-                                                       caretPosition = 
$caretBefore.position();
 
                                                        // The top of the 
dialog is aligned in relation to
                                                        // the middle of the 
trigger, so that middle of the

-- 
To view, visit https://gerrit.wikimedia.org/r/354378
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Icd55498a945e12c0ff79ba891c094d60ce791115
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Isarra <zhoris...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to