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

theigl pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/master by this push:
     new 69f1eb7f40 WICKET-7140 fix for textarea submit on enter (now 
ctrl+enter) (#1076)
69f1eb7f40 is described below

commit 69f1eb7f405a0006cd8822b631b900ae2038a46d
Author: Viliam Repan <[email protected]>
AuthorDate: Fri Jan 17 14:56:54 2025 +0100

    WICKET-7140 fix for textarea submit on enter (now ctrl+enter) (#1076)
    
    * WICKET-7140 fix for textarea submit on enter if form.defaultButton is set 
(now submits on CTRL+enter for textarea)
    
    * WICKET-7140 indentation fix
    
    * WICKET-7140 improvement for textarea and contenteditable
    
    * WICKET-7140 form default submit js moved out to separate file, default 
handling for textarea/contenteditable is NONE (no action)
    
    * WICKET-7140 build fix
    
    * upgraded resource optimizer javascript language level from ecmascript_3 
to ecmascript_2015
    
    * WICKET-7140 changed var/let variable definitions to const
    
    * WICKET-7140 minor improvements in examples
    
    * WICKET-7140 simplified JS and embedded, textarea/contenteditable not 
handled at all
    
    * WICKET-7140 fixed tests
    
    * WICKET-7140 JS language version moved back to ES 3 (default)
---
 .../form/FormDefaultButtonTestPage_expected.html   |  2 +-
 .../form/FormHierarchyDefaultButtonTestPage.html   |  4 +++
 .../form/FormHierarchyDefaultButtonTestPage.java   |  8 ++++++
 ...ormHierarchyDefaultButtonTestPage_expected.html |  8 ++++--
 .../org/apache/wicket/markup/html/form/Form.java   |  6 ++--
 .../wicket/examples/forminput/FormInput.html       | 24 +++++++++++++---
 .../wicket/examples/forminput/FormInput.java       | 33 +++++++++++++++++++++-
 .../wicket/examples/forminput/FormInput.properties |  4 ++-
 8 files changed, 76 insertions(+), 13 deletions(-)

diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormDefaultButtonTestPage_expected.html
 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormDefaultButtonTestPage_expected.html
index ed32e337f6..686b6f634d 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormDefaultButtonTestPage_expected.html
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormDefaultButtonTestPage_expected.html
@@ -4,7 +4,7 @@
 <script type="text/javascript">
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
-Wicket.Event.add('form2', 'keypress', function(event) { var b = 
document.getElementById('default1');if (window.getComputedStyle(b).visibility 
=== 'hidden') return;if (event.which == 13) 
{event.stopPropagation();event.preventDefault();if (b != null && b.onclick != 
null && typeof (b.onclick) != 'undefined') {var r = Wicket.bind(b.onclick, 
b)();if (r != false) b.click();} else {b.click();}return false;};});;
+Wicket.Event.add('form2', 'keypress', function(event) { if 
(event.target.tagName.toLowerCase() !== 'input' || event.which != 13) 
return;var b = document.getElementById('default1');if 
(window.getComputedStyle(b).visibility === 'hidden') 
return;event.stopPropagation();event.preventDefault();if (b != null && 
b.onclick != null && typeof (b.onclick) != 'undefined') {var r = 
Wicket.bind(b.onclick, b)();if (r != false) b.click();} else {b.click();}return 
false;;});;
 Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);
 ;});
 /*]]>*/
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.html
 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.html
index 0cf9c61c7b..83b5b2e6d7 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.html
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.html
@@ -4,11 +4,15 @@
 
     <input type="text" wicket:id="parentInput"/>
 
+    <textarea wicket:id="parentTextarea"></textarea>
+
     <button wicket:id="parentSubmit"></button>
 
     <form wicket:id="childForm">
         <input type="text" wicket:id="childInput"/>
 
+        <textarea wicket:id="childTextarea"></textarea>
+
         <button wicket:id="childSubmit"></button>
     </form>
 </form>
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.java
 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.java
