You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2019/12/02 09:29:51 UTC

[myfaces-tobago] 14/19: Tobago-1999: hide dropdown

This is an automated email from the ASF dual-hosted git repository.

weber pushed a commit to branch TOBAGO-1999_Select2
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit 84142b8f6cecdf06dc7f095e56a3fae2402eeb55
Author: Volker Weber <v....@inexso.de>
AuthorDate: Wed Sep 4 18:52:19 2019 +0200

    Tobago-1999: hide dropdown
---
 .../component/AbstractUISelectManyBox.java         | 12 ++++++++++
 .../component/AbstractUISelectOneChoice.java       |  1 +
 .../component/SelectManyBoxTagDeclaration.java     |  9 ++++++--
 .../content/25-select/00-select2/select2.xhtml     | 27 ++++++++++++++++++++++
 .../tobago/renderkit/html/Select2Options.java      | 19 +++++++++++++++
 .../html/standard/standard/style/tobago.css        |  9 ++++----
 6 files changed, 71 insertions(+), 6 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
index 5963567..21b7c9a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectManyBox.java
@@ -49,6 +49,18 @@ public abstract class AbstractUISelectManyBox extends AbstractUISelectMany {
     getStateHelper().put(Select2Keys.allowCustom, allowCustom);
   }
 
+  public boolean isHideDropdown() {
+    Boolean hideDropdown = (Boolean) getStateHelper().eval(Select2Keys.hideDropdown);
+    if (hideDropdown != null) {
+      return hideDropdown;
+    }
+    return false;
+  }
+
+  public void setHideDropdown(boolean hideDropdown) {
+    getStateHelper().put(Select2Keys.hideDropdown, hideDropdown);
+  }
+
   public String getMatcher() {
     String matcher = (String) getStateHelper().eval(Select2Keys.matcher);
     if (matcher != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
index 1faeafc..8555b95 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISelectOneChoice.java
@@ -24,6 +24,7 @@ public abstract class AbstractUISelectOneChoice extends AbstractUISelectOneBase
   enum Select2Keys {
     allowClear,
     allowCustom,
+    hideDropdown,
     isSelect2,
     language,
     matcher,
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyBoxTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyBoxTagDeclaration.java
index 9187f61..3ea22c0 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyBoxTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SelectManyBoxTagDeclaration.java
@@ -79,7 +79,6 @@ public interface SelectManyBoxTagDeclaration
 
   /**
    * A javascript callback that handles automatic tokenization of free-text entry.
-   * This is a select2 feature and will force select2=true
    */
   @TagAttribute()
   @UIComponentTagAttribute(generate = false)
@@ -87,9 +86,15 @@ public interface SelectManyBoxTagDeclaration
 
   /**
    * The list of characters that should be used as token separators.
-   * This is a select2 feature and will force select2=true
    */
   @TagAttribute()
   @UIComponentTagAttribute(generate = false)
   void setTokenSeparators(String tokenSeparators);
+
+  /**
+   * Hide the dropdown, this is only useful with allowCustom=true
+   */
+  @TagAttribute()
+  @UIComponentTagAttribute(type = "boolean", defaultValue = "false", generate = false)
+  void setHideDropdown(String hideDropdown);
 }
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/25-select/00-select2/select2.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/25-select/00-select2/select2.xhtml
index 7dad3ba..e728e3a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/25-select/00-select2/select2.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/25-select/00-select2/select2.xhtml
@@ -129,6 +129,33 @@
         </tc:selectManyBox>
 
       </tc:panel>
+      <tc:panel>
+        <f:facet name="layout">
+          <tc:gridLayout columns="400px;1*" rows="45px"/>
+        </f:facet>
+
+        <tc:label value="TokenSeparators ',', ' ', '-'" for="many_3"/>
+        <tc:selectManyBox id="many_3"
+                          placeholder="Custom input allowed"
+                          tokenSeparators=", -"
+                          allowCustom="true">
+        </tc:selectManyBox>
+
+      </tc:panel>
+      <tc:panel>
+        <f:facet name="layout">
+          <tc:gridLayout columns="400px;1*" rows="45px"/>
+        </f:facet>
+
+        <tc:label value="Hiden dropdown" for="many_4"/>
+        <tc:selectManyBox id="many_4"
+                          placeholder="Enter your values!"
+                          tokenSeparators=", -"
+                          allowCustom="true"
+                          hideDropdown="true">
+        </tc:selectManyBox>
+
+      </tc:panel>
     </tc:panel>
 
 
diff --git a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/Select2Options.java b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/Select2Options.java
index 54122b1..2dfdc7e 100644
--- a/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/Select2Options.java
+++ b/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/Select2Options.java
@@ -29,6 +29,7 @@ public class Select2Options {
 
   private Boolean allowClear;
   private Boolean dropdownAutoWidth;
+  private Boolean hideDropdown;
   private String language;
   private String matcher;
   private Integer maximumInputLength;
@@ -103,6 +104,10 @@ public class Select2Options {
       options.setAllowClear(select.isAllowClear());
     }
 
+    if (select.isHideDropdown()) {
+      options.setHideDropdown(true);
+    }
+
     FacesContext facesContext = FacesContext.getCurrentInstance();
     if (facesContext != null) {
       options.setLanguage(facesContext.getViewRoot().getLocale().getLanguage());
@@ -170,6 +175,14 @@ public class Select2Options {
     this.allowClear = allowClear;
   }
 
+  public Boolean getHideDropdown() {
+    return hideDropdown;
+  }
+
+  public void setHideDropdown(Boolean hideDropdown) {
+    this.hideDropdown = hideDropdown;
+  }
+
   public String getLanguage() {
     return language;
   }
@@ -240,6 +253,11 @@ public class Select2Options {
     if (allowClear != null) {
       JsonUtils.encode(builder, "allowClear", allowClear);
     }
+
+    if (hideDropdown != null && hideDropdown) {
+      JsonUtils.encode(builder, "dropdownCssClass", "tobago-select2-hide-dropdown");
+    }
+
     if (language != null) {
       JsonUtils.encode(builder, "language", language);
     }
@@ -263,6 +281,7 @@ public class Select2Options {
     }
 
 
+
     if (builder.length() > 0 && builder.charAt(builder.length() - 1) == ',') {
       builder.deleteCharAt(builder.length() - 1);
     }
diff --git a/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css b/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css
index 6d49612..fff9531 100644
--- a/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css
+++ b/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css
@@ -1,6 +1,7 @@
 /* select2 */
 
-/*.select2-container {*/
-  /*position: absolute;*/
-/*}*/
-
+.tobago-select2-hide-dropdown .select2-search,
+.tobago-select2-hide-dropdown .select2-results,
+.tobago-select2-hide-dropdown .select2-dropdown {
+  display: none;
+}