Update jquery.ime from upstream
Provides overridable help link along with other code cleanups Change-Id: I78b8cdcd3ca53c9008674fc775e98aa9cf1e5764
This commit is contained in:
@@ -161,6 +161,10 @@
|
||||
this.active = !this.active;
|
||||
},
|
||||
|
||||
getIM: function () {
|
||||
return this.inputmethod;
|
||||
},
|
||||
|
||||
setIM: function ( inputmethodId ) {
|
||||
this.inputmethod = $.ime.inputmethods[inputmethodId];
|
||||
$.ime.preferences.setIM( inputmethodId );
|
||||
@@ -171,7 +175,8 @@
|
||||
},
|
||||
|
||||
load: function ( name, callback ) {
|
||||
var ime = this, dependency;
|
||||
var ime = this,
|
||||
dependency;
|
||||
|
||||
if ( $.ime.inputmethods[name] ) {
|
||||
if ( callback ) {
|
||||
@@ -208,7 +213,8 @@
|
||||
options = typeof option === 'object' && option;
|
||||
|
||||
if ( !data ) {
|
||||
$this.data( 'ime', ( data = new IME( this, options ) ) );
|
||||
data = new IME( this, options );
|
||||
$this.data( 'ime', data );
|
||||
}
|
||||
|
||||
if ( typeof option === 'string' ) {
|
||||
@@ -793,7 +799,6 @@
|
||||
this.$imeSetting = $( selectorTemplate );
|
||||
this.$menu = $( '<ul class="imeselector-menu" role="menu">' );
|
||||
this.inputmethod = null;
|
||||
this.shown = false;
|
||||
this.init();
|
||||
this.listen();
|
||||
}
|
||||
@@ -814,7 +819,7 @@
|
||||
this.$menu.append( toggleMenuItem() );
|
||||
this.$menu.append( languageListTitle() );
|
||||
this.prepareLanguageList();
|
||||
this.$menu.append( helpLink() );
|
||||
this.$menu.append( this.helpLink() );
|
||||
},
|
||||
|
||||
focus: function ( ) {
|
||||
@@ -824,11 +829,9 @@
|
||||
},
|
||||
|
||||
toggle: function () {
|
||||
var isActive = this.$menu.hasClass( 'open' );
|
||||
|
||||
this.$menu.removeClass( 'open' );
|
||||
|
||||
if ( !isActive ) {
|
||||
if ( !this.$menu.hasClass( 'open' ) ) {
|
||||
this.$menu.toggleClass( 'open' );
|
||||
}
|
||||
|
||||
@@ -846,14 +849,12 @@
|
||||
} );
|
||||
|
||||
imeselector.$menu.on( 'click', 'li.ime-im', function ( e ) {
|
||||
var inputmethodId = $( this ).data( 'ime-inputmethod' );
|
||||
imeselector.selectIM( inputmethodId );
|
||||
imeselector.selectIM( $( this ).data( 'ime-inputmethod' ) );
|
||||
e.stopPropagation();
|
||||
} );
|
||||
|
||||
imeselector.$menu.on( 'click', 'li.ime-lang', function ( e ) {
|
||||
var language = $( this ).attr( 'lang' );
|
||||
imeselector.selectLanguage( language );
|
||||
imeselector.selectLanguage( $( this ).attr( 'lang' ) );
|
||||
e.stopPropagation();
|
||||
} );
|
||||
|
||||
@@ -884,14 +885,14 @@
|
||||
var ime = $( e.target ).data( 'ime' );
|
||||
|
||||
if ( isShortcutKey( e ) ) {
|
||||
ime.toggle();
|
||||
|
||||
if ( ime.isActive() ) {
|
||||
this.disableIM();
|
||||
} else {
|
||||
if ( this.inputmethod !== null ) {
|
||||
this.selectIM( this.inputmethod.id );
|
||||
}
|
||||
} else {
|
||||
this.disableIM();
|
||||
this.selectLanguage ( $.ime.preferences.getLanguage() );
|
||||
}
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
@@ -920,21 +921,16 @@
|
||||
* @param languageCode
|
||||
*/
|
||||
selectLanguage: function ( languageCode ) {
|
||||
var imeselector = this,
|
||||
ime = this.$element.data( 'ime' ),
|
||||
languageName = $.ime.languages[languageCode].autonym;
|
||||
|
||||
this.$menu.find( 'li.ime-lang' ).show();
|
||||
this.$menu.find( 'li[lang=' + languageCode + ']' ).hide();
|
||||
|
||||
//imeselector.$menu.find( 'li.ime-im' ).remove();
|
||||
this.$menu.find( 'li.ime-list-title' ).text( languageName );
|
||||
this.$menu.find( 'li.ime-list-title' ).text( $.ime.languages[languageCode].autonym );
|
||||
this.prepareInputMethods( languageCode );
|
||||
imeselector.$menu.removeClass( 'open' );
|
||||
|
||||
this.$menu.removeClass( 'open' );
|
||||
// And select the default inputmethod
|
||||
imeselector.selectIM( $.ime.preferences.getIM( languageCode ) );
|
||||
ime.setLanguage( languageCode );
|
||||
this.$element.data( 'ime' ).setLanguage( languageCode );
|
||||
this.inputmethod = null;
|
||||
this.selectIM( $.ime.preferences.getIM( languageCode ) );
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -965,7 +961,6 @@
|
||||
var name;
|
||||
|
||||
imeselector.inputmethod = $.ime.inputmethods[inputmethodId];
|
||||
//imeselector.$element.focus();
|
||||
imeselector.$menu.removeClass( 'open' );
|
||||
ime.enable();
|
||||
name = imeselector.inputmethod.name;
|
||||
@@ -984,15 +979,12 @@
|
||||
* Disable the inputmethods (Use the system input method)
|
||||
*/
|
||||
disableIM: function () {
|
||||
var imeselector = this,
|
||||
ime = imeselector.$element.data( 'ime' );
|
||||
|
||||
this.$menu.find( 'li.ime-im.checked' ).removeClass( 'checked' );
|
||||
this.$menu.find( 'li.ime-disable-link' ).addClass( 'checked' );
|
||||
ime.disable();
|
||||
imeselector.$imeSetting.find( 'a.ime-name' ).text( '' );
|
||||
this.$element.data( 'ime' ).disable();
|
||||
this.$imeSetting.find( 'a.ime-name' ).text( '' );
|
||||
this.$menu.removeClass( 'open' );
|
||||
imeselector.position();
|
||||
this.position();
|
||||
// save this preference
|
||||
$.ime.preferences.save();
|
||||
},
|
||||
@@ -1001,7 +993,7 @@
|
||||
* Prepare language list
|
||||
*/
|
||||
prepareLanguageList: function () {
|
||||
var imeselector = this, languageCodeIndex = 0, $languageListDiv, $languageList, languageList;
|
||||
var languageCodeIndex = 0, $languageListDiv, $languageList, languageList;
|
||||
|
||||
// Language list can be very long. So we use a container with
|
||||
// overflow auto.
|
||||
@@ -1031,10 +1023,10 @@
|
||||
}
|
||||
|
||||
$languageListDiv.append( $languageList );
|
||||
imeselector.$menu.append( $languageListDiv );
|
||||
this.$menu.append( $languageListDiv );
|
||||
|
||||
if ( this.options.languageSelector ) {
|
||||
imeselector.$menu.append( this.options.languageSelector() );
|
||||
this.$menu.append( this.options.languageSelector() );
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1044,11 +1036,9 @@
|
||||
* @param languageCode
|
||||
*/
|
||||
prepareInputMethods: function ( languageCode ) {
|
||||
var imeselector = this,
|
||||
language = $.ime.languages[languageCode],
|
||||
$imeList;
|
||||
var language = $.ime.languages[languageCode],
|
||||
$imeList = this.$menu.find( 'div.ime-list' );
|
||||
|
||||
$imeList = imeselector.$menu.find( 'div.ime-list' );
|
||||
$imeList.empty();
|
||||
|
||||
$.each( language.inputmethods, function ( index, inputmethod ) {
|
||||
@@ -1060,6 +1050,16 @@
|
||||
$inputMethod.addClass( 'ime-im' );
|
||||
$imeList.append( $inputMethod );
|
||||
} );
|
||||
},
|
||||
|
||||
helpLink: function () {
|
||||
return $( '<li class="ime-help-link">' )
|
||||
.append( $( '<a>' ).text( 'Help' )
|
||||
.attr( {
|
||||
'href': 'http://github.com/wikimedia/jquery.ime',
|
||||
'target': '_blank'
|
||||
} )
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1087,14 +1087,6 @@
|
||||
|
||||
$.fn.imeselector.Constructor = IMESelector;
|
||||
|
||||
// Private functions
|
||||
function helpLink () {
|
||||
return $( '<li class="ime-help-link">' )
|
||||
.append( $( '<a>' )
|
||||
.attr( 'href', '#' )
|
||||
.text( 'Help' ) ); // TODO i18n
|
||||
}
|
||||
|
||||
function languageListTitle () {
|
||||
return $( '<li class="ime-lang-title">' )
|
||||
.text( 'Other languages' ); // TODO i18n
|
||||
|
||||
Reference in New Issue
Block a user