index b9c9b3f518..07a716b6e1 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.java
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage.java
@@ -33,6 +33,8 @@ public class FormHierarchyDefaultButtonTestPage extends 
WebPage {
     public final Button childSubmit;
     public final TextField<?> parentInput;
     public final TextField<?> childInput;
+    public final TextArea<?> parentTextarea;
+    public final TextArea<?> childTextarea;
 
     /**
      * Construct.
@@ -44,6 +46,9 @@ public class FormHierarchyDefaultButtonTestPage extends 
WebPage {
         parentInput = new TextField<>("parentInput");
         parentForm.add(parentInput);
 
+        parentTextarea = new TextArea<>("parentTextarea");
+        parentForm.add(parentTextarea);
+
         parentSubmit = new Button("parentSubmit");
         parentSubmit.add(new AjaxFormSubmitBehavior(parentForm, "click") {
 
@@ -62,6 +67,9 @@ public class FormHierarchyDefaultButtonTestPage extends 
WebPage {
         childInput = new TextField<>("childInput");
         childForm.add(childInput);
 
+        childTextarea = new TextArea<>("childTextarea");
+        childForm.add(childTextarea);
+
         childSubmit = new Button("childSubmit");
         childForm.setDefaultButton(childSubmit);
         childForm.add(childSubmit);
diff --git 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage_expected.html
 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage_expected.html
index 2cadec6515..30bab9ab08 100644
--- 
a/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage_expected.html
+++ 
b/wicket-core-tests/src/test/java/org/apache/wicket/markup/html/form/FormHierarchyDefaultButtonTestPage_expected.html
@@ -15,8 +15,8 @@ 
Wicket.Ajax.baseUrl="wicket/bookmarkable/org.apache.wicket.markup.html.form.Form
 /*<![CDATA[*/
 Wicket.Event.add(window, "domready", function(event) { 
 
Wicket.Ajax.ajax({"u":"./org.apache.wicket.markup.html.form.FormHierarchyDefaultButtonTestPage?0-1.0-parentForm-parentSubmit","m":"POST","c":"parentSubmit2","f":"parentForm1","sc":"parentSubmit","e":"click"});;
-Wicket.Event.add('childForm4', 'keypress', function(event) { var b = 
document.getElementById('childSubmit3');if 
(window.getComputedStyle(b).visibility === 'hidden') return;if (event.which == 
13) {event.stopPropagation();event.preventDefault();if (b != null && b.onclick 
!= null && typeof (b.onclick) != 'undefined') {var r = Wicket.bind(b.onclick, 
b)();if (r != false) b.click();} else {b.click();}return false;};});;
-Wicket.Event.add('parentForm1', 'keypress', function(event) { var b = 
document.getElementById('parentSubmit2');if 
(window.getComputedStyle(b).visibility === 'hidden') return;if (event.which == 
13) {event.stopPropagation();event.preventDefault();if (b != null && b.onclick 
!= null && typeof (b.onclick) != 'undefined') {var r = Wicket.bind(b.onclick, 
b)();if (r != false) b.click();} else {b.click();}return false;};});;
+Wicket.Event.add('childForm4', 'keypress', function(event) { if 
(event.target.tagName.toLowerCase() !== 'input' || event.which != 13) 
return;var b = document.getElementById('childSubmit3');if 
(window.getComputedStyle(b).visibility === 'hidden') 
return;event.stopPropagation();event.preventDefault();if (b != null && 
b.onclick != null && typeof (b.onclick) != 'undefined') {var r = 
Wicket.bind(b.onclick, b)();if (r != false) b.click();} else {b.click();}return 
false;;});;
+Wicket.Event.add('parentForm1', 'keypress', function(event) { if 
(event.target.tagName.toLowerCase() !== 'input' || event.which != 13) 
return;var b = document.getElementById('parentSubmit2');if 
(window.getComputedStyle(b).visibility === 'hidden') 
return;event.stopPropagation();event.preventDefault();if (b != null && 
b.onclick != null && typeof (b.onclick) != 'undefined') {var r = 
Wicket.bind(b.onclick, b)();if (r != false) b.click();} else {b.click();}return 
false;;});;
 Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);
 ;});
 /*]]>*/
