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