Previously focused element regains focus when file finder is removed

This commit is contained in:
Corey Johnson
2012-03-20 11:05:57 -07:00
parent cd17cb6de3
commit 99e3074c25
2 changed files with 27 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
FileFinder = require 'file-finder'
{$$} = require 'space-pen'
describe 'FileFinder', ->
finder = null
urls = null
@@ -93,3 +95,22 @@ describe 'FileFinder', ->
expect(finder.findMatches('ap')).toEqual ["app.coffee", "atom/app.coffee"]
expect(finder.findMatches('a/ap')).toEqual ["atom/app.coffee"]
describe "when it is removed", ->
input = null
beforeEach ->
input = $$ -> @input value : "this has focus"
input.attachToDom()
input.focus()
expect(document.activeElement).toBe input[0]
finder = new FileFinder(urls: [])
finder.attachToDom()
expect(document.activeElement).not.toBe input[0]
afterEach ->
input.remove()
it "returns focus to previous active element", ->
finder.remove()
expect(document.activeElement).toBe input[0]

View File

@@ -16,6 +16,8 @@ class FileFinder extends View
initialize: ({@urls, @selected}) ->
requireStylesheet 'file-finder.css'
@maxResults = 10
@previousFocusedElement = $(document.activeElement)
@populateUrlList()
window.keymap.bindKeys ".file-finder .editor",
'enter': 'file-finder:select-file',
@@ -45,6 +47,10 @@ class FileFinder extends View
@selected(filePath) if filePath and @selected
@remove()
remove: ->
super()
@previousFocusedElement.focus()
moveUp: ->
@findSelectedLi()
.filter(':not(:first-child)')