Release highlights
We are happy to announce the release of CKEditor 5 v20.0.0.
This release brings some highly anticipated features:
- Support for linking images.
- Typing around widgets.
- An option to automatically set link protocol.
- Improved selection handling when working with links.
New features were also accompanied by a set of bug fixes, to name a few:
- Autoformatting will no longer change formatting when typing in an inline code.
- Editor will no longer crash if there's a HTML comment in the source data.
TODO: Add a link to the blog post.
Collaboration features
The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.
MAJOR BREAKING CHANGES ℹ️
- ckeditor5: Node
>=12.0.0is required now.
MINOR BREAKING CHANGES ℹ️
- table: The
TableNavigationplugin was renamed toTableKeyboard. - table: The values returned by the
TableWalkeriterator have changed. See #6785. - widget: Removed the
getWidgetTypeAroundPositions()helper since the "Insert new paragraph" buttons are now visible regardless of the widget location in the document - The
isTableWidget()andtoTableWidget()utility functions were removed. - The functions
getSelectedTableWidget()andgetTableWidgetAncestor()fromtable/utilsmodule were moved to thetable/utils/widgetmodule. - The functions
getSelectedTableCells(),getTableCellsContainingSelection(),getSelectionAffectedTableCells(),getRowIndexes(),getColumnIndexes(), andisSelectionRectangular()fromtable/utilsmodule were moved totable/utils/selectionmodule. - The functions
getVerticallyOverlappingCells(),splitHorizontally(),getHorizontallyOverlappingCells(), andsplitVertically()fromtable/utilsmodule were moved totable/utils/structuremodule. - The functions
findAncestor(),updateNumericAttribute(),createEmptyTableCell(), andisHeadingColumnCell()fromtable/commands/utilsmodule were moved totable/utils/commonmodule. - The functions
getSingleValue()andaddDefaultUnitToNumericValue()fromtable/commands/utilsmodule were moved totable/utils/table-propertiesmodule. - The functions
cropTableToDimensions()andtrimTableCellIfNeeded()fromtable/tableselection/croptablemodule were moved totable/utils/structuremodule. - The functions
repositionContextualBalloon(),getBalloonTablePositionData(), andgetBalloonCellPositionData()fromtable/ui/utilsmodule were moved totable/utils/ui/contextualballoonmodule. - The functions
getBorderStyleLabels(),getLocalizedColorErrorText(),getLocalizedLengthErrorText(),colorFieldValidator(),lengthFieldValidator(),lineWidthFieldValidator(),getBorderStyleDefinitions(),fillToolbar(), andgetLabeledColorInputCreator()fromtable/ui/utilsmodule were moved totable/utils/ui/table-propertiesmodule. - The
defaultColorsconstant fromtable/ui/utilsmodule was moved totable/utils/ui/table-propertiesmodule.
Features
- link: Introduced the linking images feature. Closes #7330. (commit)
- link: Introduced the
LinkImageUIplugin that brings a UI to wrap images in links. Closes #7331. (commit) - link: A fake caret (selection) should be displayed in the content when the link input has focus and the browser does not render the native caret (selection). Closes #4721. (commit)
- link: Introduced the
config.link.defaultProtocoloption for adding it automatically to the links when it's not provided by the user in the link form. Closes #4858. (commit) - theme-lark: Added styles for the fake link caret (selection) (see #4721). (commit)
- theme-lark: Added styles for a "fake caret" brought by the
WidgetTypeAroundplugin (see #6693). (commit) - typing: Created a public
isNonTypingKeystroke()helper (see #6693). (commit) - upload: Introduced the
config.simpleUpload.withCredentialsrequest configuration. Closes #7282. (commit) - utils: Created
isArrowKeyCode(),getLocalizedArrowKeyCodeDirection(), andisForwardArrowKeyCode()helpers (see #6693). (commit) - widget: Implemented keyboard support for inserting paragraphs around block widgets using a "fake horizontal caret" (
WidgetTypeAround). Both "Insert new paragraph" buttons are now always displayed for all block widgets regardless of their location in the document. Closes #6693, #6825, #6694. (commit)
Bug fixes
- autoformat: Autoformatting should not occur inside an existing text with a model
codeattribute. Closes #1239. (commit) - engine: The editor should not crash when the initial data includes HTML comments. Closes #5734. (commit)
- engine: The model selection post-fixer should not set a new selection if the ranges before and after post-fixing are the same (see #6693). (commit)
- engine: Backspace will no longer change the type of the trailing block. Closes #6680. (commit)
- font: The Font Family feature should apply the complete family value from the configuration when
config.fontFamily.supportAllValuesistrue. Closes #7285. (commit) - image: The widget toolbar won't be shown if an empty collection of items was provided in the editor's configuration. Closes #5857. (commit)
- image: The
srcandaltattributes for the image element will be always added to the editor's data. Even if they are empty. Closes #5033. (commit) - table: Table multi-cell selection should not be possible with the keystrokes when the
TableSelectionplugin is disabled. Closes #7483. (commit) - table: Copied and pasted table fragment should maintain the proper structure when the fragment contains merged table cells. Closes #7245. (commit)
- table: Removing empty rows will no longer produce an invalid table model in certain scenarios. Closes #6609. (commit)
- ui: The
BalloonToolbarshould not show up when multiple objects (for instance, table cells) are selected at a time. Closes #6443. (commit)
Other changes
- engine: Added the
ignoreMarkersoption to theModel#hasContent()method. (commit) - engine: Added Writer#cloneElement(). Closes #6819. (commit)
- horizontal-line: Improved the look of horizontal lines in the editor content. Closes #7418. (commit)
- link: The selection after inserting a link will land after the inserted element. Thanks to that a user will be able to type directly after the link without extending the link element. Closes #1016. (commit)
- link: After clicking at the beginning or end of the link element, the selection will land before/after the clicked element. Thanks to that a user will be able to typing before or after the link element as normal text without extending the link. See #1016. (commit)
- paragraph: The
InsertParagraphCommandshould split ancestors of thePositionto find a parent that allows'paragraph'(see #6693). (commit) - select-all: Improved the select-all feature so that it includes more and more content if the selection was anchored in a nested editable. Closes #6621. (commit)
- table: Removed
options.asWidgetfrom most of the table converters which are never run in data pipeline. (commit) - table: Marker on table cells should be downcasted to CSS classes on cells (instead of wrapping the content). Closes #7360. (commit)
- table: Pasting a table into a table is more tolerant for whitespaces around a pasted table. Closes #7379. (commit)
- table: Extracted
TableMouseplugin fromTableSelectionplugin. Closes #6757. (commit) - table: Refactor values returned by the
TableWalkeriterator. Closes #6785. (commit) - table: Add
row,startColumn, andendColumnoptions toTableWalkerconstructor. See #6785. (commit)
Released packages
Check out the Versioning policy guide for more information.
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
Released packages (summary)