This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch v4
in repository https://gitbox.apache.org/repos/asf/causeway.git
The following commit(s) were added to refs/heads/v4 by this push:
new f7c02ad6fc2 CAUSEWAY-3903: [Wicket Viewer] Configurable Select2 Ajax
Delay
f7c02ad6fc2 is described below
commit f7c02ad6fc20c67fa2a917947060c9a793217e1f
Author: Andi Huber <[email protected]>
AuthorDate: Thu Sep 18 12:20:27 2025 +0200
CAUSEWAY-3903: [Wicket Viewer] Configurable Select2 Ajax Delay
---
.../apache/causeway/core/config/CausewayConfiguration.java | 14 +++++++++-----
.../wicket/ui/components/widgets/select2/MultiChoice.java | 2 +-
.../wicket/ui/components/widgets/select2/Select2.java | 10 ++++++++++
.../wicket/ui/components/widgets/select2/SingleChoice.java | 1 +
4 files changed, 21 insertions(+), 6 deletions(-)
diff --git
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
index 864f3511bb1..198306ea1e7 100644
---
a/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
+++
b/core/config/src/main/java/org/apache/causeway/core/config/CausewayConfiguration.java
@@ -90,8 +90,6 @@
import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.commons.internal.base._StableValue;
import org.apache.causeway.commons.internal.context._Context;
-import org.apache.causeway.core.config.CausewayConfiguration.Core;
-import org.apache.causeway.core.config.CausewayConfiguration.Viewer;
import org.apache.causeway.core.config.metamodel.facets.ActionConfigOptions;
import
org.apache.causeway.core.config.metamodel.facets.AssociationLayoutConfigOptions;
import
org.apache.causeway.core.config.metamodel.facets.CollectionLayoutConfigOptions;
@@ -2929,6 +2927,14 @@ public record Wicket(
@DefaultValue("true")
boolean preventDoubleClickForNoArgAction,
+ /**
+ * With select2 choice provider widget,
+ * the time to wait for the user to stop typing before issuing the
ajax request.
+ */
+ @DurationUnit(ChronoUnit.MILLIS)
+ @DefaultValue("250")
+ Duration select2AjaxDelay,
+
/**
* Whether to show the footer menu bar.
*
@@ -3246,9 +3252,7 @@ public record MessagePopups(
/**
* How long the info popup should display before disappearing.
*
- * <p>
- * A value of 0 means do not disappear automatically.
- *
+ * <p>A value of 0 means do not disappear automatically.
*/
@DurationUnit(ChronoUnit.MILLIS)
@DefaultValue("3500")
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
index ff37d9723ee..007d96dbba6 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/MultiChoice.java
@@ -63,7 +63,7 @@ record MultiChoice(
// --
});
-
+
setDelay(Math.toIntExact(getConfiguration().viewer().wicket().select2AjaxDelay().toMillis()));
component().setRequired(attributeModel.isRequired());
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
index 3897393e417..b33e1de6a20 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/Select2.java
@@ -100,4 +100,14 @@ default void setMutable(final boolean mutability) {
component().setEnabled(mutability);
}
+ /**
+ * The number of milliseconds to wait for the user to stop typing before
+ * issuing the ajax request.
+ * @param millis
+ */
+ default void setDelay(final int millis) {
+ var ajaxSettings = component().getSettings().getAjax(true);
+ ajaxSettings.setDelay(millis);
+ }
+
}
diff --git
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/SingleChoice.java
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/SingleChoice.java
index 3a26d65a560..30f15d6b71b 100644
---
a/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/SingleChoice.java
+++
b/viewers/wicket/ui/src/main/java/org/apache/causeway/viewer/wicket/ui/components/widgets/select2/SingleChoice.java
@@ -35,6 +35,7 @@ record SingleChoice(Select2Choice<ObjectMemento> component)
final UiAttributeWkt attributeModel,
final ChoiceProvider choiceProvider) {
this(new Select2Choice<>(id, model,
choiceProvider.toSelect2ChoiceProvider()));
+
setDelay(Math.toIntExact(getConfiguration().viewer().wicket().select2AjaxDelay().toMillis()));
component().setRequired(attributeModel.isRequired());
}