diff options
author | Phil Hughes <me@iamphill.com> | 2016-12-19 15:26:10 +0000 |
---|---|---|
committer | Phil Hughes <me@iamphill.com> | 2016-12-21 11:32:41 +0000 |
commit | a713a29aadd2908c0ad7079f5b24033736a96d9c (patch) | |
tree | c2773cf4a9819043a555f6dd8b25499210e40454 | |
parent | fecebc7991283e5f9aff89119bb2e4dcde9deeab (diff) | |
download | gitlab-ce-markdown-button-newline-bug-fix.tar.gz |
Fixed first newline not workingmarkdown-button-newline-bug-fix
-rw-r--r-- | app/assets/javascripts/lib/utils/text_utility.js | 13 | ||||
-rw-r--r-- | spec/features/issues/markdown_toolbar_spec.rb | 37 |
2 files changed, 49 insertions, 1 deletions
diff --git a/app/assets/javascripts/lib/utils/text_utility.js b/app/assets/javascripts/lib/utils/text_utility.js index cf286dc30ee..5066e3282d7 100644 --- a/app/assets/javascripts/lib/utils/text_utility.js +++ b/app/assets/javascripts/lib/utils/text_utility.js @@ -44,8 +44,15 @@ } }; gl.text.insertText = function(textArea, text, tag, blockTag, selected, wrap) { - var insertText, inserted, selectedSplit, startChar, removedLastNewLine; + var insertText, inserted, selectedSplit, startChar, removedLastNewLine, removedFirstNewLine; removedLastNewLine = false; + removedFirstNewLine = false; + + // Remove the first newline + if (selected.indexOf('\n') === 0) { + removedFirstNewLine = true; + selected = selected.replace(/\n+/, ''); + } // Remove the last newline if (textArea.selectionEnd - textArea.selectionStart > selected.replace(/\n$/, '').length) { @@ -72,6 +79,10 @@ insertText = "" + startChar + tag + selected + (wrap ? tag : ' '); } + if (removedFirstNewLine) { + insertText = '\n' + insertText; + } + if (removedLastNewLine) { insertText += '\n'; } diff --git a/spec/features/issues/markdown_toolbar_spec.rb b/spec/features/issues/markdown_toolbar_spec.rb new file mode 100644 index 00000000000..6ad4d4adbed --- /dev/null +++ b/spec/features/issues/markdown_toolbar_spec.rb @@ -0,0 +1,37 @@ +require 'rails_helper' + +feature 'Issue markdown toolbar', feature: true, js: true do + let(:project) { create(:project, :public) } + let(:issue) { create(:issue, project: project) } + let(:user) { create(:user) } + + before do + login_as(user) + + visit namespace_project_issue_path(project.namespace, project, issue) + end + + it "doesn't include first new line when adding bold" do + find('#note_note').native.send_keys('test') + find('#note_note').native.send_key(:enter) + find('#note_note').native.send_keys('bold') + + page.evaluate_script('document.getElementById("note_note").setSelectionRange(4, 9)') + + first('.toolbar-btn').click + + expect(find('#note_note')[:value]).to eq("test\n**bold**\n") + end + + it "doesn't include first new line when adding underline" do + find('#note_note').native.send_keys('test') + find('#note_note').native.send_key(:enter) + find('#note_note').native.send_keys('underline') + + page.evaluate_script('document.getElementById("note_note").setSelectionRange(4, 50)') + + find('.toolbar-btn:nth-child(2)').click + + expect(find('#note_note')[:value]).to eq("test\n*underline*\n") + end +end |