From a357a6793fd05b1c395023cff72891a7fcdb0fac Mon Sep 17 00:00:00 2001 From: Morgan Croney Date: Wed, 13 Jul 2016 15:13:25 -0400 Subject: [PATCH] Make linkValidation allow hash links --- spec/anchor.spec.js | 18 ++++++++++++++++++ src/js/extensions/anchor.js | 3 ++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/spec/anchor.spec.js b/spec/anchor.spec.js index 188a87875..8e9a42515 100644 --- a/spec/anchor.spec.js +++ b/spec/anchor.spec.js @@ -329,6 +329,24 @@ describe('Anchor Button TestCase', function () { expect(link).not.toBeNull(); expect(link.href).toBe(validUrl.toLowerCase()); }); + it('should not change fragment identifier when link begins with hash', function () { + var editor = this.newMediumEditor('.editor', { + anchor: { + linkValidation: true + } + }), + validHashLink = '#!$&\'()*+,;=123abcDEF-._~:@/?', + link, + anchorExtension = editor.getExtensionByName('anchor'); + + selectElementContentsAndFire(editor.elements[0]); + anchorExtension.showForm(validHashLink); + fireEvent(anchorExtension.getForm().querySelector('a.medium-editor-toolbar-save'), 'click'); + + link = editor.elements[0].querySelector('a'); + expect(link).not.toBeNull(); + expect(link.getAttribute('href')).toBe(validHashLink); + }); it('should change spaces to %20 for a valid url if linkValidation options is set to true', function () { var editor = this.newMediumEditor('.editor', { anchor: { diff --git a/src/js/extensions/anchor.js b/src/js/extensions/anchor.js index 2c4d05f6c..fb321c515 100644 --- a/src/js/extensions/anchor.js +++ b/src/js/extensions/anchor.js @@ -235,7 +235,8 @@ // Matches any alphabetical characters followed by :// // Matches protocol relative "//" // Matches common external protocols "mailto:" "tel:" "maps:" - var urlSchemeRegex = /^([a-z]+:)?\/\/|^(mailto|tel|maps):/i, + // Matches relative hash link, "#" followed by any character + var urlSchemeRegex = /^([a-z]+:)?\/\/|^(mailto|tel|maps):|^\#.+/i, // var te is a regex for checking if the string is a telephone number telRegex = /^\+?\s?\(?(?:\d\s?\-?\)?){3,20}$/; if (telRegex.test(value)) {