Super simple WYSIWYG editor

Overview

Summernote

Super simple WYSIWYG Editor.

Build Status npm version Coverage Status

Summernote

Summernote is a JavaScript library that helps you create WYSIWYG editors online.

Home page: https://summernote.org

Why Summernote?

Summernote has a few special features:

  • Paste images from clipboard
  • Saves images directly in the content of the field using base64 encoding, so you don't need to implement image handling at all
  • Simple UI
  • Interactive WYSIWYG editing
  • Handy integration with server
  • Supports Bootstrap 3 and 4 integrities
  • Lots of plugins and connectors provided together

Installation and dependencies

Summernote is built on jQuery.

1. Include JS/CSS

Include the following code in the <head> tag of your HTML:

<!-- include libraries(jQuery, bootstrap) -->
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" />
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>

<!-- include summernote css/js-->
<link href="summernote.css" rel="stylesheet">
<script src="summernote.js"></script>

2. Target a element

Then place a div tag somewhere in the body tag. This element will be replaced with the summernote editor.

<div id="summernote">Hello Summernote</div>

3. Summernote it!

Finally, run this script after the DOM is ready:

$(document).ready(function() {
  $('#summernote').summernote();
});

For more examples, please visit to homepage.

API

code - get the HTML source code underlying the text in the editor:

var html = $('#summernote').summernote('code');

For more detail about API, please refer to document.

Warning - code injection

The code view allows the user to enter script contents. Make sure to filter/sanitize the HTML on the server. Otherwise, an attacker can inject arbitrary JavaScript code into clients.

For contributing

https://github.com/summernote/summernote/blob/develop/.github/CONTRIBUTING.md

Contacts

Testing powered by


BrowserStack Open-Source Program

License

Summernote may be freely distributed under the MIT license.

