TinyMCE 6.0: Core changes

Summary

This section documents the four core changes made to TinyMCE 6.0.

Core changes

  1. Browsers supported by TinyMCE 6.0 have changed. TinyMCE 6.0 supports the current and previous major versions of Google Chrome, Mozilla Firefox, Microsoft Edge, and Apple Safari. TinyMCE 6.0 also supports the current Long Term Release of each of the above browsers (eg, Mozilla Firefox ESR and Google Chrome ESR).

    In particular, this means TinyMCE 6.0 does not support Microsoft Internet Explorer 11.
  2. Premium Plugins released with TinyMCE 6.0 are not backwards compatible with earlier versions of TinyMCE.

  3. The open source version of TinyMCE 6.0 is now licensed under the MIT License.

  4. Three additional professionally translated language packs are now available for use with TinyMCE 6.0:

    • Hindi (hi);

    • Malay (ms); and

    • Vietnamese (vi)

    These packs are available to all Cloud subscribers and all Premium plan subscribers.

This section also includes four tables that set out the:

  • renamed APIs, Commands, Plugins, Options, and UI & UX elements

  • values changed in a default TinyMCE 6.0 instance.

  • previously deprecated and now removed items.

  • never documented, and consequently never supported, items that have now been removed.

Things we renamed

Old name New name Element Notes

blockformats

blocks

Menu item

No behavioral changes.

formatselect

blocks

Toolbar item

No behavioral changes.

imagetools

editimage

Plugin

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

imagetools_toolbar

editimage_toolbar

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

imagetools_proxy

editimage_proxy

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

imagetools_cors_hosts

editimage_cors_hosts

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

imagetools_credentials_hosts

editimage_credentials_hosts

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

imagetools_fetch_image

editimage_fetch_image

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

images_upload_timeout

editimage_upload_timeout

Option

NB: Image Tools is now Enhanced Image Editing, a Premium plugin.

fire()

dispatch()

API

fire() in tinymce.Editor, tinymce.dom.EventUtils, tinymce.dom.DOMUtils, tinymce.util.Observable and tinymce.util.EventDispatcher has been renamed to dispatch(). fire has been aliased to dispatch but has also been marked as deprecated.

font_formats

font_family_formats

Option

No behavioral changes, but there are related toolbar and menu items changes.

fontselect

fontfamily

Toolbar item

No behavioral changes.

fontformats

fontfamily

Menu item

No behavioral changes.

fontsize_formats

font_size_formats

Option

No behavioral changes.

fontsizeselect

fontsize

Toolbar item

No behavioral changes.

fontsizes

fontsize

Menu item

No behavioral changes.

formatpainter_blacklisted_formats

formatpainter_ignored_formats

Option

No behavioral changes.

getWhiteSpaceElements()

getWhitespaceElements()

Function

This function is part of the Schema API. It was renamed as part of a general renaming that treats Whitespace as a single word. The behavior of the function has not changed.

getShortEndedElements

getVoidElements

API

special and void are hard-coded elements defined by the HTML parsing specification. They can not be changed at run-time. The previous API name did not make it clear it was these, hard-coded, elements being called.

content

html

Command

This mceInsertClipboardContent argument was renamed to better reflect what data is passed. NB: The content argument can no longer be used with mceInsertClipboardContent. If content is used, no data is passed.

lineheight_formats

line_height_formats

Option

No behavioral changes.

default_link_target

link_default_target

Option

Changed for consistency with other link and autolink options. The functionality, and the values the option can take remain unchanged. This change applies to both link and autolink plugins.

rel_list

link_rel_list

Option

Changed for consistency with other options. The functionality, and the values this option can take remain unchanged.

target_list

link_target_list

Option

Changed for consistency with other options. The functionality, and the values this option can take remain unchanged.

mceInsertTable

mceInsertTableDialog

Command

Use mceInsertTableDialog to open the Insert Table dialog box. NB: mceInsertTable (with appropriate arguments) still works to insert a table directly into an existing document. mceInsertTable can no longer be used to invoke the Table dialog box, however.

noneditable_noneditable_class

noneditable_class

Option

After upgrading, rename the options in your TinyMCE init configuration to match the new name. For example, noneditable_noneditable_class: 'mceNonEditable' must be renamed noneditable_class: 'mceNonEditable'.

noneditable_editable_class

editable_class

Option

After upgrading, rename the options in your TinyMCE init configuration to match the new name. For example, noneditable_editable_class: 'mceEditable' must be renamed editable_class: 'mceEditable'.

styleselect

styles

Toolbar item

No behavioral changes.

formats

styles

Menu item

No behavioral changes.

textpattern_patterns

text_patterns

Option

After upgrading, rename the options in your TinyMCE init configuration to match the new name. Also, remove textpattern from your plugins list. This name-change is consequent to textpattern being changed from a Plugin to being part of the TinyMCE Core.

tinymce.Env.browser.isChrome

tinymce.Env.browser.isChromium

API

Updated so the API better reflects what it is checking for. isChrome implies it is checking for Google Chrome. However, it is actually checking for any Chromium-based browser (eg Chromium, Google Chrome, or Chrome Edge) so isChromium more accurately reflects what is being done.

tinymce.Env.os.isOSX

tinymce.Env.os.isMacOS

API

Updated so the API now uses the current name of Apple’s desktop operating system when checking to see if a device’s OS is, in fact, macOS.

toc

tableofcontents

Plugin, Menu item, and Toolbar item

This presents in both the menu item and the toolbar’s tooltip text. NB: Table of Contents is now a Premium plugin.

tocupdate

tableofcontentsupdate

Toolbar item

This presents in the toolbar’s tooltip text. NB: Table of Contents is now a Premium plugin.

toc_class

tableofcontents_class

Option

NB: Table of Contents is now a Premium plugin.

toc_depth

tableofcontents_depth

Option

NB: Table of Contents is now a Premium plugin.

toc_header

tableofcontents_header

Option

NB: Table of Contents is now a Premium plugin.

  • Commands are what is passed via the editor.execCommand() API.

    Where a Command name has change, calls to editor.execCommand() API must be changed to match the new name.

  • Configuration Options are what is passed when initialising the TinyMCE editor via tinymce.init.

    Where an Option name has changed, configurations using that option must be changed to match the new name.

  • Menu items and Toolbar items are Options from tinymce.init for UI and UX features, such as the TinyMCE Menu, Toolbar and Contextual Menu.

Default value changes

Element Old value New value Notes

a11ychecker_html_version

html4

html5

assignment operator character

:

~

Changed in the valid_elements and extended_valid_elements schemata.

element_format

no default value assigned

html

Changed as part of modernising TinyMCE’s default behavior.

height

200px

400px

Changed to improve user experience.

link_default_protocol

http

https

Changed as part of modernising TinyMCE’s default behavior.

TinyMCE schema

no default value assigned

html5

Changed as part of modernising TinyMCE’s default behavior.

table_style_by_css

false

true

Changed as part of modernising TinyMCE’s default behavior.

table_use_colgroups

false

true

Changed as part of modernising TinyMCE’s default behavior.

Previously deprecated items now removed

The following elements were previously deprecated and have, with this release, been removed entirely from TinyMCE.

Item Element Notes

$

API

$ was a shorthand function of DomQuery and Sizzle.

addComponents

API

From AddOnManager.

autoresize_on_init

Option

block_elements

Schema option

boolean_attributes

Schema option

Class

API

clearInterval

API

From Delay.

clearTimeout

API

From Delay.

Color

API

content_editable_state

Option

debounce

API

From Delay.

dependencies

API

From AddOnManager.

DomQuery

API

editor_deselector

Option

From EditorManager.

editors

Property

From EditorManager.

editor_selector

Option

From EditorManager.

elements

Option

From EditorManager.

execCallback

API

file_browser_callback_types

Option

filepicker_validator_handler

Option

Superseded by file_picker_validator_handler.

force_hex_style_colors

Option

force_p_newlines

Option

Superseded by forced_root_block.

forced_root_block: false

Option

forced_root_block must be a non-empty string and cannot take a value of false.

forced_root_block: ''

Option

forced_root_block must be a non-empty string and cannot take a value of false.

gecko_spellcheck

Option

Replaced by browser_spellcheck.

images_dataimg_filter

Option

JSON

API

JSONP

API

JSONRequest

API

mode

Option

From EditorManager.

move_caret_before_on_enter_elements

Schema option

non_empty_elements

Schema option

padd_empty_with_br

Option

requestAnimationFrame

API

From Delay.

self_closing_elements

Schema option

setIconStroke

API

setInterval

API

From Delay.

setMode

API

setTimeout

API

From Delay.

short_ended_elements

Schema option

Sizzle

API

special

Schema option

text_block_elements

Schema option

text_inline_elements

Schema option

throttle

API

From Delay.

toolbar_drawer

Option

Superseded by toolbar_mode.

types

Option

From EditorManager.

whitespace_elements

Schema option

validate

Schema option

XHR

API

Any remaining XHR users have been replaced with fetch.

Previously undocumented items removed without prior deprecation

The following elements were never documented and have never been formally supported.

