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 2026/03/05 08:27:55 UTC
(myfaces-tobago) branch main updated: feature: icon attribute
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
The following commit(s) were added to refs/heads/main by this push:
new 3249eb380f feature: icon attribute
3249eb380f is described below
commit 3249eb380ff161f2226174319c55c33b4843c72e
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Wed Mar 4 13:15:14 2026 +0100
feature: icon attribute
* adjust demo
* implement icon attribute
* add tests for badge, button, link, section and tabGroup
---
.../myfaces/tobago/component/Attributes.java | 1 +
.../tobago/internal/component/AbstractUIBadge.java | 2 ++
.../internal/component/AbstractUICommand.java | 31 +++++++++--------
.../internal/component/AbstractUISection.java | 5 +--
.../tobago/internal/component/AbstractUITab.java | 5 +--
.../internal/renderkit/renderer/BadgeRenderer.java | 7 +++-
.../renderkit/renderer/CommandRendererBase.java | 7 +++-
.../renderkit/renderer/SectionRenderer.java | 7 +++-
.../renderkit/renderer/TabGroupRenderer.java | 9 +++--
.../taglib/component/BadgeTagDeclaration.java | 3 +-
.../taglib/component/ButtonTagDeclaration.java | 3 +-
.../taglib/component/LinkTagDeclaration.java | 3 +-
.../taglib/component/SectionTagDeclaration.java | 3 +-
.../taglib/component/TabTagDeclaration.java | 6 ++--
.../declaration/HasIcon.java} | 19 +++++-----
.../tobago/internal/util/HtmlRendererUtils.java | 29 +++++++++++-----
.../renderkit/renderer/BadgeRendererUnitTest.java | 10 ++++++
.../renderkit/renderer/ButtonRendererUnitTest.java | 40 ++++++++++++++++++++--
.../renderkit/renderer/LinkRendererUnitTest.java | 12 +++++++
.../renderer/SectionRendererUnitTest.java | 12 ++++++-
.../renderer/TabGroupRendererUnitTest.java | 32 +++++++++++++++++
.../test/resources/renderer/badge/badge-icon.html | 6 ++--
.../test/resources/renderer/link/linkWithIcon.html | 4 +--
.../resources/renderer/section/section-icon.html | 9 +++--
.../tabGroup/tabGroup-label_icon_image.html | 34 ++++++++++++++++++
.../10-getting-started/Getting_Started.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_2.2.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_2.4.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_2.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_3.1.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_3.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.1.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.2.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.3.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.4.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.5.xhtml | 2 +-
.../000-intro/30-whats-new/x-Tobago_4.xhtml | 4 +--
.../000-intro/30-whats-new/x-Tobago_5.0.xhtml | 2 +-
.../main/webapp/content/000-intro/70-faq/FAQ.xhtml | 10 +++---
.../content/000-intro/85-download/Download.xhtml | 28 +++++++--------
.../main/webapp/content/010-input/10-in/In.xhtml | 2 +-
.../content/010-input/30-textarea/Textarea.xhtml | 2 +-
.../webapp/content/010-input/40-date/Date.xhtml | 2 +-
.../webapp/content/020-output/25-badge/Badge.xhtml | 12 +++----
.../webapp/content/020-output/40-image/Image.xhtml | 4 +--
.../00-button-link/Button_and_Link.xhtml | 18 +++++-----
.../21-buttons-customizer/Customizer.xhtml | 2 +-
.../x-buttons-item-delete.xhtml | 2 +-
.../x-buttons-item-edit.xhtml | 2 +-
.../21-buttons-customizer/x-buttons-item-new.xhtml | 2 +-
.../content/050-container/40-section/Section.xhtml | 8 ++---
.../webapp/content/060-popup/30-popup/Popup.xhtml | 16 ++++-----
.../content/060-popup/40-offcanvas/Offcanvas.xhtml | 8 ++---
.../content/060-popup/50-popover/Popover.xhtml | 2 +-
.../070-tab/00-basic-example/Basic_example.xhtml | 2 +-
.../content/070-tab/00-client/Tab_Client.xhtml | 8 ++---
.../content/080-sheet/32-action/Action.xhtml | 2 +-
.../content/090-tree/02-editor/Tree_Editor.xhtml | 18 +++++-----
.../content/110-wysiwyg/00-tinymce/TinyMCE.xhtml | 2 +-
.../content/110-wysiwyg/01-ckeditor/CKEditor.xhtml | 2 +-
.../05-csp/Content_Security_Policy.xhtml | 2 +-
.../280-security/10-sanitize/Sanitize.xhtml | 2 +-
.../290-appearance/20-bootstrap/Bootstrap.xhtml | 2 +-
.../300-requests/150-behavior/Behavior.xhtml | 4 +--
.../webapp/content/900-test/event/Event_1870.xhtml | 2 +-
.../main/webapp/content/900-test/popup/Popup.xhtml | 6 ++--
.../content/900-test/popup/jQuery/jQuery.xhtml | 6 ++--
.../popup/static-backdrop/StaticBackdrop.xhtml | 2 +-
.../custom-footer/Custom_footer.xhtml | 2 +-
.../content/900-test/tabGroup/style/Style.xhtml | 10 +++---
.../900-test/z-manual/ui-repeat/Toolbar.xhtml | 4 +--
.../tobago-example-demo/src/main/webapp/main.xhtml | 6 ++--
.../tobago-example-demo/src/main/webapp/menu.xhtml | 10 +++---
.../src/main/webapp/testAccessAllPages.xhtml | 2 +-
.../src/main/webapp/testAll.xhtml | 2 +-
75 files changed, 362 insertions(+), 181 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Attributes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Attributes.java
index 085d33f2ab..a32b49a216 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Attributes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Attributes.java
@@ -135,6 +135,7 @@ public enum Attributes {
iconSize,
id,
immediate,
+ icon,
image,
inline,
itemDescription,
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java
index 0f726fc740..beb1ba81b7 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java
@@ -25,6 +25,8 @@
public abstract class AbstractUIBadge extends UIOutput implements Visual {
+ public abstract String getIcon();
+
public abstract String getImage();
public abstract String getTip();
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
index 0d822d2702..f2ac73fc3f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUICommand.java
@@ -19,12 +19,6 @@
package org.apache.myfaces.tobago.internal.component;
-import org.apache.myfaces.tobago.component.SupportFieldId;
-import org.apache.myfaces.tobago.component.SupportsAccessKey;
-import org.apache.myfaces.tobago.component.SupportsAutoSpacing;
-import org.apache.myfaces.tobago.component.Visual;
-import org.apache.myfaces.tobago.util.ComponentUtils;
-
import jakarta.faces.component.UICommand;
import jakarta.faces.component.UIComponent;
import jakarta.faces.component.UIInput;
@@ -33,6 +27,11 @@
import jakarta.faces.component.visit.VisitContext;
import jakarta.faces.component.visit.VisitResult;
import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.component.SupportFieldId;
+import org.apache.myfaces.tobago.component.SupportsAccessKey;
+import org.apache.myfaces.tobago.component.SupportsAutoSpacing;
+import org.apache.myfaces.tobago.component.Visual;
+import org.apache.myfaces.tobago.util.ComponentUtils;
/**
* Base class for commands.
@@ -57,7 +56,9 @@ public boolean isParentOfCommands() {
return parentOfCommands;
}
- public abstract java.lang.String getImage();
+ public abstract String getIcon();
+
+ public abstract String getImage();
@Override
public abstract String getLabel();
@@ -70,6 +71,7 @@ public String getFieldId(final FacesContext facesContext) {
return getClientId(facesContext);
}
}
+
private static class ParentOfCommandVisitor implements VisitCallback {
private boolean parentOfCommands = false;
private final FacesContext facesContext;
@@ -85,17 +87,18 @@ public VisitResult visit(VisitContext context, UIComponent target) {
if (!target.getClientId(facesContext).equals(clientId)
&& (target instanceof Visual && !((Visual) target).isPlain()
|| ComponentUtils.isStandardHtmlRendererType(target))) {
- if (!(target instanceof AbstractUIEvent)
- && (target instanceof UICommand || target instanceof UIInput)) {
- parentOfCommands = true;
- return VisitResult.COMPLETE;
- } else {
- return VisitResult.ACCEPT;
- }
+ if (!(target instanceof AbstractUIEvent)
+ && (target instanceof UICommand || target instanceof UIInput)) {
+ parentOfCommands = true;
+ return VisitResult.COMPLETE;
+ } else {
+ return VisitResult.ACCEPT;
+ }
} else {
return VisitResult.ACCEPT;
}
}
+
public boolean isParentOfCommands() {
return parentOfCommands;
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISection.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISection.java
index 09a1a3ec4f..dd321d3d1c 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISection.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISection.java
@@ -19,11 +19,10 @@
package org.apache.myfaces.tobago.internal.component;
+import jakarta.faces.context.FacesContext;
import org.apache.myfaces.tobago.component.SupportsAutoSpacing;
import org.apache.myfaces.tobago.util.ComponentUtils;
-import jakarta.faces.context.FacesContext;
-
import java.io.IOException;
/**
@@ -37,6 +36,8 @@ public abstract class AbstractUISection extends AbstractUICollapsiblePanel imple
public abstract void setLevel(Integer level);
+ public abstract String getIcon();
+
public abstract String getImage();
@Override
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITab.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITab.java
index a88f2f370f..552cb89224 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITab.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITab.java
@@ -19,10 +19,9 @@
package org.apache.myfaces.tobago.internal.component;
-import org.apache.myfaces.tobago.component.SupportsAccessKey;
-
import jakarta.faces.component.NamingContainer;
import jakarta.faces.component.behavior.ClientBehaviorHolder;
+import org.apache.myfaces.tobago.component.SupportsAccessKey;
/**
* {@link org.apache.myfaces.tobago.internal.taglib.component.TabTagDeclaration}
@@ -32,6 +31,8 @@ public abstract class AbstractUITab
public abstract String getLabel();
+ public abstract String getIcon();
+
public abstract String getImage();
public abstract boolean isDisabled();
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRenderer.java
index 64ccb5ed05..6e96056ed6 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRenderer.java
@@ -38,6 +38,7 @@ public class BadgeRenderer<T extends AbstractUIBadge> extends RendererBase<T> {
public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
final Markup markup = component.getMarkup() != null ? component.getMarkup() : Markup.NULL;
+ final String icon = component.getIcon();
final String image = component.getImage();
final String tip = component.getTip();
final String value = getCurrentValue(facesContext, component);
@@ -54,7 +55,11 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
if (tip != null) {
writer.writeAttribute(HtmlAttributes.TITLE, tip, true);
}
- HtmlRendererUtils.encodeIconOrImage(writer, image);
+ if (icon != null) {
+ HtmlRendererUtils.encodeIcon(writer, icon);
+ } else {
+ HtmlRendererUtils.encodeIconOrImage(writer, image);
+ }
if (value != null) {
writer.startElement(HtmlElements.SPAN);
writer.writeText(value);
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 33f4f0177f..209d07aa3f 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
@@ -72,6 +72,7 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
final String clientId = component.getClientId(facesContext);
final boolean disabled = component.isDisabled();
final LabelWithAccessKey label = new LabelWithAccessKey(component);
+ final String icon = component.getIcon();
final String image = component.getImage();
final UIComponent labelFacet = ComponentUtils.getFacet(component, Facets.label);
final UIComponent popoverFacet = ComponentUtils.getFacet(component, Facets.popover);
@@ -157,7 +158,11 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
insideEnd(facesContext, Facets.popover);
}
- HtmlRendererUtils.encodeIconOrImage(writer, image);
+ if (icon != null) {
+ HtmlRendererUtils.encodeIcon(writer, icon);
+ } else {
+ HtmlRendererUtils.encodeIconOrImage(writer, image);
+ }
if (labelFacet != null) {
insideBegin(facesContext, Facets.label);
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 715d1187cf..6311009e9d 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
@@ -85,8 +85,13 @@ public void encodeBeginInternal(final FacesContext facesContext, final T compone
writer.writeClassAttribute(TobagoClass.HEADER);
writer.startElement(tag);
+ final String icon = component.getIcon();
final String image = component.getImage();
- HtmlRendererUtils.encodeIconOrImage(writer, image);
+ if (icon != null) {
+ HtmlRendererUtils.encodeIcon(writer, icon);
+ } else {
+ HtmlRendererUtils.encodeIconOrImage(writer, image);
+ }
final UIComponent labelFacet = ComponentUtils.getFacet(component, Facets.label);
final String labelString = component.getLabel();
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
index b336b67228..af41722f2a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRenderer.java
@@ -284,9 +284,14 @@ private void encodeHeader(
}
boolean labelEmpty = true;
+ final String icon = tab.getIcon();
final String image = tab.getImage();
- if (image != null) {
- HtmlRendererUtils.encodeIconOrImage(writer, image);
+ if (icon != null || image != null) {
+ if (icon != null) {
+ HtmlRendererUtils.encodeIcon(writer, icon);
+ } else {
+ HtmlRendererUtils.encodeIconOrImage(writer, image);
+ }
labelEmpty = false;
}
if (label.getLabel() != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
index 86a954084e..a7941367bd 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/BadgeTagDeclaration.java
@@ -25,6 +25,7 @@
import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasConverter;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIcon;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasTip;
@@ -88,5 +89,5 @@
)
})
public interface BadgeTagDeclaration
- extends HasIdBindingAndRendered, HasTip, IsVisual, HasConverter, HasValue, HasImage {
+ extends HasIdBindingAndRendered, HasTip, IsVisual, HasConverter, HasValue, HasIcon, HasImage {
}
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 86d215da39..8b9d0ea792 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
@@ -34,6 +34,7 @@
import org.apache.myfaces.tobago.internal.taglib.declaration.HasAutoSpacing;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasConfirmation;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasFragment;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIcon;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
@@ -176,6 +177,6 @@
public interface ButtonTagDeclaration
extends HasIdBindingAndRendered, HasAction, HasActionListener, IsImmediateCommand, HasConfirmation,
HasLink, HasOutcome, HasFragment, IsTransition, HasTarget, IsDisabledBySecurity,
- IsOmit, IsVisual, HasLabel, HasAccessKey, HasTip, HasImage,
+ IsOmit, IsVisual, HasLabel, HasAccessKey, HasTip, HasIcon, HasImage,
IsDefaultCommand, HasTabIndex, HasAutoSpacing {
}
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 b43aa68c0d..357eabc02b 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
@@ -34,6 +34,7 @@
import org.apache.myfaces.tobago.internal.taglib.declaration.HasAutoSpacing;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasConfirmation;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasFragment;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIcon;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
@@ -133,5 +134,5 @@
public interface LinkTagDeclaration
extends HasIdBindingAndRendered, HasAction, HasActionListener, IsImmediateCommand, HasConfirmation,
HasLink, HasOutcome, HasFragment, IsTransition, HasTarget, IsDisabledBySecurity,
- IsOmit, HasImage, HasTabIndex, IsVisual, HasLabel, HasAccessKey, HasTip, HasAutoSpacing {
+ IsOmit, HasIcon, HasImage, HasTabIndex, IsVisual, HasLabel, HasAccessKey, HasTip, HasAutoSpacing {
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SectionTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SectionTagDeclaration.java
index e01b2f6a6b..362fcb4db4 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SectionTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/SectionTagDeclaration.java
@@ -28,6 +28,7 @@
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasAutoSpacing;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasCollapsedMode;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIcon;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
@@ -56,7 +57,7 @@
})
public interface SectionTagDeclaration
- extends HasIdBindingAndRendered, HasLabel, IsVisual, HasImage, IsCollapsed, HasCollapsedMode, HasTip,
+ extends HasIdBindingAndRendered, HasLabel, IsVisual, HasIcon, HasImage, IsCollapsed, HasCollapsedMode, HasTip,
HasAutoSpacing {
/**
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TabTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TabTagDeclaration.java
index f5f23349c5..97e315b21e 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TabTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/TabTagDeclaration.java
@@ -19,6 +19,7 @@
package org.apache.myfaces.tobago.internal.taglib.component;
+import jakarta.faces.component.UIPanel;
import org.apache.myfaces.tobago.apt.annotation.Behavior;
import org.apache.myfaces.tobago.apt.annotation.Facet;
import org.apache.myfaces.tobago.apt.annotation.Tag;
@@ -27,6 +28,7 @@
import org.apache.myfaces.tobago.component.Facets;
import org.apache.myfaces.tobago.component.RendererTypes;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasAccessKey;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIcon;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasImage;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
@@ -34,8 +36,6 @@
import org.apache.myfaces.tobago.internal.taglib.declaration.IsDisabled;
import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
-import jakarta.faces.component.UIPanel;
-
/**
* Renders a tab within a tab group.
*/
@@ -56,5 +56,5 @@
isDefault = true)
})
public interface TabTagDeclaration
- extends HasIdBindingAndRendered, IsVisual, HasLabel, HasAccessKey, HasTip, IsDisabled, HasImage {
+ extends HasIdBindingAndRendered, IsVisual, HasLabel, HasAccessKey, HasTip, IsDisabled, HasIcon, HasImage {
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasIcon.java
similarity index 70%
copy from tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java
copy to tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasIcon.java
index 0f726fc740..f62ed601af 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIBadge.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasIcon.java
@@ -17,15 +17,16 @@
* under the License.
*/
-package org.apache.myfaces.tobago.internal.component;
+package org.apache.myfaces.tobago.internal.taglib.declaration;
-import org.apache.myfaces.tobago.component.Visual;
+import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
+import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
-import jakarta.faces.component.UIOutput;
-
-public abstract class AbstractUIBadge extends UIOutput implements Visual {
-
- public abstract String getImage();
-
- public abstract String getTip();
+public interface HasIcon {
+ /**
+ * CSS class to render an icon.
+ */
+ @TagAttribute
+ @UIComponentTagAttribute()
+ void setIcon(String icon);
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/HtmlRendererUtils.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/HtmlRendererUtils.java
index 9e2140150d..bb90b5879a 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/HtmlRendererUtils.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/util/HtmlRendererUtils.java
@@ -19,9 +19,16 @@
package org.apache.myfaces.tobago.internal.util;
+import jakarta.el.ELContext;
+import jakarta.el.ValueExpression;
+import jakarta.faces.component.UIComponent;
+import jakarta.faces.component.UIInput;
+import jakarta.faces.context.FacesContext;
+import jakarta.faces.model.SelectItem;
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.renderkit.LabelWithAccessKey;
import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.renderkit.css.CssItem;
import org.apache.myfaces.tobago.renderkit.css.Icons;
import org.apache.myfaces.tobago.renderkit.css.TobagoClass;
import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
@@ -32,13 +39,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import jakarta.el.ELContext;
-import jakarta.el.ValueExpression;
-import jakarta.faces.component.UIComponent;
-import jakarta.faces.component.UIInput;
-import jakarta.faces.context.FacesContext;
-import jakarta.faces.model.SelectItem;
-
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.Locale;
@@ -74,6 +74,19 @@ public static void writeLabelWithAccessKey(final TobagoResponseWriter writer, fi
}
}
+ public static void encodeIcon(final TobagoResponseWriter writer, final String icon) throws IOException {
+ if (icon != null && !icon.isEmpty()) {
+ writer.startElement(HtmlElements.I);
+ writer.writeClassAttribute(new CssItem() {
+ @Override
+ public String getName() {
+ return icon;
+ }
+ });
+ writer.endElement(HtmlElements.I);
+ }
+ }
+
public static void encodeIconOrImage(final TobagoResponseWriter writer, final String image) throws IOException {
if (image != null && !image.isEmpty()) {
if (Icons.matches(image)) {
@@ -179,7 +192,7 @@ public static void writeDataAttributes(
final String value;
if (mapValue instanceof ValueExpression) {
Object expressionValue = ((ValueExpression) mapValue).getValue(elContext);
- value = expressionValue !=null ? expressionValue.toString() : null;
+ value = expressionValue != null ? expressionValue.toString() : null;
} else {
value = mapValue.toString();
}
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRendererUnitTest.java
index e106e8153d..f1eafc23d7 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/BadgeRendererUnitTest.java
@@ -51,4 +51,14 @@ public void badgeWithDataAttribute() throws IOException {
Assertions.assertEquals(loadHtml("renderer/badge/badge-data-attribute.html"), formattedResult());
}
+ @Test
+ public void badgeWithIcon() throws IOException {
+ final UIBadge c = (UIBadge) ComponentUtils.createComponent(
+ facesContext, Tags.badge.componentType(), RendererTypes.Badge, "id");
+ c.setValue("Text");
+ c.setIcon("icon-name");
+ c.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/badge/badge-icon.html"), formattedResult());
+ }
}
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonRendererUnitTest.java
index 58ee54cf11..6d0c169d2a 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/ButtonRendererUnitTest.java
@@ -45,6 +45,18 @@ public void button() throws IOException {
@Test
public void iconBi() throws IOException {
+ final UIButton b = (UIButton) ComponentUtils.createComponent(
+ facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
+ b.setLabel("button");
+ b.setIcon("bi-code");
+
+ b.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/button/iconBi.html"), formattedResult());
+ }
+
+ @Test
+ public void imageBi() throws IOException {
final UIButton b = (UIButton) ComponentUtils.createComponent(
facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
b.setLabel("button");
@@ -56,7 +68,7 @@ public void iconBi() throws IOException {
}
@Test
- public void iconBiJpg() throws IOException {
+ public void imageBiJpg() throws IOException {
final UIButton b = (UIButton) ComponentUtils.createComponent(
facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
b.setLabel("button");
@@ -69,6 +81,18 @@ public void iconBiJpg() throws IOException {
@Test
public void iconFa() throws IOException {
+ final UIButton b = (UIButton) ComponentUtils.createComponent(
+ facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
+ b.setLabel("button");
+ b.setIcon("fa fa-code");
+
+ b.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/button/iconFa.html"), formattedResult());
+ }
+
+ @Test
+ public void imageFa() throws IOException {
final UIButton b = (UIButton) ComponentUtils.createComponent(
facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
b.setLabel("button");
@@ -80,7 +104,7 @@ public void iconFa() throws IOException {
}
@Test
- public void iconFx() throws IOException {
+ public void imageFx() throws IOException {
final UIButton b = (UIButton) ComponentUtils.createComponent(
facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
b.setLabel("button");
@@ -93,6 +117,18 @@ public void iconFx() throws IOException {
@Test
public void iconFar() throws IOException {
+ final UIButton b = (UIButton) ComponentUtils.createComponent(
+ facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
+ b.setLabel("button");
+ b.setIcon("far fa-code");
+
+ b.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/button/iconFar.html"), formattedResult());
+ }
+
+ @Test
+ public void imageFar() throws IOException {
final UIButton b = (UIButton) ComponentUtils.createComponent(
facesContext, Tags.button.componentType(), RendererTypes.Button, "id");
b.setLabel("button");
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
index 2f812b93d2..6ddbccf3fd 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/LinkRendererUnitTest.java
@@ -93,6 +93,18 @@ public void link() throws IOException {
Assertions.assertEquals(loadHtml("renderer/link/link.html"), formattedResult());
}
+ @Test
+ public void linkWithIcon() throws IOException {
+ final UILink c = (UILink) ComponentUtils.createComponent(
+ facesContext, Tags.link.componentType(), RendererTypes.Link, "id");
+ c.setLabel("label");
+ c.setIcon("icon-name");
+ c.setLink("https://www.apache.org/");
+ c.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/link/linkWithIcon.html"), formattedResult());
+ }
+
@Test
public void linkWithImage() throws IOException {
final UILink c = (UILink) ComponentUtils.createComponent(
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
index 3cc553fd19..06fbc2ad49 100644
--- 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
@@ -21,8 +21,8 @@
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.component.UISection;
import org.apache.myfaces.tobago.util.ComponentUtils;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -64,4 +64,14 @@ public void simple() throws IOException {
Assertions.assertEquals(loadHtml("renderer/section/simple.html"), formattedResult());
}
+ @Test
+ public void sectionWithIcon() throws IOException {
+ final UISection c = (UISection) ComponentUtils.createComponent(
+ facesContext, Tags.section.componentType(), RendererTypes.Section, "id");
+ c.setLabel("label");
+ c.setIcon("icon-name");
+ c.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/section/section-icon.html"), formattedResult());
+ }
}
diff --git a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java
index a95a6ce87e..e8807c4b77 100644
--- a/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java
+++ b/tobago-core/src/test/java/org/apache/myfaces/tobago/internal/renderkit/renderer/TabGroupRendererUnitTest.java
@@ -104,4 +104,36 @@ public void withLabel() throws IOException {
Assertions.assertEquals(loadHtml("renderer/tabGroup/tabGroup-label.html"), formattedResult());
}
+ @Test
+ public void withLabelIconAndImage() throws IOException {
+ final UITabGroup tg = (UITabGroup) ComponentUtils.createComponent(
+ facesContext, Tags.tabGroup.componentType(), RendererTypes.TabGroup, "id");
+
+ final UITab t1 = (UITab) ComponentUtils.createComponent(
+ facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t1");
+ t1.setLabel("T1");
+ t1.setIcon("icon-t1");
+
+ final UITab t2 = (UITab) ComponentUtils.createComponent(
+ facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t2");
+ t2.setLabel("T2");
+ t2.setImage("url-t2");
+
+ final UITab t3 = (UITab) ComponentUtils.createComponent(
+ facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t3");
+ t3.setIcon("icon-t3");
+
+ final UITab t4 = (UITab) ComponentUtils.createComponent(
+ facesContext, Tags.tab.componentType(), RendererTypes.Tab, "t4");
+ t4.setImage("url-t4");
+
+ tg.getChildren().add(t1);
+ tg.getChildren().add(t2);
+ tg.getChildren().add(t3);
+ tg.getChildren().add(t4);
+
+ tg.encodeAll(facesContext);
+
+ Assertions.assertEquals(loadHtml("renderer/tabGroup/tabGroup-label_icon_image.html"), formattedResult());
+ }
}
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml b/tobago-core/src/test/resources/renderer/badge/badge-icon.html
similarity index 85%
copy from tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
copy to tobago-core/src/test/resources/renderer/badge/badge-icon.html
index 385fdde7e5..8a9f1f76a6 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
+++ b/tobago-core/src/test/resources/renderer/badge/badge-icon.html
@@ -1,5 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
<!--
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -17,4 +15,6 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Edit" image="bi-pencil"/>
+<tobago-badge id='id' class='badge'>
+<i class='icon-name'></i>
+<span>Text</span></tobago-badge>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml b/tobago-core/src/test/resources/renderer/link/linkWithIcon.html
similarity index 78%
copy from tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
copy to tobago-core/src/test/resources/renderer/link/linkWithIcon.html
index 385fdde7e5..ef7720bdd2 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
+++ b/tobago-core/src/test/resources/renderer/link/linkWithIcon.html
@@ -1,5 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
<!--
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -17,4 +15,4 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Edit" image="bi-pencil"/>
+<a id='id' name='id' href='https://www.apache.org/' class='tobago-link tobago-auto-spacing'><tobago-behavior event='click' client-id='id' omit='omit'></tobago-behavior><i class='icon-name'></i><span>label</span></a>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml b/tobago-core/src/test/resources/renderer/section/section-icon.html
similarity index 78%
copy from tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
copy to tobago-core/src/test/resources/renderer/section/section-icon.html
index 385fdde7e5..53b032fc4a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
+++ b/tobago-core/src/test/resources/renderer/section/section-icon.html
@@ -1,5 +1,3 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
<!--
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -17,4 +15,9 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Edit" image="bi-pencil"/>
+<tobago-section id='id' class='tobago-auto-spacing' data-tobago-level='1'>
+<div class='tobago-header'>
+<h1>
+<i class='icon-name'></i>
+<span>label</span></h1></div>
+<div class='tobago-section-content'></div></tobago-section>
diff --git a/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label_icon_image.html b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label_icon_image.html
new file mode 100644
index 0000000000..35dabfaa63
--- /dev/null
+++ b/tobago-core/src/test/resources/renderer/tabGroup/tabGroup-label_icon_image.html
@@ -0,0 +1,34 @@
+<!--
+ * 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.
+-->
+
+<tobago-tab-group id='id' class='card tobago-auto-spacing' switch-type='client'>
+<input type='hidden' value='0' name='id::index' id='id::index'>
+<div class='card-header'>
+<ul class='nav nav-tabs card-header-tabs' role='tablist'>
+<tobago-tab id='t1' class='nav-item tobago-active' for='id' role='presentation' index='0'>
+<a data-toggle='tab' class='nav-link active' tabindex='-1' data-target='#t1\:\:content' role='tab'><i class='icon-t1'></i><span>T1</span></a></tobago-tab>
+<tobago-tab id='t2' class='nav-item' for='id' role='presentation' index='1'>
+<a data-toggle='tab' class='nav-link' tabindex='0' data-target='#t2\:\:content' role='tab'><img src='url-t2' alt=''><span>T2</span></a></tobago-tab>
+<tobago-tab id='t3' class='nav-item' for='id' role='presentation' index='2'>
+<a data-toggle='tab' class='nav-link' tabindex='0' data-target='#t3\:\:content' role='tab'><i class='icon-t3'></i></a></tobago-tab>
+<tobago-tab id='t4' class='nav-item' for='id' role='presentation' index='3'>
+<a data-toggle='tab' class='nav-link' tabindex='0' data-target='#t4\:\:content' role='tab'><img src='url-t4' alt=''></a></tobago-tab></ul></div>
+<div class='card-body tab-content'>
+<div class='tab-pane active' role='tabpanel' id='t1::content' data-index='0'></div>
+<div class='tab-pane' role='tabpanel' id='t2::content' data-index='1'></div>
+<div class='tab-pane' role='tabpanel' id='t3::content' data-index='2'></div>
+<div class='tab-pane' role='tabpanel' id='t4::content' data-index='3'></div></div></tobago-tab-group>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/10-getting-started/Getting_Started.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/10-getting-started/Getting_Started.xhtml
index 16e23cd30f..f364d1525a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/10-getting-started/Getting_Started.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/10-getting-started/Getting_Started.xhtml
@@ -39,7 +39,7 @@
<tc:section label="Building">
<p>
- You need <tc:link label="Maven" link="http://maven.apache.org/download.html" image="bi-box-arrow-up-right"/> (at
+ You need <tc:link label="Maven" link="http://maven.apache.org/download.html" icon="bi-box-arrow-up-right"/> (at
least version 3.0.4)
and Java (version 8 or higher) to build Tobago.
</p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.2.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.2.xhtml
index 999b90c200..69dc9ee842 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.2.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.2.xhtml
@@ -38,7 +38,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.2.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.2.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.4.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.4.xhtml
index f058775bae..7600c37800 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.4.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.4.xhtml
@@ -42,7 +42,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.4.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.4.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.xhtml
index 7a7c35cf67..a2b745ddeb 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_2.xhtml
@@ -25,7 +25,7 @@
<p>At July 21, 2014 the version 2.0.0 has been released. Here was a quick overview over the features and changes made
in the last time to release this major revision.</p>
<p>Tobago 2.0.0 contains 184 entries in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.0.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('2.0.0')}"/>.
and most of them are exclusive in this version.</p>
<p>Please take also a look at the
<tc:link label="Migration from Tobago 1.5 to 2.0"
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.1.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.1.xhtml
index 76325de8aa..8cfa89aa01 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.1.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.1.xhtml
@@ -36,7 +36,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('3.1.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('3.1.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.xhtml
index 127d361e75..4ba1309820 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_3.xhtml
@@ -25,7 +25,7 @@
the first final release followed in December 2016.
Here is a quick overview over the features and changes made in the last time to release this major revision.</p>
<p>Tobago 3.0.0 contains several entries in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('3.0.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('3.0.0')}"/>.
and most of them are exclusive in this version.</p>
<p>Please take also a look at the
<tc:link label="Migration from Tobago 2.0 to 3.0"
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.1.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.1.xhtml
index 44ed92cc4c..348e89e62b 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.1.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.1.xhtml
@@ -37,7 +37,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.1.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.1.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.2.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.2.xhtml
index f08ac39782..de0cefd19e 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.2.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.2.xhtml
@@ -39,7 +39,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.2.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.2.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.3.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.3.xhtml
index 53dfb8b24b..bc2158a53c 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.3.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.3.xhtml
@@ -45,7 +45,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.3.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.3.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.4.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.4.xhtml
index bc70691fed..d630ee8e07 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.4.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.4.xhtml
@@ -39,7 +39,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.4.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.4.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.5.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.5.xhtml
index f3ca3ecce9..ee50ed0369 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.5.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.5.xhtml
@@ -39,7 +39,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.5.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.5.0')}"/>.
</tc:section>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.xhtml
index c9f59862e4..d2fd83ab44 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_4.xhtml
@@ -47,7 +47,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.0.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('4.0.0')}"/>.
</tc:section>
<tc:section label="Layout Managers">
@@ -172,7 +172,7 @@
<tc:section label="Font Awesome updated to 4.7.0">
New icons are available from the
- <tc:link label="FontAwesome" image="bi-box-arrow-up-right"
+ <tc:link label="FontAwesome" icon="bi-box-arrow-up-right"
link="http://fontawesome.io/icons/"/>
icon library.
</tc:section>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_5.0.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_5.0.xhtml
index 2b3da94842..2556908f9e 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_5.0.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/30-whats-new/x-Tobago_5.0.xhtml
@@ -42,7 +42,7 @@
</ul>
The full list is available in
- <tc:link label="Jira" image="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('5.0.0')}"/>.
+ <tc:link label="Jira" icon="bi-box-arrow-up-right" link="#{apiController.getJiraUrl('5.0.0')}"/>.
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/70-faq/FAQ.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/70-faq/FAQ.xhtml
index e7a268fc63..96ce733a8c 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/70-faq/FAQ.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/70-faq/FAQ.xhtml
@@ -48,7 +48,7 @@
<tc:section id="tobago-RI" label="Does Tobago run with the Sun reference implementation (RI)?">
<p>Tobago runs with Sun RI and with MyFaces.
Please take a look at the
- <tc:link image="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
+ <tc:link icon="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
List.</p>
</tc:section>
@@ -124,7 +124,7 @@
<tc:section id="tobago-browser" label="Which web browsers are currently supported by Tobago?">
<p>Please take a look at the
- <tc:link image="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
+ <tc:link icon="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
List.</p>
</tc:section>
@@ -185,7 +185,7 @@
<tc:section id="tobago-container" label="In which containers was Tobago tested?">
<p>Please take a look at the
- <tc:link image="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
+ <tc:link icon="bi-box-arrow-up-right" link="http://tobago-vm.apache.org/compatibility.html" label="Compatibility"/>
List.
Feel free to post your own experiences.</p>
</tc:section>
@@ -377,7 +377,7 @@ mvn clean jetty:run</demo-highlight>
</li>
<li>
Add a
- <tc:link label="QUnit Test" link="https://api.qunitjs.com/" image="bi-box-arrow-up-right"/>
+ <tc:link label="QUnit Test" link="https://api.qunitjs.com/" icon="bi-box-arrow-up-right"/>
to the <code>sample.test.js</code>.
<demo-highlight language="js">QUnit.test("Testtitle", function(assert) {
@@ -406,7 +406,7 @@ mvn clean jetty:run</demo-highlight>
TTT.waitMs(2000); // wait 2000 milliseconds</demo-highlight>
</li>
<li>
- <tc:link label="QUnit Assertions" link="https://api.qunitjs.com/assert/" image="bi-box-arrow-up-right"/>
+ <tc:link label="QUnit Assertions" link="https://api.qunitjs.com/assert/" icon="bi-box-arrow-up-right"/>
can be added to a asserts function. The first parameter is the number of assertions:
<demo-highlight language="js">TTT.asserts(2, function () {
assert.equal($input().val(), "Alice");
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/85-download/Download.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/85-download/Download.xhtml
index 4d89c0a91c..1b7f816c90 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/85-download/Download.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/000-intro/85-download/Download.xhtml
@@ -55,7 +55,7 @@
<tc:panel rendered="#{release.jira ne null}">
Release notes can be found in
- <tc:link label="Jira" image="bi-box-arrow-up-right"
+ <tc:link label="Jira" icon="bi-box-arrow-up-right"
link="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310273&version=#{release.jira}"/>.
</tc:panel>
@@ -73,39 +73,39 @@
<td>tar.gz</td>
<td><tc:link
link="https://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz"
- label="myfaces-tobago-#{release.version}-dist.tar.gz" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.tar.gz" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz.sha256"
- label="myfaces-tobago-#{release.version}-dist.tar.gz.sha256" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.tar.gz.sha256" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/binaries/myfaces-tobago-#{release.version}-dist.tar.gz.asc"
- label="myfaces-tobago-#{release.version}-dist.tar.gz.asc" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.tar.gz.asc" icon="bi-box-arrow-up-right"/></td>
</tr>
<tr>
<td>MyFaces Tobago</td>
<td>zip</td>
<td><tc:link
link="https://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip"
- label="myfaces-tobago-#{release.version}-dist.zip" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.zip" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip.sha256"
- label="myfaces-tobago-#{release.version}-dist.zip.sha256" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.zip.sha256" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/binaries/myfaces-tobago-#{release.version}-dist.zip.asc"
- label="myfaces-tobago-#{release.version}-dist.zip.asc" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-dist.zip.asc" icon="bi-box-arrow-up-right"/></td>
</tr>
<tr>
<td>MyFaces Tobago Source</td>
<td>zip</td>
<td><tc:link
link="https://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-tobago-#{release.version}-source-release.zip"
- label="myfaces-tobago-#{release.version}-source-release.zip" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-source-release.zip" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/source/myfaces-tobago-#{release.version}-source-release.zip.sha256"
- label="myfaces-tobago-#{release.version}-source-release.zip.sha256" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-source-release.zip.sha256" icon="bi-box-arrow-up-right"/></td>
<td><tc:link
link="https://downloads.apache.org/myfaces/source/myfaces-tobago-#{release.version}-source-release.zip.asc"
- label="myfaces-tobago-#{release.version}-source-release.zip.asc" image="bi-box-arrow-up-right"/></td>
+ label="myfaces-tobago-#{release.version}-source-release.zip.asc" icon="bi-box-arrow-up-right"/></td>
</tr>
</tbody>
</table>
@@ -119,7 +119,7 @@
If you want to use the latest Apache MyFaces Tobago features, the source code is under
version control with GIT. In the
<tc:link label="Getting Started" link="http://tobago-vm.apache.org/getting-started.html"
- image="bi-box-arrow-up-right"/>
+ icon="bi-box-arrow-up-right"/>
<!--XXX internal vs. external link -->
section you will find information how to use the ASF MyFaces Tobago GIT Repository.
</p>
@@ -128,7 +128,7 @@
<tc:section label="Archive of old releases">
<p>
Older releases are available in the
- <tc:link label="archive" link="https://archive.apache.org/dist/myfaces/" image="bi-box-arrow-up-right"/>.
+ <tc:link label="archive" link="https://archive.apache.org/dist/myfaces/" icon="bi-box-arrow-up-right"/>.
Those releases are only provided as historical artifacts. We strongly
recommend not to use those releases, but upgrade to the most recent release.
</p>
@@ -156,7 +156,7 @@
</p>
<p>
First download the Apache MyFaces
- <tc:link label="KEYS" link="https://www.apache.org/dist/myfaces/KEYS" image="bi-box-arrow-up-right"/>
+ <tc:link label="KEYS" link="https://www.apache.org/dist/myfaces/KEYS" icon="bi-box-arrow-up-right"/>
as well as the <i>asc</i> signature file
for the particular distribution. It is important that you get these files from the ultimate
trusted source - the main ASF distribution site, rather than from a mirror.
@@ -164,7 +164,7 @@
<p>
You need an installation of e.g. OpenPGP or GPG to check the files. More information you'll find on the
<tc:link label="Apache verification" link="https://www.apache.org/info/verification.html"
- fragment="CheckingSignatures" image="bi-box-arrow-up-right"/>
+ fragment="CheckingSignatures" icon="bi-box-arrow-up-right"/>
site.
</p>
<p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/10-in/In.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/10-in/In.xhtml
index c331b592f7..f36b0a93ed 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/10-in/In.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/10-in/In.xhtml
@@ -89,7 +89,7 @@
<tc:in id="a3" label="name" autocomplete="name" />
The values are documented in
- <tc:link label="MDN" image="bi-box-arrow-up-right"
+ <tc:link label="MDN" icon="bi-box-arrow-up-right"
link="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values"/>.
</tc:section>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/30-textarea/Textarea.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/30-textarea/Textarea.xhtml
index b6b2a1eb04..edc029fd78 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/30-textarea/Textarea.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/30-textarea/Textarea.xhtml
@@ -70,7 +70,7 @@
<tc:textarea id="a3" label="name" autocomplete="name" />
The values are documented in
- <tc:link label="MDN" image="bi-box-arrow-up-right"
+ <tc:link label="MDN" icon="bi-box-arrow-up-right"
link="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values"/>.
</tc:section>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/40-date/Date.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/40-date/Date.xhtml
index 5c86ff89a3..a1ed4eebce 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/40-date/Date.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/010-input/40-date/Date.xhtml
@@ -109,7 +109,7 @@
<tc:in id="zone" label="Time Zone" value="#{dateController.timezoneString}"
validator="#{dateController.timeZoneValidator}">
<f:facet name="after">
- <tc:button image="bi-arrow-counterclockwise" tip="Update" actionListener="#{dateController.timeZoneChanged}">
+ <tc:button icon="bi-arrow-counterclockwise" tip="Update" actionListener="#{dateController.timeZoneChanged}">
<f:ajax render="mainForm" execute="zone"/>
</tc:button>
</f:facet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/25-badge/Badge.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/25-badge/Badge.xhtml
index 48c4a4c7a4..8f207f0e16 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/25-badge/Badge.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/25-badge/Badge.xhtml
@@ -50,20 +50,20 @@
<p>Badges can be placed inside button groups. So it's possible to use them together with buttons. </p>
<demo-highlight language="markup"><tc:buttons>
<tc:badge value="badge" markup="warning"/>
- <tc:button image="bi-x-lg" markup="badge" tip="remove" omit="true"/>
+ <tc:button icon="bi-x-lg" markup="badge" tip="remove" omit="true"/>
</tc:buttons></demo-highlight>
<tc:buttons>
<tc:badge value="badge" markup="warning"/>
- <tc:button image="bi-x-lg" markup="badge" tip="remove" omit="true"/>
+ <tc:button icon="bi-x-lg" markup="badge" tip="remove" omit="true"/>
</tc:buttons>
<p/>
<tc:separator/>
<p>Badges can have an icon and tip.</p>
<demo-highlight language="markup"><tc:badge value="image" image="#{request.contextPath}/image/feather-leaf.png" tip="badge tip"/>
-<tc:badge value="icon" image="bi-airplane"/></demo-highlight>
+<tc:badge value="icon" icon="bi-airplane"/></demo-highlight>
<tc:badge value="image" image="#{request.contextPath}/image/feather-leaf.png" tip="badge tip"/>
- <tc:badge value="icon" image="bi-airplane"/>
+ <tc:badge value="icon" icon="bi-airplane"/>
</tc:section>
<tc:section label="Markups">
@@ -118,7 +118,7 @@
Clicking the button will remove the current group.</p>
<demo-highlight language="markup"><tc:buttons>
<tc:badge value="label" markup="warning"/>
- <tc:button image="bi-x-lg" markup="badge secondary"/>
+ <tc:button icon="bi-x-lg" markup="badge secondary"/>
</tc:buttons></demo-highlight>
<tc:button label="Reset" action="#{badgeController.reset}">
@@ -129,7 +129,7 @@
<span>
<tc:buttons>
<tc:badge value="#{item}" markup="#{item}"/>
- <tc:button image="bi-x-lg" markup="badge secondary" action="#{badgeController.remove(item)}">
+ <tc:button icon="bi-x-lg" markup="badge secondary" action="#{badgeController.remove(item)}">
<f:ajax render="badgesButtonGroup"/>
</tc:button>
</tc:buttons>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/40-image/Image.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/40-image/Image.xhtml
index e75b3af2fd..8cc2288cd8 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/40-image/Image.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/40-image/Image.xhtml
@@ -54,7 +54,7 @@
<tc:section label="Bootstrap Icons">
<p>
Since Tobago 5
- <tc:link link="https://icons.getbootstrap.com/" label="Bootstrap Icons" image="bi-box-arrow-up-right"/>
+ <tc:link link="https://icons.getbootstrap.com/" label="Bootstrap Icons" icon="bi-box-arrow-up-right"/>
is shipped with Tobago.
</p>
<demo-highlight language="markup"><tc:image id="bi" value="bi-emoji-smile"/></demo-highlight>
@@ -62,7 +62,7 @@
</tc:section>
<tc:section label="Font Awesome">
<p>
- <tc:link link="https://fontawesome.com/" label="Font Awesome" image="bi-box-arrow-up-right"/>
+ <tc:link link="https://fontawesome.com/" label="Font Awesome" icon="bi-box-arrow-up-right"/>
is no longer shipped with Tobago.
But it is still integratable, like in this demo. You need to add the resources manually.
</p>
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 b3f363e179..c3d347b01a 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
@@ -78,13 +78,13 @@
<tc:section label="Dropdown Link">
<demo-highlight language="markup"><tc:link label="MusicPlayer" omit="true">
- <tc:link image="bi-play-circle" label="Play"/>
+ <tc:link icon="bi-play-circle" label="Play"/>
...
</tc:link></demo-highlight>
<tc:link label="MusicPlayer" omit="true">
- <tc:link image="bi-play-circle" label="Play"/>
- <tc:link image="bi-pause-circle" label="Pause"/>
- <tc:link image="bi-stop-circle" label="Stop"/>
+ <tc:link icon="bi-play-circle" label="Play"/>
+ <tc:link icon="bi-pause-circle" label="Pause"/>
+ <tc:link icon="bi-stop-circle" label="Stop"/>
<tc:link label="Track">
<tc:link label="1"/>
<tc:link label="2"/>
@@ -95,13 +95,13 @@
<tc:section label="Dropdown Button">
<demo-highlight language="markup"><tc:button label="MusicPlayer" omit="true">
- <tc:link image="bi-play-circle" label="Play"/>
+ <tc:link icon="bi-play-circle" label="Play"/>
...
</tc:button></demo-highlight>
<tc:button label="MusicPlayer" omit="true">
- <tc:link image="bi-play-circle" label="Play"/>
- <tc:link image="bi-pause-circle" label="Pause"/>
- <tc:link image="bi-stop-circle" label="Stop"/>
+ <tc:link icon="bi-play-circle" label="Play"/>
+ <tc:link icon="bi-pause-circle" label="Pause"/>
+ <tc:link icon="bi-stop-circle" label="Stop"/>
<tc:link label="Track">
<tc:link label="1"/>
<tc:link label="2"/>
@@ -110,7 +110,7 @@
</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:button icon="bi-three-dots-vertical" omit="true" markup="hideToggleIcon">
<tc:link label="Entry 1"/>
<tc:link label="Entry 2"/>
<tc:link label="Entry 3"/>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/Customizer.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/Customizer.xhtml
index bcde064cf4..759d2d5a98 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/Customizer.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/Customizer.xhtml
@@ -64,6 +64,6 @@
</tc:column>
</tc:sheet>
- <tc:button label="Reset List" action="#{customizer.resetList}" image="bi-arrow-counterclockwise"/>
+ <tc:button label="Reset List" action="#{customizer.resetList}" icon="bi-arrow-counterclockwise"/>
</tc:section>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-delete.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-delete.xhtml
index 837e3a01db..e624b808d9 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-delete.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-delete.xhtml
@@ -17,4 +17,4 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Delete" image="bi-trash"/>
+<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Delete" icon="bi-trash"/>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
index 385fdde7e5..64690b87fd 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-edit.xhtml
@@ -17,4 +17,4 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Edit" image="bi-pencil"/>
+<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="Edit" icon="bi-pencil"/>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-new.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-new.xhtml
index 1103ef500c..74106a7dad 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-new.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/040-command/21-buttons-customizer/x-buttons-item-new.xhtml
@@ -17,4 +17,4 @@
* limitations under the License.
-->
-<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="New" image="bi-file-earmark"/>
+<tc:button xmlns:tc="http://myfaces.apache.org/tobago/component" label="New" icon="bi-file-earmark"/>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/050-container/40-section/Section.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/050-container/40-section/Section.xhtml
index 62a536acba..3bb603c3f4 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/050-container/40-section/Section.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/050-container/40-section/Section.xhtml
@@ -54,14 +54,14 @@
<tc:section label="Image">
<p>Sections can have an image, a Bootstrap Icon or FontAwesome icon (todo:
included by your application) in the header.</p>
- <tc:section image="bi-pie-chart" label="Bootstrap Icons: Pie-Chart">
+ <tc:section icon="bi-pie-chart" label="Bootstrap Icons: Pie-Chart">
<demo-highlight language="markup"><tc:section
- image="bi-pie-chart"
+ icon="bi-pie-chart"
label="Bootstrap Icons: Pie-Chart"></demo-highlight>
</tc:section>
- <tc:section image="fa-pie-chart" label="FontAwesome: Pie-Chart">
+ <tc:section icon="fa fa-pie-chart" label="FontAwesome: Pie-Chart">
<demo-highlight language="markup"><tc:section
- image="fa-pie-chart"
+ icon="fa fa-pie-chart"
label="FontAwesome: Pie-Chart"></demo-highlight>
</tc:section>
<tc:section image="#{request.contextPath}/image/feather-leaf.png" label="Image File: feather-leaf.png">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/30-popup/Popup.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/30-popup/Popup.xhtml
index 4780fd976c..c5fe599aac 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/30-popup/Popup.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/30-popup/Popup.xhtml
@@ -53,7 +53,7 @@
<tc:popup id="ajaxPopup">
<f:facet name="label">Popup (AJAX)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" immediate="true">
+ <tc:link icon="bi-x-lg" immediate="true">
<f:ajax execute="ajaxPopup" render="ajaxPopup :page:messages"/>
<tc:operation name="hide" for="ajaxPopup"/>
</tc:link>
@@ -87,7 +87,7 @@
<tc:popup id="ajaxPopup">
<f:facet name="label">Popup (AJAX)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" immediate="true">
+ <tc:link icon="bi-x-lg" immediate="true">
<f:ajax execute="ajaxPopup" render="ajaxPopup :page:messages"/>
<tc:operation name="hide" for="ajaxPopup"/>
</tc:link>
@@ -129,7 +129,7 @@
<tc:popup id="clientPopup" collapsedMode="hidden">
<f:facet name="label">Popup (client side)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientPopup"/>
</tc:link>
</f:facet>
@@ -156,7 +156,7 @@
<tc:popup id="clientPopup" collapsedMode="hidden">
<f:facet name="label">Popup (client side)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientPopup"/>
</tc:link>
</f:facet>
@@ -196,7 +196,7 @@
<tc:popup id="extraLargePopup" collapsedMode="hidden" markup="extraLarge">
<f:facet name="label">Popup (extra large)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="extraLargePopup"/>
</tc:link>
</f:facet>
@@ -205,7 +205,7 @@
<tc:popup id="largePopup" collapsedMode="hidden" markup="large">
<f:facet name="label">Popup (large)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="largePopup"/>
</tc:link>
</f:facet>
@@ -214,7 +214,7 @@
<tc:popup id="smallPopup" collapsedMode="hidden" markup="small">
<f:facet name="label">Popup (small)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="smallPopup"/>
</tc:link>
</f:facet>
@@ -235,7 +235,7 @@
Modal
</f:facet>
<f:facet name="bar">
- <tc:link id="hideModal" image="bi-x-lg" omit="true">
+ <tc:link id="hideModal" icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="modal"/>
</tc:link>
</f:facet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/40-offcanvas/Offcanvas.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/40-offcanvas/Offcanvas.xhtml
index e080906f13..c1a04d132d 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/40-offcanvas/Offcanvas.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/40-offcanvas/Offcanvas.xhtml
@@ -40,7 +40,7 @@
<tc:offcanvas id="ajaxOffcanvas">
<f:facet name="label">Server side (Ajax)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg">
+ <tc:link icon="bi-x-lg">
<tc:operation name="hide" for="ajaxOffcanvas"/>
<f:ajax execute="ajaxOffcanvas" render="ajaxOffcanvas"/>
</tc:link>
@@ -54,7 +54,7 @@
<tc:offcanvas id="ajaxOffcanvas">
<f:facet name="label">Server side (Ajax)</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg">
+ <tc:link icon="bi-x-lg">
<tc:operation name="hide" for="ajaxOffcanvas"/>
<f:ajax execute="ajaxOffcanvas" render="ajaxOffcanvas"/>
</tc:link>
@@ -70,7 +70,7 @@
<tc:offcanvas id="clientOffcanvas" collapsedMode="hidden">
<f:facet name="label">Client side</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientOffcanvas"/>
</tc:link>
</f:facet>
@@ -82,7 +82,7 @@
<tc:offcanvas id="clientOffcanvas" collapsedMode="hidden">
<f:facet name="label">Client side</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientOffcanvas"/>
</tc:link>
</f:facet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/50-popover/Popover.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/50-popover/Popover.xhtml
index 8c6265341c..766058031b 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/50-popover/Popover.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/060-popup/50-popover/Popover.xhtml
@@ -50,7 +50,7 @@
<p>In the following example, the width is changed to 600px using a CSS class. By default, the width of a popover
window is <code>276px;</code>. It can be changed with <code>$popover-max-width</code> (SCSS variable when
compiling a theme) or <code>--bs-popover-max-width</code> (CSS). See:
- <tc:link label="Bootstrap Popover CSS" image="bi-box-arrow-up-right"
+ <tc:link label="Bootstrap Popover CSS" icon="bi-box-arrow-up-right"
link="https://getbootstrap.com/docs/5.3/components/popovers/#css" target="_blank"/></p>
<demo-highlight language="markup"><tc:button label="Popover with a width of 600px" omit="true">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-basic-example/Basic_example.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-basic-example/Basic_example.xhtml
index e8747fe41c..6c1641137c 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-basic-example/Basic_example.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-basic-example/Basic_example.xhtml
@@ -92,7 +92,7 @@
<tc:style customClass="three"/>
<f:facet name="bar">
<demo-alert value="Not implemented yet!">
- <tc:link image="bi-x-lg" omit="true"/>
+ <tc:link icon="bi-x-lg" omit="true"/>
</demo-alert>
</f:facet>
Content of tab three.
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-client/Tab_Client.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-client/Tab_Client.xhtml
index 5600fd3983..3ba8e48a72 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-client/Tab_Client.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/070-tab/00-client/Tab_Client.xhtml
@@ -63,17 +63,17 @@
<p>A label and an image is set.</p>
<demo-highlight language="markup"><tc:tab label="Label with image" image="\#{request.contextPath}/image/feather-leaf.png"></demo-highlight>
</tc:tab>
- <tc:tab id="t22bi" label="Label with icon" image="bi-gender-female">
+ <tc:tab id="t22bi" label="Label with icon" icon="bi-gender-female">
<p>A label and an image is set to an bootstrap icon.</p>
- <demo-highlight language="markup"><tc:tab label="Label with icon" image="bi-gender-female"></demo-highlight>
+ <demo-highlight language="markup"><tc:tab label="Label with icon" icon="bi-gender-female"></demo-highlight>
</tc:tab>
<tc:tab id="t23" image="#{request.contextPath}/image/feather-leaf.png">
<p>Only an image is set.</p>
<demo-highlight language="markup"><tc:tab image="\#{request.contextPath}/image/feather-leaf.png"></demo-highlight>
</tc:tab>
- <tc:tab id="t23bi" image="bi-gender-male">
+ <tc:tab id="t23bi" icon="bi-gender-male">
<p>Only an image is set to an bootstrap icon.</p>
- <demo-highlight language="markup"><tc:tab image="bi-gender-male"></demo-highlight>
+ <demo-highlight language="markup"><tc:tab icon="bi-gender-male"></demo-highlight>
</tc:tab>
<tc:tab id="t24">
<p>Neither a label or an image are set. In this case the header gets a label with the indexnumber of the tab in
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/32-action/Action.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/32-action/Action.xhtml
index aa86c17991..29d3fd1354 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/32-action/Action.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/080-sheet/32-action/Action.xhtml
@@ -31,7 +31,7 @@
</tc:column>
<tc:column label="Action">
<tc:link action="#{sheetActionController.deleteAction(object)}"
- image="bi-trash" id="action" labelLayout="skip"/>
+ icon="bi-trash" id="action" labelLayout="skip"/>
</tc:column>
</tc:sheet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/090-tree/02-editor/Tree_Editor.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/090-tree/02-editor/Tree_Editor.xhtml
index 98be1b1ba9..5dee006e41 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/090-tree/02-editor/Tree_Editor.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/090-tree/02-editor/Tree_Editor.xhtml
@@ -27,19 +27,19 @@
Some commands are using popups and AJAX.</p>
<tc:buttons>
- <tc:button label="New" omit="true" image="bi-file-earmark">
+ <tc:button label="New" omit="true" icon="bi-file-earmark">
<tc:operation name="show" for="createPopup"/>
</tc:button>
- <tc:button label="Delete" image="bi-trash" action="#{treeEditorController.delete}"/>
- <tc:button label="Rename" omit="true" image="bi-pencil">
+ <tc:button label="Delete" icon="bi-trash" action="#{treeEditorController.delete}"/>
+ <tc:button label="Rename" omit="true" icon="bi-pencil">
<tc:operation name="show" for="renamePopup"/>
</tc:button>
- <tc:button label="Cut" action="#{treeEditorController.cut}" image="bi-scissors"/>
- <tc:button label="Copy" action="#{treeEditorController.copy}" image="bi-clipboard-plus"/>
- <tc:button label="Paste" action="#{treeEditorController.paste}" image="bi-clipboard-check"/>
- <tc:button label="Up" action="#{treeEditorController.moveUp}" image="bi-arrow-up"/>
- <tc:button label="Down" action="#{treeEditorController.moveDown}" image="bi-arrow-down"/>
- <tc:button label="Reset" action="#{treeEditorController.reset}" image="bi-arrow-counterclockwise"/>
+ <tc:button label="Cut" action="#{treeEditorController.cut}" icon="bi-scissors"/>
+ <tc:button label="Copy" action="#{treeEditorController.copy}" icon="bi-clipboard-plus"/>
+ <tc:button label="Paste" action="#{treeEditorController.paste}" icon="bi-clipboard-check"/>
+ <tc:button label="Up" action="#{treeEditorController.moveUp}" icon="bi-arrow-up"/>
+ <tc:button label="Down" action="#{treeEditorController.moveDown}" icon="bi-arrow-down"/>
+ <tc:button label="Reset" action="#{treeEditorController.reset}" icon="bi-arrow-counterclockwise"/>
</tc:buttons>
<tc:popup id="createPopup" collapsedMode="hidden">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/00-tinymce/TinyMCE.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/00-tinymce/TinyMCE.xhtml
index 812d9f7b4f..c1969f6ecd 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/00-tinymce/TinyMCE.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/00-tinymce/TinyMCE.xhtml
@@ -31,7 +31,7 @@
This demo uses the CDN of TinyMCE as a showcase.
There are other integration possibilities.
For more information to setup see
- <tc:link image="bi-box-arrow-up-right" link="https://www.tiny.cloud/" label="TinyMCE"/>.
+ <tc:link icon="bi-box-arrow-up-right" link="https://www.tiny.cloud/" label="TinyMCE"/>.
</p>
<p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/01-ckeditor/CKEditor.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/01-ckeditor/CKEditor.xhtml
index 3657856da2..fb3f0b5c63 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/01-ckeditor/CKEditor.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/110-wysiwyg/01-ckeditor/CKEditor.xhtml
@@ -31,7 +31,7 @@
This demo uses the CDN of CKEditor as a showcase.
There are other integration possibilities.
For more information to setup see
- <tc:link image="bi-box-arrow-up-right" link="https://ckeditor.com/" label="CKEditor"/>.
+ <tc:link icon="bi-box-arrow-up-right" link="https://ckeditor.com/" label="CKEditor"/>.
</p>
<p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/05-csp/Content_Security_Policy.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/05-csp/Content_Security_Policy.xhtml
index 374364209d..28efec8c29 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/05-csp/Content_Security_Policy.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/05-csp/Content_Security_Policy.xhtml
@@ -25,7 +25,7 @@
<p>
Tobago supports Content Security Policy (CSP) to prevent cross-site
scripting (XSS) and related attacks.
- <tc:link link="http://www.w3.org/TR/CSP/" label="Specification link" image="bi-box-arrow-up-right"/>.
+ <tc:link link="http://www.w3.org/TR/CSP/" label="Specification link" icon="bi-box-arrow-up-right"/>.
In short: The HTML page doesn't contain any JavaScript or CSS information.
All allowed sources for JavaScript, CSS and other resources have to be declared in special header.
If you have own renderers or own JavaScript in your application, this code also needs to support CSP, to use this feature.
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/10-sanitize/Sanitize.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/10-sanitize/Sanitize.xhtml
index 755cccc4c5..466178d036 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/10-sanitize/Sanitize.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/280-security/10-sanitize/Sanitize.xhtml
@@ -31,7 +31,7 @@
</li>
<li>See <tc:link label="OWASP Java HTML Sanitizer Project"
link="https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project"
- image="bi-box-arrow-up-right" /></li>
+ icon="bi-box-arrow-up-right" /></li>
<li>The filter can be configured the <code>tobago-config.xml</code> file with
the <code class="language-markup"><sanitizer></code> tag.</li>
</ul>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/290-appearance/20-bootstrap/Bootstrap.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/290-appearance/20-bootstrap/Bootstrap.xhtml
index 2df2c391ce..b072d3cea5 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/290-appearance/20-bootstrap/Bootstrap.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/290-appearance/20-bootstrap/Bootstrap.xhtml
@@ -25,7 +25,7 @@
<tc:section label="Example: Classes for Displaying Dependent on Screen Size">
- <tc:link label="Bootstrap: Display property" image="bi-bootstrap"
+ <tc:link label="Bootstrap: Display property" icon="bi-bootstrap"
link="https://getbootstrap.com/docs/5.2/utilities/display/"/>
<demo-highlight language="markup"><tc:badge value="small">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/300-requests/150-behavior/Behavior.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/300-requests/150-behavior/Behavior.xhtml
index 7a6ed478c6..fac2bc964e 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/300-requests/150-behavior/Behavior.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/300-requests/150-behavior/Behavior.xhtml
@@ -117,7 +117,7 @@
<tc:section label="stopPropagation">
<p>The <code>stopPropagation</code> attribute prevents further propagation of the current event (see
- <tc:link label="stopPropagation" image="bi-box-arrow-up-right"
+ <tc:link label="stopPropagation" icon="bi-box-arrow-up-right"
link="https://developer.mozilla.org/en-US/docs/Web/API/Event/stopPropagation" target="_blank"/>).
This is useful for example for a sortable sheet with a component inside the <code>bar</code>-facet.</p>
<p>In the following example the input field for filter by names can be clicked without execute the sorting.</p>
@@ -166,7 +166,7 @@
<tc:section label="Custom event">
<p>If the <code>customEventName</code> attribute is set, a
- <tc:link label="custom event" image="bi-box-arrow-up-right"
+ <tc:link label="custom event" icon="bi-box-arrow-up-right"
link="https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent" target="_blank"/>
is fired by the given name.</p>
<demo-highlight language="markup"><tc:button label="Fire event">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/event/Event_1870.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/event/Event_1870.xhtml
index 174aa92755..5eeb51fc1f 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/event/Event_1870.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/event/Event_1870.xhtml
@@ -24,7 +24,7 @@
<tc:style file="#{request.contextPath}/css/demo.css"/>
- <tc:button image="bi-arrow-counterclockwise"/>
+ <tc:button icon="bi-arrow-counterclockwise"/>
<p>
<tc:badge markup="warning" value="Warning: Only works with JSF 2.1 and higher, not with JSF 2.0!" />
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/Popup.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/Popup.xhtml
index 8615e5183c..54104b60cf 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/Popup.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/Popup.xhtml
@@ -69,7 +69,7 @@
Client Side Popup
</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientPopup"/>
</tc:link>
</f:facet>
@@ -176,7 +176,7 @@
Modal
</f:facet>
<f:facet name="bar">
- <tc:link id="hideModal" image="bi-x-lg" omit="true">
+ <tc:link id="hideModal" icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="modal"/>
</tc:link>
</f:facet>
@@ -215,7 +215,7 @@
called directly, and not after the ajax call is complete. On the other and, to avoid flickering,
the popup should be shown after the ajax call.
(<tc:link link="https://issues.apache.org/jira/browse/TOBAGO-2083" label="Jira TOBAGO-2083"
- image="bi-box-arrow-up-right"/>)
+ icon="bi-box-arrow-up-right"/>)
</p>
<tc:button id="openRefreshPopup" label="Open Popup" immediate="true">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/jQuery/jQuery.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/jQuery/jQuery.xhtml
index a0dbc75499..bff77b7835 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/jQuery/jQuery.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/jQuery/jQuery.xhtml
@@ -32,7 +32,7 @@
Client Sided Popup
</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg" omit="true">
+ <tc:link icon="bi-x-lg" omit="true">
<tc:operation name="hide" for="clientPopup"/>
</tc:link>
</f:facet>
@@ -53,7 +53,7 @@
Ajax Popup
</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg">
+ <tc:link icon="bi-x-lg">
<tc:operation name="hide" for="ajaxPopup"/>
<f:ajax execute="ajaxPopup" render="ajaxPopup"/>
</tc:link>
@@ -75,7 +75,7 @@
Server Popup
</f:facet>
<f:facet name="bar">
- <tc:link image="bi-x-lg">
+ <tc:link icon="bi-x-lg">
<tc:operation name="hide" for="serverPopup"/>
</tc:link>
</f:facet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/static-backdrop/StaticBackdrop.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/static-backdrop/StaticBackdrop.xhtml
index 073ce1f3d9..cc26a9eedd 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/static-backdrop/StaticBackdrop.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/popup/static-backdrop/StaticBackdrop.xhtml
@@ -54,7 +54,7 @@
modal=true
</f:facet>
<f:facet name="bar">
- <tc:link id="hideModalTrue" image="bi-x-lg">
+ <tc:link id="hideModalTrue" icon="bi-x-lg">
<tc:operation name="hide" for="modalTrue"/>
<f:ajax execute="modalTrue" render="modalTrue"/>
</tc:link>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/selectOneList/custom-footer/Custom_footer.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/selectOneList/custom-footer/Custom_footer.xhtml
index 5687c8b1ea..c75df45a29 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/selectOneList/custom-footer/Custom_footer.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/selectOneList/custom-footer/Custom_footer.xhtml
@@ -37,7 +37,7 @@
value="#{selectListServerFilterController.selectedSolarObject}">
<f:facet name="footer">
<tc:out value="#{selectListServerFilterController.footerTextOne}" plain="true" rendered="false"/>
- <tc:button image="bi-airplane" rendered="false"/>
+ <tc:button icon="bi-airplane" rendered="false"/>
</f:facet>
<tc:selectItemsFiltered value="#{selectListServerFilterController.solarObjectsOne}"
query="#{selectListServerFilterController.queryOne}"
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/tabGroup/style/Style.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/tabGroup/style/Style.xhtml
index e6c7ed28dc..8788d3fd64 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/tabGroup/style/Style.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/tabGroup/style/Style.xhtml
@@ -55,18 +55,18 @@
<tc:tab id="tabDisabled" label="Disabled" disabled="true">
<tc:out value="Content of tabDisabled."/>
</tc:tab>
- <tc:tab id="tabIcon" label="Icon" image="bi-exclamation-circle-fill">
+ <tc:tab id="tabIcon" label="Icon" icon="bi-exclamation-circle-fill">
<tc:out value="Content of tabIcon."/>
</tc:tab>
<tc:tab id="tabBarFacetClose" label="Facet: close">
<f:facet name="bar">
- <tc:link image="fa-times" omit="true"/>
+ <tc:link icon="fa fa-times" omit="true"/>
</f:facet>
<tc:out value="Content of tabBarFacetClose."/>
</tc:tab>
<tc:tab id="tabBarFacetCloseDisabled" label="Facet: close disabled" disabled="true">
<f:facet name="bar">
- <tc:link image="fa-times" omit="true"/>
+ <tc:link icon="fa fa-times" omit="true"/>
</f:facet>
<tc:out value="Content of tabBarFacetClose."/>
</tc:tab>
@@ -90,9 +90,9 @@
</tc:tab>
<tc:tab id="tabBarFacetCombine" label="Facet: combine">
<f:facet name="bar">
- <tc:link image="fa-times" omit="true"/>
+ <tc:link icon="fa fa-times" omit="true"/>
<tc:image value="bi-check-circle-fill"/>
- <tc:link image="fa-times" omit="true"/>
+ <tc:link icon="fa fa-times" omit="true"/>
</f:facet>
<tc:out value="Content of tabBarFacet."/>
</tc:tab>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/z-manual/ui-repeat/Toolbar.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/z-manual/ui-repeat/Toolbar.xhtml
index 5b4d7c8277..9fccda223e 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/z-manual/ui-repeat/Toolbar.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/z-manual/ui-repeat/Toolbar.xhtml
@@ -27,7 +27,7 @@
<tc:bar>
<!-- with form -->
<tc:form>
- <tc:link label="With Form" image="fa-language" omit="true">
+ <tc:link label="With Form" icon="fa fa-language" omit="true">
<ui:repeat id="repeatLocale" value="#{repeatController.allLocales}" var="locale">
<tc:link id="linkLocale"
image="#{repeatController.locale == locale ? 'fa-check' : ''}"
@@ -42,7 +42,7 @@
<tc:out value=" "/>
<!-- without form -->
- <tc:link label="Without Form" image="fa-language" omit="true">
+ <tc:link label="Without Form" icon="fa fa-language" omit="true">
<ui:repeat id="repeatLocaleTwo" value="#{repeatController.allLocales}" var="locale">
<tc:link id="linkLocaleTow"
image="#{repeatController.locale == locale ? 'fa-check' : ''}"
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/main.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/main.xhtml
index 3a058ce82a..251b6ab67b 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/main.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/main.xhtml
@@ -55,10 +55,10 @@
<tc:box label="Menu" id="small-view-menu" collapsed="true" collapsedMode="hidden">
<f:facet name="bar">
<tc:buttons>
- <tc:button id="show-menu" image="bi-arrow-bar-down" omit="true">
+ <tc:button id="show-menu" icon="bi-arrow-bar-down" omit="true">
<tc:operation name="show" for="small-view-menu"/>
</tc:button>
- <tc:button id="hide-menu" image="bi-arrow-bar-up" omit="true">
+ <tc:button id="hide-menu" icon="bi-arrow-bar-up" omit="true">
<tc:operation name="hide" for="small-view-menu"/>
</tc:button>
</tc:buttons>
@@ -118,7 +118,7 @@
<tc:box label="Client Information">
<f:facet name="bar">
<!-- <tc:button image="#{fa.CLOSE.name}">-->
- <tc:button image="bi-x-lg">
+ <tc:button icon="bi-x-lg">
<tc:operation name="hide" for="info"/>
</tc:button>
</f:facet>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/menu.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/menu.xhtml
index e078da9a71..34f77c7603 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/menu.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/menu.xhtml
@@ -115,8 +115,8 @@
<tc:link outcome="/content/000-intro/96-logging-info/Logging_Info.xhtml" immediate="true" label="Logging Info"
disabled="#{! serverInfo.enabled}"/>
<tc:separator/>
- <tc:link link="https://myfaces.apache.org/#/tobago" label="Tobago Project" image="bi-box-arrow-up-right"/>
- <tc:link link="https://tobago-demo.apache.org/" label="Demo Overview" image="bi-box-arrow-up-right"/>
+ <tc:link link="https://myfaces.apache.org/#/tobago" label="Tobago Project" icon="bi-box-arrow-up-right"/>
+ <tc:link link="https://tobago-demo.apache.org/" label="Demo Overview" icon="bi-box-arrow-up-right"/>
</tc:link>
</tc:links>
@@ -139,18 +139,18 @@
<tc:flexLayout columns="auto auto">
<tc:buttons>
<tc:button immediate="true" id="previous"
- image="bi-chevron-left"
+ icon="bi-chevron-left"
action="#{navigationState.gotoPrevious}"
disabled="#{navigationState.first}"
tip="Previous"/>
<tc:button immediate="true" id="next"
- image="bi-chevron-right"
+ icon="bi-chevron-right"
action="#{navigationState.gotoNext}"
disabled="#{navigationState.last}"
tip="Next"/>
</tc:buttons>
<tc:button action="#{navigationState.toggleViewSource}"
- image="bi-code-slash"
+ icon="bi-code-slash"
immediate="true" tip="View Source"/>
</tc:flexLayout>
</tc:form>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/testAccessAllPages.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/testAccessAllPages.xhtml
index 0a571c728f..4556b9ec38 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/testAccessAllPages.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/testAccessAllPages.xhtml
@@ -30,7 +30,7 @@
<tc:panel>
<tc:style customClass="testframe-wrapper"/>
<tc:panel>
- <tc:link image="bi-box-arrow-up-right" tip="open in new tab"
+ <tc:link icon="bi-box-arrow-up-right" tip="open in new tab"
label="#{testPage.shortLabel}" link="test.xhtml?base=#{testPage.base}&basicTest=true" target="_blank"/>
</tc:panel>
<tc:object id="#{testPage.id}" name="test.xhtml?base=#{testPage.base}&basicTest=true">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/testAll.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/testAll.xhtml
index b0ba1460fe..26a07b39ac 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/testAll.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/testAll.xhtml
@@ -30,7 +30,7 @@
<tc:panel>
<tc:style customClass="testframe-wrapper"/>
<tc:panel>
- <tc:link image="bi-box-arrow-up-right" tip="open in new tab"
+ <tc:link icon="bi-box-arrow-up-right" tip="open in new tab"
label="#{testPage.label}" outcome="/#{testPage.base}.xhtml" target="_blank"/>
</tc:panel>
<tc:object id="#{testPage.id}" name="test.xhtml?base=#{testPage.base}">