From a713a29aadd2908c0ad7079f5b24033736a96d9c Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Mon, 19 Dec 2016 15:26:10 +0000 Subject: Fixed first newline not working --- app/assets/javascripts/lib/utils/text_utility.js | 13 ++++++++- spec/features/issues/markdown_toolbar_spec.rb | 37 ++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 spec/features/issues/markdown_toolbar_spec.rb 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 -- cgit v1.2.1