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