Consequently, they were removed with this release without deprecation notices being provided in earlier releases.

Item Element

editor.editorCommands.hasCustomCommand

API

mceResetDesignMode

Command

mceRepaint

Command

mceBeginUndoLevel

Command

APIs

This section documents the improvements, changes and fixes made to TinyMCE 6.0 APIs.

It also documents the TinyMCE 6.0 APIs that have been removed.

New and improved APIs

editor.annotator.removeAll

The new editor.annotator.removeAll API replaces the removeAll method built-in to the Comments plugin.

editor.options and tinymce.activeEditor.options

The new editor.options API replaces two old APIs: editor.settings and editor.getParam.

Along with this new API, the new tinymce.activeEditor.options API replaces tinymce.activeEditor.settings.

editor.uploadImages()

The results returned from editor.uploadImages() API now include a removed property.

The property will be true when an image being uploaded is removed after failing to upload.

FakeClipboard

The new FakeClipboard API provides a means for storing state that can be set and accessed by plugins and the core editor.

FakeClipboard is implemented on the TinyMCE global, allowing anything to write to it and read from it.

Resource.unload

The new Resource.unload API makes it possible to unload resources in the resource loader.

setData method in the Dialog API

The dialog API’s setData method now uses a deep merge algorithm.

Consequently, it now supports partial nested objects.

success and failure callbacks replaced by Promise in multiple APIs

Previously, the AddOnManager, PluginManager, ScriptLoader, StyleSheetLoader, and ThemeManager APIs reported resource loading status with success or failure callbacks.

These APIs now, instead, return a Promise. Also, EditorUpload, which already returns a Promise, had callbacks removed.

Changed APIs

closeButton and timeout

Previously, using closeButton to disable a Notification’s close button required a timeout value to also be set.

In TinyMCE 6, closeButton shows or hides the close button regardless of a timeout value being set or not set.

Equivalently, setting a timeout value sets how long the notification presents before automatically closing, regardless of whether a close button is displayed or not.

disabled methods renamed in all TinyMCE APIs

Previously, multiple TinyMCE APIs and UI components used disable or disabled in their method or property names.

In TinyMCE 6, these method and property names have been changed and configuration changes are required.

  1. isDisabled() methods are now isEnabled() methods.

  2. The enable() and disable() methods are now the single setEnabled(<state>) method.

  3. The disable(<name>) and enable(<name>) methods are now the single setEnabled(<name>, <state>) method in the Dialog APIs.

  4. The disabled property is now the enabled property in all TinyMCE UI components.

dom.DOMUtils

The toHex method has been removed from dom.DOMUtils.

DomParser

The filterNode method has been removed from the DomParser API.

As well, the DomParser API no longer uses a custom parser internally and instead uses the native DOMParser API.

SetContent editor event

The content property of the SetContent editor event has been deprecated.

Env

The following methods have been removed from the Env API:

  • opera

  • webKit

  • ie

  • gecko

  • mac

  • iOS

  • android

  • desktop

  • contentEditable

  • caretAfter

  • range

  • ceFalse

  • experimentalShadowDom

  • fileApi

Note, in particular, the removal of all legacy browser detection methods.

fire methods renamed in all TinyMCE APIs

The fire() method in tinymce.Editor, tinymce.dom.EventUtils, tinymce.dom.DOMUtils, tinymce.util.Observable and tinymce.util.EventDispatcher has been renamed to dispatch().

fire has been aliased to dispatch, so existing integrations should still work as expected.

fire has also, however, been marked as deprecated. Using dispatch() in place of fire() is recommended.

Fixed APIs

editor.annotator.remove

Previously, editor.annotator.remove scrolled to the removed contents position when removing an annotation.

It did not, as expected, retain the current selection or insertion position in the TinyMCE editor.

With this release, editor.annotator.remove does not change the selection or insertion position after removing an annotation.

editor.fire()

Previously, if the TinyMCE editor was removed, the editor.fire() API returned an incorrect object.

In TinyMCE 6.0, editor.fire(), which has been renamed dispatch(), returns the correct object even when the editor is removed.

editor.getContent()

The editor.getContent() API can now provide custom content by preventing and overriding content in the BeforeGetContent event.

This makes it consistent with the editor.selection.getContent() API.

The editor.setContent() API can also now be prevented from using the BeforeSetContent event.

This, too, makes it consistent with the editor.selection.setContent() API.

editor.selection.getContent()

When the no_events argument is set to true, events should not fire when getContent is called. Previously, editor.selection.getContent() did not respect this.

In TinyMCE 6.0, editor.selection.getContent() treats the no_events setting as expected: when set to false, events are fired; when set to true, events are not fired.

Removed or deprecated APIs

html.Styles

The toHex method has been removed from html.Styles.

SaxParser

With all parsing moved to the DomParser API, the SaxParser API has been removed.

Table

The table plugin’s functionality is, as of TinyMCE 6.0, entirely focussed on the user interface (UI) for creating and editing tables.

The code that generates tables is now a Core part of TinyMCE 6.0.

Since the table plugin API was entirely concerned with generating tables, it has been removed.

tinymce.util.Promise

The tinymce.util.Promise API has been removed.

Commands and queries

This section documents the improvements and changes made to TinyMCE 6.0 commands and queries.

It also documents the TinyMCE 6.0 commands that have been removed.

New and improved commands and queries

mceAutocompleterClose and mceAutocompleterReload

As part of moving the core autocompleter feature from the default silver theme to the TinyMCE core, two new commands are now available: mceAutocompleterClose and mceAutocompleterReload.

mceInsertTableDialog

mceInsertTableDialog is the new command for invoking an Insert Table dialog.

The previous command, mceInsertTable, no longer works to invoke an Insert Table dialog: use the mceInsertTableDialog command instead.

The mceInsertTable command is still the command for inserting a table with specified properties directly and without asking for user input.

Changed commands and queries

Editor commands

The Editor commands APIs no longer fallback to executing the browsers native command functionality.

As well, the Editor query command APIs now return false or an empty string on removed TinyMCE editors.

mceAddEditor and mceToggleEditor

Previously, mceAddEditor and mceToggleEditor used the editorManager.settings values to set the id and UI and UX options for a new TinyMCE editor instance.

editorManager.settings is not used at all in TinyMCE 6 and has been removed.

Instead, the mceAddEditor and mceToggleEditor commands use id and options values from an object passed when the command is run.

Removed or deprecated commands and queries

execCommand

The execCommand handler function has been removed from the plugin and theme interfaces.

mceInsertRawHTML

The mceInsertRawHTML command has been removed.

Events

This section documents the improvements and fixes made to TinyMCE 6.0 Events.

New and improved events

AutocompleterStart, AutocompleterUpdate and AutocompleterEnd

As part of moving the core of the autocompleter feature from the default silver theme to the TinyMCE core, three new events are now available: AutocompleterStart, AutocompleterUpdate and AutocompleterEnd.

Themes can act on the AutocompleterStart and AutocompleterUpdate events and can call AutocompleterEnd to cancel the auto completer.

BeforeSetContent

The BeforeSetContent event now includes the actual serialized content when passing in an AstNode to the editor.setContent() API.

GetContent

The GetContent event now always passes a string for the content property.

ThemeLoadError

A ThemeLoadError event is now fired if the theme fails to load.

Fixed events

beforeinput

The beforeinput event is expected to fire whenever content is added to or removed from a TinyMCE instance.

Previously, however, because of backspace and delete overrides in TinyMCE Core, the beforeinput event did not always fire when expected.

With this release, these overrides no longer prevent beforeinput events firing when expected.

change

Previously, the change event was triggered by the first modification made to a TinyMCE editor instance.

However, subsequent changes did not cause the event to fire until focus was switched away from the editor.

For example, typing a single character in to the TinyMCE editor text-entry area triggered the change event.

Consequent typing, or selecting of the entered character and modifying it by setting it to bold or italic, did not trigger further change events.

Making further modifications and then switching focus away from the editor did trigger this event, however.

As of TinyMCE 6, the change event is not fired unless and until

  1. focus is switched away from the editor; and

  2. changes have been made in the editor since focus was switched to it.

It is still possible to listen for modification to a TinyMCE editor instance before focus is changed. To do this, listen for the dirty event, rather than the change event.

GetContent

Previously the GetContent event did not fire when the editor.selection.getContent() API attempted to get tree or text formatted data.

With this release, the SetContent event fires as expected when editor.selection.setContent() attempts this.

The editor.selection.setContent() API only supports the html and raw formats.

input

The input event is expected to fire whenever content is deleted from a TinyMCE instance.

Previously, however, because of overrides in the DeleteBackspaceKeys.ts module, when more than one line was deleted, the input event did not fire.

With this release, these overrides no longer prevent an input event firing when multiple lines are deleted, as expected.

Formatting

This section documents the single change made to TinyMCE 6.0 formatting.

Changed formatting

strikethrough

When a string is formatted as strikethrough, TinyMCE uses the <s></s> tag when the schema is HTML 5.

Also, given TinyMCE is now setting the HTML 5 schema by default, the default tag for the strikethrough format is the <s></s>, as is required by the HTML 5 schema.

Options

This section documents the changes made to TinyMCE 6.0 Options.

It also documents the TinyMCE 6.0 Option that has been removed.

Changed options

element_format

Previously, element_format had no explicit default value. It’s implicit value, however, was 'xhtml'.

In TinyMCE 6.0, element_format now has an explicit default value: 'html'.

images_upload_handler

Previously the images_upload_handler option passed success or failure callbacks to report the status of an image upload.

In TinyMCE 6, images_upload_handler reports upload results by returning a Promise.

The link_default_protocol option sets the link protocol used by links added or edited using the link dialog.

It now defaults to 'https'. Previously it defaulted to 'http'.

The link_default_protocol value is only applied to an edited or inserted link if the protocol is not explicitly specified.

plugins option

Previously, the list of configured plugins could be retrieved by calling editor.getParam('plugins') and returned the configured plugins as a string.

As of TinyMCE 6, the list of configured plugins is retrieved by calling editor.options.get('plugins') and now returns the configured plugins as an array.

Removed or deprecated options

TextPattern

The textpattern_patterns option is no longer an option. It has been renamed to text_patterns and is now a Core part of TinyMCE 6.0.

All references to textpattern_patterns should be changed to text_patterns.

Also, text patterns are now on by default: text_patterns: false turns the functionality off.

Parsing and serialization

This section documents the single change made to TinyMCE 6.0 parsing and serialization.

Changed parsing and serialization

RGB colors no longer converted to hex values

With the removal of the, now deprecated, toHex APIs, RGB colors are no longer converted to hex values when parsing or serializing content.

Plugins

This section documents the improvements, changes, and removals made to TinyMCE 6.0 Plugins.

It also documents the the plugin loading change introduced in TinyMCE 6.0.

Plugin loading format change

TinyMCE 6.0 allows plugin loading in any of three formats:

  1. An array of strings:

    plugins: [ 'advlist', 'lists', 'image', 'help', 'wordcount' ]

  2. A space-separated string:

    plugins: 'advlist lists image help wordcount'

  3. A comma-separated string, with or without spaces:

    plugins: 'advlist,lists,image,help,wordcount'
    plugins: 'advlist, lists, image, help, wordcount'

Previously, one other format was allowed: arrays of space-separated strings. This format is no longer accepted in TinyMCE 6.0.

New and improved plugins

Enhanced Image Editing

Enhanced Image Editing, a Premium plugin, replaces the now-deprecated and removed ImageTools plugin. The imagetools plugin is no longer part of the Core open source editor.

The following editimage options replace the old imagetools options:

  • imagetools_cors_hosts is now editimage_cors_hosts.

  • imagetools_credentials_hosts is now editimage_credentials_hosts.

  • imagetools_fetch_image is now editimage_fetch_image.

  • imagetools_proxy is now editimage_proxy.

  • imagetools_toolbar is now editimage_toolbar.

editimage also offers a new option: editimage_proxy_service_url. This option has been added as a new recommended method when using Tiny services.

Emoticons

The emoticon plugin now uses the more accurate word, Emoji, in its toolbar, menu item and dialog.

In previous versions, the word presented in these parts of the plugin’s user-interface was Emoticon.

The plugin, itself, is still called Emoticons. And the plugin description and the plugin’s configuration and Help dialogs still reflect this.

Table of Contents

There are no end-user facing changes between the previous toc plugin and the tableofcontents plugin.

The tableofcontents plugin is no longer part of the Core open source editor. Table of Contents is now a Premium plugin.

Hindi, Malay, and Vietnamese translations added to Premium Plugins

The following Premium Plugins now present in Hindi, Malay, and Vietnamese:

  • Accessibility Checker

  • Advanced Tables

  • Comments

  • Enhanced Image Editing

  • Export

  • PowerPaste

  • Real-time Collaboration (RTC)

  • Spell Checker Pro

  • Table of Contents

Changed plugins

Autoresize

Previously, the autoresize plugin offered an autoresize_on_init option.

This setting does not do anything meaningful, and had been previously deprecated.

As of TinyMCE 6.0, autoresize_on_init has been removed from the autoresize plugin.

Media

In TinyMCE 5.x, the media plugin used SaxParser to validate elements for parsing.

As of TinyMCE 6.0, SaxParser is no longer used. Another TinyMCE public API — DomParser — is used instead.

As a consequence the iframe, video, audio, and object elements are no longer marked as special. Instead their contents are simply validated against the TinyMCE schema.

The TinyMCE public API, DomParser uses, in turn, the same-named browser parsing API: DomParser.

