You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/04/18 14:09:57 UTC

[isis] 11/11: Extending popover config with boundary (fixes flickering or flipping entity link popovers in collections)

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch 2617_wicketstuff.bs4
in repository https://gitbox.apache.org/repos/asf/isis.git

commit df8242f4cbe12e23df2d9793d29fb683b83cc3c2
Author: mwhesse <mw...@gmail.com>
AuthorDate: Sun Apr 18 16:18:25 2021 +0700

    Extending popover config with boundary (fixes flickering or flipping entity link popovers in collections)
---
 .../wicket/ui/util/ExtendedPopoverConfig.java      | 31 ++++++++++++++++++++++
 .../isis/viewer/wicket/ui/util/Tooltips.java       |  4 ++-
 2 files changed, 34 insertions(+), 1 deletion(-)

diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/ExtendedPopoverConfig.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/ExtendedPopoverConfig.java
new file mode 100644
index 0000000..0c63135
--- /dev/null
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/ExtendedPopoverConfig.java
@@ -0,0 +1,31 @@
+package org.apache.isis.viewer.wicket.ui.util;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.components.PopoverConfig;
+import de.agilecoders.wicket.jquery.IKey;
+
+public class ExtendedPopoverConfig extends PopoverConfig {
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	/**
+     * Overflow constraint boundary of the popover. 
+     * Accepts the values of 'viewport', 'window', 'scrollParent', or an HTMLElement reference (JavaScript only). 
+     * For more information refer to Popper.js's preventOverflow docs.
+     */
+    private static final IKey<String> Boundary = newKey("boundary", PopoverBoundary.scrollParent.name());
+    
+    public enum PopoverBoundary {
+    	viewport, window, scrollParent
+    }
+    
+    public ExtendedPopoverConfig withBoundary(PopoverBoundary boundary) {
+    	return withBoundary(boundary.name());
+    }
+    
+    public ExtendedPopoverConfig withBoundary(String boundary) {
+    	put(Boundary, boundary);
+    	return this;
+    }
+}
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Tooltips.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Tooltips.java
index 04659d0..1b27640 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Tooltips.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/util/Tooltips.java
@@ -28,6 +28,7 @@ import org.apache.wicket.request.resource.CssResourceReference;
 
 import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.viewer.common.model.decorator.tooltip.TooltipUiModel;
+import org.apache.isis.viewer.wicket.ui.util.ExtendedPopoverConfig.PopoverBoundary;
 
 import lombok.NonNull;
 import lombok.val;
@@ -102,7 +103,8 @@ public class Tooltips {
     }
     
     private static PopoverConfig createTooltipConfig() {
-        return new PopoverConfig()
+        return new ExtendedPopoverConfig()
+        		.withBoundary(PopoverBoundary.viewport)
                 .withTrigger(OpenTrigger.hover)
                 .withPlacement(Placement.bottom)
                 .withAnimation(true);