jenkins-bot has submitted this change and it was merged.

Change subject: Update upstream jquery.uls to 10777bb
......................................................................


Update upstream jquery.uls to 10777bb

* Don't show region headings in narrow mode.
* Remove the map.

GitHub link: 
https://github.com/wikimedia/jquery.uls/commit/10777bb25ea23dc5609a1109a27e901711cc264b

Change-Id: I4fcfba5a6ef46d0bda34331c6ea111cdedd157a7
---
M lib/jquery.uls/css/jquery.uls.compact.css
M lib/jquery.uls/css/jquery.uls.css
M lib/jquery.uls/i18n/en.json
M lib/jquery.uls/i18n/qqq.json
D lib/jquery.uls/images/world_map.png
D lib/jquery.uls/images/world_map.svg
M lib/jquery.uls/src/jquery.uls.core.js
M lib/jquery.uls/src/jquery.uls.languagefilter.js
M lib/jquery.uls/src/jquery.uls.lcd.js
M lib/jquery.uls/src/jquery.uls.regionfilter.js
10 files changed, 154 insertions(+), 326 deletions(-)

Approvals:
  KartikMistry: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/lib/jquery.uls/css/jquery.uls.compact.css 
b/lib/jquery.uls/css/jquery.uls.compact.css
index f5e6e07..5600410 100644
--- a/lib/jquery.uls/css/jquery.uls.compact.css
+++ b/lib/jquery.uls/css/jquery.uls.compact.css
@@ -1,7 +1,5 @@
 .uls-compact .uls-icon-close,
-.uls-compact .uls-title-region,
-.uls-compact .uls-map-block,
-.uls-compact #uls-settings-block {
+.uls-compact .uls-title-region {
        display: none !important;
 }
 
diff --git a/lib/jquery.uls/css/jquery.uls.css 
b/lib/jquery.uls/css/jquery.uls.css
index 6074e60..f1fde4d 100644
--- a/lib/jquery.uls/css/jquery.uls.css
+++ b/lib/jquery.uls/css/jquery.uls.css
@@ -7,7 +7,6 @@
        background-image: linear-gradient(transparent, transparent), 
url('../images/icon-language.svg');
        padding-left: 30px;
 }
-
 .uls-menu {
        position: absolute;
        z-index: 1000;
@@ -25,7 +24,6 @@
        -moz-background-clip: padding;
        background-clip: padding-box;
 }
-
 .uls-wide {
        min-width: 715px;
        width: 45%;
@@ -54,18 +52,14 @@
 .uls-title-region a {
        padding-left: 15px;
 }
-
 .uls-menu .uls-title {
        font-weight: normal;
        border: none;
-       padding-top: 1.25em;
        padding-left: 15px;
-       padding-bottom: 3px;
        font-size: 18pt;
        line-height: 1.25em;
        color: #555;
 }
-
 .uls-menu .uls-no-results-found-title {
        font-size: 16pt;
        font-weight: bold;
@@ -77,7 +71,6 @@
        border-bottom: none;
        color: #555;
 }
-
 .uls-menu .uls-lcd-region-section .uls-lcd-region-title {
        color: #777;
        font-size: 14pt;
@@ -88,17 +81,6 @@
        margin-bottom: 10px;
        border-bottom: none;
 }
-
-.uls-worldmap {
-       /* @embed */
-       background: transparent url('../images/world_map.png') no-repeat scroll 
right top;
-       /* @embed */
-       background-image: -webkit-linear-gradient(transparent, transparent), 
url('../images/world_map.svg');
-       /* @embed */
-       background-image: linear-gradient(transparent, transparent), 
url('../images/world_map.svg');
-       background-size: 100%;
-}
-
 div.uls-region {
        cursor: pointer;
        padding: 0;
@@ -107,11 +89,6 @@
        border-bottom-color: transparent;
        border-bottom-style: solid;
        border-bottom-width: 2px;
-}
-
-.uls-worldmap .uls-region { /* The map doesn't flip */
-       /* @noflip */
-       float: left;
 }
 
 .uls-region a {
@@ -125,59 +102,6 @@
        overflow: hidden;
        text-overflow: ellipsis;
        width: 99%;
-}
-
-.uls-region:hover {
-       /*Cross-browser background transparency*/
-       background: #3366bb;
-       background: rgba(51, 102, 187, 0.1);
-       filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr=#253366bb, 
endColorstr=#253366bb );
-       -ms-filter: 
"progid:DXImageTransform.Microsoft.gradient(startColorstr=#253366bb, 
endColorstr=#253366bb)";
-}
-
-.uls-map-block .active {
-       border-bottom-color: #3366bb;
-       border-bottom-style: solid;
-}
-
-.uls-menu .row .uls-map-block {
-       top: 1px;
-       margin-right: 0;
-       padding-right: 0;
-       float: right;
-       overflow: hidden;
-       opacity: 0.7;
-       -moz-transition: opacity 0.2s linear;
-       -o-transition: opacity 0.2s linear;
-       -webkit-transition: opacity 0.2s linear;
-       transition: opacity 0.2s linear;
-}
-
-.uls-map-block a {
-       color: #333;
-       opacity: 0;
-       -moz-transition: opacity 0.15s linear;
-       -o-transition: opacity 0.15s linear;
-       -webkit-transition: opacity 0.15s linear;
-       transition: opacity 0.15s linear;
-}
-
-.uls-menu .uls-map-block:hover,
-.uls-menu .uls-map-block:hover a {
-       opacity: 1;
-       color: #333;
-}
-
-.uls-map-block .uls-region-1 {
-       border-color: transparent;
-}
-
-.uls-map-block:hover .active {
-       border-color: #3366bb;
-}
-
-.uls-map-block .active a {
-       font-weight: bold;
 }
 
 .uls-icon-close {
@@ -205,11 +129,9 @@
        -webkit-transition: border 0.15s linear 0s;
        transition: border 0.15s linear 0s;
 }
-
 .uls-menu .uls-languagefilter:focus {
        border: 1px solid #3366bb;
 }
-
 .uls-menu .uls-search {
        position: relative;
        filter: 
progid:DXImageTransform.Microsoft.gradient(startColorstr='#F0F0F0', 
endColorstr='#FBFBFB');
@@ -227,7 +149,6 @@
        border-bottom-style: solid;
        border-bottom-color: #DDD;
 }
-
 .uls-menu .uls-search-label {
        /* @embed */
        background: transparent url('../images/search.png') no-repeat scroll 
right center;
@@ -242,7 +163,7 @@
 }
 
 .uls-menu.uls-narrow .uls-search-label {
-       background-size: 20px;
+       background-size: 18px;
 }
 
 .uls-menu .uls-languagefilter-clear {
@@ -258,7 +179,6 @@
        width: 32px;
        margin-left: -32px;
 }
-
 .uls-menu .uls-filterinput {
        position: absolute;
        top: 0;
@@ -268,7 +188,6 @@
        width: 100%;
        text-align: left;
 }
-
 .uls-menu .uls-filtersuggestion {
        padding: 6px;
        background-color: white;
@@ -278,7 +197,6 @@
        box-shadow: 0 1px 2px transparent inset;
        left: 1px;
 }
-
 .uls-menu .uls-search-input-block {
        position: relative;
 }
diff --git a/lib/jquery.uls/i18n/en.json b/lib/jquery.uls/i18n/en.json
index 53ff123..53a50ad 100644
--- a/lib/jquery.uls/i18n/en.json
+++ b/lib/jquery.uls/i18n/en.json
@@ -1,22 +1,22 @@
 {
-"@metadata": {
-       "author": "Santhosh Thottingal <[email protected]>",
-       "last-updated": "2012-09-21",
-       "locale": "en",
-       "message-documentation": "qqq"
-},
-"uls-select-language": "Select language",
-"uls-region-WW": "Worldwide",
-"uls-region-SP": "Special",
-"uls-region-AM": "America",
-"uls-region-AF": "Africa",
-"uls-region-EU": "Europe",
-"uls-region-AS": "Asia",
-"uls-region-ME": "Middle East",
-"uls-region-PA": "Pacific",
-"uls-no-results-found": "No results found",
-"uls-common-languages": "Common languages",
-"uls-no-results-suggestion-title": "You may be interested in:",
-"uls-search-help": "You can search by language name, script name, ISO code of 
language or you can browse by region:",
-"uls-search-placeholder": "Language search"
+       "@metadata": {
+               "author": "Santhosh Thottingal <[email protected]>",
+               "last-updated": "2012-09-21",
+               "locale": "en",
+               "message-documentation": "qqq"
+       },
+       "uls-select-language": "Select language",
+       "uls-region-WW": "Worldwide",
+       "uls-region-SP": "Special",
+       "uls-region-AM": "America",
+       "uls-region-AF": "Africa",
+       "uls-region-EU": "Europe",
+       "uls-region-AS": "Asia",
+       "uls-region-ME": "Middle East",
+       "uls-region-PA": "Pacific",
+       "uls-no-results-found": "No results found",
+       "uls-common-languages": "Common languages",
+       "uls-no-results-suggestion-title": "You may be interested in:",
+       "uls-search-help": "You can search by language name, script name, ISO 
code of language or you can browse by region.",
+       "uls-search-placeholder": "Language search"
 }
diff --git a/lib/jquery.uls/i18n/qqq.json b/lib/jquery.uls/i18n/qqq.json
index 0e213ba..c108c1c 100644
--- a/lib/jquery.uls/i18n/qqq.json
+++ b/lib/jquery.uls/i18n/qqq.json
@@ -18,6 +18,6 @@
        "uls-no-results-found": "Title text for 'No results found' section",
        "uls-common-languages": "The ULS tries to guess the langugages that the 
user is most likely to pick. They are taken from geolocation (languages of the 
current country according to the IP address), previously selected languages, 
and the browser's accept-language. The list of these languages appears at the 
top of the ULS languages list, above the geographical regions. This is the 
title of that list.",
        "uls-no-results-suggestion-title": "Title for language suggestion in 
'no results found' screen",
-       "uls-search-help": "Help text for searching. After this text, there 
will be a set of links for regions.\n\n\"Script name\" is a name of a writing 
system, such as \"Latin\", \"Cyrillic\", \"Arabic\" etc.",
+       "uls-search-help": "Help text for searching.\n\n\"Script name\" is a 
name of a writing system, such as \"Latin\", \"Cyrillic\", \"Arabic\" etc.",
        "uls-search-placeholder": "Placeholder text in search box"
 }
diff --git a/lib/jquery.uls/images/world_map.png 
b/lib/jquery.uls/images/world_map.png
deleted file mode 100644
index c3f9df8..0000000
--- a/lib/jquery.uls/images/world_map.png
+++ /dev/null
Binary files differ
diff --git a/lib/jquery.uls/images/world_map.svg 
b/lib/jquery.uls/images/world_map.svg
deleted file mode 100644
index 54f68b8..0000000
--- a/lib/jquery.uls/images/world_map.svg
+++ /dev/null
@@ -1 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg"; 
width="226" height="110.282"><path d="M193.821 62.707c-.176 2.179-.181 2.492 
3.773 4.165 1.587 5.831 4.488-.838 7.46 3.732 
1.292-1.026-3.685-7.38-7.881-6.767-2.898 
3.404-1.126-1.013-3.352-1.131zm-134.265 41.902l-.075-.387c1.085.625 2.299 1.005 
3.281 
1.797-.348.039-.698.116-1.049.061-.804-.127-1.587-.331-2.403-.39.241-.301.351-.704.246-1.08zm153.278-9.772c.103-.026.179.043.243.113.064
 1.203-.951 2.149-2.031 2.475-1.303.203-2.356 1.098-3.567 
1.566-.21.144-.834.377-.716-.095 1.789-1.652 3.913-2.948 
6.072-4.058zm3.045-3.339l.142-.425c.236.693.813 1.135 1.395 
1.521.405.194.198.716-.153.834-1.102.554-2.014 1.434-3.149 
1.947l1.765-3.876zm-81.252-19.203l.176-.355c.654 1.479.422 3.174.134 4.718-.415 
1.889-.876 3.929-2.272 
5.355-.536.671-1.604.462-2.057-.194-.39-.839-.255-1.856-.142-2.756.485-2.71 
2.861-4.464 4.16-6.768zm65.746-.67l.17-.451c.323.459.205 1.016.17 
1.534-.134.518.076 1.34.754 1.257.081 2.404 1.59 4.381 2.682 6.426.887 1.501 
1.43 3.359.836 5.072-.499 1.35-1.516 2.447-2.386 3.577-1.608 1.81-3.53 
3.559-5.922 
4.195-1.343.48-2.956-.171-3.53-1.485-.527-.565-.843-1.384-.581-2.152-.154-.311-.583.046-.82.052.236.199.126.718-.298.667-2.908-.187-5.747-1.189-8.686-1.031-1.053-.012-2.035.321-2.987.739-.558.313-1.359.133-1.612-.494-.516-1.884.15-3.832.381-5.714.202-.878-.182-1.816.222-2.66.76-1.614
 2.551-2.346 4.11-2.983 1.161-.565 2.57-.883 3.415-1.918.386-.811.994-1.555 
1.776-2.039.831-.638 2.016-.463 2.811.142.076-.095.011-.501.101-.702.418-1.423 
2.067-2.107 3.458-1.993.575-.018 1.35.272 1.317.959-.266.695-.117 1.488.097 
2.18.156.759.867 1.437 1.682 1.234 1.754-.645 2.672-2.626 
2.837-4.411zm-25.318-4.252l-.066-.243c.481-.023.943.119 1.369.329l4.278 
1.141c-.856.542-1.91.513-2.886.431-1.059-.107-2.396-.491-2.695-1.659zm10.436-5.176c.697-.1
 1.125.536 1.236 1.141.102.751.236 1.766-.465 
2.276-.422-.186-.636-.619-.774-1.031-.159.695-.392 1.375-.835 
1.947-.324-.942-.233-1.96.017-2.903.196-.487.169-1.321.82-1.43zm1.713-1.447c.314-.014.629.046.924.147.506.049.457.74.153
 1.005-.874.544-1.907-.147-2.851.069.267-.72 1.017-1.208 
1.774-1.222zm-19.391-2.366c-.387-.692-.35-.573.251-.248 2.323 1.32 4.654 2.983 
5.901 5.419.36.882.765 1.874.539 
2.848-.244.239-.722-.046-.958-.274-2.303-2.239-4.111-4.971-5.734-7.744zm14.633-1.45c.084-.2.15-.09.286-.02.439.382
 1.137.618 1.288 1.233-.18.592-.759 1.1-.826 1.768.687.848.54 2.054.188 
3.013-.407 1.111-1.278 2.382-2.597 
2.36-.806-.149-1.555-.576-2.273-.956-.755-.361-1.282-1.269-.939-2.094 
1.152-2.16 3.423-3.386 
4.873-5.303zm-138.425-1.739zm144.329-.523l.133-.133c.338.345.688.702.872 
1.155.309.76-.712 1.193-.61 1.947-.676-.444-1.488-.701-2.028-1.326.398-.687 
1.125-1.059 1.632-1.644zm-4.038-7.089l.004-.005c.394-.136 1.03-.01 
1.302.389.366 1.039-.81 2.145-.055 
3.108-.339.09-.624-.112-.844-.336-.976-.713-1.174-2.22-.406-3.156zm-140.187-3.7c.114-.012.228.005.338.035
 1.463.705 3.104 1.187 4.304 
2.346-.402.34-.948.287-1.436.266-.385.116-.614-.271-.644-.601-.737-1.066-2.201-1.167-3.371-1.323-.203.03-.806-.127-.477-.373.382-.21.87-.202
 1.285-.349zm143.876-8.406l.124-.286c.454.594 1.007 1.194 1.057 
1.979-.756-.099-1.544-.912-1.181-1.693zm-72.953-3.591c.046-.348.294-.025.439.043.272.181.701.685.693.075.273-.036.737.323.508.627-.347.113-.48-.399-.802-.2-.362.208-1.068-.064-.839-.545zm76.962-2.256c-.147-.602-.032-.366.332-.156
 1.14.732 1.089 2.253 1.361 3.432.224.356.326.887-.11 1.144-1.34 
1.231-3.307.854-4.971.985.29-.235.579-.47.914-.638 1.712-.862 2.909-2.837 
2.474-4.766zm-1.358-2.998c.034-.033-.212-.641-.013-.401.926.855 2.494.518 3.231 
1.643-.828.274-1.572.911-2.49.861-.642-.49-.477-1.414-.728-2.103zm-65.772-1.632c-.898.275-1.461
 1.093-2.126 1.727-.362-.628-.901-1.226-1.646-1.361-1.062-.171-1.729.978-1.956 
1.866-.023.546.34 1.101.228 1.681 2.198.135 4.529.51 6.788.355.411-.033 
1.157-.035 
1.219-.578-.483-1.02-1.661-1.445-2.565-2.025-.466-.114-.244-.662-.017-.898.064-.211.353-.629.075-.768zm8.105-.205c-.827.179-1.901.563-2.112
 1.502-.138 1.391 1.013 2.453 1.898 3.359-.455.805.028 1.765.638 2.334.58.496 
1.406 1.159 
2.218.835.569-.451.192-1.281-.026-1.827-.897-.976-1.733-2.159-1.768-3.552.067-.932.056-2.107-.849-2.652zm-86.304-1.476l-.11.162c-.596.461-1.433.492-2.1.83-.186.097-.669.229-.551.513
 1.295.498 2.771.179 
4.087.659-.665.41-1.398.665-2.143.867-.599-.007-.8.565-1.014 
1.023-.092.418-.554.868-.381 1.294 1.202-.645 1.894-2.023 
3.175-2.588.213.416.069.881-.084 1.288.118.121.548.005.797-.009.581-.061 
1.474-.298 
1.407-1.049-.544-1.388-1.938-2.142-3.082-2.99zm20.038-1.667l.503-.3c-.133.446-.387.813-.734
 1.106.116.29.522.535.734.815.333.426.858.828.927 
1.392-.156.439-.779.075-1.124.116-.728-.138-1.68-.365-1.938-1.158-.062-.963.947-1.499
 1.632-1.97zm119.909-1.32l-.162-.48c1.034.574 1.723 1.598 2.631 
2.328.146.297.387.073.552.289-.016.243.061.389.237.595.359.727.817 1.477.734 
2.322-1.625-1.427-2.821-3.244-3.992-5.055zm-89.58-1.837c.382-.033.845.182.893.601-.128
 1.258-1.3 2.309-2.556 2.386.24-1.106.529-2.481 
1.664-2.987zm1.982-2.178l.199-.15c.031.487.575.523.878.771.232.378-.312.763-.604.956.794.611
 1.751 1.374 2.195 2.383.34.484.261 1.233-.309 
1.499-.611.267-1.324.132-1.96.35-.343.022-1.004.33-1.105-.188.168-.67.672-1.248.829-1.935.16-.28.01-.743.269-.933.096-.189-.267-.402-.332-.584-.481-.583-.802-1.643-.061-2.169zm-34.458-1.73l.144.009c.446.24-.134.893-.451.503-.352-.193.089-.442.306-.511zm28.865-4.194c.217-.027.395.143.531.289.391.233.432.826.029
 
1.072-1.316.6-2.891.641-4.272.251-.416-.204.025-.64.326-.676-.262-.151-.491-.348-.713-.555
 1.364-.16 2.839.257 
4.099-.381zm-34.397-4.42c.139-.017.604-.326.352.009-.228.192-.118.357.105.338.396-.091.452.385.179.581.236.05.493-.381.745-.5
 1.12-.083 2.292-.027 3.429.027.404.122 1.02-.073 
1.302.308-.082.308.191.178.419.222.702-.039 1.075.733 
1.763.739.202.018-.507.494-.138.617.254.248-.191.517-.447.525.616.618 1.622.996 
2.507 
1.228-.087.292-.241.576-.494.751-.938.551-1.962-.44-2.938-.188.259.448.725 
1.001.604 1.612-.429.882-1.679.465-2.285 
1.129-.749-.46-1.531-.844-2.299-1.262-.271-.24-.961-.316-.852-.797.685-.469 
1.617-.594 2.435-.792.283-.086 
1.082-.118.428-.277-1.076-.408-.868-1.82-1.629-2.51-.515.094-1.08.274-1.635.274-.967-.016-2.193.013-2.811-.872-.054-.696.754-.941
 1.259-1.161zm-1.49-.728c.389-.004.776.062 
1.164.084-.502.316-1.014.6-1.554.841-.741.434-1.773.757-2.025 1.67.005.588.578 
1.079 1.118 1.231 1.327.072 2.579-.627 
3.911-.647-.024.362-.143.718-.396.985-1.388 1.256-3.419 1.125-5.15 
1.45-.289.053-.111.362.15.373-1.037.854-2.403 1.02-3.573 1.603-.997.647-2.076 
1.209-2.943 2.034-.417.369-.763 1.003-.332 1.499.808.908 2.1 1.137 3.099 
1.768.605.377 1.459.962 1.173 1.797-.271.49-.173 1.255.399 1.47.72-.01 
1.283-.611 1.753-1.092 1.114-1.365 2.327-2.839 2.62-4.633.355-1.925 2.793-2.803 
4.486-2.054.703.184 1.192 1.032.809 1.698-.209.239-.563.643-.263.947.862.155 
1.623-.52 
2.429-.748.308-.28.642.186.581.202-.348-.388.285-.424.428-.142.216.282-.196.606-.364.26.244.489.648
 1.256.89 1.883.136.513.485 1.043.352 
1.586-.192.244.037.147.228.124.433-.177.802.327.612.719-1.163 2.073-3.928 
2.922-6.144 2.152-1.166.631-2.381 1.252-3.536 1.898 1.026-.16 2.108-.615 
3.18-.812-.188.279-.572.502-.531.881.369.846 1.438 1.033 2.244 
1.23.562-.012.308.261.015.471-.905.489-1.843 1.275-2.941 
1.063.016-.453.29-.827.618-1.115-.366.095-.713.19-1.069.318-2.817.875-4.428 
3.807-7.291 4.561-.361-.073-.324.398-.442.612-.032.361-.489.333-.612.035-.399 
0-.408.59-.531.878-.257.277.103.505.165.777.059.842-.84 1.322-1.461 
1.693-1.276.854-2.946 1.589-3.372 3.203-.063 1.275-.006 2.576-.329 
3.827-.492-.781-.828-1.643-1.314-2.429-.561-.989-1.676-1.883-2.886-1.551-.731.055-.959.821-1.401
 1.277-.312.435-.75.054-1.011-.234-.84-.595-1.969-.102-2.813.268-1.427.42-2.328 
1.773-2.6 3.172-.301 1.587-.224 3.454.869 4.735.594.725 1.662.743 2.409.251 
1.07-.662 1.883-1.871 3.212-2.036.171.461.01.948-.144 1.392-.235 1.063-.919 
2.238-.402 3.328.634.727 1.74.28 2.525.087-.129.88-.266 1.814-.062 2.683.231 
1.153 1.134 2.108 2.299 2.351 1.822.277 3.681-.489 
5.068-1.658.29-.129.477-.717.815-.534.197.428-.06 1.01.185 
1.424.365-.148.425-.686.78-.89.642-.589 1.592-.129 2.086.425.584.145 1.24-.091 
1.854-.064.961-.084 1.871.338 2.559.985.481.554 1.158.885 1.67 1.401.783 1.309 
2.395 1.482 3.706 1.973 1.136.345 2.131 1.277 2.32 2.478.204.534-.273.867-.607 
1.216-.253.4-.831.752-.754 1.283.456.325 1.032-.13 
1.525-.176.386.268-.167.533-.37.711.39-.09.832-.242 1.259-.266 1.716.005 3.167 
1.231 4.893 1.251 1.489.181 3.22.61 4.021 2.002.722 1.453.14 3.161-.41 
4.584-.983 2.753-2.713 5.439-2.429 8.469-.449.082-.888.217-1.3.413-2.274 
1.198-3.606 3.606-4.359 5.994-.2.31-.018 1.017-.549 1.005-1.446.354-2.411 
1.642-3.703 2.305.408.53 1.042 1.32.809 2.135-.518 1.607-2.304 2.178-3.4 
3.307-.522.374-.136 1.139.413 1.228-.178.309-.408.581-.569.901-.825 1.924.65 
3.91.202 5.881.023.484-.189.106-.422.064-.645.103-.743.994-1.352 
1.135-.849-.141-1.31-1.016-1.876-1.572-.535-.904-.65-2.168-1.643-2.76-.375-.177.225-.429.321-.667.401-1.025.065-2.251-.618-3.088-.256-.483-.916-.527-1.098-1.051-1.376-4.467-.111-9.203-.724-13.762-.249-2.497-1.533-5.03-3.811-6.21-1.168-1.254-2.107-2.735-2.975-4.226-1.43-2.598-2.508-5.69-1.701-8.669
 1.399-.802 2.02-2.494 