Also, the media plugin’s media_scripts option was deprecated in TinyMCE 5.10.

As of the release of TinyMCE 6.0, this option has been removed completely.

Noneditable

The noneditable plugin is no longer a plugin. It is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to noneditable should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

Paste

The paste plugin’s functionality is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to paste should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

The paste_data_images option now defaults to true. When paste was a plugin, this option was, by default, set to false, which prevented images being pasted from the local machine.

The mceInsertClipboardContent argument, content, has been renamed. It is now html.

The new name is a more accurate reflection of what sort of data the argument passes.

Print

print functionality is no longer a plugin. It is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to print should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

Table

The table plugin’s functionality is, as of TinyMCE 6.0, entirely focussed on the user interface (UI) for creating and editing tables.

The code that generates tables is now a Core part of TinyMCE 6.0.

This, now core feature of TinyMCE 6.0, also includes the following fixes, changes, and improvements.

  • If the selected cells in the tfoot section of a table were header elements (ie were th elements), pressing the table row header toolbar button (which invokes the mceTableRowType command) returned the row as a header row.

    This was incorrect: the section takes precedence and cells in the tfoot section of a table should be declared as a footer row.

    In TinyMCE 6.0, selecting cells in the tfoot section of a table and pressing the row header toolbar button returns the row as a footer row, as expected.

  • mceInsertTableDialog is the new command for invoking an Insert Table dialog box.

    The previous command, mceInsertTable, no longer works to invoke an Insert Table dialog box: use the mceInsertTableDialog command instead.

    The mceInsertTable command is still the command for inserting a table with specified properties directly and without asking for user-input.

  • The default values for the table_style_by_css and the table_use_colgroups options have both been changed.

    Previously, these options defaulted to false. As of TinyMCE 6.0, both options now default to true.

    This is in line with modern web practice.

  • The table_responsive_width option was previously deprecated and superseded by table_sizing_mode.

    In TinyMCE 6.0, the table_responsive_width option has been removed.

Removed or deprecated plugins

BBCode

As per the previous TinyMCE 5 announcement, the bbcode plugin has been removed. It is no longer part of TinyMCE 6.0. And it is not otherwise available.

Color Picker

Color Picker’s functionality has been a built in part of TinyMCE since version 5.

Consequently, and as per the previous TinyMCE 5 announcement, the empty colorpicker plugin has been removed.

Context Menu

Context Menu’s functionality has been a built in part of TinyMCE since version 5.

Consequently, and as per the previous TinyMCE 5 announcement, the empty contextmenu plugin has been removed.

Full Page

As per the previous TinyMCE 5 announcement, the fullpage plugin has been removed. It is no longer part of TinyMCE 6.0. And it is not otherwise available.

HR

The hr (horizontal rule) functionality is no longer a plugin. It is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to hr should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

Image Tools

The imagetools plugin is no longer part of the Free TinyMCE editor. Image Tools is now Enhanced Image Editing, a Premium plugin.

Legacy Output

As per the previous TinyMCE 5 announcement, the legacyoutput plugin has been removed. It is no longer part of TinyMCE 6.0. And it is not otherwise available.

Paste

The paste functionality is no longer a plugin. It is now a Core part of TinyMCE 6.0.

Because the functionality was unmaintainable, paste no longer supports input from Microsoft Word.

There is an open request for maintainers should someone in the community be interested in taking over maintenance of this particular functionality as a separate plugin.

If a community-maintained version of the paste plugin becomes available, we will link to it from the Migration Guide.

The Premium plugin, PowerPaste, is available. It provides the capability to accept data from Microsoft Word and Microsoft Excel, and clean-up the received data before pasting it into place.

Print

print functionality is no longer a plugin. It is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to print should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

Spell Checker

As per the previous TinyMCE 5 announcement, the spellchecker plugin has been removed. It is no longer part of TinyMCE 6.0.

The Premium plugin, Spell Checker Pro, which offers equivalent functionality and more, is available.

Tab Focus

The tabfocus plugin has been removed. It is no longer part of TinyMCE 6.0. And it is not otherwise available.

The tabfocus_elements option, which relied on the tabfocus plugin, no longer functions.

As well, the tab_focus option was previously deprecated by tabfocus_elements. With this release, the tab_focus option has been removed completely.

As per standard web practice, the tabindex attribute should be used instead of the tabfocus plugin or any of the tabfocus plugin’s options.

As per that standard web practice, the tabindex attribute is copied from the target element to the iframe.

Table of Contents

The toc plugin is no longer part of the Core open source editor. Table of Contents is now a Premium plugin.

