mirror of
https://github.com/atom/atom.git
synced 2026-01-25 14:59:03 -05:00
SelectList handles 'core:confirm' and 'core:cancel' events
This commit is contained in:
@@ -17,6 +17,9 @@ fdescribe "SelectList", ->
|
||||
selectList.itemForElement = (element) ->
|
||||
$$ -> @li element[1], class: element[0]
|
||||
|
||||
selectList.selected = jasmine.createSpy('selected hook')
|
||||
selectList.cancelled = jasmine.createSpy('cancelled hook')
|
||||
|
||||
selectList.setArray(array)
|
||||
{list, miniEditor} = selectList
|
||||
|
||||
@@ -72,14 +75,15 @@ fdescribe "SelectList", ->
|
||||
miniEditor.trigger 'move-up'
|
||||
expect(list.scrollBottom()).toBe itemHeight * 3
|
||||
|
||||
describe "the core:select event", ->
|
||||
it "triggers the selected hook", ->
|
||||
describe "the core:confirm event", ->
|
||||
it "triggers the selected hook with the selected array element", ->
|
||||
miniEditor.trigger 'move-down'
|
||||
miniEditor.trigger 'move-down'
|
||||
miniEditor.trigger 'core:confirm'
|
||||
expect(selectList.selected).toHaveBeenCalledWith(array[2])
|
||||
|
||||
describe "the core:cancel event", ->
|
||||
it "triggers the cancelled hook", ->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
miniEditor.trigger 'core:cancel'
|
||||
expect(selectList.cancelled).toHaveBeenCalled()
|
||||
|
||||
|
||||
@@ -11,12 +11,15 @@ class SelectList extends View
|
||||
@ol outlet: 'list'
|
||||
|
||||
maxItems: Infinity
|
||||
filteredArray: null
|
||||
|
||||
initialize: ->
|
||||
requireStylesheet 'select-list.css'
|
||||
@miniEditor.getBuffer().on 'change', => @populateList()
|
||||
@on 'move-up', => @selectPreviousItem()
|
||||
@on 'move-down', => @selectNextItem()
|
||||
@on 'core:confirm', => @confirmSelection()
|
||||
@on 'core:cancel', => @cancelled()
|
||||
|
||||
setArray: (@array) ->
|
||||
@populateList()
|
||||
@@ -25,13 +28,15 @@ class SelectList extends View
|
||||
populateList: ->
|
||||
filterQuery = @miniEditor.getText()
|
||||
if filterQuery.length
|
||||
filteredArray = fuzzyFilter(@array, filterQuery, key: @filterKey)
|
||||
@filteredArray = fuzzyFilter(@array, filterQuery, key: @filterKey)
|
||||
else
|
||||
filteredArray = @array
|
||||
@filteredArray = @array
|
||||
|
||||
@list.empty()
|
||||
for i in [0...Math.min(filteredArray.length, @maxItems)]
|
||||
@list.append(@itemForElement(filteredArray[i]))
|
||||
for i in [0...Math.min(@filteredArray.length, @maxItems)]
|
||||
item = @itemForElement(@filteredArray[i])
|
||||
item.data('select-list-index', i)
|
||||
@list.append(item)
|
||||
|
||||
selectPreviousItem: ->
|
||||
@selectItem(@getSelectedItem().prev())
|
||||
@@ -57,3 +62,7 @@ class SelectList extends View
|
||||
|
||||
getSelectedItem: ->
|
||||
@list.find('li.selected')
|
||||
|
||||
confirmSelection: ->
|
||||
index = @getSelectedItem().data('select-list-index')
|
||||
@selected(@filteredArray[index])
|
||||
|
||||
Reference in New Issue
Block a user