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 2024/04/08 08:00:13 UTC
(myfaces-tobago) branch main updated (f3a5c7bc07 -> 30a8ad8324)
This is an automated email from the ASF dual-hosted git repository.
hnoeth pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
from f3a5c7bc07 build(deps): npm
new a9f4b4b883 feature: popover component
new 30a8ad8324 build(theme): rebuild after implementing popover component
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../apache/myfaces/tobago/component/Facets.java | 2 +
.../myfaces/tobago/component/RendererTypes.java | 2 +
.../tobago/component/SupportsAutoSpacing.java | 4 +-
.../org/apache/myfaces/tobago/component/Tags.java | 2 +
...AbstractUIBadge.java => AbstractUIPopover.java} | 10 ++-
.../renderkit/renderer/CommandRendererBase.java | 16 +++-
.../renderer/DecorationPositionRendererBase.java | 14 ++--
.../renderkit/renderer/PopoverRenderer.java | 75 +++++++++++++++++
.../taglib/component/OutTagDeclaration.java | 11 +--
...Declaration.java => PopoverTagDeclaration.java} | 31 +++----
.../declaration/{HasHelp.java => HasEscape.java} | 8 +-
.../internal/taglib/declaration/HasSanitize.java | 1 +
.../myfaces/tobago/renderkit/css/TobagoClass.java | 1 -
.../tobago/renderkit/html/CustomAttributes.java | 4 +
.../resources/renderer/date/error-message.html | 2 +-
.../src/test/resources/renderer/date/help.html | 2 +-
.../test/resources/renderer/in/error-message.html | 2 +-
.../src/test/resources/renderer/in/help.html | 2 +-
.../selectBooleanCheckboxError.html | 2 +-
.../selectBooleanCheckboxFatal.html | 2 +-
.../selectBooleanCheckboxInfo.html | 2 +-
.../selectBooleanCheckboxWarning.html | 2 +-
.../selectManyCheckboxFatal.html | 2 +-
.../renderer/selectManyShuttle/error-message.html | 2 +-
.../resources/renderer/selectManyShuttle/help.html | 2 +-
.../{OutController.java => PopoverController.java} | 17 ++--
.../tobago-example-demo/src/main/scss/demo.scss | 16 ++++
.../webapp/content/020-output/10-out/Out.xhtml | 2 +-
.../main/webapp/content/063-popover/Popover.xhtml | 98 ++++++++++++++++++++++
.../src/main/webapp/css/demo.css | 16 ++++
.../src/main/webapp/css/demo.css.map | 2 +-
.../src/main/webapp/css/demo.min.css | 2 +-
.../src/main/webapp/css/demo.min.css.map | 2 +-
tobago-theme/src/main/scss/_tobago.scss | 34 ++++----
.../src/main/css/tobago.css | 29 +++----
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css | 29 +++----
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css | 29 +++----
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-speyside/src/main/css/tobago.css | 29 +++----
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-standard/src/main/css/tobago.css | 29 +++----
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-standard/src/main/js/tobago.js | 6 +-
.../src/main/js/tobago.js.map | 2 +-
.../src/main/ts/tobago-popover.ts | 44 +++++++++-
.../src/main/ts/tobago-sheet.ts | 1 +
58 files changed, 441 insertions(+), 179 deletions(-)
copy tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/{AbstractUIBadge.java => AbstractUIPopover.java} (79%)
create mode 100644 tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/PopoverRenderer.java
copy tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/{TreeLabelTagDeclaration.java => PopoverTagDeclaration.java} (73%)
copy tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/{HasHelp.java => HasEscape.java} (82%)
copy tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/{OutController.java => PopoverController.java} (52%)
create mode 100644 tobago-example/tobago-example-demo/src/main/webapp/content/063-popover/Popover.xhtml
(myfaces-tobago) 01/02: feature: popover component
Posted by hn...@apache.org.
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
commit a9f4b4b883aa247b42308f0ffdcc36a2b2069729
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Mar 4 08:46:40 2024 +0100
feature: popover component
* implement popover component
* refactor help attribute popover; adjust unit tests
* add demo page
* fix typo in Out.xhtml
* cleanup .tobago-popover-box
Issue: TOBAGO-2226
---
.../apache/myfaces/tobago/component/Facets.java | 2 +
.../myfaces/tobago/component/RendererTypes.java | 2 +
.../tobago/component/SupportsAutoSpacing.java | 4 +-
.../org/apache/myfaces/tobago/component/Tags.java | 2 +
.../internal/component/AbstractUIPopover.java | 33 ++++++++
.../renderkit/renderer/CommandRendererBase.java | 16 +++-
.../renderer/DecorationPositionRendererBase.java | 14 ++--
.../renderkit/renderer/PopoverRenderer.java | 75 +++++++++++++++++
.../taglib/component/OutTagDeclaration.java | 11 +--
.../taglib/component/PopoverTagDeclaration.java | 50 +++++++++++
.../{HasSanitize.java => HasEscape.java} | 21 ++---
.../internal/taglib/declaration/HasSanitize.java | 1 +
.../myfaces/tobago/renderkit/css/TobagoClass.java | 1 -
.../tobago/renderkit/html/CustomAttributes.java | 4 +
.../resources/renderer/date/error-message.html | 2 +-
.../src/test/resources/renderer/date/help.html | 2 +-
.../test/resources/renderer/in/error-message.html | 2 +-
.../src/test/resources/renderer/in/help.html | 2 +-
.../selectBooleanCheckboxError.html | 2 +-
.../selectBooleanCheckboxFatal.html | 2 +-
.../selectBooleanCheckboxInfo.html | 2 +-
.../selectBooleanCheckboxWarning.html | 2 +-
.../selectManyCheckboxFatal.html | 2 +-
.../renderer/selectManyShuttle/error-message.html | 2 +-
.../resources/renderer/selectManyShuttle/help.html | 2 +-
.../tobago/example/demo/PopoverController.java | 42 ++++++++++
.../tobago-example-demo/src/main/scss/demo.scss | 16 ++++
.../webapp/content/020-output/10-out/Out.xhtml | 2 +-
.../main/webapp/content/063-popover/Popover.xhtml | 98 ++++++++++++++++++++++
tobago-theme/src/main/scss/_tobago.scss | 34 ++++----
.../src/main/ts/tobago-popover.ts | 44 +++++++++-
.../src/main/ts/tobago-sheet.ts | 1 +
32 files changed, 424 insertions(+), 71 deletions(-)
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Facets.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Facets.java
index 270a64b5ae..4f52220008 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Facets.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Facets.java
@@ -40,6 +40,7 @@ public enum Facets {
pagerPage,
pagerPageDirect,
pagerRow,
+ popover,
radio,
reload,
sorter;
@@ -63,6 +64,7 @@ public enum Facets {
public static final String PAGER_PAGE = "pagerPage";
public static final String PAGER_PAGE_DIRECT = "pagerPageDirect";
public static final String PAGER_ROW = "pagerRow";
+ public static final String POPOVER = "popover";
public static final String RADIO = "radio";
/**
* TODO: Must be replaced by a behavior
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
index 137e04a3b1..b4b3314f13 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/RendererTypes.java
@@ -58,6 +58,7 @@ public enum RendererTypes {
Out,
Page,
Panel,
+ Popover,
Popup,
Progress,
Range,
@@ -134,6 +135,7 @@ public enum RendererTypes {
public static final String OUT = "Out";
public static final String PAGE = "Page";
public static final String PANEL = "Panel";
+ public static final String POPOVER = "Popover";
public static final String POPUP = "Popup";
public static final String PROGRESS = "Progress";
public static final String RELOAD = "Reload";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/SupportsAutoSpacing.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/SupportsAutoSpacing.java
index 5718679602..28a855d1b6 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/SupportsAutoSpacing.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/SupportsAutoSpacing.java
@@ -19,9 +19,8 @@
package org.apache.myfaces.tobago.component;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
-
import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
import java.util.Map;
@@ -44,6 +43,7 @@ public interface SupportsAutoSpacing {
&& attributes.get(HtmlElements.TOBAGO_TREE) == null
&& attributes.get(HtmlElements.TOBAGO_LINKS) == null
&& attributes.get(HtmlElements.TOBAGO_BUTTONS) == null
+ && attributes.get(HtmlElements.TOBAGO_POPOVER) == null
&& attributes.get(Facets.before) == null
&& attributes.get(Facets.after) == null
&& attributes.get(Facets.label) == null
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Tags.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Tags.java
index 7dfb6560b7..a49cee0068 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Tags.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/component/Tags.java
@@ -63,6 +63,7 @@ public enum Tags {
out,
page,
panel,
+ popover,
popup,
progress,
reload,
@@ -138,6 +139,7 @@ public enum Tags {
public static final String OUT = "out";
public static final String PAGE = "page";
public static final String PANEL = "panel";
+ public static final String POPOVER = "popover";
public static final String POPUP = "popup";
public static final String PROGRESS = "progress";
public static final String RELOAD = "reload";
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIPopover.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIPopover.java
new file mode 100644
index 0000000000..4ce7932636
--- /dev/null
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIPopover.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.internal.component;
+
+import jakarta.faces.component.UIOutput;
+import org.apache.myfaces.tobago.component.Visual;
+import org.apache.myfaces.tobago.sanitizer.SanitizeMode;
+
+public abstract class AbstractUIPopover extends UIOutput implements Visual {
+
+ public abstract String getLabel();
+
+ public abstract boolean isEscape();
+
+ public abstract SanitizeMode getSanitize();
+}
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 99e81f7f67..c08402ef2d 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
@@ -19,6 +19,9 @@
package org.apache.myfaces.tobago.internal.renderkit.renderer;
+import jakarta.faces.component.UIComponent;
+import jakarta.faces.component.UIParameter;
+import jakarta.faces.context.FacesContext;
import org.apache.myfaces.tobago.component.Attributes;
import org.apache.myfaces.tobago.component.Facets;
import org.apache.myfaces.tobago.context.Markup;
@@ -49,10 +52,6 @@ import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import jakarta.faces.component.UIComponent;
-import jakarta.faces.component.UIParameter;
-import jakarta.faces.context.FacesContext;
-
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
@@ -70,6 +69,7 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
final LabelWithAccessKey label = new LabelWithAccessKey(component);
final String image = component.getImage();
final UIComponent labelFacet = ComponentUtils.getFacet(component, Facets.label);
+ final UIComponent popoverFacet = ComponentUtils.getFacet(component, Facets.popover);
final boolean anchor = (component.getLink() != null || component.getOutcome() != null) && !disabled;
final String target = component.getTarget();
final boolean autoSpacing = component.getAutoSpacing(facesContext);
@@ -144,6 +144,14 @@ public abstract class CommandRendererBase<T extends AbstractUICommand> extends D
encodeBehavior(writer, facesContext, component);
}
+ if (popoverFacet != null) {
+ insideBegin(facesContext, Facets.popover);
+ for (final UIComponent child : RenderUtils.getFacetChildren(popoverFacet)) {
+ child.encodeAll(facesContext);
+ }
+ insideEnd(facesContext, Facets.popover);
+ }
+
HtmlRendererUtils.encodeIconOrImage(writer, image);
if (labelFacet != null) {
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DecorationPositionRendererBase.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DecorationPositionRendererBase.java
index 028295ef31..9079a839ef 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DecorationPositionRendererBase.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DecorationPositionRendererBase.java
@@ -19,6 +19,9 @@
package org.apache.myfaces.tobago.internal.renderkit.renderer;
+import jakarta.faces.application.FacesMessage;
+import jakarta.faces.component.UIComponent;
+import jakarta.faces.context.FacesContext;
import org.apache.myfaces.tobago.component.DecorationPosition;
import org.apache.myfaces.tobago.component.Facets;
import org.apache.myfaces.tobago.component.SupportsAutoSpacing;
@@ -35,6 +38,7 @@ import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
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.CustomAttributes;
import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlButtonTypes;
@@ -43,10 +47,6 @@ import org.apache.myfaces.tobago.util.ComponentUtils;
import org.apache.myfaces.tobago.util.ResourceUtils;
import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
-import jakarta.faces.application.FacesMessage;
-import jakarta.faces.component.UIComponent;
-import jakarta.faces.context.FacesContext;
-
import java.io.IOException;
import java.util.List;
@@ -289,10 +289,8 @@ public abstract class DecorationPositionRendererBase<T extends UIComponent & Sup
final TobagoResponseWriter writer, final CssItem buttonColor, final Icons icon, final String title,
final String content, final Integer tabIndex) throws IOException {
writer.startElement(HtmlElements.TOBAGO_POPOVER);
- writer.writeAttribute(DataAttributes.BS_TOGGLE, "popover", false);
- writer.writeAttribute(HtmlAttributes.TITLE, title, true);
- writer.writeAttribute(DataAttributes.BS_CONTENT, content, true);
- writer.writeAttribute(DataAttributes.BS_TRIGGER, "focus", false);
+ writer.writeAttribute(CustomAttributes.LABEL, title, true);
+ writer.writeAttribute(HtmlAttributes.VALUE, content, true);
writer.startElement(HtmlElements.A);
writer.writeAttribute(HtmlAttributes.TABINDEX, tabIndex != null ? tabIndex : 0);
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/PopoverRenderer.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/PopoverRenderer.java
new file mode 100644
index 0000000000..8e68f99d95
--- /dev/null
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/PopoverRenderer.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.internal.renderkit.renderer;
+
+import jakarta.faces.context.FacesContext;
+import org.apache.myfaces.tobago.config.TobagoConfig;
+import org.apache.myfaces.tobago.internal.component.AbstractUIPopover;
+import org.apache.myfaces.tobago.renderkit.RendererBase;
+import org.apache.myfaces.tobago.renderkit.html.CustomAttributes;
+import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
+import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
+import org.apache.myfaces.tobago.sanitizer.SanitizeMode;
+import org.apache.myfaces.tobago.sanitizer.Sanitizer;
+import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
+
+import java.io.IOException;
+
+public class PopoverRenderer<T extends AbstractUIPopover> extends RendererBase<T> {
+
+ @Override
+ public void encodeBeginInternal(final FacesContext facesContext, final T component) throws IOException {
+ final TobagoResponseWriter writer = getResponseWriter(facesContext);
+ final String clientId = component.getClientId(facesContext);
+ final String labelString = component.getLabel();
+ final String currentValue = getCurrentValue(facesContext, component);
+
+ insideBegin(facesContext, HtmlElements.TOBAGO_POPOVER);
+ writer.startElement(HtmlElements.TOBAGO_POPOVER);
+ writer.writeIdAttribute(clientId);
+
+ if (component.getCustomClass() != null) {
+ writer.writeAttribute(CustomAttributes.CUSTOM_CLASS, component.getCustomClass().getName(), true);
+ }
+
+ if (SanitizeMode.auto == component.getSanitize()) {
+ final Sanitizer sanitizer = TobagoConfig.getInstance(facesContext).getSanitizer();
+ if (labelString != null && !labelString.isEmpty()) {
+ writer.writeAttribute(CustomAttributes.LABEL, sanitizer.sanitize(labelString), true);
+ }
+ writer.writeAttribute(HtmlAttributes.VALUE, sanitizer.sanitize(currentValue), true);
+ } else {
+ if (labelString != null && !labelString.isEmpty()) {
+ writer.writeAttribute(CustomAttributes.LABEL, labelString, true);
+ }
+ writer.writeAttribute(HtmlAttributes.VALUE, currentValue, true);
+ }
+
+ writer.writeAttribute(CustomAttributes.ESCAPE, Boolean.toString(component.isEscape()), false);
+ writer.writeAttribute(CustomAttributes.SANITIZE, component.getSanitize().name(), false);
+ }
+
+ @Override
+ public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
+ final TobagoResponseWriter writer = getResponseWriter(facesContext);
+ writer.endElement(HtmlElements.TOBAGO_POPOVER);
+ insideEnd(facesContext, HtmlElements.TOBAGO_POPOVER);
+ }
+}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
index a9738626fc..38c5e0e31f 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/OutTagDeclaration.java
@@ -30,6 +30,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.HasConverter;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasDecorationPosition;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasEscape;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabelLayout;
@@ -120,17 +121,9 @@ import java.text.MessageFormat;
})
public interface OutTagDeclaration
- extends HasIdBindingAndRendered, HasConverter, HasTip, HasValue, IsVisual,
+ extends HasIdBindingAndRendered, HasConverter, HasTip, HasValue, IsVisual, HasEscape,
HasSanitize, HasLabel, HasLabelLayout, IsPlain, HasAutoSpacing, HasDecorationPosition {
- /**
- * Flag indicating that characters that are
- * sensitive in HTML and XML markup must be escaped.
- */
- @TagAttribute
- @UIComponentTagAttribute(type = "boolean", defaultValue = "true")
- void setEscape(String escape);
-
/**
* Flag indicating that new-line characters will be converted to HTML <br>.
* This is useful for pre-formatted plain text.
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/PopoverTagDeclaration.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/PopoverTagDeclaration.java
new file mode 100644
index 0000000000..392932a1c4
--- /dev/null
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/component/PopoverTagDeclaration.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.internal.taglib.component;
+
+import jakarta.faces.component.UIOutput;
+import org.apache.myfaces.tobago.apt.annotation.Tag;
+import org.apache.myfaces.tobago.apt.annotation.UIComponentTag;
+import org.apache.myfaces.tobago.component.RendererTypes;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasEscape;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasIdBindingAndRendered;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasLabel;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasSanitize;
+import org.apache.myfaces.tobago.internal.taglib.declaration.HasValue;
+import org.apache.myfaces.tobago.internal.taglib.declaration.IsVisual;
+
+/**
+ * Renders a popover.
+ */
+@Tag(name = "popover")
+@UIComponentTag(
+ uiComponent = "org.apache.myfaces.tobago.component.UIPopover",
+ uiComponentFacesClass = "jakarta.faces.component.UIOutput",
+ componentFamily = UIOutput.COMPONENT_FAMILY,
+ rendererType = RendererTypes.POPOVER,
+ interfaces = {
+ // As long as no behavior event names are defined, ClientBehaviorHolder must be implemented for Mojarra.
+ "jakarta.faces.component.behavior.ClientBehaviorHolder"
+ }
+)
+
+public interface PopoverTagDeclaration
+ extends HasIdBindingAndRendered, IsVisual, HasValue, HasLabel, HasEscape, HasSanitize {
+}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasEscape.java
similarity index 58%
copy from tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java
copy to tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasEscape.java
index b9ecbc91e8..d647daafa0 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasEscape.java
@@ -21,24 +21,13 @@ package org.apache.myfaces.tobago.internal.taglib.declaration;
import org.apache.myfaces.tobago.apt.annotation.TagAttribute;
import org.apache.myfaces.tobago.apt.annotation.UIComponentTagAttribute;
-import org.apache.myfaces.tobago.sanitizer.SanitizeMode;
-public interface HasSanitize {
+public interface HasEscape {
+
/**
- * Should HTML content sanitized?
- * The effect of sanitizing depends on the configuration.
- * The value "auto" means, that sanitizing take place for
- * <ul>
- * <li>tc:out when escape="false" or</li>
- * <li>tc:textarea when attribute data-html-editor is set,</li>
- * </ul>
- * because that are the critical parts.
+ * Flag indicating that characters that are sensitive in HTML and XML markup must be escaped.
*/
@TagAttribute
- @UIComponentTagAttribute(
- type = "org.apache.myfaces.tobago.sanitizer.SanitizeMode",
- defaultValue = SanitizeMode.AUTO,
- allowedValues = {SanitizeMode.AUTO, SanitizeMode.NEVER},
- defaultCode = "org.apache.myfaces.tobago.sanitizer.SanitizeMode.auto")
- void setSanitize(String sanitize);
+ @UIComponentTagAttribute(type = "boolean", defaultValue = "true")
+ void setEscape(String escape);
}
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java
index b9ecbc91e8..7fc08a6884 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/taglib/declaration/HasSanitize.java
@@ -30,6 +30,7 @@ public interface HasSanitize {
* The value "auto" means, that sanitizing take place for
* <ul>
* <li>tc:out when escape="false" or</li>
+ * <li>tc:popover when escape="false" or</li>
* <li>tc:textarea when attribute data-html-editor is set,</li>
* </ul>
* because that are the critical parts.
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
index e546c53451..54b8c0982b 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/css/TobagoClass.java
@@ -87,7 +87,6 @@ public enum TobagoClass implements CssItem {
PAGE__TOAST_STORE("tobago-page-toastStore"),
PAGING("tobago-paging"),
PANEL("tobago-panel"),
- POPOVER__BOX("tobago-popover-box"),
BUTTON__LEFT("tobago-button-left"),
BUTTON__RIGHT("tobago-button-right"),
RANGE("tobago-range"),
diff --git a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CustomAttributes.java b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CustomAttributes.java
index 239daab3b5..2866186d0e 100644
--- a/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CustomAttributes.java
+++ b/tobago-core/src/main/java/org/apache/myfaces/tobago/renderkit/html/CustomAttributes.java
@@ -25,6 +25,7 @@ public enum CustomAttributes implements MarkupLanguageAttributes {
COLLAPSE_TARGET("collapse-target"),
CONFIRMATION("confirmation"),
CLIENT_ID("client-id"),
+ CUSTOM_CLASS("custom-class"),
DATE_PATTERN("date-pattern"),
DELAY("delay"),
DROP_ZONE("drop-zone"),
@@ -32,6 +33,7 @@ public enum CustomAttributes implements MarkupLanguageAttributes {
/**
* <f:ajax> attribute
*/
+ ESCAPE("escape"),
EXECUTE("execute"),
EXPANDABLE("expandable"),
FIELD_ID("field-id"),
@@ -49,6 +51,7 @@ public enum CustomAttributes implements MarkupLanguageAttributes {
/**
* Lazy loading in sheet.
*/
+ LABEL("label"),
LAZY("lazy"),
LAZY_ROWS("lazy-rows"),
/**
@@ -62,6 +65,7 @@ public enum CustomAttributes implements MarkupLanguageAttributes {
OMIT("omit"),
ORIENTATION("orientation"),
PARENT("parent"),
+ SANITIZE("sanitize"),
SELECTABLE("selectable"),
SELECTED("selected"),
/**
diff --git a/tobago-core/src/test/resources/renderer/date/error-message.html b/tobago-core/src/test/resources/renderer/date/error-message.html
index d503811b74..87a9e628a7 100644
--- a/tobago-core/src/test/resources/renderer/date/error-message.html
+++ b/tobago-core/src/test/resources/renderer/date/error-message.html
@@ -20,7 +20,7 @@
<div class='input-group'>
<input type='date' name='id' id='id::field' title='a test' max='9999-12-31' class='is-error form-control' autofocus='autofocus'>
</div>
- <tobago-popover data-bs-toggle='popover' title='Error' data-bs-content='a test' data-bs-trigger='focus'>
+ <tobago-popover label='Error' value='a test'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/date/help.html b/tobago-core/src/test/resources/renderer/date/help.html
index 4c98941a81..138a2ac6a1 100644
--- a/tobago-core/src/test/resources/renderer/date/help.html
+++ b/tobago-core/src/test/resources/renderer/date/help.html
@@ -20,7 +20,7 @@
<div class='input-group'>
<input type='date' name='id' id='id::field' value='1957-10-05' max='9999-12-31' class='form-control'>
</div>
- <tobago-popover data-bs-toggle='popover' title='Help' data-bs-content='Help!' data-bs-trigger='focus'>
+ <tobago-popover label='Help' value='Help!'>
<a tabindex='0' role='button' class='btn btn-outline-info'><i class='bi-question-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/in/error-message.html b/tobago-core/src/test/resources/renderer/in/error-message.html
index d5be97cb78..275cab206e 100644
--- a/tobago-core/src/test/resources/renderer/in/error-message.html
+++ b/tobago-core/src/test/resources/renderer/in/error-message.html
@@ -19,7 +19,7 @@
<label for='id::field' class='col-form-label'>label</label>
<div class='tobago-messages-container tobago-button-right' data-tobago-faces-message='a test'>
<input type='text' name='id' id='id::field' title='a test' class='is-error form-control' autofocus='autofocus'>
- <tobago-popover data-bs-toggle='popover' title='Error' data-bs-content='a test' data-bs-trigger='focus'>
+ <tobago-popover label='Error' value='a test'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/in/help.html b/tobago-core/src/test/resources/renderer/in/help.html
index 919eb90301..7e405b3cfe 100644
--- a/tobago-core/src/test/resources/renderer/in/help.html
+++ b/tobago-core/src/test/resources/renderer/in/help.html
@@ -19,7 +19,7 @@
<label for='id::field' class='col-form-label'>label</label>
<div class='tobago-help-container tobago-button-right' data-tobago-help='Help!'>
<input type='text' name='id' id='id::field' class='form-control'>
- <tobago-popover data-bs-toggle='popover' title='Help' data-bs-content='Help!' data-bs-trigger='focus'>
+ <tobago-popover label='Help' value='Help!'>
<a tabindex='0' role='button' class='btn btn-outline-info'><i class='bi-question-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxError.html b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxError.html
index 441867ce85..28fd72ff01 100644
--- a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxError.html
+++ b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxError.html
@@ -21,7 +21,7 @@
<input class='form-check-input is-error' type='checkbox' value='true' name='id' id='id::field' autofocus='autofocus'>
<label class='form-check-label' for='id::field'></label>
</div>
- <tobago-popover data-bs-toggle='popover' title='Error' data-bs-content='This is a custom error' data-bs-trigger='focus'>
+ <tobago-popover label='Error' value='This is a custom error'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxFatal.html b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxFatal.html
index 85646283e3..67fb26819a 100644
--- a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxFatal.html
+++ b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxFatal.html
@@ -21,7 +21,7 @@
<input class='form-check-input is-error' type='checkbox' value='true' name='id' id='id::field' autofocus='autofocus'>
<label class='form-check-label' for='id::field'></label>
</div>
- <tobago-popover data-bs-toggle='popover' title='Fatal' data-bs-content='This is a custom fatal error' data-bs-trigger='focus'>
+ <tobago-popover label='Fatal' value='This is a custom fatal error'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxInfo.html b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxInfo.html
index 788f10c314..17d8e4cb6c 100644
--- a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxInfo.html
+++ b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxInfo.html
@@ -21,7 +21,7 @@
<input class='form-check-input is-info' type='checkbox' value='true' name='id' id='id::field' autofocus='autofocus'>
<label class='form-check-label' for='id::field'></label>
</div>
- <tobago-popover data-bs-toggle='popover' title='Information' data-bs-content='This is a custom information' data-bs-trigger='focus'>
+ <tobago-popover label='Information' value='This is a custom information'>
<a tabindex='0' role='button' class='btn btn-info'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxWarning.html b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxWarning.html
index b1eae4fa7a..dad533fcf8 100644
--- a/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxWarning.html
+++ b/tobago-core/src/test/resources/renderer/selectBooleanCheckbox/selectBooleanCheckboxWarning.html
@@ -21,7 +21,7 @@
<input class='form-check-input is-warning' type='checkbox' value='true' name='id' id='id::field' autofocus='autofocus'>
<label class='form-check-label' for='id::field'></label>
</div>
- <tobago-popover data-bs-toggle='popover' title='Warning' data-bs-content='This is a custom warning' data-bs-trigger='focus'>
+ <tobago-popover label='Warning' value='This is a custom warning'>
<a tabindex='0' role='button' class='btn btn-warning'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectManyCheckbox/selectManyCheckboxFatal.html b/tobago-core/src/test/resources/renderer/selectManyCheckbox/selectManyCheckboxFatal.html
index f44dac8a44..611caf7da0 100644
--- a/tobago-core/src/test/resources/renderer/selectManyCheckbox/selectManyCheckboxFatal.html
+++ b/tobago-core/src/test/resources/renderer/selectManyCheckbox/selectManyCheckboxFatal.html
@@ -27,7 +27,7 @@
<label class='form-check-label' for='id::1'>Entry Two</label>
</div>
</div>
- <tobago-popover data-bs-toggle='popover' title='Fatal' data-bs-content='This is a custom fatal error' data-bs-trigger='focus'>
+ <tobago-popover label='Fatal' value='This is a custom fatal error'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectManyShuttle/error-message.html b/tobago-core/src/test/resources/renderer/selectManyShuttle/error-message.html
index cf5ea3be56..0a4e6f465f 100644
--- a/tobago-core/src/test/resources/renderer/selectManyShuttle/error-message.html
+++ b/tobago-core/src/test/resources/renderer/selectManyShuttle/error-message.html
@@ -42,7 +42,7 @@
<option value=''>Value 2
</option></select>
</div>
- <tobago-popover data-bs-toggle='popover' title='Error' data-bs-content='a test' data-bs-trigger='focus'>
+ <tobago-popover label='Error' value='a test'>
<a tabindex='0' role='button' class='btn btn-danger'><i class='bi-exclamation-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-core/src/test/resources/renderer/selectManyShuttle/help.html b/tobago-core/src/test/resources/renderer/selectManyShuttle/help.html
index 353f8f0241..a25a430423 100644
--- a/tobago-core/src/test/resources/renderer/selectManyShuttle/help.html
+++ b/tobago-core/src/test/resources/renderer/selectManyShuttle/help.html
@@ -42,7 +42,7 @@
<option value=''>Value 2
</option></select>
</div>
- <tobago-popover data-bs-toggle='popover' title='Help' data-bs-content='Help!' data-bs-trigger='focus'>
+ <tobago-popover label='Help' value='Help!'>
<a tabindex='0' role='button' class='btn btn-outline-info'><i class='bi-question-lg'></i></a>
</tobago-popover>
</div>
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PopoverController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PopoverController.java
new file mode 100644
index 0000000000..a333229565
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/PopoverController.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.myfaces.tobago.example.demo;
+
+import jakarta.enterprise.context.RequestScoped;
+import jakarta.inject.Named;
+
+@Named
+@RequestScoped
+public class PopoverController {
+
+ public String getLoremIpsum() {
+ return "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore"
+ + " et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum."
+ + " Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit"
+ + " amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna"
+ + " aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd"
+ + " gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";
+ }
+
+ public String getHtml() {
+ return "Text in <span class='text-red'>red</span>, "
+ + "<span class='text-green'>green</span> and <span class='text-blue'>blue</span>.";
+ }
+}
diff --git a/tobago-example/tobago-example-demo/src/main/scss/demo.scss b/tobago-example/tobago-example-demo/src/main/scss/demo.scss
index d8a86295f5..a1d4c34d1f 100644
--- a/tobago-example/tobago-example-demo/src/main/scss/demo.scss
+++ b/tobago-example/tobago-example-demo/src/main/scss/demo.scss
@@ -118,3 +118,19 @@ tobago-tree {
border-right: 13px solid;
}
}
+
+.popover-600 {
+ --bs-popover-max-width: 600px;
+}
+
+.text-red {
+ color: #ff4f00;
+}
+
+.text-green {
+ color: #30cd00;
+}
+
+.text-blue {
+ color: #009aff;
+}
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/10-out/Out.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/10-out/Out.xhtml
index cc72c4ce1e..1c4d9c7c61 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/10-out/Out.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/020-output/10-out/Out.xhtml
@@ -104,7 +104,7 @@
<tc:out id="o5" label="Sanitize off" escape="false" sanitize="never" value="#{outController.html}"/>
<p>
Probably you will find no colors here. In that case, the CSP in the browser protectes against inline style.
- Moro information about CSP in Tobago find in the
+ Further information about CSP in Tobago can be found in the
<tc:link label="security section"
link="#{request.contextPath}/content/280-security/05-csp/Content_Security_Policy.xhtml"/>.
</p>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/063-popover/Popover.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/063-popover/Popover.xhtml
new file mode 100644
index 0000000000..7842e9f0e4
--- /dev/null
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/063-popover/Popover.xhtml
@@ -0,0 +1,98 @@
+<?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
+ * 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.
+-->
+
+<ui:composition template="/main.xhtml"
+ xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:f="jakarta.faces.core"
+ xmlns:tc="http://myfaces.apache.org/tobago/component"
+ xmlns:ui="jakarta.faces.facelets">
+
+ <p>An extended tooltip can be created with <code class="language-markup"><tc:popover/></code>.</p>
+ <p>Tag Library Documentation:
+ <tc:link label="<tc:popover/>" image="#{request.contextPath}/image/feather-leaf.png"
+ link="#{apiController.tobagoTld}/tc/popover.html"/></p>
+
+ <tc:section label="Basic example">
+ <p>Put a popover in a popover facet of a button.</p>
+
+ <demo-highlight language="markup"><tc:button label="Simple Popover" omit="true">
+ <f:facet name="popover">
+ <tc:popover label="Popover title" value="Popover content"/>
+ </f:facet>
+</tc:button></demo-highlight>
+
+ <tc:button label="Simple Popover" omit="true">
+ <f:facet name="popover">
+ <tc:popover label="Popover title" value="Popover content"/>
+ </f:facet>
+ </tc:button>
+ </tc:section>
+
+ <tc:section label="Custom CSS class">
+ <p>To assign a CSS class on the popover window use the <code
+ class="language-markup"><tc:style customClass="..."/></code> attribute.</p>
+ <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"
+ 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">
+ <f:facet name="popover">
+ <tc:popover label="Lorem Ipsum" value="\#{popoverController.loremIpsum}">
+ <tc:style customClass="popover-600"/>
+ </tc:popover>
+ </f:facet>
+</tc:button></demo-highlight>
+
+ <tc:button label="Popover with a width of 600px" omit="true">
+ <f:facet name="popover">
+ <tc:popover label="Lorem Ipsum" value="#{popoverController.loremIpsum}">
+ <tc:style customClass="popover-600"/>
+ </tc:popover>
+ </f:facet>
+ </tc:button>
+ </tc:section>
+
+ <tc:section label="Escape and sanitize">
+ <p>HTML/XML code will be escaped by default.</p>
+ <tc:button label="Default (escape=true, sanitize=auto)" omit="true">
+ <f:facet name="popover">
+ <tc:popover value="#{popoverController.html}"/>
+ </f:facet>
+ </tc:button>
+ <p>You can turn it off with the <code>escape</code> attribute.</p>
+ <tc:button label="Escape off (escape=false, sanitize=auto)" omit="true">
+ <f:facet name="popover">
+ <tc:popover value="#{popoverController.html}" escape="false"/>
+ </f:facet>
+ </tc:button>
+ <p>Although the HTML code is not escaped, the text is not colored because the code is sanitzed.
+ "Sanitize" remove HTML/XML-Tags from a given string if not escaped. It can be configured in the tobago-config.xml.
+ If you want to write your own sanitizer, you have to implement
+ <code>org.apache.myfaces.tobago.sanitizer.Sanitizer</code>.
+ Use <code>sanitize=never</code> to deactivate this.</p>
+ <tc:button label="Escape and sanitize off (escape=false, sanitize=never)" omit="true">
+ <f:facet name="popover">
+ <tc:popover value="#{popoverController.html}" escape="false" sanitize="never"/>
+ </f:facet>
+ </tc:button>
+ </tc:section>
+
+</ui:composition>
diff --git a/tobago-theme/src/main/scss/_tobago.scss b/tobago-theme/src/main/scss/_tobago.scss
index 41da158e48..3222ff1ee3 100644
--- a/tobago-theme/src/main/scss/_tobago.scss
+++ b/tobago-theme/src/main/scss/_tobago.scss
@@ -56,6 +56,12 @@ $tobago-flex-layout-spacing: 0.5rem;
}
/* mixins ---------------------------------------------------------- */
+@mixin aAndButtonBase() {
+ tobago-popover {
+ display: none;
+ }
+}
+
@mixin adjustCustomControlLabel() {
.form-check-label {
&:after {
@@ -391,6 +397,14 @@ $tobago-flex-layout-spacing: 0.5rem;
margin-bottom: $spacer;
}
+a {
+ @include aAndButtonBase();
+}
+
+button {
+ @include aAndButtonBase();
+}
+
tobago-badge {
@include badgeBtn();
@include imageTextSpacing();
@@ -973,15 +987,6 @@ button {
}
}
-.tobago-popover-box {
- display: none;
- width: max-content;
-
- &.show {
- display: block;
- }
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -1031,11 +1036,6 @@ tobago-messages {
}
}
-.popover .popover-body {
- // allow linebreaks for messages / help text
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
@@ -1119,6 +1119,10 @@ tobago-page {
}
.tobago-page-popoverStore {
+ .popover .popover-body {
+ // allow linebreaks for messages / help text
+ white-space: pre-line;
+ }
}
.tobago-page-toastStore {
@@ -1177,8 +1181,8 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
tobago-popover {
+ display: inline-block;
}
tobago-popup {
diff --git a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-popover.ts b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-popover.ts
index fe1f6b6201..a8c543bc76 100644
--- a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-popover.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-popover.ts
@@ -17,6 +17,10 @@
import {Popover} from "bootstrap";
+enum SanitizeMode {
+ auto, never
+}
+
class TobagoPopover extends HTMLElement {
private instance: Popover;
@@ -26,19 +30,51 @@ class TobagoPopover extends HTMLElement {
}
connectedCallback(): void {
- this.instance = new Popover(this.trigger, {
- container: this.popoverStore
+ this.instance = new Popover(this.baseElement, {
+ container: this.popoverStore,
+ customClass: this.customClass,
+ title: this.label,
+ content: this.value,
+ html: !this.escape,
+ sanitize: this.sanitize === SanitizeMode.auto,
+ trigger: "focus"
});
}
- get trigger(): HTMLElement {
- return this;
+ get baseElement(): HTMLElement {
+ if (this.parentElement?.tagName === "A" || this.parentElement?.tagName === "BUTTON") {
+ return this.parentElement;
+ } else {
+ return this;
+ }
}
get popoverStore(): HTMLDivElement {
const root = document.getRootNode() as ShadowRoot | Document;
return root.querySelector<HTMLDivElement>(".tobago-page-popoverStore");
}
+
+ get customClass(): string {
+ const customClass = this.getAttribute("custom-class");
+ return customClass ? customClass : "";
+ }
+
+ get label(): string {
+ const label = this.getAttribute("label");
+ return label ? label : "";
+ }
+
+ get value(): string {
+ return this.getAttribute("value");
+ }
+
+ get escape(): boolean {
+ return this.getAttribute("escape") !== "false";
+ }
+
+ get sanitize(): SanitizeMode {
+ return SanitizeMode[this.getAttribute("sanitize")];
+ }
}
document.addEventListener("tobago.init", function (event: Event): void {
diff --git a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-sheet.ts b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-sheet.ts
index b703f35812..d4ea792861 100644
--- a/tobago-theme/tobago-theme-standard/src/main/ts/tobago-sheet.ts
+++ b/tobago-theme/tobago-theme-standard/src/main/ts/tobago-sheet.ts
@@ -675,6 +675,7 @@ Type: ${data.type}`);
|| clickElement.tagName === "TOBAGO-DROPDOWN"
|| clickElement.tagName === "TOBAGO-FILE"
|| clickElement.tagName === "TOBAGO-IN"
+ || clickElement.tagName === "TOBAGO-POPOVER"
|| clickElement.tagName === "TOBAGO-RANGE"
|| clickElement.tagName === "TOBAGO-SELECT-BOOLEAN-CHECKBOX"
|| clickElement.tagName === "TOBAGO-SELECT-BOOLEAN-TOGGLE"
(myfaces-tobago) 02/02: build(theme): rebuild after implementing popover component
Posted by hn...@apache.org.
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
commit 30a8ad8324313b7c6081afe4905e0737fd8489b0
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Mon Apr 8 09:51:35 2024 +0200
build(theme): rebuild after implementing popover component
---
.../src/main/webapp/css/demo.css | 16 ++++++++++++
.../src/main/webapp/css/demo.css.map | 2 +-
.../src/main/webapp/css/demo.min.css | 2 +-
.../src/main/webapp/css/demo.min.css.map | 2 +-
.../src/main/css/tobago.css | 29 +++++++++++-----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css | 29 +++++++++++-----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../src/main/css/tobago.css | 29 +++++++++++-----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-speyside/src/main/css/tobago.css | 29 +++++++++++-----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-standard/src/main/css/tobago.css | 29 +++++++++++-----------
.../src/main/css/tobago.css.map | 2 +-
.../src/main/css/tobago.min.css | 2 +-
.../src/main/css/tobago.min.css.map | 2 +-
.../tobago-theme-standard/src/main/js/tobago.js | 6 ++---
.../src/main/js/tobago.js.map | 2 +-
26 files changed, 113 insertions(+), 92 deletions(-)
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css
index 1829cd7c45..550d8bb77c 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css
+++ b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css
@@ -112,4 +112,20 @@ tobago-tree .tobago-selected a {
border-right: 13px solid;
}
+.popover-600 {
+ --bs-popover-max-width: 600px;
+}
+
+.text-red {
+ color: #ff4f00;
+}
+
+.text-green {
+ color: #30cd00;
+}
+
+.text-blue {
+ color: #009aff;
+}
+
/*# sourceMappingURL=demo.css.map */
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css.map b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css.map
index 162c3625f5..01b969322f 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css.map
+++ b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../../scss/demo.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;EACE;EACA;EACA;AACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;;;AAIA;EA [...]
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../../scss/demo.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiBA;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;EACE;EACA;EACA;AACA;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;;AAEA;EACE;;;AAKN;EACE;EACA;EACA;EACA;;;AAIA;EA [...]
\ No newline at end of file
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css
index 85935a599e..cfb0ab40b5 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css
+++ b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css
@@ -1,2 +1,2 @@
-.hide-navigation{display:none}.navigation-box{--bs-card-border-radius:0;border:none}.box-shadow{box-shadow:0 0 5px 5px rgba(200,200,200,.5)}.demo-selected{background-color:#fdf}#demo-view-source .demo-selected{border:1px solid #ccc}.blue{background-color:#2aabff}.demo-data-attribute{height:100px;border:1px solid #000;border-radius:.25rem}demo-highlight{font-size:75%}.language-markup .token.tag{font-weight:inherit;font-size:inherit;line-height:inherit;white-space:inherit;text-align:inheri [...]
+.hide-navigation{display:none}.navigation-box{--bs-card-border-radius:0;border:none}.box-shadow{box-shadow:0 0 5px 5px rgba(200,200,200,.5)}.demo-selected{background-color:#fdf}#demo-view-source .demo-selected{border:1px solid #ccc}.blue{background-color:#2aabff}.demo-data-attribute{height:100px;border:1px solid #000;border-radius:.25rem}demo-highlight{font-size:75%}.language-markup .token.tag{font-weight:inherit;font-size:inherit;line-height:inherit;white-space:inherit;text-align:inheri [...]
/*# sourceMappingURL=demo.min.css.map */
\ No newline at end of file
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css.map b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css.map
index 9e1718aa3f..5dad89c4e4 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css.map
+++ b/tobago-example/tobago-example-demo/src/main/webapp/css/demo.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["src/main/webapp/css/demo.css"],"names":[],"mappings":"AAgBA,iBACE,QAAS,KAGX,gBACE,wBAAyB,EACzB,OAAQ,KAGV,YACE,WAAY,EAAE,EAAE,IAAI,IAAI,qBAG1B,eACE,iBAAkB,KAGpB,iCACE,OAAQ,IAAI,MAAM,KAGpB,MACE,iBAAkB,QAGpB,qBACE,OAAQ,MACR,OAAQ,IAAI,MAAM,KAClB,cAAe,OAGjB,eACE,UAAW,IASb,4BACE,YAAa,QACb,UAAW,QACX,YAAa,QAEb,YAAa,QACb,WAAY,QACZ,QAAS,QAGX,QACE,cAAe,QAGjB,YACE,cAAe,QAGjB,8BACE,iBAAkB,QAGpB,iCACE,iBAAkB,QAGpB,+BACE,iBAAkB,QAGpB,mBACE,iBAAkB,KAGpB,iBACE,iBAAkB,KAGpB,6BACE, [...]
\ No newline at end of file
+{"version":3,"sources":["src/main/webapp/css/demo.css"],"names":[],"mappings":"AAgBA,iBACE,QAAS,KAGX,gBACE,wBAAyB,EACzB,OAAQ,KAGV,YACE,WAAY,EAAE,EAAE,IAAI,IAAI,qBAG1B,eACE,iBAAkB,KAGpB,iCACE,OAAQ,IAAI,MAAM,KAGpB,MACE,iBAAkB,QAGpB,qBACE,OAAQ,MACR,OAAQ,IAAI,MAAM,KAClB,cAAe,OAGjB,eACE,UAAW,IASb,4BACE,YAAa,QACb,UAAW,QACX,YAAa,QAEb,YAAa,QACb,WAAY,QACZ,QAAS,QAGX,QACE,cAAe,QAGjB,YACE,cAAe,QAGjB,8BACE,iBAAkB,QAGpB,iCACE,iBAAkB,QAGpB,+BACE,iBAAkB,QAGpB,mBACE,iBAAkB,KAGpB,iBACE,iBAAkB,KAGpB,6BACE, [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
index adfb6d571e..9a5cf671a7 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css
@@ -12028,6 +12028,14 @@ textarea.form-control-lg {
margin-bottom: 1rem;
}
+a tobago-popover {
+ display: none;
+}
+
+button tobago-popover {
+ display: none;
+}
+
tobago-badge {
background-color: #b2a76d;
}
@@ -12841,15 +12849,6 @@ button.nav-link { /* bootstrap don't know button.nav-link*/
margin-bottom: 0.25rem;
}
-.tobago-popover-box {
- display: none;
- width: -moz-max-content;
- width: max-content;
-}
-.tobago-popover-box.show {
- display: block;
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -12883,10 +12882,6 @@ tobago-messages .alert.alert-dismissible.alert-warning:before {
tobago-messages .alert.alert-dismissible.alert-info:before {
content: "\f646";
}
-.popover .popover-body {
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
.nav-tabs {
@@ -12970,6 +12965,9 @@ tobago-page .tobago-page-menuStore .tobago-dropdown-menu .form-check.form-switch
tobago-page .tobago-page-menuStore .tobago-dropdown-menu label[for] {
width: 100%;
}
+tobago-page .tobago-page-popoverStore .popover .popover-body {
+ white-space: pre-line;
+}
tobago-page .tobago-page-toastStore .toast.tobago-hideCloseButton .tobago-close {
display: none;
}
@@ -13008,7 +13006,10 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
+tobago-popover {
+ display: inline-block;
+}
+
tobago-popup .modal-header .modal-title {
margin-right: auto;
}
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
index 1fd8e00820..e612b9cde5 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
index 4ba1753c79..53f483c27b 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#ff00be;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000000;--bs-white:#ffffff;--bs-gray:#777777;--bs-gray-dark:#323232;--bs-gray-100:#f8f9fa;--bs-gray-200:#d0d0d0;--bs-gray-300:#dee2e6;--bs-gray-400:#a0a0a0;--bs-gray-500:#adb5bd;--bs-gray-600:#777777;--bs-gray-700:#495057;--bs-gray-800:#323232;--bs [...]
+@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#ff00be;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000000;--bs-white:#ffffff;--bs-gray:#777777;--bs-gray-dark:#323232;--bs-gray-100:#f8f9fa;--bs-gray-200:#d0d0d0;--bs-gray-300:#dee2e6;--bs-gray-400:#a0a0a0;--bs-gray-500:#adb5bd;--bs-gray-600:#777777;--bs-gray-700:#495057;--bs-gray-800:#323232;--bs [...]
/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
index aef35b8a18..3ca36629dd 100644
--- a/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-charlotteville/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-charlotteville/src/main/css/tobago.css"],"names":[],"mappings":"iBAsCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,WAAY,QACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAA [...]
\ No newline at end of file
+{"version":3,"sources":["tobago-theme-charlotteville/src/main/css/tobago.css"],"names":[],"mappings":"iBAsCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,WAAY,QACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAA [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
index 48090cfe77..018ab6d666 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css
@@ -12055,6 +12055,14 @@ textarea.form-control-lg {
margin-bottom: 1rem;
}
+a tobago-popover {
+ display: none;
+}
+
+button tobago-popover {
+ display: none;
+}
+
tobago-badge {
background-color: #6c00cb;
}
@@ -12868,15 +12876,6 @@ button.nav-link { /* bootstrap don't know button.nav-link*/
margin-bottom: 0.25rem;
}
-.tobago-popover-box {
- display: none;
- width: -moz-max-content;
- width: max-content;
-}
-.tobago-popover-box.show {
- display: block;
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -12910,10 +12909,6 @@ tobago-messages .alert.alert-dismissible.alert-warning:before {
tobago-messages .alert.alert-dismissible.alert-info:before {
content: "\f646";
}
-.popover .popover-body {
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
.nav-tabs {
@@ -12997,6 +12992,9 @@ tobago-page .tobago-page-menuStore .tobago-dropdown-menu .form-check.form-switch
tobago-page .tobago-page-menuStore .tobago-dropdown-menu label[for] {
width: 100%;
}
+tobago-page .tobago-page-popoverStore .popover .popover-body {
+ white-space: pre-line;
+}
tobago-page .tobago-page-toastStore .toast.tobago-hideCloseButton .tobago-close {
display: none;
}
@@ -13035,7 +13033,10 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
+tobago-popover {
+ display: inline-block;
+}
+
tobago-popup .modal-header .modal-title {
margin-right: auto;
}
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
index 611c768565..68196da987 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
index 75f53b5b31..7b8f8753bf 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url("../fonts/Amaranth-Regular.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url("../fonts/Amaranth-Bold.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url("../fonts/Amaranth-Italic.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url("../fonts/Amaranth-BoldItalic.otf") format( [...]
+@charset "UTF-8";@font-face{font-family:Amaranth;font-style:normal;font-weight:400;src:url("../fonts/Amaranth-Regular.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:normal;font-weight:700;src:url("../fonts/Amaranth-Bold.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;src:url("../fonts/Amaranth-Italic.otf") format("opentype")}@font-face{font-family:Amaranth;font-style:italic;font-weight:700;src:url("../fonts/Amaranth-BoldItalic.otf") format( [...]
/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
index 315d623a7b..1e36d0eb89 100644
--- a/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-roxborough/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-roxborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAiCA,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,qCAAqC,mBAE5C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,kCAAkC,mBAEzC,WACE,YAAa,SACb,WAAY,OACZ,IAAK,oCAAoC,mBAE3C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,wCAAwC,mBAE/C,mBACE,YAAa,QAAQ,CAAE,KAAK,CAAE,MAQhC,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,WAAY,KACZ,UAAW,QACX,eAA [...]
\ No newline at end of file
+{"version":3,"sources":["tobago-theme-roxborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAiCA,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,qCAAqC,mBAE5C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,kCAAkC,mBAEzC,WACE,YAAa,SACb,WAAY,OACZ,IAAK,oCAAoC,mBAE3C,WACE,YAAa,SACb,WAAY,OACZ,YAAa,IACb,IAAK,wCAAwC,mBAE/C,mBACE,YAAa,QAAQ,CAAE,KAAK,CAAE,MAQhC,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,QACZ,WAAY,KACZ,UAAW,QACX,eAA [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
index 6f02ec085c..129dae33e3 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css
@@ -12049,6 +12049,14 @@ textarea.form-control-lg {
margin-bottom: 1rem;
}
+a tobago-popover {
+ display: none;
+}
+
+button tobago-popover {
+ display: none;
+}
+
tobago-badge {
background-color: #6c757d;
}
@@ -12862,15 +12870,6 @@ button.nav-link { /* bootstrap don't know button.nav-link*/
margin-bottom: 0.25rem;
}
-.tobago-popover-box {
- display: none;
- width: -moz-max-content;
- width: max-content;
-}
-.tobago-popover-box.show {
- display: block;
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -12904,10 +12903,6 @@ tobago-messages .alert.alert-dismissible.alert-warning:before {
tobago-messages .alert.alert-dismissible.alert-info:before {
content: "\f646";
}
-.popover .popover-body {
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
.nav-tabs {
@@ -12991,6 +12986,9 @@ tobago-page .tobago-page-menuStore .tobago-dropdown-menu .form-check.form-switch
tobago-page .tobago-page-menuStore .tobago-dropdown-menu label[for] {
width: 100%;
}
+tobago-page .tobago-page-popoverStore .popover .popover-body {
+ white-space: pre-line;
+}
tobago-page .tobago-page-toastStore .toast.tobago-hideCloseButton .tobago-close {
display: none;
}
@@ -13029,7 +13027,10 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
+tobago-popover {
+ display: inline-block;
+}
+
tobago-popup .modal-header .modal-title {
margin-right: auto;
}
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
index a0b6ea8ed7..2c87d6f49c 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_bo [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
index 2b44a4dd0a..73599254cd 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray- [...]
+@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray- [...]
/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
index d4d602ca2b..5df886e78e 100644
--- a/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-scarborough/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-scarborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAwCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,I [...]
\ No newline at end of file
+{"version":3,"sources":["tobago-theme-scarborough/src/main/css/tobago.css"],"names":[],"mappings":"iBAwCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,I [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
index f682daedd5..cb1a008c56 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css
@@ -11751,6 +11751,14 @@ textarea.form-control-lg {
margin-bottom: 1rem;
}
+a tobago-popover {
+ display: none;
+}
+
+button tobago-popover {
+ display: none;
+}
+
tobago-badge {
background-color: #d7d7d7;
}
@@ -12559,15 +12567,6 @@ button.nav-link { /* bootstrap don't know button.nav-link*/
margin-bottom: 0.25rem;
}
-.tobago-popover-box {
- display: none;
- width: -moz-max-content;
- width: max-content;
-}
-.tobago-popover-box.show {
- display: block;
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -12601,10 +12600,6 @@ tobago-messages .alert.alert-dismissible.alert-warning:before {
tobago-messages .alert.alert-dismissible.alert-info:before {
content: "\f646";
}
-.popover .popover-body {
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
.nav-tabs {
@@ -12688,6 +12683,9 @@ tobago-page .tobago-page-menuStore .tobago-dropdown-menu .form-check.form-switch
tobago-page .tobago-page-menuStore .tobago-dropdown-menu label[for] {
width: 100%;
}
+tobago-page .tobago-page-popoverStore .popover .popover-body {
+ white-space: pre-line;
+}
tobago-page .tobago-page-toastStore .toast.tobago-hideCloseButton .tobago-close {
display: none;
}
@@ -12726,7 +12724,10 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
+tobago-popover {
+ display: inline-block;
+}
+
tobago-popup .modal-header .modal-title {
margin-right: auto;
}
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
index 572244fdc1..0ac2b4c31c 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/_type.scss [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../scss/_custom.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/_type.scss [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
index 747edbffc6..2eda1663f5 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:rgb(58, 37, 100);--bs-pink:#d63384;--bs-red:rgb(211, 0, 64);--bs-orange:#d90;--bs-yellow:#ffc107;--bs-green:rgb(29, 163, 50);--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:rgb(120, 140, 148);--bs-gray-dark:#323232;--bs-gray-100:#f7f7f7;--bs-gray-200:#e3e4e5;--bs-gray-300:#d7d7d7;--bs-gray-400:#ced4da;--bs-gray-500:#acacac;--bs-gray-600:rgb(120, 140, 148);--bs-gray [...]
+@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:rgb(58, 37, 100);--bs-pink:#d63384;--bs-red:rgb(211, 0, 64);--bs-orange:#d90;--bs-yellow:#ffc107;--bs-green:rgb(29, 163, 50);--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:rgb(120, 140, 148);--bs-gray-dark:#323232;--bs-gray-100:#f7f7f7;--bs-gray-200:#e3e4e5;--bs-gray-300:#d7d7d7;--bs-gray-400:#ced4da;--bs-gray-500:#acacac;--bs-gray-600:rgb(120, 140, 148);--bs-gray [...]
/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
index 52e10e8c20..e3f42e0ca3 100644
--- a/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-speyside/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-speyside/src/main/css/tobago.css"],"names":[],"mappings":"iBAsCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,iBACb,UAAW,QACX,SAAU,gBACV,YAAa,KACb,YAAa,QACb,WAAY,iBACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,mBACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,mBACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,gBACd,eAAgB,QAChB,aAAc,iBACd,UAAW,QACX,aAAc,QACd,YAAa,gBACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,EAAE,CAAE,GAC1B,mBAAoB,GAAG,CAAE,GAAG,C [...]
\ No newline at end of file
+{"version":3,"sources":["tobago-theme-speyside/src/main/css/tobago.css"],"names":[],"mappings":"iBAsCA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,iBACb,UAAW,QACX,SAAU,gBACV,YAAa,KACb,YAAa,QACb,WAAY,iBACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,mBACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,mBACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,gBACd,eAAgB,QAChB,aAAc,iBACd,UAAW,QACX,aAAc,QACd,YAAa,gBACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,EAAE,CAAE,GAC1B,mBAAoB,GAAG,CAAE,GAAG,C [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
index a305cd8bd6..0423207aa3 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css
@@ -12012,6 +12012,14 @@ textarea.form-control-lg {
margin-bottom: 1rem;
}
+a tobago-popover {
+ display: none;
+}
+
+button tobago-popover {
+ display: none;
+}
+
tobago-badge {
background-color: #6c757d;
}
@@ -12825,15 +12833,6 @@ button.nav-link { /* bootstrap don't know button.nav-link*/
margin-bottom: 0.25rem;
}
-.tobago-popover-box {
- display: none;
- width: -moz-max-content;
- width: max-content;
-}
-.tobago-popover-box.show {
- display: block;
-}
-
a.tobago-messages-button, a.tobago-help-button, a.tobago-popover-button {
padding-left: 0.4em;
padding-right: 0.4em;
@@ -12867,10 +12866,6 @@ tobago-messages .alert.alert-dismissible.alert-warning:before {
tobago-messages .alert.alert-dismissible.alert-info:before {
content: "\f646";
}
-.popover .popover-body {
- white-space: pre-line;
-}
-
/* nav ----------------------------------------------------------- */
/* no bottom border in navtabs, if panel-body under it */
.nav-tabs {
@@ -12954,6 +12949,9 @@ tobago-page .tobago-page-menuStore .tobago-dropdown-menu .form-check.form-switch
tobago-page .tobago-page-menuStore .tobago-dropdown-menu label[for] {
width: 100%;
}
+tobago-page .tobago-page-popoverStore .popover .popover-body {
+ white-space: pre-line;
+}
tobago-page .tobago-page-toastStore .toast.tobago-hideCloseButton .tobago-close {
display: none;
}
@@ -12992,7 +12990,10 @@ tobago-panel {
display: block;
}
-/* popover ------------------------------------------------------------- */
+tobago-popover {
+ display: inline-block;
+}
+
tobago-popup .modal-header .modal-title {
margin-right: auto;
}
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
index b470158480..9412c22ff3 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../. [...]
\ No newline at end of file
+{"version":3,"sources":["tobago.css","../scss/tobago-theme.scss","../../../../node_modules/bootstrap/scss/mixins/_banner.scss","../../../../node_modules/bootstrap/scss/_root.scss","../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../node_modules/bootstrap/scss/mixins/_color-mode.scss","../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../node_modules/bootstrap/scss/_variables.scss","../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../. [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
index b5582e1bb0..581f2aeba2 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css
@@ -1,2 +1,2 @@
-@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray- [...]
+@charset "UTF-8";:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray- [...]
/*# sourceMappingURL=tobago.min.css.map */
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
index ea2e667343..4b8564b01e 100644
--- a/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
+++ b/tobago-theme/tobago-theme-standard/src/main/css/tobago.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["tobago-theme-standard/src/main/css/tobago.css"],"names":[],"mappings":"iBAsBA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9 [...]
\ No newline at end of file
+{"version":3,"sources":["tobago-theme-standard/src/main/css/tobago.css"],"names":[],"mappings":"iBAsBA,MACA,sBACE,UAAW,QACX,YAAa,QACb,YAAa,QACb,UAAW,QACX,SAAU,QACV,YAAa,QACb,YAAa,QACb,WAAY,QACZ,UAAW,QACX,UAAW,QACX,WAAY,KACZ,WAAY,KACZ,UAAW,QACX,eAAgB,QAChB,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,cAAe,QACf,aAAc,QACd,eAAgB,QAChB,aAAc,QACd,UAAW,QACX,aAAc,QACd,YAAa,QACb,WAAY,QACZ,UAAW,QACX,iBAAkB,EAAE,CAAE,GAAG,CAAE,IAC3B,mBAAoB,GAAG,CAAE,GAAG,CAAE,IAC9 [...]
\ No newline at end of file
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
index 3bc3fdc484..3625e7764e 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js
@@ -4,16 +4,16 @@
* Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
-const $e=new Map,Me={set(e,t,s){$e.has(e)||$e.set(e,new Map);const n=$e.get(e);n.has(t)||0===n.size?n.set(t,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>$e.has(e)&&$e.get(e).get(t)||null,remove(e,t){if(!$e.has(e))return;const s=$e.get(e);s.delete(t),0===s.size&&$e.delete(e)}},Be="transitionend",Pe=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),H [...]
+const $e=new Map,Me={set(e,t,s){$e.has(e)||$e.set(e,new Map);const n=$e.get(e);n.has(t)||0===n.size?n.set(t,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(e,t)=>$e.has(e)&&$e.get(e).get(t)||null,remove(e,t){if(!$e.has(e))return;const s=$e.get(e);s.delete(t),0===s.size&&$e.delete(e)}},Be="transitionend",Pe=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,((e,t)=>`#${CSS.escape(t)}`))),e),H [...]
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
- */const ar=globalThis,lr=ar.trustedTypes,cr=lr?lr.createPolicy("lit-html",{createHTML:e=>e}):void 0,dr="$lit$",ur=`lit$${(Math.random()+"").slice(9)}$`,hr="?"+ur,pr=`<${hr}>`,gr=document,fr=()=>gr.createComment(""),mr=e=>null===e||"object"!=typeof e&&"function"!=typeof e,br=Array.isArray,vr="[ \t\n\f\r]",_r=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,yr=/-->/g,Er=/>/g,wr=RegExp(`>|${vr}(?:([^\\s"'>=/]+)(${vr}*=${vr}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Ar=/'/g,Sr=/"/g, [...]
+ */const lr=globalThis,cr=lr.trustedTypes,dr=cr?cr.createPolicy("lit-html",{createHTML:e=>e}):void 0,ur="$lit$",hr=`lit$${(Math.random()+"").slice(9)}$`,pr="?"+hr,gr=`<${pr}>`,fr=document,mr=()=>fr.createComment(""),br=e=>null===e||"object"!=typeof e&&"function"!=typeof e,vr=Array.isArray,_r="[ \t\n\f\r]",yr=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Er=/-->/g,wr=/>/g,Ar=RegExp(`>|${_r}(?:([^\\s"'>=/]+)(${_r}*=${_r}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,"g"),Sr=/'/g,Lr=/"/g, [...]
<button type='button'
class='tobago-button btn btn-secondary badge' aria-label='deselect ${e}'
${s>0?" tabindex='"+String(s)+"'":""}
@click="${this.removeBadge.bind(this)}"
@focus="${this.focusEvent.bind(this)}"
- @blur="${this.blurEvent.bind(this)}"><i class='bi-x-lg'></i></button>`}removeBadge(e){var t;const s=e.target.closest(".btn-group").dataset.tobagoValue,n=this.hiddenSelect.querySelector(`[value="${s}"]`);n.selected=!1;const i=this.badges.querySelector(`[data-tobago-value="${s}"]`),o=i.previousElementSibling,r="SPAN"===(null===(t=i.nextElementSibling)||void 0===t?void 0:t.tagName)?i.nextElementSibling:null;o?o.querySelector("button.btn.badge").focus():r?r.querySelector("button.btn.ba [...]
+ @blur="${this.blurEvent.bind(this)}"><i class='bi-x-lg'></i></button>`}removeBadge(e){var t;const s=e.target.closest(".btn-group").dataset.tobagoValue,n=this.hiddenSelect.querySelector(`[value="${s}"]`);n.selected=!1;const i=this.badges.querySelector(`[data-tobago-value="${s}"]`),o=i.previousElementSibling,r="SPAN"===(null===(t=i.nextElementSibling)||void 0===t?void 0:t.tagName)?i.nextElementSibling:null;o?o.querySelector("button.btn.badge").focus():r?r.querySelector("button.btn.ba [...]
//# sourceMappingURL=tobago.js.map
diff --git a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
index 65b7e29682..30309b3e46 100644
--- a/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
+++ b/tobago-theme/tobago-theme-standard/src/main/js/tobago.js.map
@@ -1 +1 @@
-{"version":3,"file":"tobago.js","sources":["../ts/tobago-css.ts","../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.j [...]
\ No newline at end of file
+{"version":3,"file":"tobago.js","sources":["../ts/tobago-css.ts","../ts/tobago-bar.ts","../../../../node_modules/@popperjs/core/lib/enums.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../../../../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../../../../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../../../../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../../../../node_modules/@popperjs/core/lib/utils/getBasePlacement.j [...]
\ No newline at end of file