Text color

Text color’s functionality has been a built in part of TinyMCE since version 5.

Consequently, and as per the previous TinyMCE 5 announcement, the empty textcolor plugin has now been removed.

Text Pattern

The textpattern functionality is no longer a plugin. It is now a Core part of TinyMCE 6.0.

In TinyMCE 6.0, there is no setting or specifying this functionality in the plugins option.

All references to textpattern should be removed from your plugin configuration. Leaving references to removed plugins in a plugin configuration will cause console errors documenting the plugin failing to load.

Properties

This section documents the improvements, changes and fixes made to TinyMCE 6.0 APIs.

It also documents the TinyMCE 6.0 APIs that have been removed.

Fixed properties

tinymce.settings

When a TinyMCE editor instance was ended, the global setting, tinymce.settings, which is set at editor initialisation, retained references to DOM elements from the no-longer extant editor instance.

With this release, tinymce.settings is no longer set at editor initialisation and has subsequently been removed.

Removed or deprecated properties

editor.settings

The editor.settings property has been replaced by the Options API.

It has, consequently, been removed from TinyMCE 6.0.

fixed

The fixed property has been removed from the tinymce.html.Node class.

shortEnded

The shortEnded property has been removed from the tinymce.html.Node class.

Schema

This section documents the one improvement and one change made to TinyMCE 6.0 Schemas.

New and improved schema

TinyMCE 6.0 instances now use HTML 5 as the default schema.

The previous default was, for practical purposes, also HTML 5 but no specific schema was set. This change formalises and makes explicit what was, previously, only implicit.

html5-strict is still an available schema option and is unchanged from TinyMCE 5.x.

Changed schema

Assignment operator character

The assignment operator character — : — has been changed to ~ for the valid_elements and extended_valid_elements schemata.

The : is also used to assign a [xlink:href] rule and this was not possible in these schemata because the colon character was acting as an assignment operator.

This change allows both schemata to set attribute values for the valid_elements and extended_valid_elements options using the ~ character and assign [xlink:href] rules as expected.

Strings and Internationalization

This section documents the single fix made to TinyMCE 6.0 strings and internationalization.

Fixed strings

color picker dialog

The TinyMCE color picker presents tooltip labels showing the name of the color the pointer is hovering over.

These labels presented these names in English in multiple instances when they should have presented the names in other languages (eg German).

With this update, these tooltip labels now present in the expected language.

UI and UX elements and components

This section documents the improvements, changes, fixes and removals made to TinyMCE 6.0 UI and UX elements and components.

New and improved UI and UX elements and components

buttonType

buttonType is a new property available for button components used in dialogs.

It replaces the, now deprecated property, primary.

The primary property was boolean, allowing for only two states: true and false.

The new buttonType property can take any of three states: 'primary', 'secondary', and 'toolbar'.

Setting buttonType: 'primary' is the same as setting primary: true.

Setting buttonType: 'secondary' is the same as setting primary: false.

Dialog re-rendering

Previously, when a component in a TinyMCE dialog changed — for example, when a next or previous button was clicked — the entire dialog was re-rendered.

In TinyMCE 6.0, the initialData type is now Partial<T>, which matches the underlying implementation.

And, relatedly, the redial API now re-renders only the portions of a dialog that have changed.

Format Painter

The Format Painter toolbar item now has a matching menu item.

setData method in the dialog API

The dialog API’s setData method now uses a deep merge algorithm.

Consequently, it now supports partial nested objects.

Editor text entry height

In TinyMCE 5.x, editors without a height value specified in the TinyMCE configuration defaulted to a 200px high editor.

In TinyMCE 6.0, editors without a height value specified in the TinyMCE configuration default to a 400px high editor.

As was the case in TinyMCE 5.x, this new default only applies to editors in iframe mode, not inline mode.

Also, editors now have a min-height default value of 100px. This prevents the editor UI from disappearing during re-sizing, which prevented users from interacting with the editor.

Editor theme now fetched in parallel with icons, plugins, and language packs

Previously, when a theme was requested, TinyMCE downloaded it completely before fetching accompanying components, such as icons, plugins, and language packs.

With this release, when a theme is called, related components are downloaded in parallel with the theme.

imagepreview

The new imagepreview dialog component allows for previewing and zooming of any image URL.

Insertion point placement improved when clicking on noneditable elements

Clicking on or near the boundaries between editable and noneditable elements (eg in the padding of a noneditable element containing an editable element), there are established and expected norms as to where the insertion point should present after the click.

With this release, TinyMCE has improved the placing of the insertion point on either side of a noneditable element when clicking on or near these boundaries.

