From fa9ff580c49b46d5550d8e43a1dd63b89dbdcb98 Mon Sep 17 00:00:00 2001 From: Jeroen Akkerman Date: Wed, 20 Feb 2019 01:41:53 +0100 Subject: [PATCH] Restore backwards compatibility with SimpleMDE, fixes #41 --- src/js/easymde.js | 23 ++++++++++++++++++++--- types/easymde.d.ts | 2 ++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/js/easymde.js b/src/js/easymde.js index 9fdd8d4..dd11a6a 100644 --- a/src/js/easymde.js +++ b/src/js/easymde.js @@ -131,19 +131,36 @@ function createIcon(options, enableTooltips, shortcuts) { } } - if (options.noDisable) { + if (options.noDisable || options.className.indexOf('no-disable') !== -1) { el.classList.add('no-disable'); } - if (options.noMobile) { + if (options.noMobile || options.className.indexOf('no-mobile') !== -1) { el.classList.add('no-mobile'); } + // Provide backwards compatibility with simple-markdown-editor by adding custom classes to the button. + var classNameParts = options.className.split(' '); + var iconClasses = []; + for (var classNameIndex = 0; classNameIndex < classNameParts.length; classNameIndex++) { + var classNamePart = classNameParts[classNameIndex]; + // Split icon classes from the button. + // Regex will detect "fa" and "fa-something", but not "fanfare". + if (classNamePart.match(/^fa((-.*)|$)/)) { + iconClasses.push(classNamePart); + } else { + el.classList.add(classNamePart); + } + } + el.tabIndex = -1; // Create icon element and append as a child to the button var icon = document.createElement('i'); - icon.className = options.className; + for (var iconClassIndex = 0; iconClassIndex < iconClasses.length; iconClassIndex++) { + var iconClass = iconClasses[iconClassIndex]; + icon.classList.add(iconClass) + } el.appendChild(icon); return el; diff --git a/types/easymde.d.ts b/types/easymde.d.ts index 6eadffe..129a4a4 100644 --- a/types/easymde.d.ts +++ b/types/easymde.d.ts @@ -81,6 +81,8 @@ declare namespace EasyMDE { action: string|((editor: EasyMDE) => void); className: string; title: string; + noDisable: boolean; + noMobile: boolean; } interface Options {