You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "George Christman (JIRA)" <ji...@apache.org> on 2014/10/15 19:55:34 UTC

[jira] [Created] (TAP5-2402) autocomplete typeahead suggestions appear/disappear with keystrokes

George Christman created TAP5-2402:
--------------------------------------

             Summary: autocomplete typeahead suggestions appear/disappear with keystrokes
                 Key: TAP5-2402
                 URL: https://issues.apache.org/jira/browse/TAP5-2402
             Project: Tapestry 5
          Issue Type: Bug
          Components: tapestry-core
    Affects Versions: 5.4
            Reporter: George Christman


The tapestry autocomplete mixin uses typeahead.js 0.9.3 which seems to have a bug where the suggestions appear/disappear which each key stroke. This seems to have been resolved in the latest version of typeahead.js 0.10.5. I have successfully implemented it locally and resolved the issue. I'm recommending we upgrade the typeahead.js and it's connector to the latest version. 

https://twitter.github.io/typeahead.js/
https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js

Below is a working connector. 

define(["t5/core/dom", "t5/core/ajax", "./jquery", "t5/core/utils", "./vendor/handlebars-v2.0.0", "./vendor/typeahead.bundle"], function(dom, ajax, $, _arg) {
    var exports, extendURL, init;

    extendURL = _arg.extendURL;
    init = function(spec) {
        var $field;

        $field = $(document.getElementById(spec.id));

        var suggestions = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            limit: 5,
            dupDetector: function(remoteMatch, localMatch) {
                return remoteMatch.value === localMatch.value;
            },
            remote: {
                url: spec.url,
                replace: function(uri, query) {
                    console.log(query);
                    return extendURL(uri, {
                        "t:input": query
                    });
                },
                filter: function(response) {                   
                    return response.matches;
                }
            }
        });
        suggestions.initialize();

        return $field.typeahead(
                {
//we may want to somehow make these options available through a json configuration.
                    hint: false,
                    highlight: true,
                    minLength: spec.minChars,
                }, {
            displayKey: 'value',
            hint: true,
            highlight: true,
            minLength: spec.minChars,
            source: suggestions.ttAdapter()
        });
    };
    return exports = init;
});



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)