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/03/06 10:28:16 UTC
(causeway) branch main updated: CAUSEWAY-3862: adds (Drag &) Drop Support on Text Input
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 a0fc455e74d CAUSEWAY-3862: adds (Drag &) Drop Support on Text Input
a0fc455e74d is described below
commit a0fc455e74daa158df8e3b3f8936e4020e93311b
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Mar 6 11:28:11 2025 +0100
CAUSEWAY-3862: adds (Drag &) Drop Support on Text Input
---
.../attributes/AttributePanelWithFormField.html | 9 ++++--
.../CausewayWicketViewerJsResourceReference.java | 2 +-
...ess.js => causeway-wicket-viewer.nocompress.js} | 32 ++++++++++++++++++++++
3 files changed, 40 insertions(+), 3 deletions(-)
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanelWithFormField.html b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanelWithFormField.html
index 6f51d4cb395..882da80782d 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanelWithFormField.html
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/attributes/AttributePanelWithFormField.html
@@ -66,7 +66,9 @@
<wicket:fragment wicket:id="fragment-fieldFrame-withLink">
<span class="scalarValueInput input-group fragment-fieldFrame-withLink">
<div wicket:id="scalarValueInlinePromptLink"
- class="scalarValueInlinePromptLink">
+ class="scalarValueInlinePromptLink"
+ ondragover="scalarValueAllowDrop(event)"
+ ondrop="scalarValueDrop(event)">
<!-- output format -->
<wicket:container
wicket:id="container-scalarValue"
@@ -127,7 +129,10 @@
<wicket:fragment wicket:id="fragment-input-text">
<input wicket:id="scalarValue"
type="text" name="scalarValue"
- class="form-control form-control-sm scalarValue fragment-input-text"/>
+ class="form-control form-control-sm scalarValue fragment-input-text"
+ ondragover="scalarValueAllowDrop(event)"
+ ondrop="scalarValueDrop(event)"
+ />
</wicket:fragment>
<wicket:fragment wicket:id="fragment-input-textarea">
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
index 462c660d95f..f4b4dc4160e 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/CausewayWicketViewerJsResourceReference.java
@@ -40,7 +40,7 @@ public class CausewayWicketViewerJsResourceReference
public CausewayWicketViewerJsResourceReference() {
super(WktHeaderItems.forScriptReference(
CausewayWicketViewerJsResourceReference.class,
- "causeway-jquery-wicket-viewer.nocompress.js"));
+ "causeway-wicket-viewer.nocompress.js"));
}
public static HeaderItem asHeaderItem() {
diff --git a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-jquery-wicket-viewer.nocompress.js b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-wicket-viewer.nocompress.js
similarity index 89%
rename from viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-jquery-wicket-viewer.nocompress.js
rename to viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-wicket-viewer.nocompress.js
index 16a46990e25..2aa9620ccf0 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-jquery-wicket-viewer.nocompress.js
+++ b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/pages/common/viewer/js/causeway-wicket-viewer.nocompress.js
@@ -304,3 +304,35 @@ $(function() {
})
});
+/**
+ * (drag &) drop support on text style input elements
+ */
+function scalarValueAllowDrop(ev) { ev.preventDefault(); }
+function scalarValueDrop(ev) {
+ ev.preventDefault();
+ const data = ev.dataTransfer.getData("text");
+ console.log("event: " + data);
+ if(ev.target.tagName === 'INPUT') {
+ const inputElement = ev.target;
+ inputElement.value = data;
+ } else {
+ // the ev.target element will be replaced after the click below, so we need to anchor ourselfs up the DOM hierarchy
+ const anchor = ev.target.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;
+
+ // before we emulate the click (below), we install an observer to listen on the server sent dom update
+ new MutationObserver((mutationsList, observer) => {
+ mutationsList.forEach(mutation => {
+ observer.disconnect();
+ if (mutation.type === 'childList') {
+ const inputElement = anchor.querySelector('input[type="text"].fragment-input-text')
+ if(inputElement!=null) {
+ inputElement.value = data;
+ }
+ }
+ });
+ })
+ .observe(anchor, { childList: true, attributes: false, subtree: true });
+
+ ev.target.click();
+ }
+}