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 2018/03/05 16:31:30 UTC

[myfaces-tobago] 01/02: TOBAGO-1865 The style tag is rendered as an empty row in dropdown menus

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

commit bcfbe03d96e54f7c529dafc1d3d9b3d0eb28b1e0
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Mar 5 17:30:46 2018 +0100

    TOBAGO-1865 The style tag is rendered as an empty row in dropdown menus
    
    * style tag is now rendered after dropdown menu (not inside dropdown menu)
    * styles adjusted
    * test added
---
 .../renderkit/renderer/CommandRendererBase.java    | 18 +++++++++-
 tobago-core/src/main/resources/scss/_tobago.scss   | 38 +++++++---------------
 .../40-test/4000-button+link/button+link.test.js   | 14 ++++++++
 .../40-test/4000-button+link/button+link.xhtml     |  8 +++++
 4 files changed, 50 insertions(+), 28 deletions(-)

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 dd60373..e173245 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
@@ -29,6 +29,7 @@ import org.apache.myfaces.tobago.internal.component.AbstractUISelectBooleanCheck
 import org.apache.myfaces.tobago.internal.component.AbstractUISelectManyCheckbox;
 import org.apache.myfaces.tobago.internal.component.AbstractUISelectOneRadio;
 import org.apache.myfaces.tobago.internal.component.AbstractUISeparator;
+import org.apache.myfaces.tobago.internal.component.AbstractUIStyle;
 import org.apache.myfaces.tobago.internal.util.AccessKeyLogger;
 import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
 import org.apache.myfaces.tobago.internal.util.JsonUtils;
@@ -51,6 +52,8 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.UIParameter;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 
 public abstract class CommandRendererBase extends DecodingCommandRendererBase {
 
@@ -158,6 +161,8 @@ public abstract class CommandRendererBase extends DecodingCommandRendererBase {
     final TobagoResponseWriter writer = getResponseWriter(facesContext);
 
     if (parentOfCommands) {
+      List<UIComponent> renderLater = null;
+
       writer.startElement(HtmlElements.DIV);
       writer.writeClassAttribute(
           BootstrapClass.DROPDOWN_MENU,
@@ -168,7 +173,12 @@ public abstract class CommandRendererBase extends DecodingCommandRendererBase {
         if (child.isRendered()
             && !(child instanceof UIParameter)
             && !(child instanceof AbstractUIBadge)) {
-          if (child instanceof AbstractUILink) {
+          if (child instanceof AbstractUIStyle) {
+            if (renderLater == null) {
+              renderLater = new ArrayList<>();
+            }
+            renderLater.add(child);
+          } else if (child instanceof AbstractUILink) {
             child.setRendererType(RendererTypes.LinkInsideCommand.name());
             child.encodeAll(facesContext);
           } else if (child instanceof AbstractUISelectBooleanCheckbox) {
@@ -192,6 +202,12 @@ public abstract class CommandRendererBase extends DecodingCommandRendererBase {
         }
       }
       writer.endElement(HtmlElements.DIV);
+
+      if (renderLater != null) {
+        for (UIComponent child : renderLater) {
+          child.encodeAll(facesContext);
+        }
+      }
     } else {
       for (final UIComponent child : component.getChildren()) {
         if (!(child instanceof AbstractUIBadge)) {
diff --git a/tobago-core/src/main/resources/scss/_tobago.scss b/tobago-core/src/main/resources/scss/_tobago.scss
index b24ba99..55a56f2 100644
--- a/tobago-core/src/main/resources/scss/_tobago.scss
+++ b/tobago-core/src/main/resources/scss/_tobago.scss
@@ -32,7 +32,7 @@ $link-color: $brand-primary !default;
 $link-hover-color: darken($link-color, 15%) !default;
 $nav-link-padding: .5em 1em !default;
 $blue: #0275d8 !default;
-$white:    #fff !default;
+$white: #fff !default;
 $gray-100: #f8f9fa !default;
 $gray-200: #e9ecef !default;
 $gray-300: #dee2e6 !default;
@@ -42,7 +42,7 @@ $gray-600: #6c757d !default;
 $gray-700: #495057 !default;
 $gray-800: #343a40 !default;
 $gray-900: #212529 !default;
-$black:    #000 !default;
+$black: #000 !default;
 $navbar-dark-active-color: rgba($white, 1) !default;
 $navbar-light-active-color: rgba($black, .9) !default;
 $border-width: 1px !default;
@@ -75,31 +75,6 @@ $fa-circle-thin: "\f1db";
 $fa-dot-circle-o: "\f192";
 $zero-width-space: "\200b";
 
-/* fix bootstrap ---------------------------------------------------- */
-span.dropdown {
-  display: inline-flex;
-}
-
-/*
-Todo: check, if this is needed? (It doesn't work with the build system)
-
-.tobago-file-real {
-  filter: alpha(opacity: 0);
-}
-*/
-
-/*
-.tobago-treeNode-toggle // XXX dummy: only occurs in JavaScript, is here to satisfy the TobagoClassUnitTest
- */
-
-/*
- * theme: standard
- * agent: standard
- */
-
-.tobago-label-container {
-}
-
 /* badge -------------------------------------------------------------- */
 .tobago-badge {
 }
@@ -480,6 +455,14 @@ button {
   padding-right: 0;
 }
 
+span.dropdown {
+  display: inline-block;
+}
+
+.dropdown > .btn.dropdown-toggle {
+  width: 100%;
+}
+
 /* messages ----------------------------------------------------------- */
 
 .tobago-messages-container {
@@ -1395,6 +1378,7 @@ th.tobago-sheet-headerCell-markup-filler > .tobago-sheet-header {
 .tobago-treeListbox-level,
 .tobago-treeListbox-select,
 .tobago-treeNode,
+.tobago-treeNode-toggle,
 .tobago-treeSelect,
 .tobago-treeSelect-label {
 }
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.test.js
index 06778a7..2d19efa 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.test.js
@@ -111,6 +111,20 @@ QUnit.test("Target Link Link", function (assert) {
   testTargetCommands($command, $targetTextInput, "accessed by link", assert, done);
 });
 
+QUnit.test("Style must not be a dropdown item", function (assert) {
+  assert.expect(3);
+
+  var $buttonContainer = jQueryFrame("#page\\:mainForm\\:dropdownWithStyle");
+  var $dropdownMenu = $buttonContainer.find(".dropdown-menu");
+  assert.equal($dropdownMenu.length, 1);
+
+  var $styleAsItem = $dropdownMenu.find(".dropdown-item > style");
+  assert.equal($styleAsItem.length, 0);
+
+  var $button = $buttonContainer.find("> .tobago-button");
+  assert.equal($button.css("width"), "200px");
+});
+
 function testTargetCommands($command, $targetTextInput, expectedText, assert, done) {
   $command[0].click();
 
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.xhtml
index 244ecd3..2be73d3 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/40-test/4000-button+link/button+link.xhtml
@@ -90,4 +90,12 @@
     </tc:button>
     <p>target geht nicht</p>
   </tc:section>
+
+  <tc:section label="Dropdown menu with tc:style">
+    <tc:button id="dropdownWithStyle" label="200px Button" omit="true">
+      <tc:style width="200px"/>
+      <tc:link label="1" omit="true"/>
+      <tc:link label="1" omit="true"/>
+    </tc:button>
+  </tc:section>
 </ui:composition>

-- 
To stop receiving notification emails like this one, please contact
hnoeth@apache.org.