Commit 96684317 authored by Jacob Schatz's avatar Jacob Schatz

Merge branch 'escape-to-cancel-note' into 'master'

Cancel creating or editing note by hitting Escape

/cc @rspeicher 

See merge request !5075
parents 413484f2 09c85ccb
...@@ -100,13 +100,40 @@ class @Notes ...@@ -100,13 +100,40 @@ class @Notes
$('.note .js-task-list-container').taskList('disable') $('.note .js-task-list-container').taskList('disable')
$(document).off 'tasklist:changed', '.note .js-task-list-container' $(document).off 'tasklist:changed', '.note .js-task-list-container'
keydownNoteText: (e) -> keydownNoteText: (e) =>
$this = $(this) return if isMetaKey e
if $this.val() is '' and e.which is 38 and not isMetaKey e
myLastNote = $("li.note[data-author-id='#{gon.current_user_id}'][data-editable]:last") $textarea = $(e.target)
if myLastNote.length
myLastNoteEditBtn = myLastNote.find('.js-note-edit') # Edit previous note when UP arrow is hit
myLastNoteEditBtn.trigger('click', [true, myLastNote]) switch e.which
when 38
return unless $textarea.val() is ''
myLastNote = $("li.note[data-author-id='#{gon.current_user_id}'][data-editable]:last")
if myLastNote.length
myLastNoteEditBtn = myLastNote.find('.js-note-edit')
myLastNoteEditBtn.trigger('click', [true, myLastNote])
# Cancel creating diff note or editing any note when ESCAPE is hit
when 27
discussionNoteForm = $textarea.closest('.js-discussion-note-form')
if discussionNoteForm.length
if $textarea.val() isnt ''
return unless confirm('Are you sure you want to cancel creating this comment?')
@removeDiscussionNoteForm(discussionNoteForm)
return
editNote = $textarea.closest('.note')
if editNote.length
originalText = $textarea.closest('form').data('original-note')
newText = $textarea.val()
if originalText isnt newText
return unless confirm('Are you sure you want to cancel editing this comment?')
@removeNoteEditForm(editNote)
isMetaKey = (e) -> isMetaKey = (e) ->
(e.metaKey or e.ctrlKey or e.altKey or e.shiftKey) (e.metaKey or e.ctrlKey or e.altKey or e.shiftKey)
...@@ -401,9 +428,12 @@ class @Notes ...@@ -401,9 +428,12 @@ class @Notes
Hides edit form and restores the original note text to the editor textarea. Hides edit form and restores the original note text to the editor textarea.
### ###
cancelEdit: (e) -> cancelEdit: (e) =>
e.preventDefault() e.preventDefault()
note = $(this).closest(".note") note = $(e.target).closest('.note')
@removeNoteEditForm(note)
removeNoteEditForm: (note) ->
form = note.find(".current-note-edit-form") form = note.find(".current-note-edit-form")
note.removeClass "is-editting" note.removeClass "is-editting"
form.removeClass("current-note-edit-form") form.removeClass("current-note-edit-form")
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment