You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2013/08/14 11:41:57 UTC

[28/37] git commit: WICKET-4993 Add a minInputLength parameter to AutoCompleteTextField

WICKET-4993 Add a minInputLength parameter to AutoCompleteTextField


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/30345bf3
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/30345bf3
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/30345bf3

Branch: refs/heads/5299-ajax-strategy
Commit: 30345bf3d004fe0d7213c59f61302b3d1c35d621
Parents: 4ab5064
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Thu Aug 8 13:26:35 2013 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu Aug 8 13:26:35 2013 +0200

----------------------------------------------------------------------
 .../AbstractAutoCompleteBehavior.java           |  1 +
 .../html/autocomplete/AutoCompleteSettings.java | 23 ++++++++++++++++++++
 .../html/autocomplete/wicket-autocomplete.js    | 20 ++++++++++++++---
 3 files changed, 41 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/30345bf3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
index a9360a7..45ed86d 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
@@ -155,6 +155,7 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe
 			settings.getIgnoreBordersWhenPositioning());
 		sb.append(",showListOnFocusGain: ").append(settings.getShowListOnFocusGain());
 		sb.append(",throttleDelay: ").append(settings.getThrottleDelay());
+		sb.append(",minInputLength: ").append(settings.getMinInputLength());
 		sb.append(",parameterName: '").append(settings.getParameterName()).append('\'');
 		sb.append(",showCompleteListOnFocusGain: ").append(
 			settings.getShowCompleteListOnFocusGain());

http://git-wip-us.apache.org/repos/asf/wicket/blob/30345bf3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
index 0bd6aa8..89b78ab 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
@@ -71,6 +71,8 @@ public final class AutoCompleteSettings implements IClusterable
 
 	private String parameterName = "q";
 
+	private int minInputLength = 1;
+
 	/**
 	 * Indicates whether the first item in the list is automatically selected when the autocomplete
 	 * list is shown.
@@ -357,4 +359,25 @@ public final class AutoCompleteSettings implements IClusterable
 	{
 		return parameterName;
 	}
+
+	/**
+	 * @return the minimum input length required to display the autocomplete list
+	 */
+	public int getMinInputLength()
+	{
+		return minInputLength;
+	}
+
+	/**
+	 * Set the minimum input length required to display the autocomplete list
+	 *
+	 * @param minInputLength
+	 *            the minimum input length required to display the autocomplete list
+	 * @return this {@link AutoCompleteSettings}
+	 */
+	public AutoCompleteSettings setMinInputLength(int minInputLength)
+	{
+		this.minInputLength = minInputLength;
+		return this;
+	}
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/30345bf3/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 6de3de2..1a13d0c 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -72,6 +72,9 @@
 		var localThrottler = new Wicket.Throttler(true);
 		var throttleDelay = cfg.throttleDelay;
 
+		//this is the minimum input length required to display the autocomplete list
+		var minInputLength = cfg.minInputLength || 1;
+
 		function initialize(){
 			var isShowing = false;
 			// Remove the autocompletion menu if still present from
@@ -353,7 +356,13 @@
 			var attrs = {
 				u: callbackUrl,
 				pre: [ function (attributes) {
-					return (document.activeElement === initialElement);
+					var activeIsInitial = (document.activeElement === initialElement);
+					var elementVal =  Wicket.$(elementId).value;
+					var hasMinimumLength = elementVal.length >= minInputLength;
+
+					var result = hasMinimumLength && activeIsInitial;
+					if (!result) hideAutoComplete();
+					return result;
 				}],
 				ep: {},
 				wr: false,
@@ -366,12 +375,17 @@
 
 		function actualUpdateChoices() {
 			showIndicator();
-			
+
 			var paramName = cfg.parameterName;
 			var attrs = {
 				u: callbackUrl,
 				pre: [ function (attributes) {
-					return (document.activeElement === initialElement);
+					var activeIsInitial = (document.activeElement === initialElement);
+					var elementVal =  Wicket.$(elementId).value;
+					var hasMinimumLength = elementVal.length >= minInputLength;
+					var result = hasMinimumLength && activeIsInitial;
+					if (!result) hideAutoComplete();
+					return result;
 				}],
 				ep: {},
 				wr: false,