You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2020/10/23 18:39:38 UTC
[myfaces-tobago] 12/13: TOBAGO-1633: Use TypeScript instead of
JavaScript. Simplify Renderers: remove "inside": outInsideBoxLabel and
outInsideSectionLabel
This is an automated email from the ASF dual-hosted git repository.
lofwyr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
commit 58c0763bfcaa6fb5fecc110e9b140f09a9306840
Author: Udo Schnurpfeil <ud...@irian.eu>
AuthorDate: Fri Oct 23 17:51:54 2020 +0200
TOBAGO-1633: Use TypeScript instead of JavaScript.
Simplify Renderers: remove "inside": outInsideBoxLabel and outInsideSectionLabel
---
.../myfaces/tobago/component/RendererTypes.java | 4 --
.../internal/renderkit/renderer/BoxRenderer.java | 5 --
.../renderer/OutInsideBoxLabelRenderer.java | 44 --------------
.../renderer/OutInsideSectionLabelRenderer.java | 44 --------------
.../renderkit/renderer/SectionRenderer.java | 5 --
.../taglib/component/OutTagDeclaration.java | 3 +-
.../internal/config/AbstractTobagoTestBase.java | 8 +++
.../renderkit/renderer/BoxRendererUnitTest.java | 67 ++++++++++++++++++++++
.../renderer/SectionRendererUnitTest.java | 67 ++++++++++++++++++++++
.../resources/renderer/box/box-label-facet.html | 25 ++++++++
.../src/test/resources/renderer/box/box-label.html | 25 ++++++++
.../src/test/resources/renderer/box/simple.html | 21 +++++++
.../renderer/section/section-label-facet.html | 25 ++++++++
.../resources/renderer/section/section-label.html | 26 +++++++++
.../test/resources/renderer/section/simple.html | 25 ++++++++
.../20-component/050-container/10-box/Box.xhtml | 4 +-
16 files changed, 292 insertions(+), 106 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
index 837cce5..720581c 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
@@ -55,8 +55,6 @@ public enum RendererTypes {
Object,
Operation,
Out,
- OutInsideBoxLabel,
- OutInsideSectionLabel,
Page,
Panel,
Popup,
@@ -132,8 +130,6 @@ public enum RendererTypes {
public static final String OBJECT = "Object";
public static final String OPERATION = "Operation";
public static final String OUT = "Out";
- public static final String OUT_INSIDE_BOX_LABEL = "OutInsideBoxLabel";
- public static final String OUT_INSIDE_SECTION_LABEL = "OutInsideSectionLabel";
public static final String PAGE = "Page";
public static final String PANEL = "Panel";
public static final String POPUP = "Popup";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRenderer.java
index 7053b81..1d05d97 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRenderer.java
@@ -19,10 +19,8 @@
package org.apache.myfaces.tobago.internal.renderkit.renderer;
import org.apache.myfaces.tobago.component.Facets;
-import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.context.Markup;
import org.apache.myfaces.tobago.internal.component.AbstractUIBox;
-import org.apache.myfaces.tobago.internal.component.AbstractUIOut;
import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.internal.util.RenderUtils;
import org.apache.myfaces.tobago.model.CollapseMode;
@@ -77,9 +75,6 @@ public class BoxRenderer<T extends AbstractUIBox> extends CollapsiblePanelRender
writer.startElement(HtmlElements.H3);
if (labelFacet != null) {
for (final UIComponent child : RenderUtils.getFacetChildren(labelFacet)) {
- if (child instanceof AbstractUIOut) {
- child.setRendererType(RendererTypes.OutInsideBoxLabel.name());
- }
child.encodeAll(facesContext);
}
} else if (labelString != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideBoxLabelRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideBoxLabelRenderer.java
deleted file mode 100644
index 90b6d6d..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideBoxLabelRenderer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.myfaces.tobago.internal.renderkit.renderer;
-
-import org.apache.myfaces.tobago.internal.component.AbstractUIOut;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class OutInsideBoxLabelRenderer<T extends AbstractUIOut> extends OutRenderer<T> {
-
- @Override
- public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeBeginField(facesContext, component);
- }
-
- @Override
- public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeEndField(facesContext, component);
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUIOut out) {
- return new CssItem[]{};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideSectionLabelRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideSectionLabelRenderer.java
deleted file mode 100644
index 0320a0e..0000000
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/OutInsideSectionLabelRenderer.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.myfaces.tobago.internal.renderkit.renderer;
-
-import org.apache.myfaces.tobago.internal.component.AbstractUIOut;
-import org.apache.myfaces.tobago.renderkit.css.CssItem;
-
-import javax.faces.context.FacesContext;
-import java.io.IOException;
-
-public class OutInsideSectionLabelRenderer<T extends AbstractUIOut> extends OutRenderer<T> {
-
- @Override
- public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeBeginField(facesContext, component);
- }
-
- @Override
- public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
- encodeEndField(facesContext, component);
- }
-
- @Override
- protected CssItem[] getCssItems(final FacesContext facesContext, final AbstractUIOut out) {
- return new CssItem[]{};
- }
-}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRenderer.java
index 5c16808..2a55e3f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRenderer.java
@@ -20,9 +20,7 @@
package org.apache.myfaces.tobago.internal.renderkit.renderer;
import org.apache.myfaces.tobago.component.Facets;
-import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.context.Markup;
-import org.apache.myfaces.tobago.internal.component.AbstractUIOut;
import org.apache.myfaces.tobago.internal.component.AbstractUISection;
import org.apache.myfaces.tobago.internal.util.HtmlRendererUtils;
import org.apache.myfaces.tobago.internal.util.RenderUtils;
@@ -91,9 +89,6 @@ public class SectionRenderer<T extends AbstractUISection> extends CollapsiblePan
final String labelString = component.getLabel();
if (labelFacet != null) {
for (final UIComponent child : RenderUtils.getFacetChildren(labelFacet)) {
- if (child instanceof AbstractUIOut) {
- child.setRendererType(RendererTypes.OutInsideSectionLabel.name());
- }
child.encodeAll(facesContext);
}
} else if (labelString != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
index 19f2155..970a056 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
@@ -46,8 +46,7 @@ import javax.faces.component.UIOutput;
uiComponent = "org.apache.myfaces.tobago.component.UIOut",
uiComponentFacesClass = "javax.faces.component.UIOutput",
componentFamily = UIOutput.COMPONENT_FAMILY,
- rendererType = {RendererTypes.OUT, RendererTypes.OUT_INSIDE_BOX_LABEL,
- RendererTypes.OUT_INSIDE_SECTION_LABEL},
+ rendererType = {RendererTypes.OUT},
interfaces = {
// As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
"javax.faces.component.behavior.ClientBehaviorHolder"
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
index 4e2b8e4..bf62ae6 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/config/AbstractTobagoTestBase.java
@@ -26,6 +26,7 @@ import org.apache.myfaces.test.mock.MockHttpServletRequest;
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.component.Tags;
import org.apache.myfaces.tobago.component.UIBadge;
+import org.apache.myfaces.tobago.component.UIBox;
import org.apache.myfaces.tobago.component.UIButton;
import org.apache.myfaces.tobago.component.UIButtons;
import org.apache.myfaces.tobago.component.UIGridLayout;
@@ -35,6 +36,7 @@ import org.apache.myfaces.tobago.component.UILinks;
import org.apache.myfaces.tobago.component.UIOut;
import org.apache.myfaces.tobago.component.UIPanel;
import org.apache.myfaces.tobago.component.UIPopup;
+import org.apache.myfaces.tobago.component.UISection;
import org.apache.myfaces.tobago.component.UISegmentLayout;
import org.apache.myfaces.tobago.component.UISelectItem;
import org.apache.myfaces.tobago.component.UISelectOneChoice;
@@ -43,6 +45,7 @@ import org.apache.myfaces.tobago.component.UISeparator;
import org.apache.myfaces.tobago.component.UIStyle;
import org.apache.myfaces.tobago.context.TobagoContext;
import org.apache.myfaces.tobago.internal.renderkit.renderer.BadgeRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.BoxRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.ButtonRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.ButtonsRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.GridLayoutRenderer;
@@ -53,6 +56,7 @@ import org.apache.myfaces.tobago.internal.renderkit.renderer.LinksRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.OutRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.PanelRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.PopupRenderer;
+import org.apache.myfaces.tobago.internal.renderkit.renderer.SectionRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SegmentLayoutRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneChoiceRenderer;
import org.apache.myfaces.tobago.internal.renderkit.renderer.SelectOneRadioRenderer;
@@ -115,11 +119,13 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
application.addComponent(Tags.panel.componentType(), UIPanel.class.getName());
application.addComponent(Tags.link.componentType(), UILink.class.getName());
application.addComponent(Tags.links.componentType(), UILinks.class.getName());
+ application.addComponent(Tags.box.componentType(), UIBox.class.getName());
application.addComponent(Tags.button.componentType(), UIButton.class.getName());
application.addComponent(Tags.buttons.componentType(), UIButtons.class.getName());
application.addComponent(Tags.popup.componentType(), UIPopup.class.getName());
application.addComponent(Tags.separator.componentType(), UISeparator.class.getName());
application.addComponent(Tags.style.componentType(), UIStyle.class.getName());
+ application.addComponent(Tags.section.componentType(), UISection.class.getName());
application.addComponent(Tags.selectItem.componentType(), UISelectItem.class.getName());
application.addComponent(Tags.selectOneRadio.componentType(), UISelectOneRadio.class.getName());
application.addComponent(Tags.selectOneChoice.componentType(), UISelectOneChoice.class.getName());
@@ -134,11 +140,13 @@ public abstract class AbstractTobagoTestBase extends AbstractJsfTestCase {
renderKit.addRenderer(UILink.COMPONENT_FAMILY, RendererTypes.LINK, new LinkRenderer());
renderKit.addRenderer(UILink.COMPONENT_FAMILY, RendererTypes.LINK_INSIDE_COMMAND, new LinkInsideCommandRenderer());
renderKit.addRenderer(UILinks.COMPONENT_FAMILY, RendererTypes.LINKS, new LinksRenderer());
+ renderKit.addRenderer(UIBox.COMPONENT_FAMILY, RendererTypes.BOX, new BoxRenderer());
renderKit.addRenderer(UIButton.COMPONENT_FAMILY, RendererTypes.BUTTON, new ButtonRenderer());
renderKit.addRenderer(UIButtons.COMPONENT_FAMILY, RendererTypes.BUTTONS, new ButtonsRenderer());
renderKit.addRenderer(UIPopup.COMPONENT_FAMILY, RendererTypes.POPUP, new PopupRenderer());
renderKit.addRenderer(UISeparator.COMPONENT_FAMILY, RendererTypes.SEPARATOR, new SeparatorRenderer());
renderKit.addRenderer(UIStyle.COMPONENT_FAMILY, RendererTypes.STYLE, new StyleRenderer());
+ renderKit.addRenderer(UISection.COMPONENT_FAMILY, RendererTypes.SECTION, new SectionRenderer());
renderKit.addRenderer(
UISelectOneRadio.COMPONENT_FAMILY, RendererTypes.SELECT_ONE_RADIO, new SelectOneRadioRenderer());
renderKit.addRenderer(
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRendererUnitTest.java
new file mode 100644
index 0000000..76a6064
--- /dev/null
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BoxRendererUnitTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.internal.renderkit.renderer;
+
+import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.component.Tags;
+import org.apache.myfaces.tobago.component.UIBox;
+import org.apache.myfaces.tobago.component.UIOut;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.junit.Assert;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+
+public class BoxRendererUnitTest extends RendererTestBase {
+
+ @Test
+ public void boxLabel() throws IOException {
+ final UIBox c = (UIBox) ComponentUtils.createComponent(
+ facesContext, Tags.box.componentType(), RendererTypes.Box, "id");
+ c.setLabel("label");
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/box/box-label.html"), formattedResult());
+ }
+
+ @Test
+ public void boxLabelFacet() throws IOException {
+ final UIBox c = (UIBox) ComponentUtils.createComponent(
+ facesContext, Tags.box.componentType(), RendererTypes.Box, "id");
+ final UIOut o = (UIOut) ComponentUtils.createComponent(
+ facesContext, Tags.out.componentType(), RendererTypes.Out, "out");
+ o.setValue("label");
+ o.setPlain(true);
+ c.getFacets().put("label", o);
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/box/box-label-facet.html"), formattedResult());
+ }
+
+ @Test
+ public void simple() throws IOException {
+ final UIBox c = (UIBox) ComponentUtils.createComponent(
+ facesContext, Tags.box.componentType(), RendererTypes.Box, "id");
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/box/simple.html"), formattedResult());
+ }
+
+}
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRendererUnitTest.java
new file mode 100644
index 0000000..b77bc4b
--- /dev/null
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SectionRendererUnitTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.internal.renderkit.renderer;
+
+import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.component.Tags;
+import org.apache.myfaces.tobago.component.UISection;
+import org.apache.myfaces.tobago.component.UIOut;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.junit.Assert;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+
+public class SectionRendererUnitTest extends RendererTestBase {
+
+ @Test
+ public void sectionLabel() throws IOException {
+ final UISection c = (UISection) ComponentUtils.createComponent(
+ facesContext, Tags.section.componentType(), RendererTypes.Section, "id");
+ c.setLabel("label");
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/section/section-label.html"), formattedResult());
+ }
+
+ @Test
+ public void sectionLabelFacet() throws IOException {
+ final UISection c = (UISection) ComponentUtils.createComponent(
+ facesContext, Tags.section.componentType(), RendererTypes.Section, "id");
+ final UIOut o = (UIOut) ComponentUtils.createComponent(
+ facesContext, Tags.out.componentType(), RendererTypes.Out, "out");
+ o.setValue("label");
+ o.setPlain(true);
+ c.getFacets().put("label", o);
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/section/section-label-facet.html"), formattedResult());
+ }
+
+ @Test
+ public void simple() throws IOException {
+ final UISection c = (UISection) ComponentUtils.createComponent(
+ facesContext, Tags.section.componentType(), RendererTypes.Section, "id");
+ c.encodeAll(facesContext);
+
+ Assert.assertEquals(loadHtml("renderer/section/simple.html"), formattedResult());
+ }
+
+}
diff --git a/tobago-core/src/test/resources/renderer/box/box-label-facet.html b/tobago-core/src/test/resources/renderer/box/box-label-facet.html
new file mode 100644
index 0000000..7c907a7
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/box/box-label-facet.html
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div class='tobago-box card' id='id'>
+ <div class='card-header tobago-box-header'>
+ <h3>label
+ </h3>
+ </div>
+ <div class='card-body'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/box/box-label.html b/tobago-core/src/test/resources/renderer/box/box-label.html
new file mode 100644
index 0000000..7c907a7
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/box/box-label.html
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div class='tobago-box card' id='id'>
+ <div class='card-header tobago-box-header'>
+ <h3>label
+ </h3>
+ </div>
+ <div class='card-body'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/box/simple.html b/tobago-core/src/test/resources/renderer/box/simple.html
new file mode 100644
index 0000000..5453e2a
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/box/simple.html
@@ -0,0 +1,21 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div class='tobago-box card' id='id'>
+ <div class='card-body'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/section/section-label-facet.html b/tobago-core/src/test/resources/renderer/section/section-label-facet.html
new file mode 100644
index 0000000..fd401b7
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/section/section-label-facet.html
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div id='id' class='tobago-section'>
+ <div class='tobago-section-header'>
+ <h1>label
+ </h1>
+ </div>
+ <div class='tobago-section-content'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/section/section-label.html b/tobago-core/src/test/resources/renderer/section/section-label.html
new file mode 100644
index 0000000..20f8e13
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/section/section-label.html
@@ -0,0 +1,26 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div id='id' class='tobago-section'>
+ <div class='tobago-section-header'>
+ <h1>
+ <span>label</span>
+ </h1>
+ </div>
+ <div class='tobago-section-content'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-core/src/test/resources/renderer/section/simple.html b/tobago-core/src/test/resources/renderer/section/simple.html
new file mode 100644
index 0000000..6ba2964
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/section/simple.html
@@ -0,0 +1,25 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+
+<div id='id' class='tobago-section'>
+ <div class='tobago-section-header'>
+ <h1>
+ </h1>
+ </div>
+ <div class='tobago-section-content'>
+ </div>
+</div>
\ No newline at end of file
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/050-container/10-box/Box.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/050-container/10-box/Box.xhtml
index 25c571e..3e8dc30 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/050-container/10-box/Box.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/050-container/10-box/Box.xhtml
@@ -31,12 +31,12 @@
<p>The title of the box is set by the <code>label</code> attribute or with
<code class="language-markup"><f:facet name="label"></code>.</p>
<pre><code class="language-markup"><tc:box label="Box">Content</tc:box></code></pre>
- <tc:box id="labelAttrBox" label="Box">
+ <tc:box id="labelAttrBox" label="Box one">
Title set by <code>label</code> attribute.
</tc:box>
<tc:box id="labelFacetBox">
<f:facet name="label">
- <h:outputText value="#{outController.html}" escape="false"/>
+ <tc:out value="Box another" plain="true"/>
</f:facet>
Title set by <code class="language-markup"><f:facet name="label"></code>.
</tc:box>