Merge branch 'master' of github.com:wikimedia/jquery.uls
This commit is contained in:
commit
9a98249d2e
23 files changed
+224
-63
No files matched your search
+31
-8
@@ -21,9 +21,11 @@
|
||||
( function ( $ ) {
|
||||
'use strict';
|
||||
|
||||
var template, ULS;
|
||||
|
||||
// Region numbers in id attributes also appear in the langdb.
|
||||
/*jshint multistr:true */
|
||||
var template = '\
|
||||
template = '\
|
||||
<div class="grid uls-menu uls-wide"> \
|
||||
<div class="row"> \
|
||||
<span id="uls-close" class="icon-close"></span> \
|
||||
@@ -80,7 +82,7 @@
|
||||
/**
|
||||
* ULS Public class definition
|
||||
*/
|
||||
var ULS = function ( element, options ) {
|
||||
ULS = function ( element, options ) {
|
||||
this.$element = $( element );
|
||||
this.options = $.extend( {}, $.fn.uls.defaults, options );
|
||||
this.$menu = $( template );
|
||||
@@ -112,12 +114,33 @@
|
||||
ULS.prototype = {
|
||||
constructor: ULS,
|
||||
|
||||
/**
|
||||
* A "hook" that runs after the ULS constructor.
|
||||
* At this point it is not guaranteed that the ULS has its dimensions
|
||||
* and that the languages lists are initialized.
|
||||
*
|
||||
* To use it, pass a function as the onReady parameter
|
||||
* in the options when initializing ULS.
|
||||
*/
|
||||
ready: function () {
|
||||
if ( this.options.onReady ) {
|
||||
this.options.onReady.call( this );
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* A "hook" that runs after the ULS panel becomes visible
|
||||
* by using the show method.
|
||||
*
|
||||
* To use it, pass a function as the onVisible parameter
|
||||
* in the options when initializing ULS.
|
||||
*/
|
||||
visible: function () {
|
||||
if ( this.options.onVisible ) {
|
||||
this.options.onVisible.call( this );
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Calculate the position of ULS
|
||||
* Returns an object with top and left properties.
|
||||
@@ -137,11 +160,7 @@
|
||||
* Show the ULS window
|
||||
*/
|
||||
show: function () {
|
||||
var pos = this.position();
|
||||
this.$menu.css( {
|
||||
top: pos.top,
|
||||
left: '25%'
|
||||
} );
|
||||
this.$menu.css( this.position() );
|
||||
|
||||
if ( this.options.compact ) {
|
||||
this.$menu.addClass( 'uls-compact' );
|
||||
@@ -150,13 +169,15 @@
|
||||
if ( !this.initialized ) {
|
||||
$( 'body' ).prepend( this.$menu );
|
||||
this.i18n();
|
||||
|
||||
// Initialize with a full search.
|
||||
// This happens on first time click of uls trigger.
|
||||
this.defaultSearch();
|
||||
|
||||
this.initialized = true;
|
||||
}
|
||||
|
||||
// hide any other ULS visible
|
||||
// hide any other visible ULS
|
||||
$( '.uls-menu' ).hide();
|
||||
|
||||
this.$menu.show();
|
||||
@@ -165,6 +186,8 @@
|
||||
if ( !this.isMobile() ) {
|
||||
this.$languageFilter.focus();
|
||||
}
|
||||
|
||||
this.visible();
|
||||
},
|
||||
|
||||
i18n: function () {
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
( function ( $ ) {
|
||||
'use strict';
|
||||
$.uls = $.uls || {};
|
||||
$.uls.data = {"languages":{"aa":["Latn",["AF"],"Qaf\u00e1r af"],"ab":["Cyrl",["EU"],"\u0410\u04a7\u0441\u0448\u04d9\u0430"],"ace":["Latn",["AS","PA"],"Ac\u00e8h"],"ady":["Cyrl",["EU","ME"],"\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d"],"ady-cyrl":["ady"],"ady-latn":["Latn",["EU","ME"],"Adygabze"],"aeb":["Arab",["AF"],"\u0632\u064e\u0648\u064f\u0646"],"af":["Latn",["AF"],"Afrikaans"],"ahr":["Deva",["AS"],"\u0905\u0939\u093f\u0930\u093e\u0923\u0940"],"ak":["Latn",["AF"],"Akan"],"akz":["Latn",["AM"],"Albaamo innaa\u026ciilka"],"aln":["Latn",["EU"],"Geg\u00eb"],"am":["Ethi",["AF"],"\u12a0\u121b\u122d\u129b"],"an":["Latn",["EU"],"aragon\u00e9s"],"ang":["Latn",["EU"],"\u00c6nglisc"],"anp":["Deva",["AS"],"\u0905\u0919\u094d\u0917\u093f\u0915\u093e"],"ar":["Arab",["ME"],"\u0627\u0644\u0639\u0631\u0628\u064a\u0629"],"arc":["Syrc",["ME"],"\u0710\u072a\u0721\u071d\u0710"],"arn":["Latn",["AM"],"mapudungun"],"aro":["Latn",["AM"],"Araona"],"arq":["Latn",["AF"],"Dziri"],"ary":["Latn",["ME"],"Ma\u0121ribi"],"arz":["Arab",["ME"],"\u0645\u0635\u0631\u0649"],"as":["Beng",["AS"],"\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be"],"ase":["Sgnw",["AM"],"American sign language"],"ast":["Latn",["EU"],"asturianu"],"av":["Cyrl",["EU"],"\u0430\u0432\u0430\u0440"],"avk":["Latn",["WW"],"Kotava"],"ay":["Latn",["AM"],"Aymar aru"],"az":["az-latn"],"az-latn":["Latn",["EU","ME"],"az\u0259rbaycanca"],"az-arab":["Arab",["EU","ME"],"\u0622\u0630\u0631\u0628\u0627\u064a\u062c\u0627\u0646\u062c\u0627"],"az-cyrl":["Latn",["EU","ME"],"\u0430\u0437\u04d9\u0440\u0431\u0430\u0458\u04b9\u0430\u043d\u04b9\u0430"],"azb":["az-arab"],"ba":["Cyrl",["EU"],"\u0431\u0430\u0448\u04a1\u043e\u0440\u0442\u0441\u0430"],"bar":["Latn",["EU"],"Boarisch"],"bat-smg":["sgs"],"bbc-latn":["Latn",["AS"],"Batak Toba"],"bbc-batk":["Batk",["AS"],"Batak Toba"],"bbc":["Latn",["AS"],"Batak Toba"],"bcc":["Arab",["AS","ME"],"\u0628\u0644\u0648\u0686\u06cc \u0645\u06a9\u0631\u0627\u0646\u06cc"],"bcl":["Latn",["AS"],"Bikol Central"],"be-tarask":["Cyrl",["EU"],"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)"],"be-x-old":["be-tarask"],"be":["Cyrl",["EU"],"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"],"bew":["Latn",["AS"],"Bahasa Betawi"],"bfq":["Taml",["AS"],"\u0baa\u0b9f\u0b95\u0bbe"],"bg":["Cyrl",["EU"],"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],"bh":["Deva",["AS"],"\u092d\u094b\u091c\u092a\u0941\u0930\u0940"],"bho":["Deva",["AS"],"\u092d\u094b\u091c\u092a\u0941\u0930\u0940"],"bi":["Latn",["PA"],"Bislama"],"bjn":["Latn",["AS"],"Bahasa Banjar"],"bm":["Latn",["AF"],"bamanankan"],"bn":["Beng",["AS"],"\u09ac\u09be\u0982\u09b2\u09be"],"bo":["Tibt",["AS"],"\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42"],"bpy":["Beng",["AS"],"\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0"],"bqi":["Arab",["ME"],"\u0628\u062e\u062a\u064a\u0627\u0631\u064a"],"br":["Latn",["EU"],"brezhoneg"],"brh":["Latn",["ME","AS"],"Br\u00e1hu\u00ed"],"brx":["Deva",["AS"],"\u092c\u0921\u093c\u094b"],"bs":["Latn",["EU"],"bosanski"],"bto":["Latn",["AS"],"Iriga Bicolano"],"bug":["Bugi",["AS"],"\u1a05\u1a14 \u1a15\u1a18\u1a01\u1a17"],"bxr":["Cyrl",["AS"],"\u0431\u0443\u0440\u044f\u0430\u0434"],"ca":["Latn",["EU"],"catal\u00e0"],"cbk-zam":["Latn",["AS"],"Chavacano de Zamboanga"],"cdo":["Latn",["AS"],"M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304"],"ce":["Cyrl",["EU"],"\u043d\u043e\u0445\u0447\u0438\u0439\u043d"],"ceb":["Latn",["AS"],"Cebuano"],"ch":["Latn",["PA"],"Chamoru"],"cho":["Latn",["AM"],"Choctaw"],"chr":["Cher",["AM"],"\u13e3\u13b3\u13a9"],"chy":["Latn",["AM"],"Tsets\u00eahest\u00e2hese"],"ckb":["Arab",["ME"],"\u06a9\u0648\u0631\u062f\u06cc"],"co":["Latn",["EU"],"corsu"],"cps":["Latn",["AS"],"Capice\u00f1o"],"cr":["Cans",["AM"],"\u14c0\u1426\u1403\u152d\u140d\u140f\u1423"],"cr-cans":["cr"],"cr-latn":["Latn",["AM"],"N\u0113hiyaw\u0113win"],"crh":["Latn",["EU"],"q\u0131r\u0131mtatarca"],"crh-cyrl":["Cyrl",["EU"],"\u043a\u044a\u044b\u0440\u044b\u043c\u0442\u0430\u0442\u0430\u0440\u0434\u0436\u0430"],"crh-latn":["crh"],"cs":["Latn",["EU"],"\u010desky"],"csb":["Latn",["EU"],"kasz\u00ebbsczi"],"cu":["Cyrl",["EU"],"\u0441\u043b\u043e\u0432\u0463\u0301\u043d\u044c\u0441\u043a\u044a \/ \u2c14\u2c0e\u2c11\u2c02\u2c21\u2c10\u2c20\u2c14\u2c0d\u2c1f"],"cv":["Cyrl",["EU"],"\u0427\u04d1\u0432\u0430\u0448\u043b\u0430"],"cy":["Latn",["EU"],"Cymraeg"],"da":["Latn",["EU"],"dansk"],"de-at":["Latn",["EU"],"\u00d6sterreichisches Deutsch"],"de-ch":["Latn",["EU"],"Schweizer Hochdeutsch"],"de-formal":["Latn",["EU"],"Deutsch (Sie-Form)"],"de":["Latn",["EU"],"Deutsch"],"diq":["Latn",["EU","AS"],"Zazaki"],"dsb":["Latn",["EU"],"dolnoserbski"],"dtp":["Latn",["AS"],"Dusun Bundu-liwan"],"dv":["Thaa",["AS"],"\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0"],"dz":["Tibt",["AS"],"\u0f47\u0f7c\u0f44\u0f0b\u0f41"],"ee":["Latn",["AF"],"e\u028begbe"],"egl":["Latn",["Line truncated
|
||||
$.uls.data = {"languages":{"aa":["Latn",["AF"],"Qaf\u00e1r af"],"ab":["Cyrl",["EU"],"\u0410\u04a7\u0441\u0448\u04d9\u0430"],"ace":["Latn",["AS","PA"],"Ac\u00e8h"],"ady":["Cyrl",["EU","ME"],"\u0410\u0434\u044b\u0433\u044d\u0431\u0437\u044d"],"ady-cyrl":["ady"],"ady-latn":["Latn",["EU","ME"],"Adygabze"],"aeb":["Arab",["AF"],"\u0632\u064e\u0648\u064f\u0646"],"af":["Latn",["AF"],"Afrikaans"],"ahr":["Deva",["AS"],"\u0905\u0939\u093f\u0930\u093e\u0923\u0940"],"ak":["Latn",["AF"],"Akan"],"akz":["Latn",["AM"],"Albaamo innaa\u026ciilka"],"aln":["Latn",["EU"],"Geg\u00eb"],"am":["Ethi",["AF"],"\u12a0\u121b\u122d\u129b"],"an":["Latn",["EU"],"aragon\u00e9s"],"ang":["Latn",["EU"],"\u00c6nglisc"],"anp":["Deva",["AS"],"\u0905\u0919\u094d\u0917\u093f\u0915\u093e"],"ar":["Arab",["ME"],"\u0627\u0644\u0639\u0631\u0628\u064a\u0629"],"arc":["Syrc",["ME"],"\u0710\u072a\u0721\u071d\u0710"],"arn":["Latn",["AM"],"mapudungun"],"aro":["Latn",["AM"],"Araona"],"arq":["Latn",["AF"],"Dziri"],"ary":["Latn",["ME"],"Ma\u0121ribi"],"arz":["Arab",["ME"],"\u0645\u0635\u0631\u0649"],"as":["Beng",["AS"],"\u0985\u09b8\u09ae\u09c0\u09af\u09bc\u09be"],"ase":["Sgnw",["AM"],"American sign language"],"ast":["Latn",["EU"],"asturianu"],"av":["Cyrl",["EU"],"\u0430\u0432\u0430\u0440"],"avk":["Latn",["WW"],"Kotava"],"ay":["Latn",["AM"],"Aymar aru"],"az":["az-latn"],"az-latn":["Latn",["EU","ME"],"az\u0259rbaycanca"],"az-arab":["Arab",["EU","ME"],"\u0622\u0630\u0631\u0628\u0627\u064a\u062c\u0627\u0646\u062c\u0627"],"az-cyrl":["Latn",["EU","ME"],"\u0430\u0437\u04d9\u0440\u0431\u0430\u0458\u04b9\u0430\u043d\u04b9\u0430"],"azb":["az-arab"],"ba":["Cyrl",["EU"],"\u0431\u0430\u0448\u04a1\u043e\u0440\u0442\u0441\u0430"],"bar":["Latn",["EU"],"Boarisch"],"bat-smg":["sgs"],"bbc-latn":["Latn",["AS"],"Batak Toba"],"bbc-batk":["Batk",["AS"],"Batak Toba"],"bbc":["Latn",["AS"],"Batak Toba"],"bcc":["Arab",["AS","ME"],"\u0628\u0644\u0648\u0686\u06cc \u0645\u06a9\u0631\u0627\u0646\u06cc"],"bcl":["Latn",["AS"],"Bikol Central"],"be-tarask":["Cyrl",["EU"],"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f (\u0442\u0430\u0440\u0430\u0448\u043a\u0435\u0432\u0456\u0446\u0430)"],"be-x-old":["be-tarask"],"be":["Cyrl",["EU"],"\u0431\u0435\u043b\u0430\u0440\u0443\u0441\u043a\u0430\u044f"],"bew":["Latn",["AS"],"Bahasa Betawi"],"bfq":["Taml",["AS"],"\u0baa\u0b9f\u0b95\u0bbe"],"bg":["Cyrl",["EU"],"\u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],"bh":["Deva",["AS"],"\u092d\u094b\u091c\u092a\u0941\u0930\u0940"],"bho":["Deva",["AS"],"\u092d\u094b\u091c\u092a\u0941\u0930\u0940"],"bi":["Latn",["PA"],"Bislama"],"bjn":["Latn",["AS"],"Bahasa Banjar"],"bm":["Latn",["AF"],"bamanankan"],"bn":["Beng",["AS"],"\u09ac\u09be\u0982\u09b2\u09be"],"bo":["Tibt",["AS"],"\u0f56\u0f7c\u0f51\u0f0b\u0f61\u0f72\u0f42"],"bpy":["Beng",["AS"],"\u09ac\u09bf\u09b7\u09cd\u09a3\u09c1\u09aa\u09cd\u09b0\u09bf\u09af\u09bc\u09be \u09ae\u09a3\u09bf\u09aa\u09c1\u09b0\u09c0"],"bqi":["Arab",["ME"],"\u0628\u062e\u062a\u064a\u0627\u0631\u064a"],"br":["Latn",["EU"],"brezhoneg"],"brh":["Latn",["ME","AS"],"Br\u00e1hu\u00ed"],"brx":["Deva",["AS"],"\u092c\u0921\u093c\u094b"],"bs":["Latn",["EU"],"bosanski"],"bto":["Latn",["AS"],"Iriga Bicolano"],"bug":["Bugi",["AS"],"\u1a05\u1a14 \u1a15\u1a18\u1a01\u1a17"],"bxr":["Cyrl",["AS"],"\u0431\u0443\u0440\u044f\u0430\u0434"],"ca":["Latn",["EU"],"catal\u00e0"],"cbk-zam":["Latn",["AS"],"Chavacano de Zamboanga"],"cdo":["Latn",["AS"],"M\u00ecng-d\u0115\u0324ng-ng\u1e73\u0304"],"ce":["Cyrl",["EU"],"\u043d\u043e\u0445\u0447\u0438\u0439\u043d"],"ceb":["Latn",["AS"],"Cebuano"],"ch":["Latn",["PA"],"Chamoru"],"cho":["Latn",["AM"],"Choctaw"],"chr":["Cher",["AM"],"\u13e3\u13b3\u13a9"],"chy":["Latn",["AM"],"Tsets\u00eahest\u00e2hese"],"ckb":["Arab",["ME"],"\u06a9\u0648\u0631\u062f\u06cc"],"co":["Latn",["EU"],"corsu"],"cps":["Latn",["AS"],"Capice\u00f1o"],"cr":["Cans",["AM"],"\u14c0\u1426\u1403\u152d\u140d\u140f\u1423"],"cr-cans":["cr"],"cr-latn":["Latn",["AM"],"N\u0113hiyaw\u0113win"],"crh":["Latn",["EU"],"q\u0131r\u0131mtatarca"],"crh-cyrl":["Cyrl",["EU"],"\u043a\u044a\u044b\u0440\u044b\u043c\u0442\u0430\u0442\u0430\u0440\u0434\u0436\u0430"],"crh-latn":["crh"],"cs":["Latn",["EU"],"\u010desky"],"csb":["Latn",["EU"],"kasz\u00ebbsczi"],"cu":["Cyrl",["EU"],"\u0441\u043b\u043e\u0432\u0463\u0301\u043d\u044c\u0441\u043a\u044a \/ \u2c14\u2c0e\u2c11\u2c02\u2c21\u2c10\u2c20\u2c14\u2c0d\u2c1f"],"cv":["Cyrl",["EU"],"\u0427\u04d1\u0432\u0430\u0448\u043b\u0430"],"cy":["Latn",["EU"],"Cymraeg"],"da":["Latn",["EU"],"dansk"],"de-at":["Latn",["EU"],"\u00d6sterreichisches Deutsch"],"de-ch":["Latn",["EU"],"Schweizer Hochdeutsch"],"de-formal":["Latn",["EU"],"Deutsch (Sie-Form)"],"de":["Latn",["EU"],"Deutsch"],"diq":["Latn",["EU","AS"],"Zazaki"],"dsb":["Latn",["EU"],"dolnoserbski"],"dtp":["Latn",["AS"],"Dusun Bundu-liwan"],"dv":["Thaa",["AS"],"\u078b\u07a8\u0788\u07ac\u0780\u07a8\u0784\u07a6\u0790\u07b0"],"dz":["Tibt",["AS"],"\u0f47\u0f7c\u0f44\u0f0b\u0f41"],"ee":["Latn",["AF"],"e\u028begbe"],"egl":["Latn",["Line truncated
|
||||
} ( jQuery ) );
|
||||
@@ -42,6 +42,11 @@
|
||||
return $.uls.data.getScript( target );
|
||||
}
|
||||
|
||||
if ( !$.uls.data.languages[language] ) {
|
||||
// Undetermined
|
||||
return 'Zyyy';
|
||||
}
|
||||
|
||||
return $.uls.data.languages[language][0];
|
||||
};
|
||||
|
||||
|
||||
@@ -25,7 +25,9 @@
|
||||
(function ( $ ) {
|
||||
'use strict';
|
||||
|
||||
var LanguageFilter = function( element, options ) {
|
||||
var LanguageFilter, delay;
|
||||
|
||||
LanguageFilter = function( element, options ) {
|
||||
this.$element = $( element );
|
||||
this.options = $.extend( {}, $.fn.regionselector.defaults, options );
|
||||
this.$element.addClass( 'languagefilter' );
|
||||
@@ -37,7 +39,7 @@
|
||||
this.listen();
|
||||
};
|
||||
|
||||
var delay = ( function() {
|
||||
delay = ( function() {
|
||||
var timer = 0;
|
||||
|
||||
return function( callback, milliseconds ) {
|
||||
@@ -63,9 +65,11 @@
|
||||
},
|
||||
|
||||
keyup: function( e ) {
|
||||
var suggestion, query, languageFilter;
|
||||
|
||||
switch( e.keyCode ) {
|
||||
case 9: // Tab -> Autocomplete
|
||||
var suggestion = this.$suggestion.val();
|
||||
suggestion = this.$suggestion.val();
|
||||
|
||||
if ( suggestion && suggestion !== this.$element.val() ) {
|
||||
this.$element.val( suggestion );
|
||||
@@ -78,7 +82,7 @@
|
||||
break;
|
||||
}
|
||||
|
||||
var query = $.trim( this.$element.val() ).toLowerCase();
|
||||
query = $.trim( this.$element.val() ).toLowerCase();
|
||||
|
||||
if ( this.selectedLanguage ) {
|
||||
// this.selectLanguage will be populated from a matching search
|
||||
@@ -91,7 +95,7 @@
|
||||
|
||||
break;
|
||||
default:
|
||||
var languageFilter = this;
|
||||
languageFilter = this;
|
||||
|
||||
if ( e.which < 32 &&
|
||||
e.which !== 8 // Backspace
|
||||
@@ -155,14 +159,15 @@
|
||||
},
|
||||
|
||||
search: function() {
|
||||
var query = $.trim( this.$element.val() ),
|
||||
var languagesInScript,
|
||||
query = $.trim( this.$element.val() ),
|
||||
languages = $.uls.data.getLanguagesByScriptGroup( this.options.languages ),
|
||||
scriptGroup, langNum, langCode;
|
||||
|
||||
this.resultCount = 0;
|
||||
|
||||
for ( scriptGroup in languages ) {
|
||||
var languagesInScript = languages[scriptGroup];
|
||||
languagesInScript = languages[scriptGroup];
|
||||
|
||||
languagesInScript.sort( $.uls.data.sortByAutonym );
|
||||
|
||||
|
||||
+26
-20
@@ -22,8 +22,10 @@
|
||||
( function ( $ ) {
|
||||
'use strict';
|
||||
|
||||
var noResultsTemplate, LanguageCategoryDisplay;
|
||||
|
||||
/*jshint multistr:true */
|
||||
var noResultsTemplate = '\
|
||||
noResultsTemplate = '\
|
||||
<div class="twelve columns uls-no-results-view">\
|
||||
<h2 data-i18n="uls-no-results-found" class="eleven columns end offset-by-one uls-no-results-found-title">\
|
||||
No results found\
|
||||
@@ -47,7 +49,7 @@
|
||||
</div>';
|
||||
/*jshint multistr:false */
|
||||
|
||||
var LanguageCategoryDisplay = function ( element, options ) {
|
||||
LanguageCategoryDisplay = function ( element, options ) {
|
||||
this.$element = $( element );
|
||||
this.options = $.extend( {}, $.fn.lcd.defaults, options );
|
||||
this.$element.addClass( 'lcd' );
|
||||
@@ -74,7 +76,8 @@
|
||||
* @param region Optional region
|
||||
*/
|
||||
addToRegion: function ( langCode, region ) {
|
||||
var lcd = this,
|
||||
var i, regionCode, $li, $column, lastLanguage, lastScriptGroup, currentScriptGroup,
|
||||
lcd = this,
|
||||
language = lcd.options.languages[langCode],
|
||||
langName = $.uls.data.getAutonym( langCode ) || language || langCode,
|
||||
regions = [];
|
||||
@@ -90,10 +93,10 @@
|
||||
regions = [ 'WW' ];
|
||||
}
|
||||
|
||||
for ( var i = 0; i < regions.length; i++ ) {
|
||||
var regionCode = regions[i];
|
||||
for ( i = 0; i < regions.length; i++ ) {
|
||||
regionCode = regions[i];
|
||||
|
||||
var $li = $( '<li>' )
|
||||
$li = $( '<li>' )
|
||||
.data( 'code', langCode )
|
||||
.attr( {
|
||||
lang: langCode,
|
||||
@@ -104,12 +107,12 @@
|
||||
);
|
||||
|
||||
// Append the element to the column in the list
|
||||
var $column = lcd.getColumn( regionCode );
|
||||
var lastLanguage = $column.find( 'li:last' ).data( 'code' );
|
||||
$column = lcd.getColumn( regionCode );
|
||||
lastLanguage = $column.find( 'li:last' ).data( 'code' );
|
||||
|
||||
if ( lastLanguage ) {
|
||||
var lastScriptGroup = $.uls.data.getScriptGroupOfLanguage( lastLanguage ),
|
||||
currentScriptGroup = $.uls.data.getScriptGroupOfLanguage( langCode );
|
||||
lastScriptGroup = $.uls.data.getScriptGroupOfLanguage( lastLanguage );
|
||||
currentScriptGroup = $.uls.data.getScriptGroupOfLanguage( langCode );
|
||||
|
||||
if ( lastScriptGroup !== currentScriptGroup ) {
|
||||
if ( $column.find( 'li' ).length > 2 ) {
|
||||
@@ -172,7 +175,7 @@
|
||||
PA: 'Pacific'
|
||||
};
|
||||
|
||||
$.each( $.uls.data.regiongroups, function ( regionCode, regionIndex ) {
|
||||
$.each( $.uls.data.regiongroups, function ( regionCode ) {
|
||||
$section = $( '<div>' ).addClass( 'twelve columns uls-lcd-region-section' ).prop( 'id', regionCode );
|
||||
|
||||
$sectionTitle = $( '<h3 data-i18n="uls-region-' + regionCode + '">' )
|
||||
@@ -194,6 +197,9 @@
|
||||
},
|
||||
|
||||
quicklist: function () {
|
||||
var quickList, $quickListSection, $quickListSectionTitle, i,
|
||||
$column, langCode, language, langName, $li;
|
||||
|
||||
if ( $.isFunction( this.options.quickList ) ) {
|
||||
this.options.quickList = this.options.quickList();
|
||||
}
|
||||
@@ -203,24 +209,24 @@
|
||||
}
|
||||
|
||||
// Pick only the first elements, because we don't have room for more
|
||||
var quickList = this.options.quickList;
|
||||
quickList = this.options.quickList;
|
||||
quickList = quickList.slice( 0, 16 );
|
||||
quickList.sort( $.uls.data.sortByAutonym );
|
||||
|
||||
var $quickListSection = $( '<div>' ).addClass( 'twelve columns uls-lcd-region-section' ).prop( 'id', 'uls-lcd-quicklist' );
|
||||
var $quickListSectionTitle = $( '<h3 data-i18n="uls-common-languages">' )
|
||||
$quickListSection = $( '<div>' ).addClass( 'twelve columns uls-lcd-region-section' ).prop( 'id', 'uls-lcd-quicklist' );
|
||||
$quickListSectionTitle = $( '<h3 data-i18n="uls-common-languages">' )
|
||||
.addClass( 'eleven columns uls-lcd-region-section uls-lcd-region-title offset-by-one' )
|
||||
.text( 'Common languages' ); // This is placeholder text if jquery.i18n not present
|
||||
$quickListSection.append( $quickListSectionTitle );
|
||||
this.$element.prepend( $quickListSection );
|
||||
this.regionDivs.quick = $quickListSection;
|
||||
|
||||
for ( var i = 0; i < quickList.length; i++) {
|
||||
var $column = this.getColumn( 'quick', i % 4 === 0 );
|
||||
var langCode = quickList[i];
|
||||
var language = this.options.languages[langCode];
|
||||
var langName = $.uls.data.getAutonym( langCode ) || language || langCode;
|
||||
var $li = $( '<li>' )
|
||||
for ( i = 0; i < quickList.length; i++) {
|
||||
$column = this.getColumn( 'quick', i % 4 === 0 );
|
||||
langCode = quickList[i];
|
||||
language = this.options.languages[langCode];
|
||||
langName = $.uls.data.getAutonym( langCode ) || language || langCode;
|
||||
$li = $( '<li>' )
|
||||
.data( 'code', langCode )
|
||||
.attr( {
|
||||
lang: langCode,
|
||||
|
||||
@@ -22,13 +22,15 @@
|
||||
|
||||
/* RegionSelector plugin definition */
|
||||
|
||||
var RegionSelector, delay;
|
||||
|
||||
/**
|
||||
* Region selector is a language selector based on regions.
|
||||
* Usage: $( 'jqueryselector' ).regionselector( options );
|
||||
* The attached element should have data-regiongroup attribute
|
||||
* that defines the regiongroup for the selector.
|
||||
*/
|
||||
var RegionSelector = function ( element, options ) {
|
||||
RegionSelector = function ( element, options ) {
|
||||
this.$element = $( element );
|
||||
this.options = $.extend( {}, $.fn.regionselector.defaults, options );
|
||||
this.$element.addClass( 'regionselector' );
|
||||
@@ -52,10 +54,10 @@
|
||||
},
|
||||
|
||||
test: function ( langCode ) {
|
||||
var langRegions = $.uls.data.getRegions( langCode ),
|
||||
region;
|
||||
var region, i,
|
||||
langRegions = $.uls.data.getRegions( langCode );
|
||||
|
||||
for ( var i = 0; i < this.regions.length; i++ ) {
|
||||
for ( i = 0; i < this.regions.length; i++ ) {
|
||||
region = this.regions[i];
|
||||
|
||||
if ( $.inArray( region, langRegions ) >= 0 ) {
|
||||
@@ -68,10 +70,12 @@
|
||||
},
|
||||
|
||||
show: function () {
|
||||
var result, languagesByScriptGroup, scriptGroup, languages, i;
|
||||
|
||||
if ( this.cache ) {
|
||||
// If the result cache is present, render the results from there.
|
||||
//noinspection JSUnusedAssignment
|
||||
var result = null;
|
||||
result = null;
|
||||
|
||||
for ( result in this.cache ) {
|
||||
this.render( result, this.cache[result] );
|
||||
@@ -79,13 +83,13 @@
|
||||
} else {
|
||||
this.cache = {};
|
||||
// Get the languages grouped by script group
|
||||
var languagesByScriptGroup = $.uls.data.getLanguagesByScriptGroup( this.options.languages );
|
||||
languagesByScriptGroup = $.uls.data.getLanguagesByScriptGroup( this.options.languages );
|
||||
|
||||
// Make sure that we go by the original order
|
||||
// of script groups
|
||||
for ( var scriptGroup in $.uls.data.scriptgroups ) {
|
||||
for ( scriptGroup in $.uls.data.scriptgroups ) {
|
||||
// Get the languages for the script group
|
||||
var languages = languagesByScriptGroup[scriptGroup];
|
||||
languages = languagesByScriptGroup[scriptGroup];
|
||||
|
||||
// It's possible that some script groups are missing
|
||||
if ( !languages ) {
|
||||
@@ -95,7 +99,7 @@
|
||||
// Sort it based on autonym
|
||||
languages.sort( $.uls.data.sortByAutonym );
|
||||
|
||||
for ( var i = 0; i < languages.length; i++ ) {
|
||||
for ( i = 0; i < languages.length; i++ ) {
|
||||
// Check whether it belongs to the region
|
||||
this.test( languages[i] );
|
||||
}
|
||||
@@ -145,7 +149,7 @@
|
||||
this.options.$target.$element.bind( 'scrollend', $.proxy( this.next, this ) );
|
||||
},
|
||||
|
||||
click: function ( e ) {
|
||||
click: function () {
|
||||
// Don't do anything if a region is selected already
|
||||
if ( this.$element.hasClass( 'active' ) ) {
|
||||
return;
|
||||
@@ -191,7 +195,7 @@
|
||||
|
||||
$.fn.regionselector.Constructor = RegionSelector;
|
||||
|
||||
var delay = ( function () {
|
||||
delay = ( function () {
|
||||
var timer = 0;
|
||||
return function ( callback, milliseconds ) {
|
||||
clearTimeout( timer );
|
||||
|
||||
Reference in new issue
Block a user