@@ -26,11 +26,15 @@ 
Wicket.Event.publish(Wicket.Event.Topic.AJAX_HANDLERS_BOUND);
 
     <input type="text" wicket:id="parentInput" value="" name="parentInput"/>
 
+    <textarea wicket:id="parentTextarea" name="parentTextarea"></textarea>
+
     <button wicket:id="parentSubmit" name="parentSubmit" 
id="parentSubmit2"></button>
 
     <div wicket:id="childForm" id="childForm4">
         <input type="text" wicket:id="childInput" value="" 
name="childForm:childInput"/>
 
+        <textarea wicket:id="childTextarea" 
name="childForm:childTextarea"></textarea>
+
         <button wicket:id="childSubmit" name="childForm:childSubmit" 
id="childSubmit3"></button>
     </div>
 </form>
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
index fe2764f279..f8dcaf072d 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/Form.java
@@ -36,7 +36,6 @@ import org.apache.wicket.Page;
 import org.apache.wicket.WicketRuntimeException;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.behavior.Behavior;
-import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.core.util.string.CssUtils;
 import org.apache.wicket.event.IEvent;
 import org.apache.wicket.markup.ComponentTag;
@@ -1273,9 +1272,9 @@ public class Form<T> extends WebMarkupContainer
                String submitId = component.getMarkupId();
 
                AppendingStringBuffer script = new AppendingStringBuffer();
