diff --git a/app/assets/javascripts/lib/utils/text_markdown.js b/app/assets/javascripts/lib/utils/text_markdown.js index 05e2b6dca7e330bf6fb9fe4dd05fda0202b7065e..4d25ee9e4bd0f7bc20ceabe89c2b0accb59a001e 100644 --- a/app/assets/javascripts/lib/utils/text_markdown.js +++ b/app/assets/javascripts/lib/utils/text_markdown.js @@ -303,40 +303,7 @@ function updateText({ textArea, tag, cursorOffset, blockTag, wrap, select, tagCo }); } -/* eslint-disable @gitlab/require-i18n-strings */ -export function keypressNoteText(e) { - if (this.selectionStart === this.selectionEnd) { - return; - } - const keys = { - '*': '**{text}**', // wraps with bold character - _: '_{text}_', // wraps with italic character - '`': '`{text}`', // wraps with inline character - "'": "'{text}'", // single quotes - '"': '"{text}"', // double quotes - '[': '[{text}]', // brackets - '{': '{{text}}', // braces - '(': '({text})', // parentheses - '<': '<{text}>', // angle brackets - }; - const tag = keys[e.key]; - - if (tag) { - updateText({ - tag, - textArea: this, - blockTag: '', - wrap: true, - select: '', - tagContent: '', - }); - e.preventDefault(); - } -} -/* eslint-enable @gitlab/require-i18n-strings */ - export function addMarkdownListeners(form) { - $('.markdown-area').on('keydown', keypressNoteText); return $('.js-md', form) .off('click') .on('click', function() { @@ -373,6 +340,5 @@ export function addEditorMarkdownListeners(editor) { } export function removeMarkdownListeners(form) { - $('.markdown-area').off('keydown'); return $('.js-md', form).off('click'); } diff --git a/changelogs/unreleased/bw-surround-text-wth-char.yml b/changelogs/unreleased/bw-surround-text-wth-char.yml deleted file mode 100644 index 7395bb9c26b9777cb9efbfde2f5a6ba9e04f3d42..0000000000000000000000000000000000000000 --- a/changelogs/unreleased/bw-surround-text-wth-char.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Surround selected text in markdown fields on certain key presses -merge_request: 25748 -author: -type: added diff --git a/spec/frontend/lib/utils/text_markdown_spec.js b/spec/frontend/lib/utils/text_markdown_spec.js index 1aaae80dcdf3b479150546d93939e565a6a28cf4..2e52958a8289f700ee3f9bc9bdc39dc877a1bdc9 100644 --- a/spec/frontend/lib/utils/text_markdown_spec.js +++ b/spec/frontend/lib/utils/text_markdown_spec.js @@ -1,4 +1,4 @@ -import { insertMarkdownText, keypressNoteText } from '~/lib/utils/text_markdown'; +import { insertMarkdownText } from '~/lib/utils/text_markdown'; describe('init markdown', () => { let textArea; @@ -115,15 +115,14 @@ describe('init markdown', () => { describe('with selection', () => { const text = 'initial selected value'; const selected = 'selected'; - let selectedIndex; - beforeEach(() => { textArea.value = text; - selectedIndex = text.indexOf(selected); + const selectedIndex = text.indexOf(selected); textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); }); it('applies the tag to the selected value', () => { + const selectedIndex = text.indexOf(selected); const tag = '*'; insertMarkdownText({ @@ -154,29 +153,6 @@ describe('init markdown', () => { expect(textArea.value).toEqual(text.replace(selected, `[${selected}](url)`)); }); - it.each` - key | expected - ${'['} | ${`[${selected}]`} - ${'*'} | ${`**${selected}**`} - ${"'"} | ${`'${selected}'`} - ${'_'} | ${`_${selected}_`} - ${'`'} | ${`\`${selected}\``} - ${'"'} | ${`"${selected}"`} - ${'{'} | ${`{${selected}}`} - ${'('} | ${`(${selected})`} - ${'<'} | ${`<${selected}>`} - `('generates $expected when $key is pressed', ({ key, expected }) => { - const event = new KeyboardEvent('keydown', { key }); - - textArea.addEventListener('keydown', keypressNoteText); - textArea.dispatchEvent(event); - - expect(textArea.value).toEqual(text.replace(selected, expected)); - - // cursor placement should be after selection + 2 tag lengths - expect(textArea.selectionStart).toBe(selectedIndex + expected.length); - }); - describe('and text to be selected', () => { const tag = '[{text}](url)'; const select = 'url'; @@ -202,7 +178,7 @@ describe('init markdown', () => { it('selects the right text when multiple tags are present', () => { const initialValue = `${tag} ${tag} ${selected}`; textArea.value = initialValue; - selectedIndex = initialValue.indexOf(selected); + const selectedIndex = initialValue.indexOf(selected); textArea.setSelectionRange(selectedIndex, selectedIndex + selected.length); insertMarkdownText({ textArea, @@ -228,7 +204,7 @@ describe('init markdown', () => { const initialValue = `text ${expectedUrl} text`; textArea.value = initialValue; - selectedIndex = initialValue.indexOf(expectedUrl); + const selectedIndex = initialValue.indexOf(expectedUrl); textArea.setSelectionRange(selectedIndex, selectedIndex + expectedUrl.length); insertMarkdownText({