Skip to content
Snippets Groups Projects
Commit af24645d authored by Florent Baldino's avatar Florent Baldino
Browse files

Add shortcut to toggle markdown preview

parent be1ae2d6
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -12,6 +12,7 @@ v 8.6.0 (unreleased)
- Allow search for logged out users
- Don't show Issues/MRs from archived projects in Groups view
- Increase the notes polling timeout over time (Roberto Dip)
- Add shortcut to toggle markdown preview (Florent Baldino)
 
v 8.5.4
- Do not cache requests for badges (including builds badge)
Loading
Loading
Loading
Loading
@@ -6,6 +6,7 @@
class @MarkdownPreview
# Minimum number of users referenced before triggering a warning
referenceThreshold: 10
ajaxCache: {}
 
showPreview: (form) ->
preview = form.find('.js-md-preview')
Loading
Loading
@@ -24,12 +25,16 @@ class @MarkdownPreview
renderMarkdown: (text, success) ->
return unless window.markdown_preview_path
 
return success(@ajaxCache[text]) if @ajaxCache[text]
$.ajax
type: 'POST'
url: window.markdown_preview_path
data: { text: text }
dataType: 'json'
success: success
success: (response) =>
@ajaxCache[text] = response
success(response)
 
hideReferencedUsers: (form) ->
referencedUsers = form.find('.referenced-users')
Loading
Loading
@@ -49,6 +54,7 @@ markdownPreview = new MarkdownPreview()
 
previewButtonSelector = '.js-md-preview-button'
writeButtonSelector = '.js-md-write-button'
lastTextareaPreviewed = null
 
$.fn.setupMarkdownPreview = ->
$form = $(this)
Loading
Loading
@@ -58,10 +64,10 @@ $.fn.setupMarkdownPreview = ->
form_textarea.on 'input', -> markdownPreview.hideReferencedUsers($form)
form_textarea.on 'blur', -> markdownPreview.showPreview($form)
 
$(document).on 'click', previewButtonSelector, (e) ->
e.preventDefault()
$(document).on 'markdown-preview:show', (e, $form) ->
return unless $form
 
$form = $(this).closest('form')
lastTextareaPreviewed = $form.find('textarea.markdown-area')
 
# toggle tabs
$form.find(writeButtonSelector).parent().removeClass('active')
Loading
Loading
@@ -73,10 +79,10 @@ $(document).on 'click', previewButtonSelector, (e) ->
 
markdownPreview.showPreview($form)
 
$(document).on 'click', writeButtonSelector, (e) ->
e.preventDefault()
$(document).on 'markdown-preview:hide', (e, $form) ->
return unless $form
 
$form = $(this).closest('form')
lastTextareaPreviewed = null
 
# toggle tabs
$form.find(writeButtonSelector).parent().addClass('active')
Loading
Loading
@@ -84,4 +90,30 @@ $(document).on 'click', writeButtonSelector, (e) ->
 
# toggle content
$form.find('.md-write-holder').show()
$form.find('textarea.markdown-area').focus()
$form.find('.md-preview-holder').hide()
$(document).on 'markdown-preview:toggle', (e, keyboardEvent) ->
$target = $(keyboardEvent.target)
if $target.is('textarea.markdown-area')
$(document).triggerHandler('markdown-preview:show', [$target.closest('form')])
keyboardEvent.preventDefault()
else if lastTextareaPreviewed
$target = lastTextareaPreviewed
$(document).triggerHandler('markdown-preview:hide', [$target.closest('form')])
keyboardEvent.preventDefault()
$(document).on 'click', previewButtonSelector, (e) ->
e.preventDefault()
$form = $(this).closest('form')
$(document).triggerHandler('markdown-preview:show', [$form])
$(document).on 'click', writeButtonSelector, (e) ->
e.preventDefault()
$form = $(this).closest('form')
$(document).triggerHandler('markdown-preview:hide', [$form])
Loading
Loading
@@ -4,11 +4,15 @@ class @Shortcuts
Mousetrap.reset()
Mousetrap.bind('?', @selectiveHelp)
Mousetrap.bind('s', Shortcuts.focusSearch)
Mousetrap.bind(['ctrl+shift+p', 'command+shift+p'], @toggleMarkdownPreview)
Mousetrap.bind('t', -> Turbolinks.visit(findFileURL)) if findFileURL?
 
selectiveHelp: (e) =>
Shortcuts.showHelp(e, @enabledHelp)
 
toggleMarkdownPreview: (e) =>
$(document).triggerHandler('markdown-preview:toggle', [e])
@showHelp: (e, location) ->
if $('#modal-shortcuts').length > 0
$('#modal-shortcuts').modal('show')
Loading
Loading
@@ -35,3 +39,14 @@ $(document).on 'click.more_help', '.js-more-help-button', (e) ->
$(@).remove()
$('.hidden-shortcut').show()
e.preventDefault()
Mousetrap.stopCallback = (->
defaultStopCallback = Mousetrap.stopCallback
return (e, element, combo) ->
# allowed shortcuts if textarea, input, contenteditable are focused
if ['ctrl+shift+p', 'command+shift+p'].indexOf(combo) != -1
return false
else
return defaultStopCallback.apply(@, arguments)
)()
Loading
Loading
@@ -22,6 +22,10 @@
%td.shortcut
.key ?
%td Show this dialog
%tr
%td.shortcut
.key ctrl shift p
%td Toggle Markdown preview
%tbody
%tr
%th
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment