diff --git a/plugin/src/main/java/com/watopi/chosen/client/ChosenImpl.java b/plugin/src/main/java/com/watopi/chosen/client/ChosenImpl.java
index a75a0b6..b4749af 100644
--- a/plugin/src/main/java/com/watopi/chosen/client/ChosenImpl.java
+++ b/plugin/src/main/java/com/watopi/chosen/client/ChosenImpl.java
@@ -68,13 +68,13 @@ SafeHtml choice(String id, String searchChoiceClass, String content,
@Template("
")
SafeHtml container(String id, String cssClasses);
- @Template("")
+ @Template("")
SafeHtml contentMultiple(String chznChoicesClass, String chznSearchFieldClass,
- String defaultText, String defaultClass, String chznDropClass, String chznResultClass);
+ String defaultText, String defaultClass, String chznDropClass, String chznResultClass, String rightOrLeft);
- @Template("{2}
")
+ @Template("{2}
")
SafeHtml contentSingle(String chznSingleClass, String chznDefaultClass, String defaultText,
- String dropClass, String chznSearchClass, String chznResultClass);
+ String dropClass, String chznSearchClass, String chznResultClass, String rightOrLeft);
@Template("{2}")
SafeHtml group(String id, String groupResultClass, String content);
@@ -930,7 +930,7 @@ private void resultsHide() {
fireEvent(new HidingDropDownEvent(this));
- dropdown.css("left", "-9000px");
+ dropdown.css(isRTL ? "right" : "left", "-9000px");
resultsShowing = false;
}
@@ -984,7 +984,7 @@ private boolean resultsShow() {
fireEvent(new ShowingDropDownEvent(this));
- dropdown.css("top", ddTop + "px").css("left", "0");
+ dropdown.css("top", ddTop + "px").css(isRTL ? "right" : "left", "0");
resultsShowing = true;
searchField.focus();
@@ -1028,7 +1028,7 @@ private void searchFieldScale() {
}
StringBuilder styleBlock =
- new StringBuilder("position:absolute; left: -1000px; top: -1000px; visibility:hidden;");
+ new StringBuilder("position:absolute; "+ (isRTL ? "right" : "left")+": -1000px; top: -1000px; visibility:hidden;");
String[] styleToCopy =
{
"font-size", "font-style", "font-weight", "font-family", "line-height",
@@ -1191,7 +1191,7 @@ private void setup() {
//Temporary fix. IIf the select element is inside a hidden container
//GQuery cannot get the size of the select element.
if (fWidth == 0){
- $("body").append("
");
+ $("body").append("
");
GQuery tempDiv = $("#gwt_chosen_temp_div");
tempDiv.append($selectElement.clone());
@@ -1202,7 +1202,8 @@ private void setup() {
}
- isRTL = LocaleInfo.getCurrentLocale().isRTL();
+ isRTL = LocaleInfo.getCurrentLocale().isRTL() || $selectElement.hasClass("chzn-rtl");
+
String cssClasses = isRTL ? css.chznContainer() + " " + css.chznRtl() : css.chznContainer();
GQuery containerTemp =
@@ -1210,11 +1211,11 @@ private void setup() {
if (isMultiple) {
containerTemp.html(ChozenTemplate.templates.contentMultiple(css.chznChoices(),
- css.searchField(), defaultText, css.defaultClass(), css.chznDrop(), css.chznResults())
+ css.searchField(), defaultText, css.defaultClass(), css.chznDrop(), css.chznResults(), (isRTL ? "right" : "left"))
.asString());
} else {
containerTemp.html(ChozenTemplate.templates.contentSingle(css.chznSingle(),
- css.chznDefault(), defaultText, css.chznDrop(), css.chznSearch(), css.chznResults())
+ css.chznDefault(), defaultText, css.chznDrop(), css.chznSearch(), css.chznResults(), (isRTL ? "right" : "left"))
.asString());
}
diff --git a/plugin/src/main/java/com/watopi/chosen/client/resources/chozen.css b/plugin/src/main/java/com/watopi/chosen/client/resources/chozen.css
index 49fc8bb..9772f24 100644
--- a/plugin/src/main/java/com/watopi/chosen/client/resources/chozen.css
+++ b/plugin/src/main/java/com/watopi/chosen/client/resources/chozen.css
@@ -1,3 +1,4 @@
+@noflip {
/* @group Base */
.chzn-container {
font-size: 13px;
@@ -395,7 +396,13 @@
padding: 4px 5px 4px 20px;
direction: rtl;
}
+
+.chzn-rtl.chzn-container-single-nosearch .chzn-search input {
+ position: absolute;
+ right: -9000px;
+}
/* @end */
/*To make the gwt compiler happy*/
.chzn-done{}
+}