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.