From 9a4ad55de142d1492a5bcedc5b8479e83371fcd7 Mon Sep 17 00:00:00 2001 From: Julien Dramaix Date: Mon, 19 Nov 2012 14:48:05 +0100 Subject: [PATCH] best management of RTL mode. Fix for issue #24 by @Shuky --- .../com/watopi/chosen/client/ChosenImpl.java | 23 ++++++++++--------- .../watopi/chosen/client/resources/chozen.css | 7 ++++++ 2 files changed, 19 insertions(+), 11 deletions(-) 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{} +}