jodit
Version:
Jodit is awesome and usefully wysiwyg editor with filebrowser
1,173 lines (1,038 loc) • 37.8 kB
Markdown
# Changelog
## 3.4.13
### Bug fixes
* https://github.com/xdan/jodit/issues/379
## 3.4.12
### Bug fixes
* https://github.com/xdan/jodit/issues/424
Fixed `allowTabNavigation` By default: `false`.
```js
const jodit = new Jodit('#editor', {
allowTabNavigation: true // enable tab navigation between toolbar's buttons
});
```
* https://github.com/xdan/jodit/issues/421
* https://github.com/xdan/jodit/issues/420
* https://github.com/xdan/jodit/issues/419
* https://github.com/xdan/jodit/issues/418#issuecomment-651145548
* https://github.com/xdan/jodit/issues/415
## 3.4.2
### Bug fixes
https://github.com/xdan/jodit/issues/359
## 3.4
### Bug fixes
* https://github.com/xdan/jodit/issues/408
* https://github.com/xdan/jodit/issues/405
* https://github.com/xdan/jodit/issues/404 See more in Features
* https://github.com/xdan/jodit/issues/400
* https://github.com/xdan/jodit/issues/398
* https://github.com/xdan/jodit/issues/396
* https://github.com/xdan/jodit/issues/393
* https://github.com/xdan/jodit/issues/392
* https://github.com/xdan/jodit/issues/391
* https://github.com/xdan/jodit/issues/385
* https://github.com/xdan/jodit/issues/378
* https://github.com/xdan/jodit/issues/369
* https://github.com/xdan/jodit/issues/360
* https://github.com/xdan/jodit/issues/352
* Fixed unde-redo subsystem for source mode
### Features
* All `less` variables were replaced to css custom properties for modern browsers.
* Added `WrapTextNodes` plugin - it wrap all alone text node(or inline elements) inside `options.enter` element.
You can disable this behaviour:
```js
const editor = Jodit.make('#editor', {
disablePlugins: ['WrapTextNodes']
})
```
* Added `shadowRoot` option for ShadowDom support.
> ACE source editor does not support Shadow Dom
```html
<div id="editor"></div>
```
```js
const app = document.getElementById("editor");
app.attachShadow({ mode: "open" });
const root = app.shadowRoot;
root.innerHTML = `
<link rel="stylesheet" href="./build/jodit.css"/>
<h1>Jodit example in Shadow DOM</h1>
<div id="edit"></div>
`;
var editor = new Jodit(root.getElementById("edit"), {
globalFullSize: false,
shadowRoot: root
});
editor.value = "<p>start</p>";
```
* From `NativeEvent.on` method was removed `selector` argument. It was `jQuery.live` style.
Example:
```html
<div class="test">
<button>1</button>
<button>2</button>
</div>
```
Earlier, you can use something like this
```js
editor.events.on(document.querySelector('div'), 'click', function () {
alert(this.innerText);
}, 'button')
```
Now, you should use event.target
```js
editor.events.on(document.querySelector('div'), 'click', function (e) {
alert(e.target.innerText);
})
```
* `Select.applyCSS` was renamed to `Select.applyStyle`
```js
const editor = Jodit.make('#editor');
editor.s.applyStyle({color: 'red'}) // will add to all selection text - red color
```
* `FileBrowser`, `Dialog` etc. modules which extend `View` has only one argument in the constructor - options.
Before:
```js
const editor = Jodit.make('#editor');
const fb = Jodit.modules.FileBroser(editor, {
ajax: {
url: 'https://xdsoft.net'
}
});
fb.open();
fb.close();
editor.destruct();
fb.open(); // error, fb is already destructed
```
Now:
```js
const editor = Jodit.make('#editor');
const fb = Jodit.modules.FileBroser({
ajax: {
url: 'https://xdsoft.net'
}
});
fb.open();
fb.close();
editor.destruct();
fb.open(); // Normal
fb.destruct();
//or
editor.e.on('beforeDestruct', () => {
fb.destruct();
});
```
* Split `table` plugin on `select-cells` and `resize-cells` plugins. `useTableProcessor` was removed.
Instead, use
```js
Jodit.make('#editor', {table: {
allowCellSelection: true,
selectionCellStyle: 'border: 1px double #1e88e5 !important;',
allowCellResize: true,
useExtraClassesOptions: true
}});
```
* All `less` files were moved near with TS. Class naming was changed closer to BEM.
* Removed `PopupList` and `Popup`. Instead, use only `PopupMenu`.
* Added `ui.button` and `ui.list` for working with buttons. `toolbar.button` extends `ui.button`.
UIButton - is reactive:
```js
const button = new UIButton();
button.state.activated = true; // will automatically change setAttribute('area-pressed', 'true')
button.state.icon = 'plus'; // will add `svg` icon in container
// or use `setState`
button
.setState({
text: "Click me"
})
.onAction(() => {
Jodit.Alert('Click');
})
.appendTo(document.body); // will append it inside the body
```
* In `tsconfig` added decorators supports.
Methods that need binding binds with `@autobind` decorator.
* Added `watch` decorator.
* All filenames were renamed to kebab-case.
* Added short aliases for. Can be used as chain - `this.j.e.on`
* `this.jodit` => `this.j`
* `this.options` => `this.o`
* `this.selection` => `this.s`
* `this.create` => `this.c`
* `this.events` => `this.e`
* `this.ownerDocument` => `this.od`
* `this.ownerWindow` => `this.ow`
* `this.editorDocument` => `this.ed`
* `this.editorWindow` => `this.ew`
* Change name `Dialog`.`setTitle` to `Dialog`.`setHeader`
* Remove `Create.inside` field and instead added `Jodit.createInside`
* In popups added position strategies: `'leftBottom' | 'rightBottom' | 'leftTop' | 'rightTop'` etc.
## 3.3.24
### BugFix
* [342](https://github.com/xdan/jodit/issues/342)
* [343](https://github.com/xdan/jodit/issues/343)
## 3.3.23
### BugFix
* [#325](https://github.com/xdan/jodit/issues/325) [#239](https://github.com/xdan/jodit/issues/239)
* [#327](https://github.com/xdan/jodit/issues/327)
* [#292](https://github.com/xdan/jodit/issues/292)
* [#203](https://github.com/xdan/jodit/issues/203)
* [#339](https://github.com/xdan/jodit/issues/339)
### Feature
* Added `Dom`.`isTag` method
```js
const editor = Jodit.make('#editor');
const a = editor.createInside.element('a');
const br = document.createElement('br');
Jodit.modules.Dom.isTag(a, 'a') // true
Jodit.modules.Dom.isTag(br, 'br') // true
```
* Added `Helpers`.`call` method
```js
const f = Math.random();
Jodit.modules.Helpers.call(f > 0.5 ? Math.ceil : Math.floor, f);
```
* Added `Helpers`.`position` method - Helper function to get an element's exact position
```js
console.log(Jodit.modules.Helpers.position(editor.editor.querySelector('p')));
```
## 3.3.19
### BugFix
* Fixed a lots bugs inside `link` plugin
[#331](https://github.com/xdan/jodit/issues/331)
[#334](https://github.com/xdan/jodit/issues/334)
[#334](https://github.com/xdan/jodit/issues/334)
[#235](https://github.com/xdan/jodit/issues/235)
### Feature
* In `link` plugin added `formTemplate` and `formClassName` options [#333](https://github.com/xdan/jodit/issues/333)
```js
const editor = getJodit({
link: {
formTemplate: function() {
return '<form class="form_url"><input ref="url_input" type="url"><button>save</button></form>';
},
formClassName: "some_class"
}
});
```
* Added deprecated mechanism. Some methods will not be removed and only will be marked as deprecated until major release. [#330](https://github.com/xdan/jodit/issues/330)
## 3.3.16
Added `createAttributes` option [#243](https://github.com/xdan/jodit/issues/243)
All elements which will be inserted in editor will be created with these attributes
```js
const editor2 = Jodit.make('#editor', {
createAttributes: {
div: {
class: 'test'
},
ul: function (ul) {
ul.classList.add('ui-test');
}
}
});
const div2 = editor2.createInside.div();
expect(div2.className).equals('test');
const ul = editor2.createInside.element('ul');
expect(ul.className).equals('ui-test');
```
## 3.3.15
### Bugfix
Fixed SPLIT_MODE
### Feature
Added `editHTMLDocumentMode` in order to allow the user to edit the entire document [#241](https://github.com/xdan/jodit/issues/241).
Also added `iframeTitle` and `iframeDoctype` options
```js
const editor = Jodit.make('#editor', {
iframe: true,
iframeTitle: 'Hello world!',
iframeDoctype: '<!DOCTYPE html>',
editHTMLDocumentMode: true,
iframeStyle: ''
});
console.log(editor.value);
// <html dir="" class="jodit" lang="en" spellcheck="true" style="min-height: 113px;">
// <head>
// <title>Hello world!</title>
// </head>
// <body class="jodit-wysiwyg" style="outline:none">test test <a href="#">test</a></body>
// </html>
```
## 3.3.14
### Bugfix
Fixed https://github.com/xdan/jodit/issues/316
Fixed bug when Jodit was initialized inside iframe.
```js
const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const win = iframe.contentWindow;
const doc = win.document;
doc.open();
doc.write('<html><body><textarea id="editor"></textarea><' + 'script src="./build/jodit.js"><' + '/script></body></html>');
doc.close();
Jodit.make('#editor', {
ownerWindow: win,
ownerDocument: doc
});
```
Fixed bug with ProgressBar - it simply does not work(
### Feature
Source plugin was separated on several classes. Now you can choose SourceEditor
or make yourself (https://github.com/xdan/jodit/issues/242)
> Before
```js
Jodit.make('#editor', {
useAceEditor: true
});
```
> Now
```js
Jodit.make('#editor', {
sourceEditor: 'area' || 'ace' // || 'mirror' in PRO
});
```
In PRO version you can choose mirrror&
* Added Async module for control asynchronous operations
```javascript
const editor = new Jodit('#editor');
setTimeout(() => {
editor.s.insertHTML('Hello!')
}, 1000);
editor.async.setTimeout(() => {
editor.s.insertHTML('World!')
}, 1000);
editor.destruct();
```
After destruct the first timeout will throw the error, but second will be cleared.
Added two methods setPanel and addPlace
```html
<textarea id="editor"></textarea>
<textarea id="editor2"></textarea>
<textarea id="editor3"></textarea>
<div id="toolbar"></div>
```
```js
const editor = new Jodit('#editor');
editor.setPanel('#toolbar');
//add id instance to editor
editor.addPlace('#editor2');
editor.addPlace('#editor3');
```
### Events
Added `afterRemoveNode` event
```js
const editor = new Jodit('#editor');
editor.events.on('afterRemoveNode', (node) => {
if (node.nodeName === 'IMG') {
fetch('delete.php', {image: node.src});
}
});
```
## 3.3.8
### Plugin system was changed
> Before
```javascript
Jodit.plugins.insertText = function (editor) {
editor.events.on('someEvent', function (text) {
editor.s.insertHTMl('Hello ' + text);
});
};
```
> Now
```javascript
Jodit.plugins.add('insertText', function (editor) {
editor.events.on('someEvent', function (text) {
editor.s.insertHTMl('Hello ' + text);
});
});
console.log(Jodit.plugins.get('insertText'));
Jodit.plugins.remove('insertText');
```
### `extraPlugins` options
Inside plugin you can use several fields:
```js
// emoji.js
class Emoji {
hasStyle = true; //
requires = ['autocomplete'];
init(editor) {
// this code will be execute only after autocomplete.init
}
}
Jodit.plugins.add('emoji', Emoji);
```
And inside you init code
```javascript
Jodit.make('#editor', {
basePath: 'https://sitename.com/somepath/',
extraPlugins: ['emoji']
});
```
It will try to download
```
https://sitename.com/somepath/plugins/emoji/emoji.js
```
`hasStyle = true;` means try download and include in page style file:
```
https://sitename.com/somepath/plugins/emoji/emoji.css
```
In `plugins/example` folder you can find an example.
extraPlugins option allows appending in editor extra plugins from npm, bower etc.
### Build System
In Build system was added gulp subsystem to build extra plugins.
You can make extra plugins like `plugins/example` and after build,
this plugin will not be inside `jodit.min.js` file. It will be in separate
folder (eg `build/plugins/emoji/`).
Also in root you can find `make.js` file for install your plugin
in build system.
______________________
### 2.5.61
Added `zIndex` option
```javascript
var editor = new Jodir('.editor', {
zIndex: 10000
})
```
### 2.5.60
* Fix table editor in iframe mode
* Fix styles
### 2.5.57
* Added `useIframeResizer` option for resize IFRAME tag

* Added `offsetTopForAssix` option.
For example, in Joomla, the top menu bar closes Jodit toolbar when scrolling. Therefore, it is necessary to move the toolbar Jodit by this amount
```javascript
var editor = new Jodit('#editor', {
offsetTopForAssix: 74
});
```
Without affix offset

With affix offset

### 2.5.55
Added `Embed video` button. Added `vimeo` or `youtube` video embeded code.
### 2.5.54
When you insert text into the editor from another site, all the images are from a remote site. Before Jodit, it was quite uncomfortable: first I had to download the image from a remote resource, and then upload it to your site, then replace the image in the editor.
In 2.5.54 it can be done in 3 clicks

> `Note`. Need update [PHP Connector](https://github.com/xdan/jodit-connectors)
### 2.5.53
Added [Jodit.focus](http://xdsoft.net/jodit/doc/module-Jodit.html#.focus) method
```javascript
var editor = new Jodit('.redactor');
editor.focus();
```
### 2.5.52
Added `OK` button in Alert dialog
#### More About dialogs
#### Alert
```javascript
Jodit.Alert("File was uploaded");
Jodit.Alert("File was uploaded", "Message");
Jodit.Alert("File was uploaded", function() {
$('form').hide();
});
Jodit.Alert("File wasn't uploaded", "Error", function() {
$('form').hide();
});
```
#### Promt

```javascript
Jodit.Promt("Enter your name", function (name) {
if (name.length < 3) {
Jodit.Alert("The name must be at least 3 letters");
return false;
}
// do something
});
Jodit.Promt("Enter your name", "Promt Dialog", function (name) {
if (name.length < 3) {
Jodit.Alert("The name must be at least 3 letters");
return false;
}
// do something
});
```
#### Confirm

```javascript
Jodit.Confirm("Are you shure?", function (yes) {
if (yes) {
// do something
}
});
```
### 2.5.49
First step for Mobile-friendly [sizeLG,sizeMD,sizeSM](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#sizeLG) and sets of buttons for different sizes editors.
> `Note`. this is not the width of the device, the width of the editor
* buttons The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
* buttonsMD The list of buttons that appear in the editor's toolbar on medium places (≥ options.sizeMD).
* buttonsSM The list of buttons that appear in the editor's toolbar on small places (≥ options.sizeSM).
* buttonsXS The list of buttons that appear in the editor's toolbar on extra small places (< options.sizeSM).
```javascript
var editor = new Jodit('#some-editor', {
sizeLG: 900,
sizeMD: 700,
sizeSM: 400,
buttons: [
'source', '|',
'bold',
'italic', '|',
'ul',
'ol', '|',
'font',
'fontsize',
'brush',
'paragraph', '|',
'image',
'table',
'link', '|',
'left',
'center',
'right',
'justify', '|',
'undo', 'redo', '|',
'hr',
'eraser',
'fullsize',
'about'
],
buttonsMD: [
'source', '|',
'bold',
'italic', '|',
'ul',
'ol', '|',
'font',
'fontsize',
'brush',
'paragraph', '|',
'image',
'table',
'link', '|',
'left',
'center',
'right',
'justify', '|',
'undo', 'redo', '|',
'hr',
'eraser',
'fullsize'
],
buttonsSM: [
'bold',
'italic', '|',
'ul',
'ol', '|',
'fontsize',
'brush',
'paragraph', '|',
'image',
'table',
'link', '|',
'left',
'center',
'right', '|',
'undo', 'redo', '|',
'eraser',
'fullsize'
],
buttonsXS: [
'bold',
'image', '|',
'brush',
'paragraph', '|',
'left',
'center',
'right', '|',
'undo', 'redo', '|',
'eraser'
],
});
```
### 2.5.46
* More comfortable colorpicker

* Added [Helper.normalizeColor](http://xdsoft.net/jodit/doc/module-Helper.html#~normalizeColor)
* Fixed [Helper.colorToHex](http://xdsoft.net/jodit/doc/module-Helper.html#~colorToHex) now for transparent color it will return NaN
### 2.5.45
* Fixed bug in Image Resizer when border was less than Image
* Rename Selection.setCursorTo to Selection.moveCursorTo
* Fixed style for Dialog resizer
### 2.5.42
Fix a few bugs in [JJE](http://xdsoft.net/jodit/#extesions)
### 2.5.40
* In [Helper](http://xdsoft.net/jodit/doc/module-Helper.html) module added [isHTML] method. Used plugin `insertHTML`
* Added simple plugin `insertHTML` and him option `askBeforePasteHTML` - Ask before paste HTML in WYSIWYG mode. Try insert in WYSIWYG mode some HTML source
```javascript
(function ($) {
"use strict";
Jodit.defaultOptions = $.extend(true, Jodit.defaultOptions, {
/**
* @property {boolean} askBeforePasteHTML=true Ask before paste HTML in WYSIWYG mode
*/
askBeforePasteHTML: true
});
/**
* Ask before paste HTML source
*
* @module insertHTML
*/
Jodit.plugins.insertHTML = function (parent) {
if (parent.options.askBeforePasteHTML) {
parent.events.on('beforePaste', function (event) {
if (event && event.clipboardData && event.clipboardData.getData && event.clipboardData.types[0] === 'text/plain') {
var html = event.clipboardData.getData('text/plain');
if (parent.helper.isHTML(html)) {
Jodit.Confirm('Your code is similar to HTML. Paste as HTML?', 'Paste as HTML', function (agree) {
if (agree) {
parent.s.insertHTML(html);
} else {
parent.s.insertHTML(parent.helper.htmlspecialchars(html));
}
parent.syncCode(true);
});
return false;
}
}
});
}
};
}(Jodit.modules.Dom));
```
### 2.5.39
Fix [#issue 11](https://github.com/xdan/jodit/issues/11) in `file:` mode CDN CodeMirror not working
### 2.5.38
* Added `Filter` in FileBrowser
* Added `SortBy` in FileBrowser
### 2.5.37
* Fixed bug in [`Beautifier`](http://xdsoft.net/jodit/doc/module-Beautifier.html) plugin. When in `source` mode, start comment enter `<!--` Browser stops responding.
* Added `tiles` and `list` switcher in filebrowser
### 2.5.36
* In PHP FileBrowser connector added MaxFileSize option
* Fixed popap error in filebrowser
### 2.5.30
Fix Splitmode autohaight

Fix syncronize code in TableProcessor module
### 2.5.28
Fix bug in Dialog.Confirm
```javascript
Jodit.Confirm("Are you shure?", "Confirm", function (success) {
if (success) {
alert("Agree");
}
});
```
### 2.5.27
* Fixed IE11's bug [http://xdsoft.net/jodit/doc/module-Jodit.html#comment-2866837441](http://xdsoft.net/jodit/doc/module-Jodit.html#comment-2866837441)
* Added [textIcons](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#texticons) options - Use text instead of icons. In IE9 it is default - true [Example](http://xdsoft.net/jodit/#example-text-icons)
```javascript
var editor = new Jodit("#example2_0", {
textIcons: true,
removeButtons: [
"hr",
"ol",
"about",
"italic",
"format",
"fullsize",
"justify"
]
});
```


### 2.5.26
Dom Module is now compatible with jQuery objects
```javascript
var a = jQuery("<a href="#link">Link</a>");
jodit.modules.Dom('.selector').append(a);
jodit.modules.Dom(jQuery("#someid")).val();
jodit.modules.Dom("#someid").val();
```
But you must remember that Jodit.modules.Dom! = JQuery
### 2.5.23
* Added `expand button` In filebrowser
* Added [fullsize](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#dialog) and [fullsizeButton](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#dialog) options
### 2.5.20
* Fix [Dom.prev](http://xdsoft.net/jodit/doc/module-Dom.html#prev) method
* Added navigation and select in preview

* Added [showSelectButtonInPreview](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) and [showPreviewNavigation](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser)
### 2.5.19
Added [cleanHTML.allowTags](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#cleanhtml) option.
```javascript
var editor = Jodit('#editor', {
allowTags: 'p,a[href],table,tr,td, img[src=1.png]' // allow only <p>,<a>,<table>,<tr>,<td>,<img> tags and for <a> allow only `href` attribute and <img> allow only `src` atrribute == '1.png'
});
editor.val('Sorry! <strong>Goodby</strong> <span>mr.</span> <a style="color:red" href="http://xsoft.net">Freeman</a>');
console.log(editor.val()); //Sorry! <a href="http://xsoft.net">Freeman</a>
```
Or you can use PlainObject. This code equivalent to the top
```javascript
var editor = Jodit('#editor', {
allowTags: {
p: true,
a: {
href: true
},
table: true,
tr: true,
td: true,
img: {
src: '1.png'
}
}
});
```
### 2.5.18
Fixed bug in Image plugin
### 2.5.17
Fixed bug in JJE
### 2.5.16
* Fixed a few styles
### 2.5.15
* Fixed `package.json`
### 2.5.13
* Added in FileBrowser [sort](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) options
* Jodit.Promt and Jodit.Alert by default set focus to OK button
```javascript
Jodit.Promt('Enter your name', function (name) {
if (!name.length) {
Jodit.Alert('You need enter 3 chars');
return false;
}
//... some logic
});
```
* Fix `$config` bug in [JJE](http://xdsoft.net/jodit/release/joomla.zip)
* Added a few options in JJE plugin
### 2.5.12
Added edit button in Image Properties Dialog

### 2.5.11
* Added file info in filebrowser

* Added [showFileName,showFileSize,showFileChangeTime](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser)
### 2.5.1
* Dom module was rewrited and was fixed afew bugs
* In [OEM and Pro](http://xdsoft.net/jodit/#download) added [Image Editor module](http://xdsoft.net/jodit/doc/module-ImageEditor.html) resize and crop image. You can try [here](http://xdsoft.net/jodit/)


### 2.4.22
* Added contextmenu module.
* Added context menu in FileBrowser
* Added preview in FilwBrowser
### 2.4.21
* Fixed TableProcessor's bugs. In a situation did not appear resizer cells and the resizer throughout the table.
### 2.4.20
* Fixed z-index Popap
* Fixed behavior of selection table cells
### 2.4.17
Fixed copy-paste html behavior
### 2.4.16
Fixed bug on after type `Enter`
### 2.4.15
Fixed bug with insert `OL` tag and Fixed Dom module work with Text node
### 2.4.12
Added [toolbarButtonSize](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#toolbarbuttonsize) Size of icons in the toolbar (can be "small", "middle", "large")
```javascript
var editor = new Jodit("#editor", {
toolbarButtonSize: "small"
});
```
### 2.4.10
* Added [node.create](http://xdsoft.net/jodit/doc/module-Node.html#create) method
```javascript
var editor = new Jodit('.jodit'),
node = editor.node.create('text', 'Hellow world');
editor.s.insertNode(node);
```
* Added [link](http://xdsoft.net/jodit/doc/module-link.html) plugin. And its options
* [processPastedLink](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#link) Wrap inserted link in `<a href="link">link</a>`
* [openLinkDialogAfterPost](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#link) Open Link dialog after post
* [removeLinkAfterFormat](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#link) When the button is pressed to clean format, if it was done on the link is removed like command `unlink`
* Replace format icon
### 2.4.8
Fixed Base icons [issue](https://gist.github.com/leonderijke/c5cf7c5b2e424c0061d2)
### 2.4.6
Fast Fixed in JJE
Fixed a lot of bugs in Jodit
### 2.4.1
* Fixed a lot of bugs in Dom module
* Fixed a lot of bugs in TableProcessor module
* Replace PNG icon on SVG sprite
* Added new module Icons
* Added theme `Dark`
* Fixed bug Popap's module
* Divide one less file by modules
### 2.3.59
* Added [Cookie](http://xdsoft.net/jodit/doc/module-Cookie.html) module
* Added [saveModeInCookie](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#savemodeincookie) if it is true that the current mode is saved in a cookie , and is restored after a reload of the page
* In Joomla Jodit Editor(JJE) added corresponding option saveModeInCookie [Download Jodit Joomla editor](http://xdsoft.net/jodit/release/joomla.zip)
### 2.3.57
* Fixed issue with `input[type=checkbox]` and [Dom.attr](http://xdsoft.net/jodit/doc/module-Dom.html#attr) method
* Release Joomla Jodit Editor (JJE) [Download JJE](http://xdsoft.net/jodit/release/joomla.zip)
### 2.3.53
* Added option [cleanHTML.cleanOnPaste](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#cleanhtml) The plugin [cleanHTML](http://xdsoft.net/jodit/doc/module-cleanHTML.html) automatically cleans up content from Microsoft Word and other HTML sources to ensure clean, compliant content that matches the look and feel of the site.
* Added [beforePaste](http://xdsoft.net/jodit/doc/module-Jodit.html#~event:beforePaste),[processPaste](http://xdsoft.net/jodit/doc/module-Jodit.html#~event:processPaste),[afterPaste](http://xdsoft.net/jodit/doc/module-Jodit.html#~event:afterPaste) events
### 2.3.49
Added [iframeBaseUrl](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#iframebaseurl) option - Base URL where the root directory for [iframe](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#iframe) mode
### 2.3.48
Added [spellcheck](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#spellcheck) option specifies whether the editor is to have its spelling and grammar checked or not
### 2.3.47
Added [removeEmptyBlocks](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#removeemptyblocks) option - Remove empty blocks
```javascript
var editor = new Jodit('#editor', {
removeEmptyBlocks: false
});
editor.val(' ');// add space in editor
console.log(editor.val()); //<p> </p>
editor.options.removeEmptyBlocks = true;
editor.val(' ');
console.log(editor.val()); //''
```
### 2.3.46
* Fixed critical bug in Safari (window.performance)
* Fixed bug when editor can get selection from another place
### 2.3.44
Added [direction](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#direction) option.
The writing direction of the language which is used to create editor content.
Allowed values are:
* '' (an empty string) – Indicates that content direction will be the same as either the editor UI direction or the page element direction.
* 'ltr' – Indicates a Left-To-Right text direction (like in English).
* 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
### 2.3.43
Fixed styles bugs
### 2.3.41
When [filebrowser.showFoldersPanel](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) === false show 4 colums in filelist
### 2.3.40
* Added [filebrowser.moveFolder](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) option. Allow/deny move folder
* Added [filebrowser.moveFile](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) option. Allow/deny move file
* Added [filebrowser.showFoldersPanel](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#filebrowser) option. Hide/show folders panel in filebrowser
### 2.3.39
Fixed [Filebrowser](http://xdsoft.net/jodit/doc/module-Filebrowser.html) uploader's options bug.
Previously , you had to either use a general [Uploader](http://xdsoft.net/jodit/doc/module-Uploader.html) module settings , or override them completely
```javascript
var editor = new Jodit('.redactor', {
filebrowser: {
uploader: null
},
uploader: {
url: 'uploader.php',
format: 'json',
}
});
// or
var editor = new Jodit('.redactor', {
filebrowser: {
uploader: {
url: 'uploader.php',
format: 'json',
filesVariableName: 'fils',
//... all options from [uploader](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#uploader)
}
}
});
```
Now you can just override some of your settings
```javascript
var editor = new Jodit('.redactor', {
filebrowser: {
uploader: {
url: 'uploader2.php',
}
},
uploader: {
url: 'uploader.php',
}
});
```
### 2.3.38
* Fixed i18n bug
* [useSplitMode](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#usesplitmode) set default false
* Fixed toolbar width after fullsize mode
* Fixed [#issue5](https://github.com/xdan/jodit/issues/5)
### 2.3.37
Fast fix
### 2.3.36
* Added plugin `Fullsize`. Now you can change fullsize mode
```javascript
var editor = new Jodit();
editor.events.fire('toggleFullsize');
editor.events.fire('toggleFullsize', [true]); // fullsize
editor.events.fire('toggleFullsize', [false]); // usual mode
```
* Added [globalFullsize](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#globalFullsize) (default `true`) if true, after `fullsize` - all parents element get `jodit_fullsize_box` class (z-index: 100000 !important;)
* Fixed focus bug
### 2.3.35
* Fixed placeholder style
* Fixed [Dom.css](http://xdsoft.net/jodit/doc/module-Dom.html#~css) then
```html
<div class="idclass" style="margin-top:20px;"></div>
```
```javascript
Jodit.modules.Dom('.idclass').css('margin-top');//has returned string `20px`
Jodit.modules.Dom('.idclass').css('margin-top');//now it returns int `20`
```
### 2.3.33
* Fixed placeholder style. Placeholder placed in a separate module [Placeholder](http://xdsoft.net/jodit/doc/module-Placeholder.html)
* Added [showPlaceholder](http://xdsoft.net/jodit/doc/module-Placeholder.html#showplaceholder) option
* Added [useInputsPlaceholder](http://xdsoft.net/jodit/doc/module-Placeholder.html#useinputsplaceholder) option
* Added [placeholder](http://xdsoft.net/jodit/doc/module-Placeholder.html#placeholder) option
### 2.3.32
Added [uploader.data](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#uploader) option. Data to be sent to the server like POST parameters
### 2.3.31
Added [editorCssClass](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#editorcssclass) option - Class name that can be appended to the editor
Fixed internacionalization
### 2.3.30
Added [triggerChangeEvent](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#triggerchangeevent) option
Fixed uploader's options - When the uploader is not configured, the editor still displays images upload button
### 2.3.29
Add [Dom.defaultAjaxOptions.async](http://xdsoft.net/jodit/doc/module-Dom.html#.__.defaultAjaxOptions) By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false
### 2.3.28
Added `headers` option in {@link module:FileBrowser|FileBrowser} and {@link module:Uploader|Uploader}. But primarily in {@link module:Dom|Dom}
```javascript
var token = document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
editor = new Jodit("#redactor", {
uploader: {
url: '../connector/index.php?action=upload',
headers: {
'X-CSRF-Token': token
}
},
filebrowser: {
ajax: {
url: '../connector/index.php',
headers: {
'X-CSRF-Token': token
}
}
},
});
// or replace global options
Jodit.modules.Dom.defaultAjaxOptions.headers = {
headers: {
'X-CSRF-Token': token
}
};
```
```javascript
Jodit.modules.Dom.ajax({
url: 'data.json',
headers: {
'Accept-Language': 'en-US,en;q=0.8,ru;q=0.6,de;q=0.4,ja;q=0.2'
},
success: function (resp) {
console.log(resp)
}
})
```
### 2.3.27
Fixed [#issues1](https://github.com/xdan/jodit/issues/1)
### 2.3.24
Fixed dialog's module when was opened Promt window, after Enter submit the form and the page reloaded.
Fixed connector's bugs
Update [Jodit.i18n](http://xdsoft.net/jodit/doc/module-Jodit.html#.i18n) method. Now it can be used staticly
```javascript
var editor = new Jodit("#redactor", {
langusage: 'ru'
});
console.log(editor.i18n('Cancel')) //Отмена;
Jodit.defaultOptions.language = 'ru';
console.log(Jodit.prototype.i18n('Cancel')) //Отмена
Jodit.lang.cs = {
Cancel: 'Zrušit'
};
Jodit.defaultOptions.language = 'cs';
console.log(Jodit.prototype.i18n('Cancel')) //Zrušit
Jodit.lang.cs = {
'Hello world': 'Hello 1$ Good 2$'
};
Jodit.defaultOptions.language = 'cs';
console.log(Jodit.prototype.i18n('Hello world', 'mr.Perkins', 'day')) //Hello mr.Perkins Good day
```
Fixed [Jodit.destroy](http://xdsoft.net/jodit/doc/module-Jodit.html#.destroy) method
```javascript
var editor = new Jodit('.jodit');
editor.destroy();
```
### 2.3.22
Fixed bug when Dialog module was used without Jodit context
```javascript
Jodit.Alert('Hello world!!!');
```
### 2.3.20
Fixed dialog's module zIndex manage.
Fixed [Dom.css](http://xdsoft.net/jodit/doc/module-Dom.html#~css) method bug. That example has not worked.
```javascript
Jodit.modules.Dom('.someelement').css('z-index', 1000)
```
### 2.3.19
Fixed bug in Uploader module when `http://sitename.net/jodit///files/fg.jpg` was replaced `http:/sitename.net/jodit/files/fg.jpg`
### 2.3.18
Added `afterInsertImage` event - triggered after image was inserted [selection.insertImage](http://xdsoft.net/jodit/doc/module-Selection.html#-insertImage__anchor).
This method can executed from [Filebrowser](http://xdsoft.net/jodit/doc/module-Filebrowser.html) or [Uploader](http://xdsoft.net/jodit/doc/module-Uploader.html)
```javascript
var editor = new Jodit("#redactor");
editor.events.on('afterInsertImage', function (image) {
image.className = 'bloghead4';
});
```
### 2.3.15
Fixed bug with inserting table
### 2.3.14
Work with table became faster
### 2.3.12
* Fixed filbrowser bug. When a new file is uploaded file list has not been updated
* Added [dialog.zIndex](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.dialog) option
### 2.3.11
Fixed toolbar width fot fullsize mode
### 2.3.10
* Fixed CodeMirror bug on download XML parser
* Fixed CodeMirror bug endless cycle
* Fixed overflow behavior in fullsize mode
### 2.3.8
Fixed connector problem and Fixed item's style in filebrowser
### 2.3.3
Switched on FontAwesome icons
### 2.3.0
Added copy-paste image file for FireFox
### 2.2.6
Fixed copy-paste for FireFox
### 2.2.5
Added copy-paste support by clipboard image. [Try](http://xdsoft.net/jodit) paste print screen.
### 2.2.4
Added the ability in the file browser to obtain data about the file not as a string and as an object with parameters {file: 'name.jpg', thumb: '_thumbs/name.jpg'}
### 2.2.3
Fixed conflict between textProcessor and Beatyfier plugins
### 2.2.2
Fixed BACKSPACE entering behavior. And Fixed ie10 support
### 2.2.0
Added [iframe](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.iframe), [iframeStyle](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.iframeStyle), [iframeIncludeJoditStyle](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.iframeIncludeJoditStyle), [iframeCSSLinks](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.iframeCSSLinks), [width](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.width), [height](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.height), [minHeight](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.minHeight).
`iframe` by default false. When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
`width` and `height` you can set size fot editor
### 2.1.0
Added internationalization. Read more http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.language
### 2.0.9
Added Split mode. Added [useSplitMode](http://xdsoft.net/jodit/doc/Jodit.defaultOptions.html#.useSplitMode) options (default true) Example [here](http://xdsoft.net/jodit/#splitmode)
### 2.0.8
Fixed dialog bug
### 2.0.4
Added CodeMirror plugin. Enable by default {@link defaultOptions~codeMirror.|options.codeMirror}
### 2.0.0
We got rid of jQuery
### 1.2.1
Fixed bug in filebrowser
### 1.2.0
Fixed bug when [selection.insertHTML](http://xdsoft.net/jodit/doc/module-Selection.html#-inner-insertHTML__anchor) dosn't work without focus
### 1.1.0
Fixed bug with uploader and filebrowser
### 1.0.6
If source `textarea` has `placeholder` attribute then Jodit use it how placeholder
### 1.0.4
Added About button
### 1.0.1
First release