summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Hughes <me@iamphill.com>2016-03-29 11:51:13 +0100
committerPhil Hughes <me@iamphill.com>2016-04-06 11:08:40 +0100
commitbeab104da812af015eeabb0f33d203741a221aed (patch)
treed231e4e27fe5fe50e12a62586d5c49edcd8e3909
parent850fa65ef2ff1fb16623c591a2147d75df333c58 (diff)
downloadgitlab-ce-beab104da812af015eeabb0f33d203741a221aed.tar.gz
Filters by text on element
-rw-r--r--app/assets/javascripts/compare.js.coffee1
-rw-r--r--app/assets/javascripts/gl_dropdown.js.coffee37
2 files changed, 31 insertions, 7 deletions
diff --git a/app/assets/javascripts/compare.js.coffee b/app/assets/javascripts/compare.js.coffee
index e5819fa91c3..8b502c8f27a 100644
--- a/app/assets/javascripts/compare.js.coffee
+++ b/app/assets/javascripts/compare.js.coffee
@@ -9,6 +9,7 @@ class @Compare
$dropdown.glDropdown(
selectable: true
fieldName: $dropdown.data 'field-name'
+ filterable: true
id: (obj, $el) ->
$el.data 'id'
toggleLabel: (obj, $el) ->
diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee
index 38b38fc8426..82a82a27ccf 100644
--- a/app/assets/javascripts/gl_dropdown.js.coffee
+++ b/app/assets/javascripts/gl_dropdown.js.coffee
@@ -57,14 +57,30 @@ class GitLabDropdownFilter
filter: (search_text) ->
data = @options.data()
- results = data
- if search_text isnt ""
- results = fuzzaldrinPlus.filter(data, search_text,
- key: @options.keys
- )
+ if data?
+ results = data
- @options.callback results
+ if search_text isnt ""
+ results = fuzzaldrinPlus.filter(data, search_text,
+ key: @options.keys
+ )
+
+ @options.callback results
+ else
+ elements = @options.elements()
+
+ if search_text
+ elements.each ->
+ $el = $(@)
+ matches = fuzzaldrinPlus.match($el.text().trim(), search_text)
+
+ if matches.length
+ $el.show()
+ else
+ $el.hide()
+ else
+ elements.show()
class GitLabDropdownRemote
constructor: (@dataEndpoint, @options) ->
@@ -147,7 +163,14 @@ class GitLabDropdown
filterInputBlur: @filterInputBlur
remote: @options.filterRemote
query: @options.data
- keys: @options.search.fields
+ keys: search_fields
+ elements: =>
+ selector = ".dropdown-content li:not(.divider)"
+
+ if @dropdown.find(".dropdown-toggle-page").length
+ selector = ".dropdown-page-one #{selector}"
+
+ return $(selector)
data: =>
return @fullData
callback: (data) =>