blob: 3043b70bc7c142d53f29ed039144d0e109df852a [file] [log] [blame]
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http:#www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ## t5/core/autocomplete
#
# Support for the core/Autocomplete Tapestry mixin, a wrapper around
# the Twitter autocomplete.js library.
define ["./dom", "./ajax", "underscore", "jquery", "./utils", "./typeahead"],
(dom, ajax, _, $, {extendURL}) ->
init = (spec) ->
$field = $ document.getElementById spec.id
engine = new Bloodhound
datumTokenizer: Bloodhound.tokenizers.whitespace
queryTokenizer: Bloodhound.tokenizers.whitespace
limit: spec.limit
remote:
url: spec.url
replace: (uri, query) -> extendURL uri, "t:input": query
filter: (response) -> response.matches
engine.initialize()
dataset =
name: spec.id
displayKey: _.identity
source: engine.ttAdapter()
$field.typeahead
minLength: spec.minChars
dataset
# don't validate the "tt-hint" input field created by Typeahead (fix for TAP5-2440)
$field.prev(".tt-hint").removeAttr("data-validation data-optionality data-required-message")
return
exports = init