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 2020/06/12 07:21:40 UTC

[myfaces-tobago] branch master updated: tobago-tree: use bootstrap checkbox/radio custom controls

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

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


The following commit(s) were added to refs/heads/master by this push:
     new aefd5c6  tobago-tree: use bootstrap checkbox/radio custom controls
aefd5c6 is described below

commit aefd5c6132579da6f65c23e6e8ef3ca499295a34
Author: Henning Nöth <hn...@apache.org>
AuthorDate: Fri Jun 5 17:01:28 2020 +0200

    tobago-tree: use bootstrap checkbox/radio custom controls
    
    Issue: TOBAGO-1633
    Issue: TOBAGO-1969
---
 .../renderkit/renderer/TreeSelectRenderer.java     | 41 ++++++++++++----------
 tobago-core/src/main/resources/scss/_tobago.scss   |  8 +++++
 2 files changed, 30 insertions(+), 19 deletions(-)

diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeSelectRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeSelectRenderer.java
index e903c75..43dff32 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeSelectRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TreeSelectRenderer.java
@@ -109,19 +109,22 @@ public class TreeSelectRenderer extends RendererBase {
 
     final boolean folder = data.isFolder();
     final Selectable selectable = data.getSelectable();
+    final boolean showCustomControl = treeSelect.isShowCheckbox()
+        && selectable != Selectable.none && (!selectable.isLeafOnly() || !folder);
 
     writer.startElement(HtmlElements.TOBAGO_TREE_SELECT);
     final Markup markup = treeSelect.getMarkup();
     writer.writeClassAttribute(
         treeSelect.getCustomClass(),
-        TobagoClass.TREE_SELECT.createMarkup(markup));
+        TobagoClass.TREE_SELECT.createMarkup(markup),
+        showCustomControl ? BootstrapClass.CUSTOM_CONTROL : null,
+        showCustomControl && selectable.isMulti() ? BootstrapClass.CUSTOM_CHECKBOX : null,
+        showCustomControl && selectable.isSingle() ? BootstrapClass.CUSTOM_RADIO : null);
     HtmlRendererUtils.writeDataAttributes(facesContext, writer, treeSelect);
 
-    if (treeSelect.isShowCheckbox()
-        && selectable != Selectable.none
-        && (!selectable.isLeafOnly() || !folder)) {
+    if (showCustomControl) {
       writer.startElement(HtmlElements.INPUT);
-      writer.writeClassAttribute(BootstrapClass.FORM_CHECK_INLINE);
+      writer.writeClassAttribute(BootstrapClass.CUSTOM_CONTROL_INPUT);
       if (selectable.isSingle()) {
         writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.RADIO);
         writer.writeNameAttribute(getClientIdWithoutRowIndex(data, id));
@@ -135,7 +138,21 @@ public class TreeSelectRenderer extends RendererBase {
       writer.writeAttribute(HtmlAttributes.CHECKED, checked);
 
       writer.endElement(HtmlElements.INPUT);
+    }
+
+    final String label = treeSelect.getLabel();
+    writer.startElement(HtmlElements.LABEL);
+    writer.writeClassAttribute(TobagoClass.TREE_SELECT__LABEL,
+        showCustomControl ? BootstrapClass.CUSTOM_CONTROL_LABEL : null);
+    final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, treeSelect);
+    if (title != null) {
+      writer.writeAttribute(HtmlAttributes.TITLE, title, true);
+    }
+    writer.writeAttribute(HtmlAttributes.FOR, id, false);
+    writer.writeText(label);
+    writer.endElement(HtmlElements.LABEL);
 
+    if (showCustomControl) {
       final CommandMap behaviorCommands = getBehaviorCommands(facesContext, treeSelect);
       if (behaviorCommands != null) {
         Map<ClientBehaviors, Command> other = behaviorCommands.getOther();
@@ -148,20 +165,6 @@ public class TreeSelectRenderer extends RendererBase {
       encodeBehavior(writer, behaviorCommands);
     }
 
-    // label
-    final String label = treeSelect.getLabel();
-    if (StringUtils.isNotEmpty(label)) {
-      writer.startElement(HtmlElements.LABEL);
-      writer.writeClassAttribute(TobagoClass.TREE_SELECT__LABEL);
-      final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, treeSelect);
-      if (title != null) {
-        writer.writeAttribute(HtmlAttributes.TITLE, title, true);
-      }
-      writer.writeAttribute(HtmlAttributes.FOR, id, false);
-      writer.writeText(label);
-      writer.endElement(HtmlElements.LABEL);
-    }
-
     writer.endElement(HtmlElements.TOBAGO_TREE_SELECT);
   }
 
diff --git a/tobago-core/src/main/resources/scss/_tobago.scss b/tobago-core/src/main/resources/scss/_tobago.scss
index 96c4f6c..e81e455 100644
--- a/tobago-core/src/main/resources/scss/_tobago.scss
+++ b/tobago-core/src/main/resources/scss/_tobago.scss
@@ -1515,8 +1515,16 @@ tobago-tree {
 
     tobago-tree-select {
       display: inline;
+
+      &.custom-control {
+        display: inline;
+      }
     }
   }
+
+  .tobago-treeLabel, .tobago-treeSelect-label {
+    margin-bottom: 0;
+  }
 }
 
 /* treeListbox ---------------------------------------------------------------------- */