Correct keyboard handling errors in item selector

fixes #227, #218
This commit is contained in:
Andrew Miner
2016-05-06 21:30:41 -07:00
parent c9796a142d
commit 6fa18c764b
5 changed files with 19 additions and 6 deletions
@@ -48,7 +48,6 @@
} }
&.selected { &.selected {
flex : 0 0 auto;
background : $color-active-hover; background : $color-active-hover;
.name { .name {
@@ -57,6 +57,7 @@
.results { .results {
flex: 1 1 100%; flex: 1 1 100%;
position: relative;
overflow-x: hidden; overflow-x: hidden;
overflow-y: scroll; overflow-y: scroll;
@@ -71,10 +71,10 @@ module.exports = class ItemSelectorController extends BaseController
when c.key.enter when c.key.enter
@_chooseSelected() @_chooseSelected()
return false return false
when c.key.down when c.key.downArrow
@_selectNext() @_selectNext()
return false return false
when c.key.up when c.key.upArrow
@_selectPrevious() @_selectPrevious()
return false return false
@@ -169,6 +169,8 @@ module.exports = class ItemSelectorController extends BaseController
@_elementControllers.pop().remove() @_elementControllers.pop().remove()
_selectNext: -> _selectNext: ->
return unless @_elementControllers.length > 0
for i in [0...(@_elementControllers.length - 1)] by 1 for i in [0...(@_elementControllers.length - 1)] by 1
controller = @_elementControllers[i] controller = @_elementControllers[i]
nextController = @_elementControllers[i + 1] nextController = @_elementControllers[i + 1]
@@ -179,7 +181,13 @@ module.exports = class ItemSelectorController extends BaseController
@_showElement nextController.$el @_showElement nextController.$el
return return
controller = @_elementControllers[0]
controller.selected = true
@_showElement controller.$el
_selectPrevious: -> _selectPrevious: ->
return unless @_elementControllers.length > 0
for i in [1...@_elementControllers.length] by 1 for i in [1...@_elementControllers.length] by 1
previousController = @_elementControllers[i - 1] previousController = @_elementControllers[i - 1]
controller = @_elementControllers[i] controller = @_elementControllers[i]
@@ -190,6 +198,10 @@ module.exports = class ItemSelectorController extends BaseController
@_showElement previousController.$el @_showElement previousController.$el
return return
controller = @_elementControllers[@_elementControllers.length - 1]
controller.selected = true
@_showElement controller.$el
_showElement: ($el)-> _showElement: ($el)->
top = $el.position().top + @$resultsContainer.scrollTop() top = $el.position().top + @$resultsContainer.scrollTop()
@$resultsContainer.css 'scrollTop', top @$resultsContainer.animate {scrollTop:top}, c.duration.snap
+1 -2
View File
@@ -16,8 +16,7 @@
flex-direction : column; flex-direction : column;
.view__crafting_grid { .view__crafting_grid {
flex: 1 1 auto; flex: 0 0 auto;
width: 100%;
} }
.tool { .tool {
@@ -46,6 +46,8 @@ module.exports = class HeaderController extends BaseController
onSearch: -> onSearch: ->
@_selector.launch() @_selector.launch()
.then (itemSlug)=> .then (itemSlug)=>
return unless itemSlug?
itemDisplay = @_modPack.findItemDisplay itemSlug itemDisplay = @_modPack.findItemDisplay itemSlug
@router.navigate itemDisplay.itemUrl, trigger:true @router.navigate itemDisplay.itemUrl, trigger:true
return false return false