1.958-4.044.001-1.134-.537-2.286-1.607-2.783-.62-.038-1.302.153-1.857.484-2.054-1.615-3.445-3.941-5.688-5.346-.671-.381-1.349-.862-2.135-.951-1.85.431-3.917-.1-5.269-1.447-2.67-2.679-3.112-6.665-4.942-9.85-.155-.183-.318-.81-.664-.595-.155
 1.754.45 3.473.835 
5.162.038.404-.469.261-.537-.035-1.359-1.808-1.55-4.149-1.852-6.326-1.154-1.025-1.924-2.543-1.872-4.113.2-2.997
 2.103-5.461 
3.643-7.92.086-.362.525-.361.704-.064.388.339.819-.157.841-.557.083-.573.036-1.468-.653-1.62-.399.189-.775-.248-.497-.621.188-.47.595-1.267-.058-1.571.055-.496.533-.877.453-1.392-.507-.788.411-1.536.315-2.334-.262-.508-.941-.065-1.381-.162-.475-.022-.521-.546-.453-.904-1.613-.025-3.221-.885-4.859-.549-.355.064-.917.356-1.088.334.031-.189.616-.423.395-.599-2.317.831-4.486
 2.103-6.828 2.905-.285.07-.936.48-.844-.077.556-.385 1.377-.465 
1.753-1.075-.085-.367-.662-.224-.942-.272-.578.178-1.379-.312-1.213-.971.491-.901
 1.505-1.36 2.4-1.785 1.031-.509 2.117-.865 
3.189-1.291-.229.013-.648.14-.959.142-.408.012-1.165.036-1.138-.552.511-1.013 
1.938-1.085 2.868-.647.838-.077 1.127-1.037 1.557-1.635 1.012-1.276 2.821-1.315 
4.324-1.337 2.332-.704 4.812-.254 7.152.202 1.984.3 4.051 1.034 6.037.399 
1.111-.206 2.276-.203 3.411-.242 1.342-.057 2.667.193 3.888.756 1.228.459 2.523 
1.109 3.868.858.526-.049.748-.627 1.259-.708 1.55-.173 3.214-.39 
4.703.185.432.215.12.726-.205.869.964-.159 1.99-1.031 2.322-2.062.413-1.587 
2.066-2.484 3.599-2.707zm-13.513-.208c.566.111 1.136.201 
1.716.208.437.124.08.584-.222.624 1.268-.172 2.478.829 
3.726.381.336-.159.668-.702 1.086-.364.424.614-.222 1.288-.318 
1.906-1.42-.314-2.903-.213-4.344-.087.054.26-.302.368-.459.19-.067-.263-.42-.134-.725-.201.026.255-.591.359-.546.035l-.277-.428c.154-.264-.258-.315-.147-.586-.492.038-1.162.2-1.739.142-.33-.049-1.032-.067-.916-.563.811-.846
 2.092-.944 3.166-1.257zm87.286-.529l-.158.282c-.874.644-1.106 1.77-1.203 
2.795-.676-.165-1.005-.807-1.496-1.231.637-.571 1.319-1.086 
2.045-1.545.362-.44.581.055.812-.3zm.015-.017zm2.525-.979c.388-.005.757.157 
1.138.228-.926.391-1.932.45-2.9.676-.614.104-.554.221-.514-.179.674-.419 
1.484-.633 2.276-.725zm-75.463.254l-.069-.269c.546.054 1.08.212 1.588.395 
1.475.795 3.204.512 
4.807.625-1.267.852-2.901.88-4.339.518-.73-.237-1.729-.438-1.987-1.269zm91.721-.538l.015-.022.052-.077c1.028.155
 2.003.699 3.068.508.787-.049 1.831-.413 2.449.274.146.818-.688 1.322-.913 
1.993.431.062.818-.339 1.219-.465.205-.247.519-.176.846-.191 2.712.047 
5.488.074 8.094.876.199-.008.795.41.682.202 1.416.048 2.813.311 
4.226.39.584-.047 1.409.216 1.762-.378 1.99-.142 3.951.385 5.908.664 5.147.926 
10.376 1.414 15.612 1.291 2.564 1.029 5.395 1.195 8.045 1.984.713.176 1.436.703 
1.412 
1.516-1.374-.545-2.831-.963-4.327-.832-.353.025-1.079.075-1.037.581.672.894 
1.906 1.018 2.881 1.416.342.145-.624.304-.848.476-1.573.771-3.209 1.841-5.046 
1.543.549 1.307 1.767 2.124 2.418 3.362.427.608.162 1.341-.078 
1.956.022.441-.332.961-.823.809-1.541-.783-2.454-2.389-3.166-3.902-.472-1.085-.866-2.524-.038-3.541-1.018.278-2.375-.228-3.423.28-.523.413-.074
 1.157.24 1.557-1.058-.017-2.116-.079-3.175-.059-1.476.103-3.128.024-4.336 
1.006-.784.677-.31 1.851.228 2.536 1.555.207 3.08.905 4.211 2.016 1.649 1.462 
1.996 4.037 1.057 5.997-.87.175-1.922.338-2.415 1.158-.626 1.217.148 2.563.468 
3.762.353.895.568 2.05-.17 
2.816-.12-.246-.205-.502-.234-.774-.167-1.342-1.446-2.131-2.631-2.499-.891-.285-2.118-.579-2.314-1.658-.296.073-.625.24-.924.368-.381.217-1.127.457-1.023
 1.015.647.827 1.855.785 2.669 
1.392.436.178.238.727-.124.852-.503.117.04.631.087.953.52 1.549 1.519 2.835 
2.481 4.145-.087 1.453-.537 2.875-1.35 4.077-.395.438-.669 1.118-1.276 
1.284-1.234-.139-2.274.688-3.206 
1.381-.629.613-1.65.431-2.236-.147-.302.274-.533.748-.595 1.179-.216 2.142 
1.454 3.843 1.831 5.867.372 1.278-.598 2.536-1.768 
2.952-.277-.382-.559-.764-.884-1.106-.766-.766-1.54-1.707-2.646-1.956-.79-.151-1.092.826-1.066
 1.441-.167.618.378.999.682 1.462 1.238 1.853 2.32 3.882 2.712 
6.106-.702-.651-1.308-1.379-1.808-2.194-.286-.635-.87-1.009-1.216-1.593-1.152-2.217-.686-4.883-1.6-7.175-.215-.898-1.355-1.199-2.071-.693-.232-.497-.473-.99-.726-1.477-.727-1.295-1.463-2.669-2.572-3.662-.36-.353-.747.135-.647.514.255.046.447.367.248.607-1.254
 1.17-2.875 1.893-4.295 2.837-.46.369-1.07.633-1.427 1.115-.41 1.746-.6 
3.655-1.707 
5.142-.258.528-.949.778-1.447.428-.718-.631-1.056-1.589-1.394-2.46-.724-1.92-.666-4.07-1.61-5.902-.701-1.513-2.603-1.796-3.51-3.134-2.194-1.452-4.916-1.58-7.447-2.031-2.411-.344-4.89-1.3-6.395-3.293-.299
 1.094.025 2.285.677 3.18.714 1.085 2.171 1.845 3.431 1.236.432-.381 1.035-.414 
1.566-.214 1.1.181 1.662 1.376 1.522 2.403-.37 2.255-1.959 4.278-4.041 
5.228-1.195.354-2.015 1.424-3.192 
1.823-1.018.483-2.286.184-3.024-.653-2.088-2.586-2.38-6.184-4.466-8.767-.934-.943-1.375-2.313-2.49-3.07-.245-.27-.514.061-.491.312.288
 2.155 1.522 4.035 2.782 5.757.668 2.244 1.646 4.424 3.247 6.161 1.503 1.788 
4.053 2.924 6.352 2.114.3-.181.638.151.419.439-1.439 4.393-5.225 7.396-7.287 
11.454-1.416 2.52-1.362 5.707-.021 8.237-.315.254-.617.521-.904.806-2.598 
2.454-3.362 6.092-4.815 9.235-1.24 2.644-3.191 5.242-6.049 
6.202-1.339.549-2.928.09-3.88-.958-1.816-2.155-2.347-5.081-2.614-7.823.087-.574-.276-1.006-.618-1.406-1.3-1.854-1.163-4.287-.795-6.42.369-2.281.968-4.817-.204-6.963-.425-.914-1.318-1.414-1.895-2.204-.652-1.33.218-2.738.251-4.102.11-.926-.909-1.427-1.71-1.389-.48-.319-.973-.759-1.566-.921-2.677-.695-5.342.602-8.021.688-1.683.17-3.486-.532-4.385-2.005-.591-1.332-1.614-2.382-2.374-3.602-1.042-1.614-.482-3.602-.159-5.344-.107-1.139-.137-2.337.261-3.434
 1.349-3.784 4.995-6.02 7.006-9.365.251-.222.197-.765.601-.806 1.577.472 
