You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2023/04/15 11:37:35 UTC

[myfaces-tobago] 01/02: feature(markup): hideToggleIcon

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

hnoeth pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git

commit 0e180ae318bd3209c39b5c73c98af46bae35628d
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Sat Apr 15 12:17:35 2023 +0200

    feature(markup): hideToggleIcon
    
    * add markup and CSS class: hideToggleIcon
    * add demo
    
    Issue: TOBAGO-2202
---
 .../src/main/java/org/apache/myfaces/tobago/context/Markup.java   | 2 ++
 .../tobago/internal/renderkit/renderer/CommandRendererBase.java   | 3 +++
 .../tobago/internal/taglib/component/ButtonTagDeclaration.java    | 4 ++++
 .../tobago/internal/taglib/component/LinkTagDeclaration.java      | 4 ++++
 .../java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java | 1 +
 .../content/040-command/00-button-link/Button_and_Link.xhtml      | 7 +++++++
 tobago-theme/src/main/scss/_tobago.scss                           | 8 ++++++++
 7 files changed, 29 insertions(+)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/context/Markup.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/context/Markup.java
index e01a89cbf8..d77d146a33 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/context/Markup.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/context/Markup.java
@@ -81,6 +81,7 @@ public final class Markup implements Serializable, Iterable<String> {
   public static final Markup EXTRA_LARGE = valueOf("extraLarge");
   public static final Markup FATAL = valueOf("fatal");
   public static final Markup FOLDER = valueOf("folder");
+  public static final Markup HIDE_TOGGLE_ICON = valueOf("hideToggleIcon");
   public static final Markup HOVER = valueOf("hover");
   public static final Markup INFO = valueOf("info");
   public static final Markup INLINE = valueOf("inline");
@@ -143,6 +144,7 @@ public final class Markup implements Serializable, Iterable<String> {
   public static final String STRING_EXTRA_LARGE = "extraLarge";
   public static final String STRING_FATAL = "fatal";
   public static final String STRING_FOLDER = "folder";
+  public static final String STRING_HIDE_TOGGLE_ICON = "hideToggleIcon";
   public static final String STRING_HOVER = "hover";
   public static final String STRING_INFO = "info";
   public static final String STRING_INLINE = "inline";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
index d6bb1d9607..db358df9c1 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/CommandRendererBase.java
@@ -21,6 +21,7 @@ package org.apache.myfaces.tobago.internal.renderkit.renderer;
 
 import org.apache.myfaces.tobago.component.Attributes;
 import org.apache.myfaces.tobago.component.Facets;
+import org.apache.myfaces.tobago.context.Markup;
 import org.apache.myfaces.tobago.internal.component.AbstractUIBadge;
 import org.apache.myfaces.tobago.internal.component.AbstractUICommand;
 import org.apache.myfaces.tobago.internal.component.AbstractUIFormBase;
@@ -74,6 +75,7 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
     final boolean autoSpacing = component.getAutoSpacing(facesContext);
     final boolean parentOfCommands = component.isParentOfCommands();
     final boolean dropdownSubmenu = isInside(facesContext, HtmlElements.COMMAND);
+    final Markup markup = component.getMarkup() != null ? component.getMarkup() : Markup.NULL;
 
     final TobagoResponseWriter writer = getResponseWriter(facesContext);
 
@@ -124,6 +126,7 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
         autoSpacing && !dropdownSubmenu ? TobagoClass.AUTO__SPACING : null,
         dropdownSubmenu ? BootstrapClass.DROPDOWN_ITEM : null,
         parentOfCommands && !dropdownSubmenu ? BootstrapClass.DROPDOWN_TOGGLE : null,
+        markup.contains(Markup.HIDE_TOGGLE_ICON) ? TobagoClass.HIDE_TOGGLE_ICON : null,
         label.getLabel() == null && image == null && labelFacet == null ? BootstrapClass.DROPDOWN_TOGGLE_SPLIT : null,
         component.getCustomClass(),
         isInside(facesContext, HtmlElements.TOBAGO_LINKS) && !dropdownSubmenu ? BootstrapClass.NAV_LINK : null);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
index fecbeb2baf..e3a5d7deab 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/ButtonTagDeclaration.java
@@ -159,6 +159,10 @@ import jakarta.faces.component.UICommand;
         @Markup(
             name = org.apache.myfaces.tobago.context.Markup.STRING_PILL,
             description = "Make badges more rounded if button is displayed as a badge."
+        ),
+        @Markup(
+            name = org.apache.myfaces.tobago.context.Markup.STRING_HIDE_TOGGLE_ICON,
+            description = "Hide the toggle icon of a dropdown menu."
         )
     })
 public interface ButtonTagDeclaration
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
index 78fd09d835..6ec7aef026 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/LinkTagDeclaration.java
@@ -124,6 +124,10 @@ import jakarta.faces.component.UICommand;
         @Markup(
             name = org.apache.myfaces.tobago.context.Markup.STRING_ITALIC,
             description = "Set font to italic."
+        ),
+        @Markup(
+            name = org.apache.myfaces.tobago.context.Markup.STRING_HIDE_TOGGLE_ICON,
+            description = "Hide the toggle icon of a dropdown menu."
         )
     })
 public interface LinkTagDeclaration
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
index 33d0e856f1..1e0d2c1403 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
@@ -61,6 +61,7 @@ public enum TobagoClass implements CssItem {
   FILTER("tobago-filter"),
   HEADER("tobago-header"),
   HELP__CONTAINER("tobago-help-container"),
+  HIDE_TOGGLE_ICON("tobago-hideToggleIcon"),
   LABEL("tobago-label"),
   LABEL__CONTAINER("tobago-label-container"),
   LEVEL("tobago-level"),
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/00-button-link/Button_and_Link.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/00-button-link/Button_and_Link.xhtml
index 1f16b566a2..4d134c2df0 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/00-button-link/Button_and_Link.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/00-button-link/Button_and_Link.xhtml
@@ -108,6 +108,13 @@
           <tc:link label="3"/>
         </tc:link>
       </tc:button>
+
+      <p>For a dropdown menu without a toggle icon, use markup <code>hideToggleIcon</code></p>
+      <tc:button image="bi-three-dots-vertical" omit="true" markup="hideToggleIcon">
+        <tc:link label="Entry 1"/>
+        <tc:link label="Entry 2"/>
+        <tc:link label="Entry 3"/>
+      </tc:button>
     </tc:section>
 
     <tc:section label="Dropdown with Radio Buttons and Checkboxes">
diff --git a/tobago-theme/src/main/scss/_tobago.scss b/tobago-theme/src/main/scss/_tobago.scss
index 4467496f5e..e835804db7 100644
--- a/tobago-theme/src/main/scss/_tobago.scss
+++ b/tobago-theme/src/main/scss/_tobago.scss
@@ -135,6 +135,12 @@ $tobago-flex-layout-spacing: 0.5rem;
   }
 }
 
+@mixin markupHideToggleIcon() {
+  &.tobago-hideToggleIcon:after {
+    content: none;
+  }
+}
+
 @mixin messagesHelpContainer($tobago-form-validation-states) {
   @each $state, $data in $tobago-form-validation-states {
     @include form-validation-state($state, $data...);
@@ -418,6 +424,7 @@ tobago-box {
   @include buttonLinkDisabledCursor();
   @include buttonLinkImageTextSpacing();
   @include badgeBtn();
+  @include markupHideToggleIcon();
 
   &.badge {
     @each $color, $value in $theme-colors {
@@ -808,6 +815,7 @@ tobago-links {
 
 .tobago-link {
   @include buttonLinkImageTextSpacing();
+  @include markupHideToggleIcon();
   white-space: nowrap;
 
   span {