-               script.append("var b = 
document.getElementById('").append(submitId).append("');");
+               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("if (event.which == 13) {");
                script.append("event.stopPropagation();");
                script.append("event.preventDefault();");
                script.append("if (b != null && b.onclick != null && typeof 
(b.onclick) != 'undefined') {");
@@ -1285,7 +1284,6 @@ public class Form<T> extends WebMarkupContainer
                script.append("b.click();");
                script.append("}");
                script.append("return false;");
-               script.append("}");
 
                
headerResponse.render(OnEventHeaderItem.forMarkupId(getMarkupId(), "keypress", 
script.toString()));
        }
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
index 86a914e443..d251783a33 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.html
@@ -95,10 +95,6 @@
       </fieldset>
     </form>
 
-       <div id="feedbackPanel">
-               <span wicket:id="feedback"/>
-    </div>
-
        <h2 class="example-title"><wicket:message 
key="FormInput.formHierarchyExample"/></h2>
 
        <form wicket:id="parentForm" class="parent-form">
@@ -107,6 +103,10 @@
                <div class="gap-1">
                        <label for="parentText"><wicket:message 
key="FormInput.parentTextLabel"/></label>
                        <input type="text" wicket:id="parentText" 
id="parentText"/>
+
+                       <label for="parentTextarea"><wicket:message 
key="FormInput.parentTextareaLabel"/></label>
+                       <textarea wicket:id="parentTextarea" 
id="parentTextarea"></textarea>
+
                        <input type="submit" wicket:id="parentSubmit" 
wicket:message="value:FormInput.parentSubmit"/>
                </div>
 
@@ -116,6 +116,10 @@
                        <div class="gap-1">
                                <label for="childText"><wicket:message 
key="FormInput.childTextLabel"/></label>
                                <input type="text" wicket:id="childText" 
id="childText"/>
+
+                               <label for="childTextarea"><wicket:message 
key="FormInput.childTextareaLabel"/></label>
+                               <textarea wicket:id="childTextarea" 
id="childTextarea"></textarea>
+
                                <input type="submit" wicket:id="childSubmit" 
wicket:message="value:FormInput.childSubmit"/>
                        </div>
                </form>
@@ -126,13 +130,25 @@
                                <wicket:message 
key="FormInput.parentTextLabel"/>
                                <span wicket:id="parentData"/>
                        </div>
+               <div class="gap-1">
+                               <wicket:message 
key="FormInput.parentTextareaLabel"/>
+                               <span wicket:id="parentTextarea"/>
+                       </div>
                        <div class="gap-1">
                                <wicket:message key="FormInput.childTextLabel"/>
                                <span wicket:id="childData"/>
                        </div>
+                       <div class="gap-1">
+                               <wicket:message 
key="FormInput.childTextareaLabel"/>
+                               <span wicket:id="childTextarea"/>
+                       </div>
                </div>
        </form>
 
+    <div id="feedbackPanel">
+        <span wicket:id="feedback"/>
+    </div>
+
 </wicket:extend>
 </body>
 </html>
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
index f077da2948..a1f3de418e 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.java
@@ -16,7 +16,6 @@
  */
 package org.apache.wicket.examples.forminput;
 
-import org.apache.wicket.Component;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
 import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
@@ -359,6 +358,9 @@ public class FormInput extends WicketExamplePage
                        TextField<String> parentText = new 
TextField<>("parentText", new PropertyModel<>(model, "parentText"));
                        add(parentText);
 
+                       TextArea<String> parentTextarea = new 
TextArea<>("parentTextarea", new PropertyModel<>(model, "parentTextarea"));
+                       add(parentTextarea);
+
                        final ParentFormDataTable parentFormDataTable = new 
ParentFormDataTable("parentFormDataTable", model);
                        add(parentFormDataTable);
 
@@ -382,6 +384,9 @@ public class FormInput extends WicketExamplePage
                        TextField<String> childText = new 
TextField<>("childText", new PropertyModel<>(model, "childText"));
                        childForm.add(childText);
 
+                       TextArea<String> childTextarea = new 
TextArea<>("childTextarea", new PropertyModel<>(model, "childTextarea"));
+                       childForm.add(childTextarea);
+
                        AjaxSubmitLink childSubmit = new 
AjaxSubmitLink("childSubmit")
                        {
 
@@ -408,7 +413,9 @@ public class FormInput extends WicketExamplePage
                        setOutputMarkupId(true);
 
                        add(new Label("parentData", new PropertyModel<>(model, 
"parentText")));
+                       add(new Label("parentTextarea", new 
PropertyModel<>(model, "parentTextarea")));
                        add(new Label("childData", new PropertyModel<>(model, 
"childText")));
+                       add(new Label("childTextarea", new 
PropertyModel<>(model, "childTextarea")));
                }
        }
 
@@ -419,6 +426,10 @@ public class FormInput extends WicketExamplePage
 
                private String childText;
 
+               private String parentTextarea;
+
+               private String childTextarea;
+
                public String getParentText()
                {
                        return parentText;
@@ -438,5 +449,25 @@ public class FormInput extends WicketExamplePage
                {
                        this.childText = childText;
                }
+
+               public String getChildTextarea()
+               {
+                       return childTextarea;
+               }
+
+               public void setChildTextarea(String childTextarea)
+               {
+                       this.childTextarea = childTextarea;
+               }
+
+               public String getParentTextarea()
+               {
+                       return parentTextarea;
+               }
+
+               public void setParentTextarea(String parentTextarea)
+               {
+                       this.parentTextarea = parentTextarea;
+               }
        }
 }
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.properties
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.properties
index b3fb668591..3474afbc6d 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.properties
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/forminput/FormInput.properties
@@ -37,4 +37,6 @@ FormInput.childSubmit=Submit child form
 FormInput.submittedData=Submitted form data
 FormInput.formHierarchyExample=Example of form hierarchy with default submit 
buttons
 FormInput.parentForm=Parent form
-FormInput.childForm=Child form
\ No newline at end of file
+FormInput.childForm=Child form
+FormInput.parentTextareaLabel=Parent text area (no submit):
+FormInput.childTextareaLabel=Child text area (no submit):
\ No newline at end of file

Reply via email to