slider

TinyMCE 6.0 includes a new slider dialog component.

Changed UI and UX elements and components

buttonType

buttonType is a new property available as a basic panel component of dialogs.

It replaces the, now deprecated property, primary.

.disabled properties renamed to .enabled in TinyMCE UI classes

Previously, TinyMCE UI classes provided a .disabled property.

In TinyMCE 6, this property has been renamed to .enabled.

Also, the Dialog API, which previously offered the disable(<name>) and enable(<name>) functions, now offers a single setEnabled(<name>, <state>) function.

The Powered by Tiny text string set in the TinyMCE status bar is now the TinyMCE logo.

The logo still responds appropriately when TinyMCE is used with a screen reader.

Status bar path delimiter character changed

The default status bar path delimiter character (also known as a breadcrumb separator) has been changed.

It was » (the double, right-pointing, angled quotation mark).

It is now (the single, right-pointing, angled quotation mark).

Fixed UI and UX elements and components

Anchor elements now render correctly when allow_html_in_named_anchor: true

When allow_html_in_named_anchor was set to true, content inside the anchor element was wrapped such that each character was set on a new line.

With this release, setting allow_html_in_named_anchor: true sets characters inside the anchor element as entered, with no wrapping of each character to a new line.

Default UI theme, silver, no longer renders incorrectly as plugins load

Previously, TinyMCE’s default UI theme, silver, was initialised such that it rendered some UI components before plugins that, potentially, would override or adjust the defaults presented by silver.

This resulted in these UI elements rendering incorrectly.

With this release, silver no longer renders these UI elements before plugins get to override or adjust, and these components no longer render incorrectly.

Dialog labels now rendering correctly

Previously, TinyMCE dialog labels and other UI elements were rendered with HTML markup.

With this release, the text and label properties of these elements are now rendered as plain text, as expected.

editor.selection.setRng

Calls to editor.selection.setRng now update the insertion point bookmark when focus is returned to the editor.

For the end-user, this change means content dragged from outside the TinyMCE editor into the editable area will be placed into the TinyMCE document where the insertion point appears as the drag is completed.

This is the expected behavior.

Previously, in Google Chrome 93 and later, navigating through TinyMCE menus using the keyboard did not cause screen readers to read out menu items.

This has been corrected with this release.

Screen readers now read menu items as the TinyMCE menus are traversed, as expected.

This patch was contributed by community member, Weston Dransfield.
Tables are now positioned using margin, not float

TinyMCE previously used float to position tables to the left or right of the viewport (the working area available to the TinyMCE editor). This caused multiple layout and UX problems.

As of TinyMCE 6.0, tables are positioned using margin rather than float. This prevents these layout and UX problems occurring.

However, when upgrading to TinyMCE 6.0, there are two things to be aware of:

First, TinyMCE 6.0 does not alter existing documents. Extant TinyMCE documents with tables that were aligned to either left or right will still have the float property assigned when opened and edited unless and until their alignment is altered.

If an extant TinyMCE document with an aligned table is opened using TinyMCE 6.0 and the alignment of the table is re-set, TinyMCE 6.0 will remove the float property and use the margin property to set the alignment.

Second, if the previous behavior is required, a custom format will need to be created.

Text presentation corrections on some UI elements

The text on some buttons and menu items incorrectly presented in Title Case.

The underlying strings have been corrected and these items now present in sentence case, as expected.

Removed or deprecated UI and UX elements and components

mobile theme

The mobile theme was deprecated when integrated support for mobile devices was added to the silver theme.

The mobile theme has been removed.

primary

The primary property was a boolean property available for button components used in dialogs

It has been deprecated and replaced by the new buttonType property.

Style field in the Advanced tab of the Insert/Edit Image dialog

The Style field, previously presented in the Advanced tab of the Insert/Edit Image dialog has been removed.

When the Advanced tab in the Insert/Edit Image dialog was selected, a Style text-entry field (auto-populated with the selected image’s properties and associated values) was one of the fields presented.

A bug in TinyMCE prevented the field from being edited, however.

Separate from the text-entry bug, supporting edits in this field properly is out-of-scope for this release of TinyMCE.

An internal feature request to re-implement this feature when it can be done so safely has been logged.

Typing the End key no longer causes the insertion point to leave an editable element

Pressing the End key when the insertion point is somewhere in a line of editable text should move the insertion point to the end of that line.

In the previous release of TinyMCE, pressing this key moved the insertion point outside the element containing the editable text entirely.

As of this TinyMCE release, pressing the End key when the insertion point is in a line of editable text moves the insertion point to the end of that line, as expected.