You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2025/01/21 06:37:18 UTC

(causeway) branch main updated: CAUSEWAY-3851: Wicket textarea hotfix (to be removed with Wicket 10.4.0)

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

ahuber pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/main by this push:
     new fc700d7d94f CAUSEWAY-3851: Wicket textarea hotfix (to be removed with Wicket 10.4.0)
fc700d7d94f is described below

commit fc700d7d94fbb405789a2a2a646f7f1cb3e58f8a
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Jan 21 07:37:14 2025 +0100

    CAUSEWAY-3851: Wicket textarea hotfix (to be removed with Wicket 10.4.0)
---
 bom/pom.xml                                        |  4 ++-
 .../viewer/wicket/ui/panels/FormAbstract.java      | 30 ++++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletion(-)

diff --git a/bom/pom.xml b/bom/pom.xml
index c1481e1db45..3b445542722 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -192,7 +192,9 @@ identified
         module-path for testing, that is, put everything on the class-path -->
         <swagger-core.version>2.2.28</swagger-core.version>
 
-        <wicket.version>10.2.0</wicket.version>
+        <wicket.version>10.3.0</wicket.version> <!-- remove method
+        org.apache.causeway.viewer.wicket.ui.panels.FormAbstract.addDefaultSubmitButtonHandler(IHeaderResponse)
+        once Wicket 10.4.0 is available -->
         <wicket-bootstrap.version>7.0.9</wicket-bootstrap.version> <!--
         de.agilecoders.wicket:wicket-bootstrap... -->
         <wicket-webjars.version>4.0.6</wicket-webjars.version> <!--
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormAbstract.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormAbstract.java
index 65f817b2dcb..1ef081c2d49 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormAbstract.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/panels/FormAbstract.java
@@ -18,8 +18,12 @@
  */
 package org.apache.causeway.viewer.wicket.ui.panels;
 
+import org.apache.wicket.Component;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.OnEventHeaderItem;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.util.string.AppendingStringBuffer;
 
 import org.apache.causeway.viewer.wicket.model.models.HasCommonContext;
 import org.apache.causeway.viewer.wicket.ui.app.registry.ComponentFactoryRegistry;
@@ -43,6 +47,32 @@ protected FormAbstract(final String id, final IModel<T> model) {
         super(id, model);
     }
 
+    // -- WICKET 10.3.0 BUG
+    
+    // see https://github.com/apache/wicket/pull/1076/files#top
+    @Deprecated // remove once Wicket 10.4.0 is available
+    @Override
+    protected void addDefaultSubmitButtonHandler(IHeaderResponse headerResponse) {
+        final Component component = (Component) super.getDefaultButton();
+        String submitId = component.getMarkupId();
+
+        AppendingStringBuffer script = new AppendingStringBuffer();
+        script.append("if (event.target.tagName.toLowerCase() !== 'input' || event.which != 13) return;");
+        script.append("var b = document.getElementById('" + submitId + "');");
+        script.append("if (window.getComputedStyle(b).visibility === 'hidden') return;");
+        script.append("event.stopPropagation();");
+        script.append("event.preventDefault();");
+        script.append("if (b != null && b.onclick != null && typeof (b.onclick) != 'undefined') {");
+        script.append("var r = Wicket.bind(b.onclick, b)();");
+        script.append("if (r != false) b.click();");
+        script.append("} else {");
+        script.append("b.click();");
+        script.append("}");
+        script.append("return false;");
+
+        headerResponse.render(OnEventHeaderItem.forMarkupId(getMarkupId(), "keypress", script.toString()));
+    }
+    
     // -- DEPENDENCIES
 
     private transient ComponentFactoryRegistry componentFactoryRegistry;