Changelog
| This is the TinyMCE Community version changelog. For information about the latest Tiny Cloud or TinyMCE Enterprise Release, see: TinyMCE Release Notes. |
6.8.2 - 2023-12-11
Fixed
-
Bespoke select toolbar buttons including
fontfamily,fontsize,blocks, andstylesincorrectly used plural words in their accessible names. -
The
alignbespoke select toolbar button had an accessible name that was misleading and grammatically incorrect in certain cases. -
Accessible names of bespoke select toolbar buttons including
align,fontfamily,fontsize,blocks, andstyleswere incorrectly translated. -
Clicking inside table cells with heavily nested content could cause the browser to hang.
-
Toggling a list that contains an LI element having another list as its first child would remove the remaining content within that LI element.
6.8.1 - 2023-11-29
6.8.0 - 2023-11-22
Added
-
CSS files are now also generated as separate JS files to improve bundling of all resources.
-
Added new StylesheetLoader.loadRawCss API that can be used to load CSS into a style element.
-
Added new StylesheetLoader.unloadRawCss API that can be used to unload CSS that was loaded into a style element.
-
Added force_hex_color editor option. Option 'always' converts all RGB & RGBA colors to hex, 'rgb_only' will only convert RGB and not RGBA colors to hex, 'off' won’t convert any colors to hex.
-
Added default_font_stack editor option that makes it possible to define what is considered a system font stack.
-
New
sandbox_iframesoption that controls whether iframe elements will be added asandbox=""attribute to mitigate malicious intent. -
New
convert_unsafe_embedsoption that controls whether<object>and<embed>elements will be converted to more restrictive alternatives, namely<img>for image MIME types,<video>for video MIME types,<audio>audio MIME types, or<iframe>for other or unspecified MIME types.
Improved
-
Improved the tooltips of picker buttons for the urlinput components in the "Insert/Edit Image" and "Insert/Edit Link" dialogs.
-
Inline dialog will now respect
size: 'large'argument in the dialog spec. -
Bespoke dropdown toolbar buttons including
align,fontfamily,fontsize,blocks, andstylesdid not include their visible text labels in their accessible names.
Fixed
-
Editor would convert urls that are not http/s or relative resulting in broken links.
-
Calling the
setProgressStateAPI would cause the window to be scrolled when the editor wasn’t fully visible. -
Applying heading formatting to the content of the
summaryelement extended its application to the content of the parent details element. -
Setting the content with an attribute that contains a self-closing HTML tag did not preserve the tag.
-
Screen readers now announce the selected color of
forecolorandbackcolorbuttons. -
Resize handles would not appear on editable images in a non-editable context.
-
Corrections and copy-edits to the
addIconAPI documentation. -
The dialog size was not updated when the
sizeargument was changed when redialing a dialog. -
Toggling a list that contains an LI element having another list as its first child would remove the remaining content within that LI element.
-
Custom block element wasn’t considered block element in some cases.
-
The editor no longer forcefully takes focus when a notification closes while the focus is outside of the editor.
-
An empty element with a
contenteditable="true"attribute within a table cell would not be treated as content and get removed if backspace or delete was being pressed. -
Removing an LI element containing a
detailselement would incorrectly merge its content. -
The function
getModifierStatedid not work on events passed through the editor as expected. -
Search and replace plugin would incorrectly find matching text inside non-editable root elements.
-
Removed use of
asyncfor editor rendering which caused visual blinking when reloading the editor in-place. -
Toggling off one format on the caret when multiple formats was toggled on would toggle all of them off.
-
Merging an external
pinside alistvia delete or backspace would incorrectly try to move a parent element inside a child element. -
Directionality would not be consistently applied to the entire accordion block.
-
The
fontsizeinputtoolbar item was causing console warnings when toolbar items were clicked. -
Menubar buttons with more than one word would sometimes wrap into two lines.
-
Creating a new
livia enter inside a nested list would not inherit styles from the sourceli. -
Screen readers now announce the active autocompleter item.
-
Dialog collection items would not display any icons chosen from icon pack.
6.7.3 - 2023-11-15
Changed
-
Zero width no-break space (U+FEFF) characters are removed from content passed to
setContent,insertContent, andresetContentAPIs. -
Zero width no-break space (U+FEFF) characters in initial content are not loaded into the editor upon initialization.
Fixed
-
Specific HTML content containing unescaped text nodes caused mXSS when using undo/redo.
-
Specific HTML content containing unescaped text nodes caused mXSS when using the
getContentandsetContentAPIs with theformat: 'raw'option, which also affected theresetContentAPI and the draft restoration feature of the Autosave plugin.
6.7.2 - 2023-10-25
Fixed
-
The function
getModifierStatedid not work on events passed through the editor as expected. -
Indenting or outdenting a list item that contained non list item siblings after it would result in those siblings being removed.
-
Removed use of async for editor rendering which caused visual blinking when reloading the editor in-place.
-
Toggling a list that contained a list item element — <li> — which, in turn, contained another list item element as its first child, removed other content within the first list item element.
6.7.1 - 2023-10-19
Fixed
-
Specific HTML content caused mXSS when using undo/redo.
-
Specific HTML content caused mXSS when using the
getContentandsetContentAPIs with theformat: 'raw'option, which also affected theresetContentAPI and the draft restoration feature of the Autosave plugin. -
Notification messages containing HTML were not properly XSS sanitized before being displayed.
6.7.0 - 2023-08-30
Added
-
New
help_accessibilityoption displays the keyboard shortcut to open the in-application help in the status bar. -
Added a new
InsertNewBlockBeforecommand which inserts an empty block before the block containing the current selection. -
Added a new
InsertNewBlockAftercommand which inserts an empty block after the block containing the current selection.
Improved
-
Adding a newline after a table would, in some specific cases, not work.
-
Menus now have a slight margin at the top and bottom to more clearly separate them from the frame edge.
-
Updated More toolbar button tooltip text from More… to Reveal or hide additional toolbar items.
-
Where multiple case sensitive variants of a translation key are provided, they will now all be preserved in the translation object instead of just the lowercase variant.
-
Improved screen reader announcements of the column and row selection in the grid presented by the Table menu and toolbar item.
-
Improved the keyboard focus visibility for links inside dialogs.
Changed
-
Change
UndoLevelTypefromenumto union type so that it is easier to use. -
The pattern replacement removed spaces if they were contained within a tag that only contained a space and the text to replace.
-
If loading content CSS takes more than 500ms, the editor will be set to an in progress state until the CSS is ready.
Fixed
-
Applying an ordered or unordered list to a selected checklist incorrectly turned the list into paragraphs.
-
Returning an empty string in a custom context menu update function resulted in a small white line appearing on right-click and the browser-native context menu would not present.
-
For sufficiently long URLs and sufficiently wide windows, URL autocompletion hid middle portions of the URL from view.
-
Numeric input in toolbar items did not disable when a switching from edit to read-only mode.
-
The Quick Toolbars plugin showed text alignment buttons on pagebreaks.
-
Creating lists in empty blocks sometimes, and incorrectly, converted adjacent block elements into list items.
-
Creating a list from multiple
<div>elements only created a partial list. -
Tab navigation incorrectly stopped around
iframedialog components. -
It was possible to delete the sole empty block immediately before a
<details>element if it was nested within another<details>element. -
Deleting
<li>elements that only contained<br>tags sometimes caused a crash. -
It was possible to remove the
<summary>element from a<details>element by dragging and dropping. -
It was possible to break
<summary>elements if content containing block elements was dragged-and-dropped inside them. -
Contents were not removed from the drag start source if dragging and dropping internally into a transparent block element.
-
Using the Media plugin unexpectedly changed
<script>tags in the editor body to<image>tags. -
In some circumstances, pressing the Enter key scrolled the entire page.
-
The border styles of a table were incorrectly split into a longhand form after table dialog updates.
-
Links in Help → Help → Plugins and Help → Help → Version were not navigable by keyboard.
-
Fixed the inability to insert content next to the
<details>element when it is the first or last content element. Pressing the Up or Down arrow key now inserts a block element before or after the<details>element. -
An empty element with a
contenteditable="true"attribute within a noneditable root was deleted when the Backspace key was pressed. -
The
color_colsoption was not respected when set to the value 5 with a customcolor_mapspecified. -
In Safari on macOS, deleting backwards within a
<summary>element removed the entire<details>element if it had no other content.
6.6.1 - 2023-08-02
Added
-
Restored filtering option,
pad_empty_with_br. Set totrueto pad empty block elements with<br>tags instead of the character entity.
Improved
-
When Safari is the host browser, content updates for iframe dialog components with
streamContent: trueset are now throttled to 500ms intervals.
Fixed
-
On Safari and Firefox, scroll positions were not always maintained when updating the content of a
streamContent: trueiframe dialog component. -
On Safari, iframe dialog components did not consistently autoscroll to the end of the scrollable area when
streamContent: truewas set. -
Scrolling behavior was inconsistent when updating a
streamContent: trueiframe dialog component with content lacking an HTML document type declaration. -
A warning message was sometimes printed to the browser console when closing a dialog that contained an iframe component.
-
Lists could not be created within editable areas nested inside non-editable areas.
-
On Safari and Firefox, the border around
iframedialog components did not highlight when focused. -
Right-clicking on an image in a non-editable context opened the Image context menu.
-
The
color_colsoption was not respected when a customcolor_mapwas defined. -
The
color_colsoptions were were not rounded to the nearest number when set to a decimal number.
6.6.0 - 2023-07-12
Added
-
Added a new property value —
bottom— for inline dialog configurations that anchors the dialog to the bottom of the editor. -
Added a new property —
persistent— for inline dialog configurations that will stop the dialog closing when clicking away from it. -
New
ai,ai-promptandsendicons. -
Added a new property —
streamContent— for theiframedialog component. This causessetData()to update content without reloading the frame, and end scroll positions will be maintained as new content streams in. -
AI Assistant plugin toolbar items added to the default toolbar and AI Assistant plugin menu items added to the default menu bar.
-
Added a new property —
border— for theiframedialog component that allows a border to be added. -
Added a new property —
align— for the label dialog component that controls text alignment.
Improved
-
When defining a modal or inline dialog, if the buttons property is an empty array, or is not defined at all, the footer will now no longer be rendered.
-
The
iframedialog component now has a minimum height of 200px. -
Improved detection of scrollable containers when the
ui_mode: 'split'option is set.
6.5.0 - 2023-06-13
Added
-
Support for the
hhash parameter in Vimeo video URLs in the Media plugin. -
New
table_merge_content_on_pasteoption which disables the merging behaviour when pasting a table inside an existing table. -
New optional
defaultExpandedIdsandonToggleExpandoptions to thetreecomponent config. -
New optional
defaultSelectedIdoption to thetreecomponent config. -
New
accordionplugin with theInsertAccordioncommand. -
New
accordionandaccordion-toggleicons. -
New
details_initial_stateanddetails_serialized_stateoptions. -
New
init_content_syncoption that initializes the editor iframe usingdocument.writeinstead ofsrcdoc. -
New
newdocument_contentoption that sets the content presented in the editor on choosing File → New document or pressing the New document toolbar button. -
New
editable_rootoption that can be set tofalseto prevent editing of the editor’s root element. -
New
editor.setEditableRootAPI that sets the editable state of the editor root element. -
New
editor.hasEditableRootAPI that returnstrueorfalsedepending on the editable state of the editor root element. -
New
EditableRootStateChangeevent that gets dispatched when the state of the editable root is changed. -
Added Oxide styles for
dl,dt,dd,ol, andstrongelements in dialog body content.
Improved
-
Screen readers can now announce highlighted items listed in the Link dialog’s link combobox.
-
The
iconfield for a dialog’s footertogglebuttonis no longer mandatory. -
Toolbar buttons and menu items now present as disabled when they cannot be used because a selected element has a
contenteditable="false"attribute. -
Help text displayed at Help → Help → Keyboard Navigation re-written.
-
Translations added for Help text displayed at Help > Help > Keyboard Navigation.
-
For word count purposes these characters are now considered punctuation marks: $, ~, +, |, №, and `. They no longer increase a document’s word count.
-
Updated the
codesampleplugin dialog and thetemplateplugin dialog to use thelistboxcomponent to match other dialogs. -
If the selection contains more than one table cell, Quickbar toolbars are now positioned in the middle of the selection horizontally.
-
Exposed
dataTransferproperty of drag and drop events for elements with acontenteditable="false"attribute. -
Screen readers now announce instructions for resizing the editor using arrow keys, when the resize handle is focused.
-
Dialog
tabpaneltab labels are now allowed to word wrap for better readability with long labels. -
Added newlines before and after
detailselements in the output HTML. -
Added padding for empty
summaryelements so they can be properly edited.
Changed
-
The
caption,addressanddtelements no longer incorrectly allow non-inline child elements when the editor schema is set to HTML 4. -
SVG icons for back and foreground colors now use
classinstead ofidto identify SVG elements that should change color. -
Anchor tag elements —Â
<a>— no longer incorrectly allow non-inline child elements when the editor schema is set to HTML 4. -
Help dialog was restored to
mediumwidth for better readability.
Fixed
-
Right-clicking on a merge tag instance presented different highlighting depending on the host browser.
-
When macOS was the host operating system, pressing Command+backspace did not add an undo level.
-
Ctrl+backspace and Ctrl+delete did not restore the correct insertion point position after a redo operation.
-
In the
treecomponent, a selected item in a directory would not stay selected after collapsing the directory. -
Enabling or Disabling checkboxes would not set the correct classes and attributes.
-
Entering a newline would, in some setups, place the insertion point in the wrong paragraph.
-
Redial would, in some situations, cause select elements not to have an initial value selected when they should have.
-
The Table toolbar was visible even if the table was within a host element with a
contenteditable="false"attribute set. -
Quickbar toolbars were incorrectly shown for elements with a
contenteditable="false"attribute set in a root with acontenteditable="false"attribute set. -
When Chrome was the host browser, adding a newline when the insertion point was placed after a table could, in some specific situations, not generate the expected newline.
-
Show the calculated height and width of Media Embed elements in the
mediaplugin dialog. -
Removing an image that failed to upload from an empty paragraph left the paragraph without a padding
<br>tag. -
Allow a Media Embed element to be correctly resized when using the
mediaplugin dialog by converting the Media Embed element to a standalone iframe. -
In some circumstances, an inline alert in the Search and Replace dialog persisted when it was not necessary.
-
Context toolbars displayed the incorrect status for the
advlistplugin buttons. -
In Safari running on iOS, Korean characters merged onto the previous line upon typing after inserting a newline by pressing Enter.
-
Initiating the editor with a table as the first element resulted in resize handles being displayed around the table even when the editor did not have focus.
-
If the insertion point was between two images, pressing the Backspace key would, in some situations, delete the image after the insertion point instead of the image before the insertion point.
-
Directionality commands could set the
dirattribute on elements with acontenteditable="false"attribute set when these elements were within a root with acontenteditable="false"attribute set. -
The content of the dialog body could not be scrolled.
-
Some toolbar items, when in a not-enabled state, did not render the
not-allowedmouse pointer. -
Formats were incorrectly applied to the closest editable element if the selection was in a
contenteditable="false"context. -
Formats were incorrectly removed from the closest editable element if the selection was in a
contenteditable="false"context. -
Formatter API,
canApply, was not returningfalsewhen the selection was in acontenteditable="false"context. -
When dragging image elements and dropping the image in the editor the
dragendevent would sometimes not fire when Firefox was the host browser. -
It was possible to remove links in noneditable contents with the
unlinkeditor command. -
Direction was not visually changing when using the Directionality plugin on an element which had the
directionCSS property set. -
Whitespace between transparent elements was incorrectly converted into empty paragraphs.
-
Popups were not constrained within the scrollable container when in a shadow root.
-
Pressing arrow keys inside RTL elements would move the insertion point in an incorrect direction when moving over elements with the
contenteditableattribute set tofalse. -
Inserting two tables consecutively without focus in the editor resulted in the second table being inserted at the wrong position.
-
Pasting content into the editor did not fire
beforeinputandinputevents. -
In some cases, exiting a
blockquoteelement could fail when the insertion point was positioned at the end of theblockquote. -
Templates containing an
<html>tag were not parsed before being rendered for preview. -
Typing after deleting formatted content could remove a space at the start of the typing.
-
Invalid markup in Notification and Dialog close buttons.
-
In dialogs, an incorrect
aria-describedbyattribute caused the dialog body to be announced when using a screen reader. -
The sticky toolbar did not render correctly when transitioning from the custom editor view to the main view.
-
Saving the Table Properties dialog after changing properties unrelated to cells would overwrite cell properties set by the Cell Properties dialog.
-
Fixed the constrained bounds calculation for dismissal of the toolbar when using
toolbar_location: 'bottom'. -
Pressing the Backspace or Delete key when the insertion point was within a
detailselement resulted in broken markup. -
Making the selection into a list did not work if the selection included a block element with a
contenteditable="false"attribute. -
Inserting elements in the middle of the summary caused two summaries to appear within
detailselements.
6.4.2 - 2023-04-26
Fixed
-
The editor displayed a notification error when it failed to retrieve a blob image uri.
-
Tab navigation no longer incorrectly stops at menu buttons within toolbar groups.
-
The
urlinputdialog component would not open the type-ahead dropdown when the input value was reset to an empty string. -
Redial would, in some circumstances, cause elements to not have an initial value selected when they should have.
-
When hovering over tree dialog components the mouse pointer rendered incorrectly.
-
The
tox-buttonandtox-button-secondarybuttons now support thehover,active,focus, anddisabledstates. -
Setting an invalid unit in the
fontsizeinputchanged it to the default value instead of reverting it to the previous, and valid, value. -
Selection was not correctly scrolled horizontally into view when using the
selection.scrollIntoViewAPI. -
The contextual toolbar displayed the status of Advanced List Premium plugin icons incorrectly.
-
The
quickimagetoolbar button failed to insert images selected from the local computer when running on Google Chrome for macOS.
6.4.1 - 2023-03-29
Fixed
-
The
fontsizeinputincrease and decrease size buttons now work on TinyMCE mobile. -
The TinyMCE editor toolbar is now accessible for all screen widths; it no longer collapses into an inaccessible vertical line when the screen is scrolled horizontally.
-
Reverted the changes made, in TinyMCE 6.4.0, to UI button colors in focus, active, and enabled states.
6.4.0 - 2023-03-16
Added
-
New
treecomponent that can be used in dialog body panel. -
renderUIproperty in theThemetype can now return aPromise<RenderResult>instead ofRenderResult. -
New
editor.selection.isEditableAPI method that returns whether the current selection is editable. -
New
editor.dom.isEditableAPI method that returns whether the specified node is editable. -
New
setTextandsetIconmethods added to menu button and toolbar button APIs. -
New
highlight_on_focusoption which enables highlighting the content area on focus. -
New
fontsizeinputtoolbar item which allows the user to set the size via input and also increase and decrease it with+and-buttons. -
Added
skip_focuscheck to the ToggleToolbarDrawer command. -
New
font_size_input_default_unitoption allows to use of numbers without a unit infontsizeinputand have them parsed with the default unit, if it is not defined the default ispt. -
New
groupandtogglebuttonin view. -
New
togglebuttonin dialog footer buttons. -
Added
toggleFullscreento dialog API. -
New
text-size-increaseandtext-size-decreaseicons. -
New
xss_sanitizationoption to allow disabling of XSS sanitization. -
Added the top right close button of modal dialogs to the tabbing order. The 'x' button in these dialogs can now be accessed using keyboard navigation.
-
New
ui_modeoption for editor in scrollable containers support. -
The sidebar element now has the accessibility role
regionwhen visible and the accessibility rolepresentationwhen hidden. -
The
tox-custom-editorclass now has a border highlight when it is selected. -
An element could be dropped onto the decendants of an element with a
contenteditable="false"attribute. -
Checkmark did not show in menu color swatches.
-
Add support for navigating inside the tree component using arrow keys and shift key.
Improved
-
Direct invalid child text nodes of list elements are now wrapped in list item elements.
-
Templates are now be parsed before preview and insertion to make preview consistent with inserted template content and prevent XSS.
-
Pressing backspace on an empty line now preserves formatting on the previous empty line.
-
Pressing enter inside the
fontsizeinputinput would not move the focus back into the editor content. -
Drag and drop events for elements with a
contenteditable="false"attribute now includes target element details. -
Updated focus, active, and enabled colors of UI buttons for improved contrast against the UI color.
Changed
-
The Link plugin’s context menu items will no longer appear for
contenteditable="false"links. -
The formatting of elements with a
contenteditable="false"attribute are no longer cloned to new cells when new table rows are created. -
Changed the color of
@dialog-table-border-color, and added right padding to the first cell of dialog table.
Fixed
-
Sometimes the editor would finish initializing before the theme would have finished loading.
-
The
searchreplacemodal closed incorrectly when clicking outside of the alert that pops up when no match is found. -
The text color or background color picker toolbar buttons did not update when the text color or background color was changed using the equivalent commands in the Format menu.
-
The
onSetupapi function would not run when defining custom group toolbar button. -
The foreground and background menu icons would not properly update to display the last used color.
-
Added new
setIconFillfunction toeditor.ui.addNestedMenuItem. -
Pasting links to text would sometimes not generate the correct undo stack on Safari.
-
Toolbar split buttons in Advanced List plugin to show the correct state when the cursor is in a checklist.
-
Dragging transparent elements into transparent block elements could produce invalid nesting of transparents.
-
The
editor.insertContentAPI would insert contents inside elements with acontenteditable="false"attribute if the selection was inside the element. -
Closing a dialog would scroll down the document in Safari.
-
Inline headers would not work in some situations when the editor was moved too far right horizontally.
-
Quick toolbars were incorrectly rendered during the dragging of elements with a
contenteditable="false"attribute. -
Selection of images, horizontal rules, tables or elements with a
contenteditable="false"attribute was possible if they were within an element with acontenteditable="false"attribute. -
Ranged deletion of formatted text using selection or keyboard shortcut would sometimes cause Blink and Webkit browsers to recreate tags upon typing, which may result in inconsistent tags.
-
Visual characters were rendered inside elements with a
contenteditable="false"attribute. -
Lists with an element with a
contenteditable="false"attribute as their root were incorrectly editable using list API commands, toolbar buttons and menu items. -
Color picker dialog would not update the preview color if the hex input value was prefixed with the
#character. -
Table cell selection was possible even if the element being selected was within an element with a
contenteditable="false"attribute. -
Table commands were modifying tables that were within an element with a
contenteditable="false"attribute. -
Fake carets were rendered for elements with a
contenteditable="false"attribute and for tables within an element with acontenteditable="false"attribute. -
Textareas with scrollbars in dialogs would not render rounded corners correctly on some browsers.
-
It was possible to open links inside the editor if the editor root was an element with a
contenteditable="false"attribute. -
Inline boundary was rendered for boundary elements that had a
contenteditable="false"attribute. -
Clicking on a disabled split button would call the
onActioncallback. -
The Edit Link dialog incorrectly retrieved the URL value when opened immediately after the link insertion.
-
The
ForwardDeleteandDeleteeditor commands were deleting content within elements with acontenteditable="false"attribute. -
The Backspace and Forward Delete keys were deleting content within elements with a
contenteditable="false"attribute. -
Inserting newlines inside an editable element that was inside an element with a
contenteditable="false"attribute root would sometimes try to split the editable element. -
Creating a list in a table cell when the caret is in front of an anchor element would not properly include the anchor in the list.
-
Dragging and dropping elements with a
contenteditable="false"attribute on table borders would remove the element on drop. -
Elements with a
contenteditable="false"attribute would be removed when dragged and dropped within a root element with acontenteditable="false"attribute. -
Formatting could be applied or removed to list items with a
contenteditable="false"attribute that were inside an element with acontenteditable="false"attribute. -
Annotation were not removed if the annotation was deleted immediately after being created.
-
Inserting a link for a selection from quickbars did not preserve formatting.
-
Inline dialog position was not correct when the editor was not inline and was contained in a
fixedorabsolutepositioned element. -
Sticky toolbars did not fade transition when undocking in classic iframe mode.
-
Inserting elements that were not valid within the closest editing host would incorrectly split the editing host.
-
The
color_colsoption was not respected in theforecolororbackcolorcolor swatches. -
Drag and dropping the last element with a
contenteditable="false"attribute out of its parent block would not properly pad the parent block element. -
Applying heading formats from
text_patternsproduced an invisible space before a word. -
Opening color swatches caused the browser tab to crash when
color_colsor other column option was set to 0. -
Opening a menu button in the footer of a dialog after a redial threw an error.
-
After closing a view, the
more…toolbar button disappeared if the editor hadtoolbar_mode: 'sliding'and the toolbar was opened. -
Inline dialogs would open partially off screen when the toolbar had a small width.
-
The
autoresizeplugin would cause infinite resizing whencontent_csswas set todocument.
6.3.0 - 2022-11-23
Added
-
New
expandfunction added totinymce.selectionwhich expands the selection around the nearest word. -
New
expandfunction added totinymce.dom.RangeUtilsto return a new range expanded around the nearest word. -
New
color_map_backgroundandcolor_map_foregroundoptions which set the base colors used in thebackcolorandforecolortoolbar buttons and menu items. -
Added optional
storageKeyproperty tocolorinputcomponent andcolorswatchfancy menu item. -
New
addViewfunction added toeditor.ui.registrywhich makes it possible to register custom editor views. -
New
ToggleViewcommand which makes it possible to hide or show registered custom views. -
New
color_default_foregroundandcolor_default_backgroundoptions to set the initial default color for theforecolorandbackcolortoolbar buttons and menu items. -
New
getTransparentElementsfunction added totinymce.html.Schemato return a map object of transparent HTML elements. -
Added
ToggleToolbarDrawerevent to subscribe to toolbar’s opening and closing.
Improved
-
Transparent elements, like anchors, can now contain block elements.
-
Colorswatch now displays a checkmark for selected color.
-
Color picker dialog now starts on the appropriate color for the cursor position.
Changed
-
Transparent elements, like anchors, are now allowed in the root of the editor body if they contain blocks.
-
Colorswatch keyboard navigation now starts on currently selected color if present in the colorswatch.
-
setContentis now allowed to accept any custom keys and values as a second options argument.
Fixed
-
Parsing media content would cause a memory leak, which for example occurred when using the
getContentAPI. -
Dragging a noneditable element toward the bottom edge would cause the page to scroll up.
-
Range expanding capabilities would behave inconsistently depending on where the cursor was placed.
-
Compilation errors were thrown when using TypeScript 4.8.
-
Line separator scrolling in floating toolbars.
-
A double bottom border appeared on inline mode editor for the
tinymce-5skin. -
The editor header showed up even with no menubar and toolbar configured.
-
Inline text pattern no longer triggers if it matches only the end but not the start.
-
Matches of inline text patterns that are similar are now managed correctly.
-
Using
editor.selection.getContent({ format: 'text' })oreditor.getContent({ format: 'text' })would sometimes deselect selected radio buttons. -
The context toolbar prevented the user from placing the cursor at the edges of the editor.
-
The Quick Insert context toolbar provided by the
quickbarsplugin showed when the cursor was in a fake block caret. -
The
editor.selection.getRng()API was not returning a proper range on hidden editors in Firefox. -
The
editor.selection.getBookmark()API was not returning a proper bookmark on hidden editors in Firefox. -
Dragging a noneditable element before or after another noneditable element now works correctly.
-
The restored selection after a redo or undo action was not scrolled into view.
-
A newline could not be inserted when the selection was restored from a bookmark after an inline element with a
contenteditable="false"attribute. -
The global
tinymce.dom.styleSheetLoaderwas not affected by thecontent_css_corsoption. -
The caret was moved to the previous line when a text pattern executed a
mceInsertContentcommand on Enter key when running on Firefox.
6.2.0 - 2022-09-08
Added
-
New
text_patterns_lookupoption to provide additional text patterns dynamically. -
New promotion element has been added to the default UI. It can be disabled using the new
promotionoption. -
New
format_noneditable_selectoroption to specify thecontenteditable="false"elements that can be wrapped in a format. -
Added
allowas a valid attribute for theiframeelement in the editor schema. -
New
searchfield in theMenuButtonthat shows a search field at the top of the menu, and refetches items when the search field updates.
Improved
-
The formatter can now apply a format to a
contenteditable="false"element by wrapping it. Configurable using theformat_noneditable_selectoroption. -
The autocompleter now supports a multiple character trigger using the new
triggerconfiguration. -
The formatter now applies some inline formats, such as color and font size, to list item elements when the entire item content is selected.
-
The installed and available plugin lists in the Help dialog are now sorted alphabetically.
-
Alignment can now be applied to more types of embedded media elements.
Changed
-
The
@menubar-row-separator-coloroxide variable no longer affects the divider between the Menubar and Toolbar. It only controls the color of the separator lines drawn in multiline Menubars. -
The
@toolbar-separator-coloroxide variable now affects the color of the separator between the Menubar and Toolbar only. -
Available Premium plugins, which are listed by name in the Help dialog, are no longer translated.
Fixed
-
The Autolink plugin did not work when text nodes in the content were fragmented.
-
Fixed multiple incorrect types on public APIs found while enabling TypeScript strict mode.
-
The number of blank lines returned from
editor.getContent({format: 'text'})differed between browsers. -
The editor focused via the
auto_focusoption was not scrolled into the viewport. -
Adding spaces immediately after a
contenteditable="false"block did not work properly in some circumstances. -
Elements with only
data-*custom attributes were sometimes removed when they should not be removed. -
Selecting a figure with
class="image"incorrectly highlighted the link toolbar button. -
Specifying a single, non-default list style for the
advlist_bullet_stylesandadvlist_number_stylesoptions was not respected. -
Fixed multiple issues that occurred when formatting
contenteditableelements. -
Spaces could be incorrectly added to
urlinputdialog components (commonly but not exclusively presented in the Insert/Edit Link dialog) in certain cases. -
The text patterns logic threw an error when there were fragmented text nodes in a paragraph.
-
Dragging a
contentEditable=falseelement towards a document’s edge did not cause scrolling. -
Parsing large documents no longer throws a
Maximum call stack size exceededexception. -
DomParser filter matching was not checked between filters, which could lead to an exception in the parser.
-
contenteditable="false"lists can no longer be toggled; andcontenteditable="true"list elements within these lists can no longer be indented, split into another list element, or appended to the previous list element by deletion. -
Removed extra bottom padding in the context toolbar of the
tinymce-5skin. -
Fixed a regression where pressing Enter added or deleted content outside the selection.
-
Fixed a bug where pressing Enter deleted selected
contenteditable="false"<pre>elements. -
The
editor.insertContent()API did not respect theno_eventsargument.
6.1.1 - 2022-07-27
Fixed
-
Invalid special elements were not cleaned up correctly during sanitization.
-
An exception was thrown when deleting all content if the start or end of the document had a
contenteditable="false"element. -
When a sidebar was opened using the
sidebar_showoption, its associated toolbar button was not highlighted. -
When converting a URL to a link, the
autolinkplugin did not fire anExecCommandevent, nor did it create an undo level. -
Worked around a Firefox bug which resulted in cookies not being available inside the editor content.
-
<pre>content pasted into a<pre>block that had inline styles or wasnoneditablenow merges correctly with the surrounding content. -
After a
codesamplewas pasted, the insertion point was placed incorrectly.
6.1.0 - 2022-06-29
Added
-
New
sidebar_showoption to show the specified sidebar on initialization. -
New
newline_behavioroption controls what happens when the Return or Enter key is pressed or themceInsertNewLinecommand is used. -
New
iframe_template_callbackoption in the Media plugin. Patch provided by Namstel. -
New
transparentproperty foriframedialog component. -
New
removeAttributeFilterandremoveNodeFilterfunctions added to the DomParser and DOM Serializer APIs. -
New
dispatchChangefunction added to the UndoManager API to fire the change with current editor status as level and current undoManager layer as lastLevel.
Improved
-
Clearer focus states for buttons while navigating with a keyboard.
-
Support annotating certain block elements directly when using the editor’s Annotation API.
-
The
mceLinkcommand can now take the value{ dialog: true }to always open the link dialog. -
All help dialog links to
https://www.tiny.cloudnow includerel="noopener"to avoid potential security issues.
Changed
-
The
end_container_on_empty_blockoption can now take a string of blocks, allowing the exiting of a blockquote element by pressing Enter or Return twice. -
The default value for
end_container_on_empty_blockoption has been changed to'blockquote'. -
Link menu and toolbar buttons now always execute the
mceLinkcommand. -
Toggling fullscreen mode when using the Fullscreen plugin now also fires the
ResizeEditorevent. -
Getting the editor’s text content now returns newlines instead of an empty string if more than one empty paragraph exists.
-
Custom elements are now treated as non-empty elements by the schema.
-
The autocompleter’s menu HTML element is now positioned instead of the wrapper.
-
Choice menu items will now use the
'menuitemradio'aria role to better reflect that only a single item can be active.
Fixed
-
Some Template plugin option values were not escaped properly when doing replacement lookups with Regular Expressions.
-
Copy events were not dispatched in readonly mode.
-
<pre>tags were not preserved when copying and pasting. -
The URL detection used for autolink and smart paste did not work if a path segment contained valid characters such as
!and:. -
In some cases pressing the Backspace or Delete key would incorrectly step into tables rather than remain outside.
-
Links opened when Alt+Enter or Option+Return was typed even when
preventDefault()was called on the keydown event. -
Inconsistent visual behavior between choosing Edit → Select All and typing Ctrl+A or Cmd+A when a document contained an image.
-
Ctrl+Shift+Home/End or Cmd+Shift+Up-arrow/Down-arrow did not expand the selection to a
contenteditable="false"element if the element was at the beginning or end of a document. -
Triple-clicking did not select a paragraph in Google Chrome in some circumstances.
-
Images were not showing as selected when selected along with other content.
-
Selection direction was not stored or restored when getting or setting selection bookmarks.
-
When text within an inline boundary element was selected and the right-arrow key was pressed, the insertion point incorrectly moved to the left.
-
In some versions of Safari, the
editor.selection.isForward()API could throw an exception due to an invalid selection. -
The selection is no longer incorrectly moved inside a comment by the
editor.selection.normalize()API. -
The
InsertParagraphormceInsertNewLinecommands did not delete the current selection like the native command does. -
The
InsertLineBreakcommand did not replace selected content. -
If selected content straddled a parent and nested list, cutting the selection did not always set the list style to
'none'on the parent list. -
Delete operations could behave incorrectly if the selection contains a
contenteditable="false"element located at the edge of content. -
Spaces were not added correctly on some browsers when the insertion point was immediately before or after a
contenteditable="false"block element. -
Images that used a Data URI were corrupted when the data wasn’t base64 encoded.
-
uploadImagesno longer triggers two change events if there is a removal of images on upload. -
Preview and Insert Template dialogs now display the correct content background color when using dark skins.
-
Dialogs no longer exceed window height on smaller screens.
-
UI components, such as dialogs, would in some cases cause the Esc keyup event to incorrectly trigger inside the editor.
-
Fixed incorrect word breaks in menus when the menu presented with a scrollbar.
-
Notifications did not properly reposition when toggling fullscreen mode.
-
Text alignments, such as flush left and centered, could not be applied to
<pre>elements. -
Indenting or outdenting list items inside a block element that was inside another list item did not work.
-
Changing the list type of a list within another block element altered the parent element that contained that list.
-
Pasting columns in tables could, in some circumstances, result in an invalid table.
-
Copying columns in tables could sometimes result in an invalid copy.
-
Changing table properties with the
table_style_by_cssoption set tofalsewould sometimes reset the table width. -
Custom elements added to otherwise blank lines were removed during serialization.
-
The editor’s autocompleter was not triggered at the start of nested list items.
-
Some function types in the TreeWalker API missed that it could return
undefined. -
Nuget packages for .NET and .NET Core are now configured to copy TinyMCE into
/wwwroot/lib/when TinyMCE is installed into a project.
6.0.3 - 2022-05-25
Fixed
-
Could not remove values when multiple cells were selected with the cell properties dialog.
-
Could not remove values when multiple rows were selected with the row properties dialog.
-
Empty lines that were formatted in a ranged selection using the
format_empty_linesoption were not kept in the serialized content. -
The
selement was missing from the default schema text inline elements. -
Some text inline elements specified via the schema were not removed when empty by default.
6.0.2 - 2022-04-27
Fixed
-
Some media elements wouldn’t update when changing the source URL.
-
Inline toolbars flickered when switching between editors.
-
Multiple inline toolbars were shown if focused too quickly.
-
Added background and additional spacing for the text labeled buttons in the toolbar to improve visual clarity.
-
Toolbar split buttons with text used an incorrect width on touch devices.
6.0.1 - 2022-03-23
Fixed
-
Fixed the dev ZIP missing the required
binscripts to build from the source. -
Fixed a regression whereby text patterns couldn’t be updated at runtime.
-
Fixed an issue where tables with colgroups could be copied incorrectly in some cases.
-
Naked buttons better adapt to various background colors, improved text contrast in notifications.
-
The autocompleter would not fire the
AutocompleterStartevent nor close the menu in some cases. -
It wasn’t possible to select text right after an inline noneditable element.
-
Fixed a double border showing for the
tinymce-5skin when usingtoolbar_location: 'bottom'. -
Clipboard content was not generated correctly when cutting and copying
contenteditable="false"elements. -
Fixed the box-shadow getting clipped in autocompletor popups.
-
The
buttonTypeproperty did not work for dialog footer buttons. -
Fix contrast ratio for error messages.
6.0.0 - 2022-03-03
Added
-
New
editor.optionsAPI to replace the oldeditor.settingsandeditor.getParamAPIs. -
New
editor.annotator.removeAllAPI to remove all annotations by name. -
New
Resource.unloadAPI to make it possible to unload resources. -
New
FakeClipboardAPI on thetinymceglobal. -
New
dispatch()function to replace the now deprecatedfire()function in various APIs. -
New
AutocompleterStart,AutocompleterUpdateandAutocompleterEndevents. -
New
mceAutocompleterClose,mceAutocompleterReloadcommands. -
New
mceInsertTableDialogcommand to open the insert table dialog. -
New
sliderdialog component. -
New
imagepreviewdialog component, allowing preview and zoom of any image URL. -
New
buttonTypeproperty on dialog button components, supportingtoolbarstyle in addition toprimaryandsecondary. -
The
tabindexattribute is now copied from the target element to the iframe.
Improved
-
New default theme styling for TinyMCE 6 facelift with old skin available as
tinymce-5andtinymce-5-dark. -
The default height of editor has been increased from
200pxto400pxto improve the usability of the editor. -
The upload results returned from the
editor.uploadImages()API now includes aremovedflag, reflecting if the image was removed after a failed upload. -
The
ScriptLoader,StyleSheetLoader,AddOnManager,PluginManagerandThemeManagerAPIs will now return aPromisewhen loading resources instead of using callbacks. -
A
ThemeLoadErrorevent is now fired if the theme fails to load. -
The
BeforeSetContentevent will now include the actual serialized content when passing in anAstNodeto theeditor.setContentAPI. -
Improved support for placing the caret before or after noneditable elements within the editor.
-
Calls to
editor.selection.setRngnow update the caret position bookmark used when focus is returned to the editor. -
The
emoticonplugin dialog, toolbar and menu item has been updated to use the more accurateEmojisterm. -
The dialog
redialAPI will now only rerender the changed components instead of the whole dialog. -
The dialog API
setDatamethod now uses a deep merge algorithm to support partial nested objects. -
The dialog spec
initialDatatype is nowPartial<T>to match the underlying implementation details. -
Notifications no longer require a timeout to disable the close button.
-
The editor theme is now fetched in parallel with the icons, language pack and plugins.
Changed
-
TinyMCE is now MIT licensed.
-
Moved the
pasteplugin’s functionality to TinyMCE core. -
The
paste_data_imagesoption now defaults totrue. -
Moved the
noneditableplugin to TinyMCE core. -
Renamed the
noneditable_noneditable_classoption tononeditable_class. -
Renamed the
noneditable_editable_classoption toeditable_class. -
Moved the
textpatternplugin to TinyMCE core. -
Renamed the
textpattern_patternsoption totext_patterns. -
Moved the
hrplugin’s functionality to TinyMCE core. -
Moved the
printplugin’s functionality to TinyMCE core. -
Moved non-UI table functionality to core.
-
The
DomParserAPI no longer uses a custom parser internally and instead uses the nativeDOMParserAPI. -
The
editor.getContent()API can provide custom content by preventing and overridingcontentin theBeforeGetContentevent. This makes it consistent with theeditor.selection.getContent()API. -
The
editor.setContent()API can now be prevented using theBeforeSetContentevent. This makes it consistent with theeditor.selection.setContent()API. -
Add-ons such as plugins and themes are no longer constructed using the
newoperator. -
A number of APIs that were not proper classes, are no longer constructed using the
newoperator. -
The Editor commands APIs will no longer fallback to executing the browsers native command functionality.
-
The Editor query command APIs will now return
falseor an empty string on removed editors. -
The
mceAddEditorandmceToggleEditorcommands now take an object as their value to specify the id and editor options. -
The
mceInsertTablecommand can no longer open the insert table dialog. Use themceInsertTableDialogcommand instead. -
The
pluginsoption now returns astringarray instead of a space separated string. -
The
mediaplugin no longer treatsiframe,video,audioorobjectelements as "special" and will validate the contents against the schema. -
The
images_upload_handleroption is no longer passed asuccessorfailurecallback and instead requires aPromiseto be returned with the upload result. -
The
tinymce.settingsglobal property is no longer set upon initialization. -
The
changeevent is no longer fired on first modification. -
The
GetContentevent will now always pass astringfor thecontentproperty. -
Changed the default tag for the strikethrough format to the
stag when using a html 5 schema. -
The
striketag is automatically converted to thestag when using a html 5 schema. -
Aligning a table to the left or right will now use margin styling instead of float styling.
-
The
:control character has been changed to~for the schemavalid_elementsandextended_valid_elementsoptions. -
The
primaryproperty on dialog buttons has been deprecated. Use the newbuttonTypeproperty instead. -
Changed the default statusbar element path delimiter from
»to›. -
Replaced the
Powered by Tinybranding text with the Tiny logo. -
The default minimum height of editor has been changed to 100px to prevent the UI disappearing while resizing.
-
RGB colors are no longer converted to hex values when parsing or serializing content.
-
Replaced the
isDisabled()function with anisEnabled()function for various APIs. -
Replaced the
enable()anddisable()functions with asetEnabled(state)function in various APIs. -
Replaced the
disabledproperty with anenabledproperty in various APIs. -
Replaced the
disable(name)andenable(name)functions with asetEnabled(name, state)function in the Dialog APIs. -
Renamed the
tinymce.Env.os.isOSXAPI totinymce.Env.os.isMacOS. -
Renamed the
tinymce.Env.browser.isChromeAPI totinymce.Env.browser.isChromiumto better reflect its functionality. -
Renamed the
getShortEndedElementsSchema API togetVoidElements. -
Renamed the
font_formatsoption tofont_family_formats. -
Renamed the
fontselecttoolbar button andfontformatsmenu item tofontfamily. -
Renamed the
fontsize_formatsoption tofont_size_formats. -
Renamed the
fontsizeselecttoolbar button andfontsizesmenu item tofontsize. -
Renamed the
formatselecttoolbar button andblockformatsmenu item toblocks. -
Renamed the
styleselecttoolbar button andformatsmenu item tostyles. -
Renamed the
lineheight_formatsoption toline_height_formats. -
Renamed the
getWhiteSpaceElements()function togetWhitespaceElements()in theSchemaAPI. -
Renamed the
mceInsertClipboardContentcommandcontentproperty tohtmlto better reflect what data is passed. -
Renamed the
default_link_targetoption tolink_default_targetfor bothlinkandautolinkplugins. -
Renamed the
rel_listoption tolink_rel_listfor thelinkplugin. -
Renamed the
target_listoption tolink_target_listfor thelinkplugin. -
The default value for the
link_default_protocoloption has been changed tohttpsinstead ofhttp. -
The default value for the
element_formatoption has been changed tohtml. -
The default value for the
schemaoption has been changed tohtml5. -
The default value for the
table_style_by_cssoption has been changed totrue. -
The default value for the
table_use_colgroupsoption has been changed totrue.
Fixed
-
The object returned from the
editor.fire()API was incorrect if the editor had been removed. -
The
editor.selection.getContent()API did not respect theno_eventsargument. -
The
editor.annotator.removeAPI did not keep selection when removing the annotation. -
The
GetContentevent was not fired when gettingtreeortextformats using theeditor.selection.getContent()API. -
The
beforeinputandinputevents would sometimes not fire as expected when deleting content. -
The
tableplugin would sometimes not correctly handle headers in thetfootsection. -
The
silvertheme UI was incorrectly rendered before plugins had initialized. -
The aria labels for the color picker dialog were not translated.
-
Fixed sub-menu items not read by screen readers. Patch contributed by westonkd.
-
Dialog labels and other text-based UI properties did not escape HTML markup.
-
Anchor elements would render incorrectly when using the
allow_html_in_named_anchoroption. -
The
AstNodeHTML serializer did not serializepreortextareaelements correctly when they contained newlines. -
The Home or End keys would move out of a editable element contained within a noneditable element.
-
Dialogs could not be opened in inline mode before the editor had been rendered.
-
Clicking on menu items could cause an unexpected console warning if the
onActionfunction caused the menu to close. -
Fixed various color and contrast issues for the dark skins.
Deprecated
-
The dialog button component’s
primaryproperty has been deprecated and will be removed in the next major release. Use the newbuttonTypeproperty instead. -
The
fire()function oftinymce.Editor,tinymce.dom.EventUtils,tinymce.dom.DOMUtils,tinymce.util.Observableandtinymce.util.EventDispatcherhas been deprecated and will be removed in the next major release. Use thedispatch()function instead. -
The
contentproperty on theSetContentevent has been deprecated and will be removed in the next major release. -
The return value of the
editor.setContentAPI has been deprecated and will be removed in the next major release.
Removed
-
Removed support for Microsoft Internet Explorer 11.
-
Removed support for Microsoft Word from the opensource paste functionality.
-
Removed support for the
pluginsoption allowing a mixture of a string array and of space separated strings. -
Removed support for the deprecated
falsevalue for theforced_root_blockoption. -
Removed the jQuery integration.
-
Removed the
imagetoolsplugin, which is now classified as a Premium plugin. -
Removed the
imagetoolsdialog component. -
Removed the
tocplugin, which is now classified as a Premium plugin. -
Removed the
tabfocusplugin. -
Removed the
textpatternplugin’s API as part of moving it to core. -
Removed the
tableplugin’s API. -
Removed the callback for the
EditorUploadAPI. -
Removed the legacy browser detection properties from the
EnvAPI. -
Removed the
filterNodemethod from theDomParserAPI. -
Removed the
SaxParserAPI. -
Removed the
tinymce.utils.PromiseAPI. -
Removed the
toHexfunction for theDOMUtilsandStylesAPIs. -
Removed the
execCommandhandler function from the plugin and theme interfaces. -
Removed the
editor.settingsproperty as it has been replaced by the new Options API. -
Removed the
shortEndedandfixedproperties ontinymce.html.Nodeclass. -
Removed the
mceInsertRawHTMLcommand. -
Removed the style field from the
imageplugin dialog advanced tab. -
Removed the
paste_filter_dropoption as native drag and drop handling is no longer supported. -
Removed the legacy
mobiletheme. -
Removed the deprecated
$,Class,DomQueryandSizzleAPIs. -
Removed the deprecated
Color,JSON,JSONPandJSONRequest. -
Removed the deprecated
XHRAPI. -
Removed the deprecated
setIconStrokeSplit Toolbar Button API. -
Removed the deprecated
editorsproperty fromEditorManager. -
Removed the deprecated
execCallbackandsetModeAPIs fromEditor. -
Removed the deprecated
addComponentsanddependenciesAPIs fromAddOnManager. -
Removed the deprecated
clearInterval,clearTimeout,debounce,requestAnimationFrame,setInterval,setTimeoutandthrottleAPIs fromDelay. -
Removed the deprecated
Schemaoptions. -
Removed the deprecated
file_browser_callback_types,force_hex_style_colorsandimages_dataimg_filteroptions. -
Removed the deprecated
filepicker_validator_handler,force_p_newlines,gecko_spellcheck,tab_focus,table_responsive_widthandtoolbar_draweroptions. -
Removed the deprecated
media_scriptsoption in themediaplugin. -
Removed the deprecated
editor_deselector,editor_selector,elements,modeandtypeslegacy TinyMCE init options. -
Removed the deprecated
content_editable_stateandpadd_empty_with_broptions. -
Removed the deprecated
autoresize_on_initoption from theautoresizeplugin. -
Removed the deprecated
fullpage,spellchecker,bbcode,legacyoutput,colorpicker,contextmenuandtextcolorplugins. -
Removed the undocumented
editor.editorCommands.hasCustomCommandAPI. -
Removed the undocumented
mceResetDesignMode,mceRepaintandmceBeginUndoLevelcommands.