Commit af14f6db authored by Matt Morgan's avatar Matt Morgan
Browse files

Merge branch 'async' into 2.1.0-wip

parents 91a7274a bf9d8fcc
11 merge requests!4427Use variable for desktop media query,!4258Aria,!4248Amended mentions of 'javascript' to the correct 'JavaScript',!4235Patch 1,!4232Fixing the modal z-index issue + make modal stacking possible,!42132.1.0 wip,!4165Patch 2,!39192.1.0 wip,!3690fixed paths to javascript and the doc link,!3688fixed wrong paths to javascript,!3682Alter typeahead to accept synchronous/asynchronous data source
This commit is part of merge request !3682. Comments created here will be created in the context of that merge request.
Showing with 50 additions and 8 deletions
+50 -8
......@@ -1376,9 +1376,9 @@ $('.carousel').carousel({
<tbody>
<tr>
<td>{{_i}}source{{/i}}</td>
<td>{{_i}}array{{/i}}</td>
<td>{{_i}}array, function{{/i}}</td>
<td>[ ]</td>
<td>{{_i}}The data source to query against.{{/i}}</td>
<td>{{_i}}The data source to query against. May be an array of strings or a function. The function is passed two arguments, the <code>query</code> value in the input field and the <code>process</code> callback. The function may be used synchronously by returning the data source directly or asynchronously via the <code>process</code> callback's single argument.{{/i}}</td>
</tr>
<tr>
<td>{{_i}}items{{/i}}</td>
......@@ -1417,4 +1417,4 @@ $('.carousel').carousel({
<p>{{_i}}Initializes an input with a typeahead.{{/i}}</p>
</div>
</div>
</section>
\ No newline at end of file
</section>
......@@ -77,9 +77,7 @@
}
, lookup: function (event) {
var that = this
, items
, q
var items
this.query = this.$element.val()
......@@ -87,7 +85,15 @@
return this.shown ? this.hide() : this
}
items = $.grep(this.source, function (item) {
items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
return items ? this.process(items) : this
}
, process: function (items) {
var that = this
items = $.grep(items, function (item) {
return that.matcher(item)
})
......@@ -290,4 +296,4 @@
})
})
}(window.jQuery);
\ No newline at end of file
}(window.jQuery);
......@@ -52,6 +52,42 @@ $(function () {
typeahead.$menu.remove()
})
test("should accept data source via synchronous function", function () {
var $input = $('<input />').typeahead({
source: function () {
return ['aa', 'ab', 'ac']
}
})
, typeahead = $input.data('typeahead')
$input.val('a')
typeahead.lookup()
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
typeahead.$menu.remove()
})
test("should accept data source via asynchronous function", function () {
var $input = $('<input />').typeahead({
source: function (query, process) {
process(['aa', 'ab', 'ac'])
}
})
, typeahead = $input.data('typeahead')
$input.val('a')
typeahead.lookup()
ok(typeahead.$menu.is(":visible"), 'typeahead is visible')
equals(typeahead.$menu.find('li').length, 3, 'has 3 items in menu')
equals(typeahead.$menu.find('.active').length, 1, 'one item is active')
typeahead.$menu.remove()
})
test("should not explode when regex chars are entered", function () {
var $input = $('<input />').typeahead({
source: ['aa', 'ab', 'ac', 'mdo*', 'fat+']
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment