jenkins-bot has submitted this change and it was merged.
Change subject: Update jquery.ime from upstream
......................................................................
Update jquery.ime from upstream
Version 0.1.0.20130522
Changes:
* Correct the versioning by adding build date metadata
* Remove an unwanted css style
* Avoid screen jump on click of IME menu items
* AltGr+M doesn't create a ยต
* Code cleanup
Change-Id: Ia9ccd89a24f4d8627cf3a16f59984ad79f3d49f5
---
M lib/jquery.ime/css/jquery.ime.css
M lib/jquery.ime/jquery.ime.js
2 files changed, 83 insertions(+), 67 deletions(-)
Approvals:
Amire80: Looks good to me, approved
jenkins-bot: Verified
diff --git a/lib/jquery.ime/css/jquery.ime.css
b/lib/jquery.ime/css/jquery.ime.css
index d5dce3e..df40cc4 100644
--- a/lib/jquery.ime/css/jquery.ime.css
+++ b/lib/jquery.ime/css/jquery.ime.css
@@ -63,10 +63,6 @@
padding-right: 4px;
}
-.ime-disable-link:hover span {
- color: #eee;
-}
-
.ime-list-title,
.ime-lang-title {
color: #39d;
diff --git a/lib/jquery.ime/jquery.ime.js b/lib/jquery.ime/jquery.ime.js
index d1cb7d6..c09bd54 100644
--- a/lib/jquery.ime/jquery.ime.js
+++ b/lib/jquery.ime/jquery.ime.js
@@ -1,4 +1,4 @@
-/*! jquery.ime - v0.1.0 - 2013-05-17
+/*! jquery.ime - v0.1.0+20130522
* https://github.com/wikimedia/jquery.ime
* Copyright (c) 2013 Santhosh Thottingal; Licensed GPL, MIT */
( function ( $ ) {
@@ -483,6 +483,8 @@
( function ( $ ) {
'use strict';
+ var selectorTemplate, MutationObserver;
+
function IMESelector ( element, options ) {
this.$element = $( element );
this.options = $.extend( {}, IMESelector.defaults, options );
@@ -544,7 +546,7 @@
'marginTop': '-20px'
}, 500, function () {
imeselector.$imeSetting.hide();
- // Restore properties for next
time it becomes visible:
+ // Restore properties for the
next time it becomes visible:
imeselector.$imeSetting.css(
'opacity', 1 );
imeselector.$imeSetting.css(
'margin-top', 0 );
} );
@@ -563,12 +565,14 @@
this.$menu.addClass( 'open' );
this.stopTimer();
this.$imeSetting.show();
+
return false;
},
hide: function () {
this.$menu.removeClass( 'open' );
this.resetTimer();
+
return false;
},
@@ -588,9 +592,11 @@
imeselector.$imeSetting.on( 'click.ime', function ( e )
{
var t = $( e.target );
+
if ( t.hasClass( 'imeselector-toggle' ) ) {
imeselector.toggle();
}
+ return false;
} );
imeselector.$element.on( 'blur.ime', function () {
@@ -601,7 +607,8 @@
} );
imeselector.$imeSetting.mouseenter( function () {
- // We don't want the selector to disappear
while the user is trying to click it
+ // We don't want the selector to disappear
+ // while the user is trying to click it
imeselector.stopTimer();
imeselector.$imeSetting.addClass( 'onfocus' );
} ).mouseleave( function () {
@@ -611,23 +618,22 @@
imeselector.$menu.on( 'click.ime', 'li', function() {
imeselector.$element.focus();
- });
+ return false;
+ } );
- imeselector.$menu.on( 'click.ime', 'li.ime-im',
function ( e ) {
+ imeselector.$menu.on( 'click.ime', 'li.ime-im',
function () {
imeselector.selectIM( $( this ).data(
'ime-inputmethod' ) );
- e.stopPropagation();
+ return false;
} );
- imeselector.$menu.on( 'click.ime', 'li.ime-lang',
function ( e ) {
+ imeselector.$menu.on( 'click.ime', 'li.ime-lang',
function () {
imeselector.selectLanguage( $( this ).attr(
'lang' ) );
- e.stopPropagation();
- e.preventDefault();
+ return false;
} );
- imeselector.$menu.on( 'click.ime', 'div.ime-disable',
function ( e ) {
+ imeselector.$menu.on( 'click.ime', 'div.ime-disable',
function () {
imeselector.disableIM();
- e.stopPropagation();
- e.preventDefault();
+ return false;
} );
imeselector.$element.on( 'focus.ime', function ( e ) {
@@ -637,7 +643,7 @@
} );
imeselector.$element.attrchange( function ( ) {
- if( imeselector.$element.is( ':hidden') ) {
+ if ( imeselector.$element.is( ':hidden' ) ) {
imeselector.$imeSetting.hide();
}
} );
@@ -646,11 +652,11 @@
imeselector.$element.on( 'mouseup.ime', $.proxy(
this.position, this ) );
imeselector.$element.on( 'keydown.ime', $.proxy(
this.keydown, this ) );
- // Update IM selector position when window is resized
- // or browser window is zoomed in or zoomed out
+ // Update IM selector position when the window is
resized
+ // or the browser window is zoomed in or zoomed out
$( window ).resize( function () {
imeselector.position();
- });
+ } );
},
/**
@@ -661,7 +667,9 @@
*/
keydown: function ( e ) {
var ime = $( e.target ).data( 'ime' );
+
this.focus(); // shows the trigger in case it is hidden
+
if ( isShortcutKey( e ) ) {
if ( ime.isActive() ) {
this.disableIM();
@@ -686,33 +694,42 @@
* Position the im selector relative to the edit area
*/
position: function () {
- this.focus(); // shows the trigger in case it is hidden
var imeSelector = this,
position, top, left, room;
+
+ this.focus(); // shows the trigger in case it is hidden
position = this.$element.offset();
top = position.top + this.$element.outerHeight();
left = position.left;
- // RTL element position fix:
+
+ // RTL element position fix
if ( this.$element.css( 'direction' ) === 'ltr' ) {
left = position.left +
this.$element.outerWidth() -
this.$imeSetting.outerWidth();
}
- room = $( window ).height() - top;
+
+ // While determining whether to place the selector
above or below the input box,
+ // take into account the value of scrollTop, to avoid
the selector from always
+ // getting placed above the input box since
window.height would be less than top
+ // if the page has been scrolled.
+ room = $( window ).height() + $( document ).scrollTop()
- top;
if ( room < this.$imeSetting.outerHeight() ) {
top = position.top -
this.$imeSetting.outerHeight();
- this.$menu.css( 'top',
+ this.$menu
+ .addClass( 'position-top' )
+ .css( 'top',
- ( this.$menu.outerHeight() +
this.$imeSetting.outerHeight() )
- )
- .addClass( 'position-top' );
+ );
}
this.$element.parents().each( function() {
if ( $( this ).css( 'position' ) === 'fixed' ) {
imeSelector.$imeSetting.css(
'position', 'fixed' );
+
return false;
}
} );
@@ -722,15 +739,15 @@
left: left
} );
- if ( parseInt( this.$menu.css( 'min-width' ) ) > left )
{
+ if ( parseInt( this.$menu.css( 'min-width' ), 10 ) >
left ) {
// RTL element position fix
if ( this.$element.css( 'direction' ) === 'rtl'
) {
this.$menu
- .css( { left: 0 } )
+ .css( 'left', 0 )
.addClass( 'left' );
} else {
this.$menu
- .css( { left: position.left } )
+ .css( 'left', position.left )
.addClass( 'right' );
}
}
@@ -742,20 +759,21 @@
* @param languageCode
*/
selectLanguage: function ( languageCode ) {
- var language, ime;
-
- ime = this.$element.data( 'ime' );
- language = $.ime.languages[languageCode];
+ var ime,
+ language = $.ime.languages[languageCode];
if ( !language ) {
return false;
}
+ ime = this.$element.data( 'ime' );
+
if ( ime.getLanguage() === languageCode ) {
- // nothing to do. It is same as the current
language
- // but check whether input method changed
- if( ime.inputmethod &&
- ime.inputmethod.id ===
$.ime.preferences.getIM( languageCode ) ) {
+ // Nothing to do. It is same as the current
language,
+ // but check whether the input method changed.
+ if ( ime.inputmethod &&
+ ime.inputmethod.id ===
$.ime.preferences.getIM( languageCode )
+ ) {
return false;
}
}
@@ -777,15 +795,20 @@
*
*/
decideLanguage : function () {
- if( $.ime.preferences.getLanguage() ) {
- // There has been an override by the user
return the language selected by user
+ if ( $.ime.preferences.getLanguage() ) {
+ // There has been an override by the user,
+ // so return the language selected by user
return $.ime.preferences.getLanguage();
}
- if ( this.$element.attr('lang') &&
- $.ime.languages[this.$element.attr('lang')] ) {
- return this.$element.attr('lang');
+
+ if ( this.$element.attr('lang' ) &&
+ $.ime.languages[ this.$element.attr( 'lang' ) ]
+ ) {
+ return this.$element.attr( 'lang' );
}
- // There is either no IMs for the given language attr
or there is no lang attr at all.
+
+ // There is either no IMs for the given language attr
+ // or there is no lang attr at all.
return $.ime.preferences.getDefaultLanguage();
},
@@ -806,6 +829,7 @@
if ( inputmethodId === 'system' ) {
this.disableIM();
+
return;
}
@@ -814,18 +838,17 @@
}
ime.load( inputmethodId, function () {
- var name;
-
imeselector.inputmethod =
$.ime.inputmethods[inputmethodId];
imeselector.hide();
ime.enable();
- name = imeselector.inputmethod.name;
ime.setIM( inputmethodId );
- imeselector.$imeSetting.find( 'a.ime-name'
).text( name );
+ imeselector.$imeSetting.find( 'a.ime-name'
).text(
+ imeselector.inputmethod.name
+ );
imeselector.position();
- // save this preference
+ // Save this preference
$.ime.preferences.save();
} );
},
@@ -841,7 +864,7 @@
this.hide();
this.position();
- // save this preference
+ // Save this preference
$.ime.preferences.save();
},
@@ -858,8 +881,8 @@
languageCode,
language;
- // Language list can be very long. So we use a
container with
- // overflow auto.
+ // Language list can be very long, so we use a
container with
+ // overflow auto
$languageListWrapper = $( '<div
class="ime-language-list-wrapper">' );
$languageList = $( '<ul class="ime-language-list">' );
@@ -937,6 +960,7 @@
return this.each( function () {
var $this = $( this ),
data = $this.data( 'imeselector' );
+
if ( !data ) {
$this.data( 'imeselector', ( data = new
IMESelector( this, options ) ) );
}
@@ -978,12 +1002,13 @@
);
}
- var selectorTemplate = '<div class="imeselector imeselector-toggle">'
- + '<a class="ime-name imeselector-toggle" href="#"></a>'
- + '<b class="ime-setting-caret imeselector-toggle"></b></div>',
+ selectorTemplate = '<div class="imeselector imeselector-toggle">' +
+ '<a class="ime-name imeselector-toggle" href="#"></a>' +
+ '<b class="ime-setting-caret imeselector-toggle"></b></div>';
- MutationObserver = window.MutationObserver ||
window.WebKitMutationObserver
- || window.MozMutationObserver;
+ MutationObserver = window.MutationObserver ||
+ window.WebKitMutationObserver ||
+ window.MozMutationObserver;
/**
* Check whether a keypress event corresponds to the shortcut key
@@ -994,7 +1019,7 @@
function isShortcutKey ( event ) {
// 77 - The letter M, for Ctrl-M
// 13 - The Enter key
- return event.ctrlKey && ( event.which === 77 || event.which ===
13 );
+ return event.ctrlKey && !event.altKey && ( event.which === 77
|| event.which === 13 );
}
function isDOMAttrModifiedSupported () {
@@ -1020,11 +1045,7 @@
$.fn.attrchange = function ( callback ) {
if ( MutationObserver ) {
- var observer,
- options = {
- subtree: false,
- attributes: true
- };
+ var observer;
observer = new MutationObserver( function ( mutations )
{
mutations.forEach( function ( e ) {
@@ -1033,9 +1054,11 @@
} );
return this.each( function () {
- observer.observe( this, options );
+ observer.observe( this, {
+ subtree: false,
+ attributes: true
+ } );
} );
-
} else if ( isDOMAttrModifiedSupported() ) {
return this.on( 'DOMAttrModified', function ( e ) {
callback.call( this, e.attrName );
@@ -1046,10 +1069,7 @@
} );
}
};
-
-
}( jQuery ) );
-
( function ( $ ) {
'use strict';
--
To view, visit https://gerrit.wikimedia.org/r/64882
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ia9ccd89a24f4d8627cf3a16f59984ad79f3d49f5
Gerrit-PatchSet: 2
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Santhosh <[email protected]>
Gerrit-Reviewer: Amire80 <[email protected]>
Gerrit-Reviewer: Nikerabbit <[email protected]>
Gerrit-Reviewer: jenkins-bot
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits