Files
gitlabhq/app/assets/javascripts/tree.js.coffee
T
Fatih AcetandRobert Speicher aae4444409 Merge branch 'fix_filebrowser_reload' into 'master'
File Browser navigation fixes

Fixes a double request being made when clicking the file name when navigating through file browser and also fixes opening a file in a new tab or when doing ctrl + click.

Closes #19050

**Before**

![navigation-old](/uploads/f9a40c91e430e31beae3a896cffb1c68/navigation-old.gif)

**After**

![navigation](/uploads/dec9b43894c00cc09d80d19c83506530/navigation.gif)

See merge request !4891
(cherry picked from commit b32a6add8f)
2016-06-30 15:21:41 -04:00

51 lines
1.6 KiB
CoffeeScript

class @TreeView
constructor: ->
@initKeyNav()
# Code browser tree slider
# Make the entire tree-item row clickable, but not if clicking another link (like a commit message)
$(".tree-content-holder .tree-item").on 'click', (e) ->
$clickedEl = $(e.target)
path = $('.tree-item-file-name a', this).attr('href')
if not $clickedEl.is('a') and not $clickedEl.is('.str-truncated')
if e.metaKey or e.which is 2
e.preventDefault()
window.open path, '_blank'
else
Turbolinks.visit path
# Show the "Loading commit data" for only the first element
$('span.log_loading:first').removeClass('hide')
initKeyNav: ->
li = $("tr.tree-item")
liSelected = null
$('body').keydown (e) ->
if $("input:focus").length > 0 && (e.which == 38 || e.which == 40)
return false
if e.which is 40
if liSelected
next = liSelected.next()
if next.length > 0
liSelected.removeClass "selected"
liSelected = next.addClass("selected")
else
liSelected = li.eq(0).addClass("selected")
$(liSelected).focus()
else if e.which is 38
if liSelected
next = liSelected.prev()
if next.length > 0
liSelected.removeClass "selected"
liSelected = next.addClass("selected")
else
liSelected = li.last().addClass("selected")
$(liSelected).focus()
else if e.which is 13
path = $('.tree-item.selected .tree-item-file-name a').attr('href')
if path then Turbolinks.visit(path)