Comments
  • Using amazon s3 storage with summernote

    Using amazon s3 storage with summernote

    Summernote converts uploaded image as a base64 data which is too large to store. Is there way to inject amazon s3 service, so that only link gets stored in db?

    opened by ankur1708 83
  • Sync elfinder and summernote (Get id callback)

    Sync elfinder and summernote (Get id callback)

    Hi! I want get id from call sammernote textarea having class "summernote" for work elfinder: /////////////////////////////////////////////////////////////////////// 'elfinder': function (context) { var self = this;

            // ui has renders to build ui elements.
            //  - you can create a button with `ui.button`
            var ui = $.summernote.ui;
    
            // add elfinder button
            context.memo('button.elfinder', function () {
                // create button
                var button = ui.button({
                    contents: '<i class="fa fa-list-alt"/> Add Picture',
                    tooltip: 'elfinder',
                    click: function () {
                        elfinderDialog(context);
                    }
                });
    
                // create jQuery object from button instance.
                var $elfinder = button.render();
                return $elfinder;
            });
    
            // This methods will be called when editor is destroyed by $('..').summernote('destroy');
            // You should remove elements on `initialize`.
            this.destroy = function () {
                this.$panel.remove();
                this.$panel = null;
            };
        }
    
    });
    

    //////////////////////////////////////////////////////////////////////////////////////////////////

    Button elfinder formed from this plugin code for summernote, but i have get id for insert image element in summernote. My problem thing is i have two or more textarea with class "summernote", but i dont can't get desired id for insert into the field image element. Transfer information image going on using this function - elfinderDialog(), but i have other call elfinder dialog. The general question is how i get id textarea with class "summernote" from push button plugin. This section of the function that is responsible for the call that I need to get an answer with needed id for transfer in elfinder dialog - click: function () {

    }

    opened by q3dm0 78
  • Remove bootstrap dependency from summernote

    Remove bootstrap dependency from summernote

    Hello there,

    I have a problem, when i intergrate bootstrap on my current project there goes a lot wrong in the style. is it posible to use summernote without bootstrap, or with a custom that doesnt do anything with my style?

    is there already a custom css/js file special for summernote, that wont harm any default code?

    Feature-request Needs-help 
    opened by u-approach-ricardo 59
  • how to fix : Uncaught TypeError: $(...).summernote is not a function

    how to fix : Uncaught TypeError: $(...).summernote is not a function

    how to fix : Uncaught TypeError: $(...).summernote is not a function.

    <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet">
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
    <script src="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.js"></script>
    
    <!-- include summernote css/js-->
    <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.css" rel="stylesheet">
    <script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.2/summernote.js"></script>
    

    Hello Summernote

    $(document).ready(function() { $('#summernote').summernote(); });

    fix basic !

    how to fix : Uncaught TypeError: $(...).summernote is not a function.

    opened by thandonguocmo2020 53
  • New line adds p tag, ability to change it?

    New line adds p tag, ability to change it?

    Can you change the code so when pressing "enter" button not to add < p >< br > </ p> ?

    Perhaps an option so we can choose the tag.

    opened by gadlol 46
  • Onpaste event to clear formatting

    Onpaste event to clear formatting

    Is it possible to add an on paste event? I wanna remove all styles when someone copy pastes a text to the editor. If there is an event like this, I can try to build that.

    Or is there an other (easyer) way to clear formatting when someone paste text from an other editor?

    Feature-request Discussion 
    opened by JackPoint 43
  • Set Link to Image

    Set Link to Image

    Hi again,

    please, can you fix the Problem of Imagelinking? It is not possible to set links to an image. Maybe, you can integration a button like the 100%,50%,25% one for an imagelink.

    Thank you Simon

    Pull-request-wanted Feature-request 
    opened by setuun 42
  • pasteHTML reversed v0.8.12

    pasteHTML reversed v0.8.12

    Description of your Issue or Request:

    when using the method "pasteHTML", the content is reversed.

    steps to reproduce (Add more if necessary):

    1. use $('#summernote').summernote('pasteHTML', text);

    What is your Operating System, Browser and Version and Summernote Version you are using:

    1. Operating System: Win 10

    2. Browser and Version: Chrome 78.0.3904.87

    3. Summernote Version (including which BS3, BS4, Lite or All): summernote v0.8.12, jquery 3.3.1, popper 1.14.7, bootstrap 4.3.1

    https://codepen.io/seltix/pen/VwwdMoo

    OBS : the problem only occur if the container is empty <textarea id="summernote"></textarea>, if the container has something it paste the html correctly, for example <textarea id="summernote">aaa</textarea>

    Bug More-info-needed Can't-reproduce 
    opened by seltix5 37
  • How to stop formatting the content for code view.

    How to stop formatting the content for code view.

    Hi our application is using summernote. So my requirement is i have html data like below

    <table>
    <tbody>
    <tr>
    <td>
    Name
    </td>
    </tr>
    </tbody>
    </table> 
    

    So we need custom entry of data for code view, Means Second row can be Variable.Test

    Later it will get assigned with value.

    <table>
    <tbody>
    <tr>
    <td>
    Name
    </td>
    </tr>
    Variable.Test
    </tbody>
    </table> 
    

    But once save and in edit mode, Its showing differently than saved.

    Variable.Test
    <table>
    <tbody>
    <tr>
    <td>
    Name
    </td>
    </tr>
    </tbody>
    </table>
    

    Is there any way i can get whatever data i have stored?

    check the video for more details:

    SummerNoteIssue.zip

    Pull-request-wanted Feature-request Needs-help Good for first contributors 
    opened by meghatp 35
  • Custom dropdown example ...

    Custom dropdown example ...

    Hello... Love your Plug-in... I really do ...

    And I love the possibility to create your own buttons (see 'hello' example) But can you please also give me an example of a custom dropdown example ? Example dropdown list with 3 listitems ... item 1: Select an option item 2 europe item 3 world

    As soon as "hello world" is selected, the text 'hello world' is inserted in the textarea As soon as 'hello 'europe' is selected; the text 'hello europe' is inserted' in the textarea...

    Stupid example, I know, but I think you'll get the point ...

    Thanks for your help, and i'm rather sure a lot of colleagues will be happy with a solution as well...

    Johnny Belgium

    opened by jdriesen 35
  • pasteHTML auto add unused <p><br></p>

    pasteHTML auto add unused


    Before submitting an issue, please make sure to search for already open issues, and add to that. This way we can track issues more easily. Thank you, and Thanks for using Summernote.

    Description of your Issue or Request:

    I want to paste html , but it add many <p><br></p>.

    steps to reproduce (Add more if necessary):

    1. go to https://summernote.org/

    2. in chrome console exec $('#summernote').summernote('pasteHTML', '<p>1</p>');

    3. in code view <p><br></p><p>1</p><p><br></p> , why has <p><br></p>. Is it has solution not add <p><br></p> when call pasteHTML method

    What is your Operating System, Browser and Version and Summernote Version you are using:

    This can help find and resolve any issues.

    1. Operating System: Windows 10

    2. Browser and Version: Chrome 76.0.3809.100

    3. Summernote Version: 0.8.12

    4. Bootstrap Version or Lite: bootstrap3

    screenshot of issue

    Add screenshot which shows your issue(if needed). image

    You can make gif from Recordit.

    If you can make the issue using jsfiddle(https://jsfiddle.net/), We can save time to reproduce the problem.

    Bug Pull-request-wanted Discussion 
    opened by wzhonggo 33
  • Problem trying to run sass migrator for a package that depends on summernote

    Problem trying to run sass migrator for a package that depends on summernote

    I'm trying to build and run a project of mine which has summernote as nested dependency. I'm getting a bunch of sass warnings upon compilation mainly related to using / for division outside of calc, but this is not a summernote issue:

    : Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
    
    Recommendation: math.div(20em, 16) or calc(20em / 16)
    
    More info and automated migrator: https://sass-lang.com/d/slash-div
    
       ╷
    12 │ $fa-fw-width:          (20em / 16);
       │                         ^^^^^^^^^
       ╵
        node_modules/@fortawesome/fontawesome-free/scss/_variables.scss 12:25  @import
        node_modules/@fortawesome/fontawesome-free/scss/fontawesome.scss 5:9   @import
        resources/sass/app.scss 7:9                                            root stylesheet
    
    : Using / for division outside of calc() is deprecated and will be removed in Dart Sass 2.0.0.
    
    Recommendation: math.div(4em, 3) or calc(4em / 3)
    
    More info and automated migrator: https://sass-lang.com/d/slash-div
    

    To solve this I followed the instructions on the warning and ran sass-migrator, but it's giving me the following error in this file:

    guilherme@k45a:~/code/atelie-admin$ node_modules/.bin/sass-migrator division **/*.scss
    Error: Expected expression.
      ╷
    3 │ $sni-css-prefix: {{ className }} !default;
      │                  ^
      ╵
      node_modules/summernote/src/font/template.scss 3:18  root stylesheet
    Migration failed!
    

    Could you guys give some ideas to resolve this?

    opened by guifsdev 0
  • Improve images pasting from clipboard

    Improve images pasting from clipboard

    What does this PR do?

    Found problem with multiple images addition from clipboard. It always adds only first image. Changes fix it and allow multiple images addition via clipboard.

    Where should the reviewer start?

    • start on the src/js/module/Clipboard.js

    How should this be manually tested?

    1. Add several images to clipboard
    2. Add them to summernote via ctrl + v
    3. Check that all images were successfully added

    Checklist

    • [ ] Added relevant tests or not required
    • [ ] Didn't break anything
    opened by gl-pv 0
  • code view is not working properly.

    code view is not working properly.

    I have implemented "jquery": "2.2.4", "summernote": "^0.8.18" in Symfony framework. But it is showing code view very bas as you see in attachement.

    Screenshot from 2022-12-23 15-20-09 Screenshot from 2022-12-23 15-19-49

    Can you plz help me on this?

    opened by seetpalsingh 1
  • Issue when there is too much blank space between words

    Issue when there is too much blank space between words

    When we enter the too much blank space between words as per the paragraph/text format, then its not showing the same as we entered, the alignment is disturbed. Please refer the attached screens. Image 1 : We have added the content shows in this image in the Summernote editor. Image 2 : Content shows added in the summernote is shows in the other application where the content alignment is messed up. All other alignment shows correct, only it creates issue when we enter too much bulk spaces between words.

    Please guide us to sort it out asap, It would be highly appreciated.

    Editor_1 Preview_1

    opened by kiranshah25 1
  • Full Screen mode shows other page content

    Full Screen mode shows other page content

    Thanks for all the hard work. I have the following issue with full screen mode during testing of latest github code. Until it is fixed I'll remove the fullscreen link.

    image

    `

    Record every key stroke


    Record every key stroke

    $(document).ready(function() {
      $('.summernote').summernote({
        height: 200,
        tabsize: 2,
        recordEveryKeystroke: true 
      });
    });
    
    `
    opened by triumphhub 4
  • YouTube parsing doesn't support the vertical shorts

    YouTube parsing doesn't support the vertical shorts

    Description of your Issue or Request:

    YouTube has converted a lot of videos shot in vertical form into "shorts", with the url https://www.youtube.com/shorts/ID. Summernote is not recognizing these as YouTube urls and fails to insert the video into the editor.

    Users can work around by manually editing the URL when they paste it into Summernote by changing https://www.youtube.com/shorts/ID with https://youtu.be/ID, then the video shows up in the editor with the vertical video centered inside the horizontal video frame, but it would be nice if the parsing handled it automatically so they didn't have to remember to edit it every time.

    opened by irandamay 5
Releases(v0.8.20)
  • v0.8.20(Oct 14, 2021)

  • v0.8.19(Oct 13, 2021)

    Thank you all users and contributors of Summernote.

    New feature

    • #4091: Add Bootstrap 5 style (@simialbi)

    Improvement

    • #4008: Add support for Peertube hosted video (@mxc)
    • #4034: Support jQuery 3.5+ (@nbolender)

    Bug Fix

    • #4041: Fix nextSibling and update all content (@faithgvn)
    • #4090: Show table popover with multiline content in cell (@Dheerajkawatra)

    Translation

    • #4082: Fixe the language key in summernote-de-CH.js (@adil-jaafar)

    Misc

    • #4048: Insert a table on mouseup (@kylepwarren)
    • #4155: Clean up files and update directory layout (@lqez)
    • 57e16a8: Remove unused env variables (@lqez)
    • 578f353: Bump jQuery to 3.6.0
    • 9f78a30: Fix Webpack configuration for newer version
    • c063870: Add a short delay before running the first test to prevent irrelevant errors (@lqez)
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.19-dist.zip(2.00 MB)
  • v0.8.18(May 20, 2020)

  • v0.8.17(May 19, 2020)

    Thank you all users and contributors of Summernote.

    New feature

    • #3664: Allow CodeMirror to accept programmatic changes (@pryanlo)

    Improvement

    • #3615: Support to use mobile youtube link (@matsu4ki)
    • #3625: Support external CodeMirror constructor (@easylogic)
    • #3629: Add Lite Styling for Tabbed Panes for Modal Content (@DiemenDesign)
    • #3632: Replace 'inherit' value with 'transparent' (@DiemenDesign)
    • #3653: Add an option for enabling autolink behavior shows only domain names (@lqez)
    • #3677: Use scss for summernote icons (@NicolasRoehm)
    • #3694: Fix styles for (dark) themes (@lqez)
    • #3698: Add ability to allow plugins to not have buttons disable when in codeview (@DiemenDesign)
    • #3708: Update qq video url pattern (@lostship)

    Bug Fix

    • #3609: Hide air popover in code view (@roseline124)
    • #3614: Remove Duplicate <output> in BS4 ui.js (@DiemenDesign)
    • #3649: Fix bs4 note-btn on popover (@SebouChu)
    • #3661: Adding control to identify text blocks inside block and apply style (@reinaldocoelho)
    • #3681: Fix broken layout while testing color buttons (@lqez)
    • #3706: Fix pasteHTML issue (@lqez)
    • #3709, #3720, #3725: Fix for jQuery 3.5 (@easylogic, @JyoshnaKothapally, @lqez)
    • #3635: Update to font selection error (@reinaldocoelho)
    • #3726: Fix font styling by creating a new range with given spans (@lqez)
    • c11943634fb7f0e8647b4853222f9b86426c40f2: Fix fontsize range (@easylogic)

    Translation

    • #3655: Add missing translations and correct one for Norwegian Bokmål (@hareland)
    • #3723: Updates to Greek language (@JoshBour)

    Misc

    • #3636: Include steps to run debug with VSCode (@reinaldocoelho)
    • #3670: Fix simple typo, toogle -> toggle (@timgates42)
    • #3679: Use same pipeline while debugging with test:debug script (@lqez)
    • #3680: Update packages (@lqez)
    • #3703: Migrate to yarn (@lqez)
    • f5113a5b9e7f8fe11032e460a3c352525720f3fb: Remove npm-check-updates which was added by mistake (@lqez)
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.17-dist.zip(1.31 MB)
  • v0.8.16(Feb 19, 2020)

    Thank you all users and contributors of Summernote.

    New feature

    • #3552: Allow airpopover on contextmenu (@lqez)

    Improvement

    • #3546: Support keydown event to record undo history (@easylogic)
    • #3556: Add babel preset for ecma2015+ (@easylogic)
    • #3562: Remove TypeScript plugins and add Babel settings (@lqez)
    • #3563: Add an option for limiting history stack (@lqez)
    • #3602: Replace deprecated styleWithSpan with styleWithCSS (@lqez)
    • 3e417eebbd3ab744a1258a069e7ce13658d934e1: Remove XSS vulnerability of LinkPopover (@lqez)
      • Reported with a solution by Antoine Prieëls(@aprieels), much appreciated.

    Bug Fix

    • #3583: Correct following/fixed toolbar height (@ikeblaster)
    • #3597: Fixed air popover position when it is scrolling (@easylogic)
    • 1f0f2622b528cc69fab42c6f9ce7820af1de9bf3: Fix paste event for IE (@lqez)
    • d6fb8552edc1cc39d82a814b375a303df94fcbed: Fix color picker issue on Bootstrap3 and Lite (@lqez)
    • e4f2c89c89b430005393143a8abb3091a11d396e: Fix button handling in color palette (@lqez)

    Translation

    • #3587: Update Spanish translation (@quique)
    • #3596: add summernote-az-AZ.js (@ramilaliyev007)

    Misc

    • #3564: Apply recommended rule of ESLint (@lqez)
    • #3567: Add mode-switcher example (@easylogic)
    • #3568: Remove load-grunt-tasks in package.json (@easylogic)
    • 7767a2bc5e6e9c423b2020bc2ab56d3764b24ac9: Fix palette button styles (@lqez)
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.16-dist.zip(1.30 MB)
  • v0.8.15(Jan 4, 2020)

    This is a hotfix release.

    Bug fix

    • #3542: Fix ui container (@lqez)
    • #3543: Fix container and popover position issues (@lqez)
    • #3545: Fix production version of webpack.externals issue (@lqez)
    Source code(tar.gz)
    Source code(zip)
  • v0.8.14(Dec 28, 2019)

    Thank you all users and contributors of Summernote. And we hope you all have a happy new year, 2020!

    This release focuses on bug fixes, adding useful options, enhanced testing, and minor improvements.

    New feature

    • #2070: Allow hint multiple words (@JoniJnm)
    • #3310: Add addDefaultFonts to add default fonts (@michael-volynets)
    • #3319: Add inheritPlaceholder option (@lqez)
    • #3361: Add checkbox to use protocol (@roseline124)
    • #3426: Add disable TAB/Shift+TAB option (@DiemenDesign)
    • #3426: Add disableGrammar option (@DiemenDesign)
    • #3436: Add option to change toolbar position (@DiemenDesign)
    • #3510: Add setting to change font size unit (@jadomag)

    Improvement

    • #2708: Calculate image selection to cover other layouts and content formats (@nmandrescu)
    • #3255: Fix omitted styles and match lines between less and scss (@lqez)
    • #3265: Remove fixed z-index of Toolbar from styles (@lqez)
    • #3322: Remove duplicated codes and fix lite styles (@lqez)
    • #3353: Rename foreground to text (@roseline124)
    • #3356: Add karma-detect-browsers (@lqez)
    • #3377: Apply composition-text canceling on maxTextLength option (@anpaul0615)
    • #3380: Improve behaviours with maxTextLength option (@anpaul0615)
    • #3433: Adjust removeMedia to remove wrapping Figure and FigCaption elements (@DiemenDesign)
    • #3439: Add ability to use Codeview in airMode (@DiemenDesign)
    • #3530: Improve airmode focusout (@andrews05)
    • #3531: Fix tooltips, popovers and dialogs of lite theme and others (@lqez)

    Bug Fix

    • #3119: Item selected overwrite the node beginning text (@jokamax)
    • #3177: Do not add quotes to the generic font families (@tenbits)
    • #3251: Fix missing required parameter "event" (@daumling)
    • #3256: Remove the asterisk selector from Lite U (@lqez)
    • #3269: Generic fonts were not rendered correctly in fontname dropdown (@lqez)
    • #3284: Modified custom button to work (@jangjichang)
    • #3285: Add lists in settings.js (@amorfati0310)
    • #3299: Fix contains method to use .contains for DOMTokenList (@Dakkers)
    • #3316: Add Safari to airmode focusout workaround (@andrews05)
    • #3324: Fix dropzone issues (@lqez)
    • #3327: Fix drop-Event in Firefox contains two moz-specific Datatransfer-Type issue (@stefl0n)
    • #3354: Change inequality when maxTextLenth is compared (@roseline124)
    • #3357: Resolve issue which maxTextLenght not working on paste (@PyBack)
    • #3363: Resolve omitted missing jquery import (@anpaul0615)
    • #3386: Remove duplicate tooltip on color palette for lite theme (@anotherlizwong)
    • #3416: Bug fix for custom color issue and add image exception issue. (@reysu47)
    • #3425: Don't disable Full Screen toggle when activating Code View (@kamikkels)
    • #3428: Fix AutoLink to resolve tel: protocol and remove protocol for text (@DiemenDesign)
    • #3457: Fix Toolbar Problems after reload (@constmoon)
    • #3459: Fix cliboard paste image two times bug (@roseline124)
    • #3490: Fix wrong last range (@easylogic)
    • #3492: Dropzone should be target for pointer events (@jboysen)
    • #3498: Fix not to use p-br tag (@easylogic)
    • #3503: Fix popover behavior when summernote has focus (@jadomag)
    • #3522: Fix wrong focus in .node-editable (@easylogic)
    • #3523: Fix key binding for shortcut (@easylogic)

    Translation

    • #3402: Update summernote-fa-IR.js (@alizamani1616)
    • #3497: Update arabic translation (@lion4h)

    Misc

    • #3264: Rename and fix wrong attributes (@lqez)
    • #3266: Match styles (@lqez)
    • #3279: Remove less and extract creating font as separated command (@lqez)
    • #3455: Update font size test (@FKgk)
    • #3471: Fixed documentation typos (@hastadhana)
    • 8ad17636df160392d95df3bee565196c7ea9655c: Simplify deepestChildIsEmpty function (@lqez)
    • be4b28e2a07c02a68c06950988fd644b0f19c059: Enhance testing with mocha's done feature (@lqz)
    Source code(tar.gz)
    Source code(zip)
  • v0.8.12(May 16, 2019)

    Thank you all users and contributors of Summernote.

    New feature

    • #3048, #3171: Add CodeView filtering and whitelist for embedding (@blood72, @lqez)
    • #3042: Add default color options for color buttons (@lqez)
    • #3083: Add new callback for capturing changes on CodeView (@lqez)

    Improvement

    • #3045: Show valid link URLs only in LinkDialog (@adeelhussain)
    • #3065: Hide tooltips when buttons are clicked (@lqez)
    • #3076: Update image popover with new icons (@lqez)
    • #3087: Allow Facebook video URLs (@lqez)
    • #3215: Less jQuery dependencies (@benjamingraf)
    • 6c65ade1351e421b24c86e6197e50033e7cb9fdd: Do not add default protocol to relative links (@lqez)
    • e8e4212c6ec106fa59025cd8ead100bce298dc6c: Enhance check method for font existence by using canvas (@lqez)

    Bug Fix

    • #3054: Update last focus manager (@easylogic)
    • #3063: Fix multiple issues on Lite UI (@lqez)
    • #3068: Fix insertImagesOrCallback for drag-and-drop images (@lqez)
    • #3078: Fix multiple toolbar issues (jross-tm, @lqez)
    • #3082: Fix callbacks to use proper arguments (@lqez)
    • #3096: Incorrect usage of event global variable in Handle and ImagePopover on FireFox (Rudy Zeinoun)
    • #3113: Fix setEnd on Range (@gioboa)
    • #3168: Fix disabled image button while pasting an image URL (@lqez)
    • #3217: Removed automatic requirement of CodeMirror (@benjamingraf)
    • 10bb48dc24a12724421dcb343ed8b26fb4b94cc4: Fix duplicated image bug on Internet Explorer (@hackerwins)
    • 7b2a514f5d53edeffcb8c67cde30eb59381d7f75: Fix indent/outdent crashing (@lqez)
    • 5785431b46d661e0eb2f65a87215b3148504bda3: Fix undo error from malformed range (@lqez)

    Translation

    • #2959: Update for fr-FR (@jokamax)
    • #3148: Update for ja-JP (@rw-nue)
    • #3167: Update for ko-KR (@neatnet)
    • #3208: Update for de-DE (@frobinsonj)
    • #3210: Update for cs-CZ (@frobinsonj)

    Misc

    • #3055: Allow trailing commas for multiline (@lqez)
    • #3060: Add <audio> to void elements (@hendrismit)
    • #3064: Merge into single settings for multiple UIs (@lqez)
    • #3074: Add option for toggling browser default spellchecker (@lqez)
    • #3143, #3193: Fix Travis CI build (@hackerwins)
    • 5f674eb19c108f5afd656c899cf7eec83fb21fab: Turn off --fix for eslint (@lqez)
    • 6f7593b9b2572719e371e4a485798c6c94feab59: Add empty fontNameIgnoreCheck in settings (@lqez)
    • ff516c9beac5909cf8df6aa924a153c6a605c40d: Update ImageDIalog for Bootstrap4 (@lqez)
    • ad0d7e07213aafa80c3925451ededb9c6509ccca: Remove default focusing style effect of browsers (@lqez)
    • 789dfdaa49b2eda9bfcd6c0dbd6241d0fc078d23: Set followingToolbar as false by default (@lqez)
    • 8b9180ae74d31d5673f71eb79a77b11a84a7ebd5: Find the exact element has given tagName before applying custom class (@lqez)
    • 6e18c0ebbfdb939e92115d8091ec8119ba8a065c: Extract saucelabs from Gruntfile (@hackerwins)
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.12-dist.zip(475.91 KB)
  • v0.8.11(Nov 24, 2018)

    Thank you to all contributors.

    Improvement and bug fix

    • Implemented commit command (resets history but keeps editor content).
    • Add color picker support
    • Add start parameter for YouTube embedding
    • Add OnImageLinkInsert callback for handling inserted urls
    • Make the "range" object available for external modules.
    • When creating a link Summernote now checks maxTextLength
    • Add uglify for summernote-lite
    • Do not add default scheme for relative URLs
    • Update custom color selection logic
    • Move test file into the right location
    • Clean up test codes
    • Add styles for custom color selection
    • Add forecolor and backcolor buttons
    • Apply latest style changes into another
    • Do not wrap bs4 toolbar to prevent text flooding over toolbar UI
    • Do not wrap bs3 toolbar to prevent loosing the background shading
    • Add an example for placeholder text
    • Add an example for custom styletags
    • Drop debounce rate from 100ms to 10ms
    • Remove wrong executable attributes
    • Use default Bootstrap 4 checkbox style, not custom-control
    • Make AutoLink module follows linkTargetBlank option
    • Use class instead of id for "open in new window" checkbox to avoid du… …
    • Add randomized id to link dialog checkbox
    • Move random id generation to Context
    • Revert the randomization changes
    • Prevent error by settings the default container
    • Less clutter by moving templates into .github
    • Allow html tags on placeholder
    • Allow protocol-less URL for YouTube video insertion
    • Make full screen mode properly even with maxHeight option
    • Add an example for Lite + Legacy Bootstrap
    • Add video and embed tag into the void element list
    • Fixed #1410 using a configurable blockquote breaking level.
    • FIX click on HintPopover suggestions doesnt insert
    • Fix issue #1964 with copy paste content in reverse order
    • Fix wrong argument result due to the use of incorrect function type
    • Fix link autodetection …
    • Fix dropdown toggle issue on lite while using with Bootstrap
    • Fix wrong lite style
    • Fix wrong bs4 checkbox
    • Fix expectContents to work with given context
    • Fix tests - to expect valid markup.
    • Fixed indentation of list items …
    • Fixed outdent of nested list items. …
    • Fix conflict by merging #1574
    • Fix indentation on checkbox creations
    • Fix Bootstrap4 background transparency issue #3024
    • Fix blocking form submitting issue #530
    • Fix minor things
    • Fix order of Airmode elements
    • Fix broken examples and update to use latest libraries
    • Fix class name for AirMode in lite.js

    Translation

    • Improved translation in pt-PT for image, table, style and help sections
    • Improved translation in pt-BR for image section
    • Added missing new line at the end of file lang/summernote-pt-PT.js
    • pl-PL i18n update
    • Update summernote-nl-NL.js
    • Update summernote-pt-BR.js
    • Add missing translations in zh-CN for table, etc
    • Update summernote-de-DE.js …
    • Fix pt-BR and gl-ES lang keys for style.p translations
    • Update summernote-th-TH.js
    • Missing translations with tabel (#3031) …
    • Update Finnish translation
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.11-dist.zip(462.86 KB)
  • v0.8.10(Feb 20, 2018)

    Compatibility

    • Update Bootstrap version to 4.0.0

    Improvement

    • Hide icon bar when resize is disabled

    Translation

    • Create summernote-uz-UZ.js
    • More german translations
    • Use localized tooltip on buttons like style.h1
    • Update polish (pl-PL) translation for subscript and superscript

    Thank you to all contributors.

    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.10-dist.zip(403.95 KB)
  • v0.8.9(Dec 25, 2017)

    Enhancement

    • Support standalone ui with summernote-lite. summernote-lite is beta. #2434
    • Following toolbar #2459
    • Add custom style for style dropdown #2474
    • Make the toolbar simpler again #2578

    Bugfix

    • Fix issue when drag-and-drop disabled #2468
    • Fix margin and padding of paragraph styles in the dropdown menu #2473
    • Fix warnings and errors from Bootlint checks #2472
    • Rollback default behavior of tab/untab by condition #2466
    • Wrong usage of self #2475
    • Allow user set the container of tooltip and container instead of default 'body' #2476
    • Multiple Hint - second hint has no default selected element #2564
    • Fix change event on input not firing in EDGE #2583
    • Add default fonts and a fix for styling #2584
    • Do not trigger focus events on mobile #2585
    • Changes to removeMedia in module/Editor.js to remove Figure Elements... #2588
    • Do not remove statusbar by reset #2592
    • Some Japanese labels improved. #2607

    screenshot of standalone ui(summernote-lite)

    • Check Dropdown 2016-03-14 6 13 25
    • Dialog 2016-03-14 6 13 03
    • Table Dropdown 2016-03-14 6 12 52
    • Color Dropdown 2016-03-14 6 12 44
    • Base Dropdown 2016-03-14 6 12 18
    • Default View 2016-03-14 6 11 51
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.9-dist.zip(400.36 KB)
  • v0.8.8(Sep 9, 2017)

    enhancement

    • support bootstrap 4 beta with dist/summernote-bs4.js, dist/summernote-bs4.css
    • you can use summernote on bootstrap 3 with dist/summernote.js, dist/summernote.css

    supporting bootstrap 4 is beta.

    bugfix

    • fixed toolbar position in fullscreen mode #1762
    • add font *.less file #1763
    • Corrects the foreground color font tag behavior to compatible HTML5 (inline styling) #1715
    • Fix issue #2428
    • Fix issue #2443
    • Fix issue #2439

    translation

    • Better translation for p tag in german #2421
    • Change some french traductions for headers and hr #2423
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.8-dist.zip(368.51 KB)
  • v0.8.7(Aug 15, 2017)

    translation

    • Fix missing french traduction on table #2404

    bug fix

    • Add image margin when floats #1827
    • fixed a bug that delete key cannot trigger recordUndo action #2380
    • Deselect image when scrolling on the handle overlay #2386
    • Image popover is not displayed properly issue still exists #2381
    • Fixed tooltip shown at color picking dialog even when tooltip:false option set #2408
    • Image resize handle still show after changing to code mode. #2407

    misc

    • bump up jquery version 2.1.4 to 3.2.1
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.7-dist.zip(199.86 KB)
  • v0.8.6(Jul 16, 2017)

  • v0.8.4(May 31, 2017)

    bug fix

    • Better regex to match legit shorter vimeo video ids (ex.: https://vimeo.com/2) #2281
    • fix InvalidCharacterError when pasting an image in Firefox #2284
    • LinkDialog and some checkbox library mixed, checkbox state is not visible #2323
    • fix for https://github.com/summernote/angular-summernote/issues/162 #2160

    enhancement

    • Add support to custom styletags right into the style toolbar menu #1919
    • Math Functions And Science Characters hint avaiable.(=) #2178
    • Feature | Added target blank option #2195
    • Tooltip can be shown/hidden by settings #1917

    translation

    • (locale fr-FR) Add specialChar #2324
    Source code(tar.gz)
    Source code(zip)
    summernote-0.8.4-dist.zip(185.59 KB)
  • v0.8.3(Apr 1, 2017)

  • v0.8.2(Aug 7, 2016)

  • v0.8.1(Feb 15, 2016)

  • v0.8.0(Feb 6, 2016)

  • v0.7.3(Jan 14, 2016)

  • v0.7.2(Jan 13, 2016)

  • v0.7.1(Dec 31, 2015)

  • v0.7.0(Dec 2, 2015)

  • v0.6.16(Aug 3, 2015)

  • v0.6.15(Jul 30, 2015)

  • v0.6.14(Jul 30, 2015)

  • v0.6.13(Jul 25, 2015)

  • v0.6.12(Jul 24, 2015)

  • v0.6.11(Jul 24, 2015)

Owner
Summernote
Done is better than perfect
Summernote
Simple, beautiful wysiwyg editor

This repo is no longer maintained. bootstrap3-wysiwyg is much better Overview Bootstrap-wysihtml5 is a javascript plugin that makes it easy to create

James Hollingworth 4.2k Dec 30, 2022
The next generation Javascript WYSIWYG HTML Editor.

Froala Editor V3 Froala WYSIWYG HTML Editor is one of the most powerful JavaScript rich text editors ever. Slim - only add the plugins that you need (

Froala 5k Jan 1, 2023
Quill is a modern WYSIWYG editor built for compatibility and extensibility.

Note: This branch and README covers the upcoming 2.0 release. View 1.x docs here. Quill Rich Text Editor Quickstart • Documentation • Development • Co

Quill 34.3k Jan 2, 2023
Medium.com WYSIWYG editor clone. Uses contenteditable API to implement a rich text solution.

If you would be interested in helping to maintain one of the most successful WYSIWYG text editors on github, let us know! (See issue #1503) MediumEdit

yabwe 15.7k Jan 4, 2023
A lightweight and amazing WYSIWYG JavaScript editor - 20kB only (8kB gzip)

Supporting Trumbowyg Trumbowyg is an MIT-licensed open source project and completely free to use. However, the amount of effort needed to maintain and

Alexandre Demode 3.8k Jan 7, 2023
Raptor, an HTML5 WYSIWYG content editor!

Raptor Editor Raptor Editor is a user-focused extensible WYSIWYG website content editor - check out the Demo. It is designed to be user and developer

PANmedia 533 Sep 24, 2022
🍞📝 Markdown WYSIWYG Editor. GFM Standard + Chart & UML Extensible.

TOAST UI Editor v3 major update planning ?? ?? ?? TOAST UI Editor is planning a v3 major update for 2021. You can see our detail RoadMap here! GFM Mar

NHN 15.5k Jan 3, 2023
A powerful WYSIWYG rich text web editor by pure javascript

KothingEditor A powerful WYSIWYG rich text web editor by pure javascript Demo : kothing.github.io/editor The KothingEditor is a lightweight, flexible,

Kothing 34 Dec 25, 2022
The best enterprise-grade WYSIWYG editor. Fully customizable with countless features and plugins.

CKEditor 4 - Smart WYSIWYG HTML editor A highly configurable WYSIWYG HTML editor with hundreds of features, from creating rich text content with capti

CKEditor Ecosystem 5.7k Dec 27, 2022
An Easy and Fast WYSIWYG Editor

Simditor Simditor is a browser-based WYSIWYG text editor. It is used by Tower -- a popular project management web application. Supported Browsers: IE1

彩程设计 5k Jan 3, 2023
Pure javascript based WYSIWYG html editor, with no dependencies.

SunEditor Pure javscript based WYSIWYG web editor, with no dependencies Demo : suneditor.com The Suneditor is a lightweight, flexible, customizable WY

Yi JiHong 1.1k Jan 2, 2023
WYSIWYG editor developed as jQuery plugin

RichText WYSIWYG editor developed as jQuery plugin. Requirements jQuery (v.3+, v.3.2+ recommended) FontAwesome (v.4.7.0 / v.5+) src/jquery.richtext.mi

Bob 95 Dec 30, 2022
A lightweight HTML and BBCode WYSIWYG editor

SCEditor v3.1.1 A lightweight WYSIWYG BBCode and XHTML editor. For more information visit sceditor.com Usage Include the SCEditor JavaScript: <link re

Sam 566 Dec 23, 2022
A JS library for building WYSIWYG editors for HTML content.

For information on the ContentTools 2.x roadmap please view the: Roadmap repo ContentTools A JS library for building WYSIWYG editors for HTML content.

getme 3.9k Jan 8, 2023
A toolkit for building WYSIWYG editors with Mobiledoc

Mobiledoc Kit Mobiledoc Kit is a framework-agnostic library for building WYSIWYG editors supporting rich content via cards. Libraries This repository

Bustle 1.5k Jan 3, 2023
A markdown editor. http://lab.lepture.com/editor/

Editor A markdown editor you really want. Sponsors Editor is sponsored by Typlog. Overview Editor is not a WYSIWYG editor, it is a plain text markdown

Hsiaoming Yang 2.8k Dec 19, 2022
Override the rich text editor in Strapi admin with ToastUI Editor.

strapi-plugin-wysiwyg-tui-editor ⚠️ This is a strapi v4 plugin which does not support any earlier version! A Strapi plugin to replace the default rich

Zhuo Chen 12 Dec 23, 2022
A chrome extension which helps change ace editor to monaco editor in web pages, supporting all features including autocompletes.

Monaco-It Monaco-It is a chrome extension turning Ace Editor into Monaco Editor, supporting all features including autocompletes. 一些中文说明 Supported Lan

null 3 May 17, 2022
Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in.

Typewriter Typewriter is a simple, FOSS, Web-based text editor that aims to provide a simple and intuitive environment for you to write in. Features S

Isla 2 May 24, 2022