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 <mgrigo...@apache.org> Authored: Thu Aug 8 13:26:35 2013 +0200 Committer: Martin Tzvetanov Grigorov <mgrigo...@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,