3.241-.037 4.784-.452 1.666-.334 3.358-1.14 5.078-.741.899.306.89 1.455.667 
2.213.98 1.136 2.422 2.054 3.943 2.302 2.09.229 4.156-.625 6.251-.266.883.04 
1.521.738 2.392.829 1.95.424 4.002-1.068 
4.35-2.981.176-.775-.228-1.666-1.04-1.869-.948-.319-1.973-.075-2.883.237-1.257.208-2.392-1.093-2.328-2.305-.031-.788.84-1.154
 
1.516-1.101.187-.024-.467-.221-.589-.309-.378.256-.837.348-1.286.386-.723.081-1.626-.028-2.152.547.228.399.508.801.578
 
1.285-1.961-1.768-3.834-3.642-6.056-5.086-.34-.177-.784-.632-1.177-.414-.05.785.628
 1.426.997 2.086.907.315 2.018.744 2.218 1.811.191.65-.422 1.43-1.115 
1.158-1.11-.414-1.264-1.779-2.08-2.515-.966-1.146-2.552-1.787-4.018-1.347-2.319.799-3.928
 2.809-5.252 4.758-.474 1.05-1.729 1.55-2.827 
1.354-1.686-.418-2.457-2.444-2.106-4.041.142-1.118 1.195-1.946 
2.308-1.941.883.044 1.828.304 
2.66-.144.625-.209.558-.987.269-1.447-.345-.839-1.221-1.488-1.199-2.461.299-.616
 1.149-.507 1.73-.494 1.225-.926 2.738-1.461 4.079-2.208.958-.483 1.987-1.416 
1.73-2.602-.316-.535.303-.979.656-1.285.195.463.182.959.286 1.439.127.898 1.181 
1.274 1.958 1.014.965.219 2.035.225 2.969-.136 1.249-.524 2.514-1.446 
2.877-2.816-.045-.392.356-.451.635-.592.618-.327 1.382-.444 
1.921-.875-1.07-.269-2.284-.083-3.406-.225-.238-.638-.255-1.34-.136-2.005.014-.525.407-1.034.309-1.543-1.008.303-1.772
 1.14-2.66 1.693.475 1.134.173 2.458-.37 3.524-.403.775-1.12 1.768-2.126 
1.554-1.043-.444-1.351-1.689-1.589-2.692-.624.436-1.271 
1.006-2.083.968-.627-.285-.424-1.136-.653-1.672-.052-.342-.599-.127-.546-.526.601-.988
 1.803-1.389 2.87-1.644.756-.015 1.184-.682 1.595-1.227.519-.627.82-1.447 
1.45-1.961.145-.197.395-.709.708-.41 1.082-.34 2.182-.958 3.362-1.043.796.101 
1.538-.395 2.328-.234.755.261 1.389.846 2.218.933 1.363.078 2.753.313 
4.001.89.327.038.525.473.179.65-1.036.373-2.171.537-3.279.459-.366-.056.37.439.447.583.496.51
 1.373 1.266 2.087.68.871-.645 1.9-1.192 
3.024-1.096-.077-.317-.485-.92-.078-1.248.849-.178 1.721.266 2.574.332.845.142 
1.671-.153 2.322-.69 1.596-.731 3.434-.294 5.121-.191.528-.047 1.186.238 
1.629-.139.064-.606-.721-.881-1.054-1.294.355-.419.762-.826 
1.291-1.008.751-.322 1.377.435 1.543 1.092.443.988.368 2.151.971 
3.068.399.32.766-.319.945-.607.135-.534.745-.551 
1.193-.557.145-.028.586.052.595-.113-.527-.262-1.144-.329-1.664-.63-.9-.377-1.734-1.252-1.519-2.302.493.152.863.522
 1.3.777.293.197-.058-.155-.006-.295.433-.332 1.014-.308 
1.531-.237.281.15.533-.181.399-.442-.067-.713.768-.959 
1.332-.979.412-.162.067.268.269.43.67.312 1.478.054 2.166-.127 1.396-.478 
2.999-.914 3.891-2.181zm-99.416-.164c.562-.012 1.097.117 
1.522.517-1.042.404-2.172.462-3.277.567-.944.193-.149-.236.247-.498.474-.315 
1.022-.434 1.508-.586zm5.65-.89c.575-.046 1.106.304 
1.652.442-.593.139-1.208.238-1.814.136-.416-.074-.149-.555.162-.578zm12.227-.234c.254-.042.278.247.196.416-.526.716-1.59.682-2.383.924-.692.026-.055.179.283.3-.541.108-1.081.228-1.635.237-.88-.036-1.827.073-2.64-.295.534-.306
 1.168-.175 1.756-.231.56.232 1-.392 1.051-.89 1.141.217 2.287-.139 
3.371-.462zm41.295-.159c.7.038 1.416.229 
1.938.725-.541.517-1.296.644-2.009.745-.581.167-1.544.105-1.668-.63.227-.672 
1.135-.714 1.739-.841zm-47.288-.685c.359-.027.699.112 1.04.217.34.118 
1.038.14.979.644-.687.666-1.759.798-2.692.79-.295.073-.796-.099-.607-.478-.175-.097-.574-.165-.786-.352.557-.535
 1.346-.649 2.065-.82zm9.977-.84c.926-.031 1.851.051 
2.776.081.199-.059.753.128.433.349-.512.223-1.117.188-1.664.3-.302.349-.821.42-1.274.543-1.077.387-2.225.449-3.365.457-.38.147-.314-.234-.191-.446-.777-.302-1.685-.064-2.496
 
0-.142.152-.395.119-.578.228.065-.472-.49-.337-.768-.494-.348-.072-1.273-.339-.458-.436
 2.523-.209 5.058-.387 
7.584-.584zm16.855-.344c.159-.012.303.082.436.153.928.401 2.069-.092 
2.984.43-.779.331-1.648.199-2.473.24.705.082 1.744.208 2.58.275.97.137 
1.955-.033 
2.92.04.099.33-.237.366-.471.399-.19.094-.766-.109-.647.251-.352.375-.824.613-1.15.997-.507.378.02
 1.009-.309 
1.459-.259.281-1.068.437-.742.962-.349.239-.72.436-1.129.54-.543.21-1.284-.307-1.698.208.084.641.908.75
 1.32 1.129-.572.207-1.181.156-1.776.15-.488-.143-.797.276-.994.659.549.06 
1.411.008 2.054.17-2.747 1.214-5.77 1.608-8.567 2.663-1.892.891-3.426 
2.462-4.561 
4.197-.134.514-.572.105-.881-.012-.822-.504-1.883-.995-2.14-2.013-.145-.428.114-.827.37-1.118-.077-.328-.602-.363-.763-.673-.248-.674.604-.995
 
1.075-1.213-.144-.223.044-.441.263-.523.367-.235.979-.763.589-1.222-.237-.482.449-.342.664-.557.191-.406-.278-.813-.586-1.002-.168.109-.468.535-.635.168.006-.578.353-1.142.191-1.748-.092-.789-.975-.97-1.629-.962-1.139.053-2.277.07-3.411-.026.347-.17.659-.408
 1.023-.531.352-.252-.254-.376-.453-.425 2.373-.786 4.722-1.663 7.155-2.247 
2.663.205 5.328-.172 7.99-.272.411.106.591-.455 1.002-.292.791-.067 1.675.062 
2.403-.254z" fill="#d9d9d9"/></svg>
\ No newline at end of file
diff --git a/lib/jquery.uls/src/jquery.uls.core.js 
b/lib/jquery.uls/src/jquery.uls.core.js
index e259728..57b978b 100644
--- a/lib/jquery.uls/src/jquery.uls.core.js
+++ b/lib/jquery.uls/src/jquery.uls.core.js
@@ -28,33 +28,8 @@
        template = '<div class="grid uls-menu"> \
                        <div class="row"> \
                                <span id="uls-close" 
class="uls-icon-close"></span> \
-                       </div> \
-                       <div class="row"> \
                                <div class="uls-title-region seven columns">\
                                        <h1 data-i18n="uls-select-language" 
class="uls-title">Select Language</h1>\
-                               </div>\
-                               <div class="five columns uls-map-block" 
id="uls-map-block">\
-                                       <div class="row">\
-                                               <div data-regiongroup="1" 
id="uls-region-1" class="three columns uls-region uls-region-1">\
-                                                       <a 
data-i18n="uls-region-WW">Worldwide</a>\
-                                               </div>\
-                                               <div class="nine columns">\
-                                                       <div class="row 
uls-worldmap">\
-                                                               <div 
data-regiongroup="2" id="uls-region-2" class="four columns uls-region">\
-                                                                       <a 
data-i18n="uls-region-AM">America</a>\
-                                                               </div>\
-                                                               <div 
data-regiongroup="3" id="uls-region-3" class="four columns uls-region">\
-                                                                       
<a><span data-i18n="uls-region-EU">Europe</span><br>\
-                                                                       <span 
data-i18n="uls-region-ME">Middle East</span><br>\
-                                                                       <span 
data-i18n="uls-region-AF">Africa</span></a>\
-                                                               </div>\
-                                                               <div 
data-regiongroup="4" id="uls-region-4" class="four columns uls-region">\
-                                                                       
<a><span data-i18n="uls-region-AS">Asia</span><br>\
-                                                                       <span 
data-i18n="uls-region-PA">Pacific</span></a>\
-                                                               </div>\
-                                                       </div>\
-                                               </div>\
-                                       </div>\
                                </div>\
                        </div>\
                        <div id="search" class="row uls-search"> \
@@ -88,9 +63,9 @@
                this.languages = this.options.languages;
 
                for ( var code in this.languages ) {
-                       if ( $.uls.data.languages[code] === undefined ) {
+                       if ( $.uls.data.languages[ code ] === undefined ) {
                                // Language is unknown to ULS.
-                               delete this.languages[code];
+                               delete this.languages[ code ];
                        }
                }
 
@@ -100,7 +75,6 @@
                this.initialized = false;
 
                this.$languageFilter = this.$menu.find( '#uls-languagefilter' );
-               this.$regionFilters = this.$menu.find( '.uls-region' );
                this.$resultsView = this.$menu.find( 'div.uls-language-list' );
 
                this.render();
@@ -147,7 +121,7 @@
                        var pos;
 
                        pos = $.extend( {}, this.$element.offset(), {
-                               height: this.$element[0].offsetHeight
+                               height: this.$element[ 0 ].offsetHeight
                        } );
 
                        return {
@@ -166,7 +140,7 @@
                                narrow: 'uls-narrow'
                        };
 
-                       this.$menu.addClass( 
widthClasses[this.options.menuWidth] );
+                       this.$menu.addClass( widthClasses[this.getMenuWidth()] 
);
                        this.$menu.css( this.position() );
 
                        if ( this.options.compact ) {
@@ -176,11 +150,6 @@
                        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;
                        }
 
@@ -205,12 +174,6 @@
                        }
                },
 
-               defaultSearch: function () {
-                       this.$resultsView.lcd( 'empty' );
-
-                       this.$regionFilters.regionselector( 'show' );
-               },
-
                /**
                 * Hide the ULS window
                 */
@@ -231,7 +194,6 @@
                 * Callback for no results found context.
                 */
                noresults: function () {
-                       $( '.regionselector' ).removeClass( 'active' );
                        this.$resultsView.lcd( 'noResults' );
                },
 
@@ -239,10 +201,10 @@
                 * callback for results found context.
                 */
                success: function () {
-                       $( '.regionselector' ).removeClass( 'active' );
                        this.$resultsView.show();
                },
 
+               /**
                /**
                 * Bind the UI elements with their event listeners
                 */
@@ -258,10 +220,6 @@
 
                        // Register all event listeners to the ULS here.
                        this.$element.on( 'click', $.proxy( this.click, this ) 
);
-
-                       this.$languageFilter.on( 'searchclear.uls', $.proxy( 
this.defaultSearch, this ) );
-                       this.$languageFilter.on( 'noresults.uls', $.proxy( 
this.noresults, this ) );
-                       this.$languageFilter.on( 'resultsfound.uls', $.proxy( 
this.success, this ) );
 
                        // Close when clicking on the close button
                        this.$menu.find( '#uls-close' ).on( 'click', $.proxy( 
this.cancel, this ) );
@@ -280,7 +238,7 @@
 
                        lcd = this.$resultsView.lcd( {
                                languages: this.languages,
-                               columns: columnsOptions[this.options.menuWidth],
+                               columns: columnsOptions[ this.getMenuWidth() ],
                                quickList: this.options.quickList,
                                clickhandler: $.proxy( this.select, this ),
                                source: this.$languageFilter,
@@ -296,7 +254,7 @@
                        } );
 
                        // Create region selectors, one per region
-                       this.$menu.find( '.uls-region, .uls-region-link' 
).regionselector( {
+                       this.regionFilter = new $.uls.RegionSelector( {
                                $target: lcd,
                                languages: this.languages,
                                success: function ( regionfilter ) {
@@ -315,6 +273,10 @@
                                        uls.$languageFilter.languagefilter( 
'clear' );
                                }
                        } );
+
+                       this.$languageFilter.on( 'searchclear.uls', $.proxy( 
this.regionFilter.show, this.regionFilter ) );
+                       this.$languageFilter.on( 'noresults.uls', $.proxy( 
this.noresults, this ) );
+                       this.$languageFilter.on( 'resultsfound.uls', $.proxy( 
this.success, this ) );
 
                        $( 'html' ).click( $.proxy( this.cancel, this ) );
                },
@@ -382,10 +344,34 @@
 
                        if ( !isSupported ) {
                                this.$element.setAttribute( eventName, 
'return;' );
-                               isSupported = typeof this.$element[eventName] 
=== 'function';
+                               isSupported = typeof this.$element[ eventName ] 
=== 'function';
                        }
 
                        return isSupported;
+               },
+
+               /**
+                * Get the panel menu width parameter
+                * @return string
+                */
+               getMenuWidth: function () {
+                       var languagesCount;
+
+                       if ( this.options.menuWidth ) {
+                               return this.options.menuWidth;
+                       }
+
+                       languagesCount = Object.keys( this.options.languages 
).length;
+
+                       if ( languagesCount < 12 ) {
+                               return 'narrow';
+                       }
+
+                       if ( languagesCount < 100 ) {
+                               return 'medium';
+                       }
+
+                       return 'wide';
                },
 
                isMobile: function () {
@@ -407,7 +393,7 @@
                        }
 
                        if ( typeof option === 'string' ) {
-                               data[option]();
+                               data[ option ]();
                        }
                } );
        };
@@ -418,7 +404,9 @@
                languages: $.uls.data.getAutonyms(), // Languages to be used 
for ULS, default is all languages
                quickList: null, // Array of language codes or function that 
returns such
                compact: false, // Show ULS in compact mode
-               menuWidth: 'wide', // The options are wide (4 columns), medium 
(2 columns), and narrow (1 column)
+               // The options are wide (4 columns), medium (2 columns), and 
narrow (1 column).
+               // If not specified, it will be set automatically.
+               menuWidth: null,
                showRegions: [ 'WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA' ],
                languageDecorator: null // Callback function to be called when 
a language link is prepared - for custom decoration.
        };
diff --git a/lib/jquery.uls/src/jquery.uls.languagefilter.js 
b/lib/jquery.uls/src/jquery.uls.languagefilter.js
index ad0f2ea..0b9453a 100644
--- a/lib/jquery.uls/src/jquery.uls.languagefilter.js
+++ b/lib/jquery.uls/src/jquery.uls.languagefilter.js
@@ -29,7 +29,7 @@
 
        LanguageFilter = function( element, options ) {
                this.$element = $( element );
-               this.options = $.extend( {}, $.fn.regionselector.defaults, 
options );
+               this.options = $.extend( {}, $.fn.languagefilter.defaults, 
options );
                this.$element.addClass( 'languagefilter' );
                this.resultCount = 0;
                this.$suggestion = this.$element.parents().find( '#' + 
this.$element.data( 'suggestion' ) );
diff --git a/lib/jquery.uls/src/jquery.uls.lcd.js 
b/lib/jquery.uls/src/jquery.uls.lcd.js
index 3c07249..c3e8a1c 100644
--- a/lib/jquery.uls/src/jquery.uls.lcd.js
+++ b/lib/jquery.uls/src/jquery.uls.lcd.js
@@ -34,14 +34,7 @@
                                <p>\
                                        <span data-i18n="uls-search-help">You 
can search by language name, \
                                        script name, ISO code of language or \
-                                       you can browse by region:</span>\
-                                       <a class="uls-region-link" 
data-i18n="uls-region-AM" data-region="AM">America</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-EU" data-region="EU">Europe</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-ME" data-region="ME">Middle East</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-AF" data-region="AF">Africa</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-AS" data-region="AS">Asia</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-PA" data-region="PA">Pacific</a>, \
-                                       <a class="uls-region-link" 
data-i18n="uls-region-WW" data-region="WW">Worldwide</a>.\
+                                       you can browse by region.</span>\
                                </p>\
                        </div>\
                </div>\
@@ -73,26 +66,38 @@
                 * @return {bool} Whether the language was added.
                 */
                append: function ( langCode, regionCode ) {
-                       var lcd = this, i, regions;
+                       var lcd = this,
+                               i, regions;
 
-                       if ( !this.options.languages[langCode] ) {
+                       if ( !this.options.languages[ langCode ] ) {
                                // Language is unknown or not in the list of 
languages for this context.
                                return false;
                        }
 
-                       if ( regionCode ) {
-                               regions = [regionCode];
+                       // Show everything in one region when there is only one 
column
+                       if ( lcd.options.columns === 1 ) {
+                               regions = [ 'WW' ];
+
+                               // Languages are expected to be repeated in 
this case,
+                               // and we only want to show them once
+                               if ( $.inArray( langCode, 
this.regionLanguages.WW ) > -1 ) {
+                                       return true;
+                               }
                        } else {
-                               regions = $.uls.data.getRegions( langCode );
+                               if ( regionCode ) {
+                                       regions = [ regionCode ];
+                               } else {
+                                       regions = $.uls.data.getRegions( 
langCode );
+                               }
                        }
 
                        // Worldwides only displayed once
                        if ( $.inArray( 'WW', regions ) > -1 ) {
-                               regions = ['WW'];
+                               regions = [ 'WW' ];
                        }
 
                        for ( i = 0; i < regions.length; i++ ) {
-                               this.regionLanguages[regions[i]].push( langCode 
);
+                               this.regionLanguages[ regions[ i ] ].push( 
langCode );
                        }
 
                        // Work around the bad interface, delay rendering until 
we have got
@@ -124,7 +129,8 @@
                        regions.push( this.buildQuicklist() );
 
                        $.each( $.uls.data.regiongroups, function ( regionCode 
) {
-                               lcd.regionLanguages[regionCode] = [];
+                               lcd.regionLanguages[ regionCode ] = [];
+
                                // Don't show the region unless it was enabled
                                if ( $.inArray( regionCode, 
lcd.options.showRegions ) === -1 ) {
                                        return;
@@ -132,13 +138,16 @@
 
                                $section = $( '<div>' )
                                        .addClass( 'eleven columns 
offset-by-one uls-lcd-region-section hide' )
-                                       .attr( 'id', regionCode )
-                                       .append(
-                                               $( '<h3>' )
+                                       .attr( 'id', regionCode );
+
+                               // Show a region heading, unless we are using a 
narrow ULS
+                               if ( lcd.options.columns !== 1 ) {
+                                       $section.append( $( '<h3>' )
                                                .attr( 'data-i18n', 
'uls-region-' + regionCode )
                                                .addClass( 'eleven columns 
uls-lcd-region-title' )
-                                               .text( regionNames[regionCode] )
+                                               .text( regionNames[ regionCode 
] )
                                        );
+                               }
 
                                regions.push( $section );
                        } );
@@ -166,7 +175,7 @@
 
                                $region.children( '.uls-language-block' 
).remove();
 
-                               languages = lcd.regionLanguages[regionCode];
+                               languages = lcd.regionLanguages[ regionCode ];
                                if ( !languages || languages.length === 0 ) {
                                        $region.addClass( 'hide' );
                                        return;
@@ -180,7 +189,7 @@
                                );
                                $region.removeClass( 'hide' );
 
-                               lcd.regionLanguages[regionCode] = [];
+                               lcd.regionLanguages[ regionCode ] = [];
                        } );
 
                },
@@ -192,9 +201,9 @@
                 * @param {number} itemsPerColumn How many languages fit in a 
column.
                 * @param {number} columnsPerRow How many columns fit in a row.
                 */
-               renderRegion: function( $region, languages, itemsPerColumn, 
columnsPerRow ) {
+               renderRegion: function ( $region, languages, itemsPerColumn, 
columnsPerRow ) {
                        var columnsClasses, i, lastItem, currentScript, 
nextScript, force,
-                               len = languages.length,
+                               languagesCount = languages.length,
                                items = [],
                                columns = [],
                                rows = [];
@@ -207,27 +216,39 @@
                                columnsClasses = 'three columns';
                        }
 
-                       for ( i = 0; i < len; i++ ) {
-                               force = false;
-                               nextScript = 
$.uls.data.getScriptGroupOfLanguage( languages[i+1] );
-
-                               lastItem = len - i === 1;
-                               // Force column break if script changes and 
column has more than one row already
-                               if ( i === 0 ) {
-                                       currentScript = 
$.uls.data.getScriptGroupOfLanguage( languages[i] );
-                               } else if ( currentScript !== nextScript && 
items.length > 1 ) {
-                                       force = true;
+                       if ( this.options.columns === 1 ) {
+                               // For one-column narrow ULS, just render all 
the languages
+                               // in one simple list without separators or 
script groups
+                               for ( i = 0; i < languagesCount; i++ ) {
+                                       items.push( this.renderItem( languages[ 
i ] ) );
                                }
-                               currentScript = nextScript;
 
-                               items.push( this.renderItem( languages[i] ) );
+                               columns.push( $( '<ul>' ).addClass( 
columnsClasses ).append( items ) );
+                               rows.push( $( '<div>' ).addClass( 'row 
uls-language-block' ).append( columns ) );
+                       } else {
+                               // For medium and wide ULS, clever column 
placement
+                               for ( i = 0; i < languagesCount; i++ ) {
+                                       force = false;
+                                       nextScript = 
$.uls.data.getScriptGroupOfLanguage( languages[ i + 1 ] );
 
-                               if ( items.length >= itemsPerColumn || lastItem 
|| force ) {
-                                       columns.push( $( '<ul>' ).addClass( 
columnsClasses ).append( items ) );
-                                       items = [];
-                                       if ( columns.length >= columnsPerRow || 
lastItem ) {
-                                               rows.push( $( '<div>' 
).addClass( 'row uls-language-block' ).append( columns ) );
-                                               columns = [];
+                                       lastItem = languagesCount - i === 1;
+                                       // Force column break if script changes 
and column has more than one row already
+                                       if ( i === 0 ) {
+                                               currentScript = 
$.uls.data.getScriptGroupOfLanguage( languages[ i ] );
+                                       } else if ( currentScript !== 
nextScript && items.length > 1 ) {
+                                               force = true;
+                                       }
+                                       currentScript = nextScript;
+
+                                       items.push( this.renderItem( languages[ 
i ] ) );
+
+                                       if ( items.length >= itemsPerColumn || 
lastItem || force ) {
+                                               columns.push( $( '<ul>' 
).addClass( columnsClasses ).append( items ) );
+                                               items = [];
+                                               if ( columns.length >= 
columnsPerRow || lastItem ) {
+                                                       rows.push( $( '<div>' 
).addClass( 'row uls-language-block' ).append( columns ) );
+                                                       columns = [];
+                                               }
                                        }
                                }
                        }
@@ -240,10 +261,10 @@
                 * @param {string} code Language code
                 * @return {Element}
                 */
-               renderItem: function( code ) {
+               renderItem: function ( code ) {
                        var a, name, autonym, li;
 
-                       name = this.options.languages[code];
+                       name = this.options.languages[ code ];
                        autonym = $.uls.data.getAutonym( code ) || name || code;
 
                        // Not using jQuery as this is performance hotspot
@@ -264,7 +285,7 @@
                        return li;
                },
 
-               i18n: function ( ) {
+               i18n: function () {
                        this.$element.find( '[data-i18n]' ).i18n();
                },
 
@@ -355,34 +376,6 @@
                                        lcd.options.clickhandler.call( this, $( 
this ).data( 'code' ) );
                                } );
                        }
-
-                       // The region section need to be in sync with the map 
filter.
-                       lcd.$element.scroll( function () {
-                               var inview, inviewRegion,
-                                       $ulsLanguageList = $( this ),
-                                       scrollTop = 
$ulsLanguageList.position().top,
-                                       scrollBottom = 
$ulsLanguageList.height();
-
-                               // The region section need to be in sync with 
the map filter.
-                               inviewRegion = 'WW';
-                               lcd.$element.find( '.uls-lcd-region-section' 
).each( function () {
-                                       var $lcdRegionSection = $( this ),
-                                               top = 
$lcdRegionSection.position().top,
-                                               height = 
$lcdRegionSection.height(),
-                                               padding = 10;
-
-                                       if ( top - padding <= scrollTop && 
height > scrollBottom ) {
-                                               inviewRegion = 
$lcdRegionSection.attr( 'id' );
-                                       }
-                               } );
-
-                               // highlight the region visible while scrolling 
in the map.
-                               inview = $.uls.data.regiongroups[inviewRegion];
-                               if ( !$( '#uls-region-' + inview ).hasClass( 
'active' ) ) {
-                                       $( '.regionselector' ).removeClass( 
'active' );
-                                       $( '#uls-region-' + inview ).addClass( 
'active' );
-                               }
-                       } );
                }
        };
 
@@ -396,15 +389,15 @@
                                $this.data( 'lcd', ( data = new 
LanguageCategoryDisplay( this, options ) ) );
                        }
 
-                       if ( typeof option === 'string') {
-                               data[option]();
+                       if ( typeof option === 'string' ) {
+                               data[ option ]();
                        }
                } );
        };
 
        $.fn.lcd.defaults = {
                languages: null,
-               showRegions: ['WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA'],
+               showRegions: [ 'WW', 'AM', 'EU', 'ME', 'AF', 'AS', 'PA' ],
                itemsPerColumn: 8,
                // Other supported values are 1 and 2.
                // Other values will have rendering issues.
@@ -413,4 +406,4 @@
        };
 
        $.fn.lcd.Constructor = LanguageCategoryDisplay;
-} ( jQuery ) );
+}( jQuery ) );
diff --git a/lib/jquery.uls/src/jquery.uls.regionfilter.js 
b/lib/jquery.uls/src/jquery.uls.regionfilter.js
index 305e9bb..ffb4c3e 100644
--- a/lib/jquery.uls/src/jquery.uls.regionfilter.js
+++ b/lib/jquery.uls/src/jquery.uls.regionfilter.js
@@ -1,5 +1,5 @@
 /**
- * jQuery region filter plugin.
+ * Region Filter for ULS
  *
  * Copyright (C) 2012 Alolita Sharma, Amir Aharoni, Arun Ganesh, Brandon 
Harris,
  * Niklas Laxström, Pau Giner, Santhosh Thottingal, Siebrand Mazeland and other
@@ -20,37 +20,23 @@
 ( function ( $ ) {
        'use strict';
 
-       /* RegionSelector plugin definition */
-
-       var RegionSelector;
-
        /**
         * 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.
         */
-       RegionSelector = function ( element, options ) {
-               this.$element = $( element );
-               this.options = $.extend( {}, $.fn.regionselector.defaults, 
options );
-               this.$element.addClass( 'regionselector' );
+       var RegionSelector = function ( options ) {
+               this.options = options;
                this.regions = [];
                this.cache = null;
-               this.regionGroup = this.$element.data( 'regiongroup' );
                this.init();
-               this.listen();
        };
 
        RegionSelector.prototype = {
                constructor: RegionSelector,
 
                init: function () {
-                       var region = this.$element.data( 'region' );
-                       this.regions = $.uls.data.getRegionsInGroup( 
this.regionGroup );
-
-                       if ( region ) {
-                               this.regions.push( region );
-                       }
+                       this.regions = this.options.regions || 
$.uls.data.getAllRegions();
+                       this.show();
                },
 
                test: function ( langCode ) {
@@ -58,11 +44,11 @@
                                langRegions = $.uls.data.getRegions( langCode );
 
                        for ( i = 0; i < this.regions.length; i++ ) {
-                               region = this.regions[i];
+                               region = this.regions[ i ];
 
                                if ( $.inArray( region, langRegions ) >= 0 ) {
                                        this.render( langCode, region );
-                                       this.cache[langCode] = region;
+                                       this.cache[ langCode ] = region;
 
                                        return;
                                }
@@ -71,14 +57,14 @@
 
                show: function () {
                        var result, languagesByScriptGroup, scriptGroup, 
languages, i,
-                               $element = this.options.$target && 
this.options.$target.$element,
-                               $parent = $element && $element.parent(),
-                               $prev = $element && $element.prev();
+                               $target = this.options.$target && 
this.options.$target.$target,
+                               $parent = $target && $target.parent(),
+                               $prev = $target && $target.prev();
 
-                       if ( $element && $parent ) {
+                       if ( $target && $parent ) {
                                // Avoid reflows while adding new elements to 
the list
                                // Use .detach() to keep jQuery events and data 
associated with elements
-                               $element.detach();
+                               $target.detach();
                        }
 
                        if ( this.cache ) {
@@ -87,7 +73,7 @@
                                result = null;
 
                                for ( result in this.cache ) {
-                                       this.render( result, this.cache[result] 
);
+                                       this.render( result, this.cache[ result 
] );
                                }
                        } else {
                                this.cache = {};
@@ -98,7 +84,7 @@
                                // of script groups
                                for ( scriptGroup in $.uls.data.scriptgroups ) {
                                        // Get the languages for the script 
group
-                                       languages = 
languagesByScriptGroup[scriptGroup];
+                                       languages = languagesByScriptGroup[ 
scriptGroup ];
 
                                        // It's possible that some script 
groups are missing
                                        if ( !languages ) {
@@ -110,17 +96,17 @@
 
                                        for ( i = 0; i < languages.length; i++ 
) {
                                                // Check whether it belongs to 
the region
-                                               this.test( languages[i] );
+                                               this.test( languages[ i ] );
                                        }
                                }
                        }
 
-                       if ( $element && $parent ) {
+                       if ( $target && $parent ) {
                                // Restore the element to where we removed it 
from
                                if ( $prev ) {
-                                       $prev.after( $element );
+                                       $prev.after( $target );
                                } else {
-                                       $parent.append( $element );
+                                       $parent.append( $target );
                                }
                        }
 
@@ -138,61 +124,7 @@
 
                        $target.append( langCode, region );
                },
-
-               listen: function () {
-                       this.$element.on( 'click', $.proxy( this.click, this ) 
);
-               },
-
-               click: function () {
-                       var $list, $firstTargetRegion;
-
-                       // Don't do anything if a region is selected already
-                       if ( this.$element.hasClass( 'active' ) ) {
-                               return;
-                       }
-
-                       $list = this.options.$target.$element;
-                       $firstTargetRegion = $list.find( '#' + this.regions[0] 
);
-
-                       // Scroll to appropriate area
-                       $list.scrollTop(
-                               $firstTargetRegion.offset().top - 
$list.offset().top + $list.scrollTop()
-                       );
-
-                       // Make the selected region (and it only) active
-                       $( '.regionselector' ).removeClass( 'active' );
-
-                       if ( this.regionGroup ) {
-                               // if there is a region group, make it active.
-                               this.$element.addClass( 'active' );
-                       }
-               }
        };
 
-       /* RegionSelector plugin definition */
-
-       $.fn.regionselector = function ( option ) {
-               return this.each( function () {
-                       var $this = $( this ),
-                               data = $this.data( 'regionselector' ),
-                               options = typeof option === 'object' && option;
-
-                       if ( !data ) {
-                               $this.data( 'regionselector', ( data = new 
RegionSelector( this, options ) ) );
-                       }
-
-                       if ( typeof option === 'string' ) {
-                               data[option]();
-                       }
-               } );
-       };
-
-       $.fn.regionselector.defaults = {
-               $target: null, // Where to render the results
-               success: null, // callback if any results found.
-               noresults: null, // callback when no results to show
-               languages: null
-       };
-
-       $.fn.regionselector.Constructor = RegionSelector;
-} ( jQuery ) );
+       $.uls.RegionSelector = RegionSelector;
+}( jQuery ) );

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I4fcfba5a6ef46d0bda34331c6ea111cdedd157a7
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/UniversalLanguageSelector
Gerrit-Branch: master
Gerrit-Owner: Amire80 <[email protected]>
Gerrit-Reviewer: Hashar <[email protected]>
Gerrit-Reviewer: KartikMistry <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to