github ckeditor/ckeditor5 v20.0.0

latest releases: v41.4.0-alpha.0, v41.3.1, v41.3.0...
3 years ago

Release highlights

We are happy to announce the release of CKEditor 5 v20.0.0.

This release brings some highly anticipated features:

New features were also accompanied by a set of bug fixes, to name a few:

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 ℹ️

MINOR BREAKING CHANGES ℹ️

  • table: The TableNavigation plugin was renamed to TableKeyboard.
  • table: The values returned by the TableWalker iterator 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() and toTableWidget() utility functions were removed.
  • The functions getSelectedTableWidget() and getTableWidgetAncestor() from table/utils module were moved to the table/utils/widget module.
  • The functions getSelectedTableCells(), getTableCellsContainingSelection(), getSelectionAffectedTableCells(), getRowIndexes(), getColumnIndexes(), and isSelectionRectangular() from table/utils module were moved to table/utils/selection module.
  • The functions getVerticallyOverlappingCells(), splitHorizontally(), getHorizontallyOverlappingCells(), and splitVertically() from table/utils module were moved to table/utils/structure module.
  • The functions findAncestor(), updateNumericAttribute(), createEmptyTableCell(), and isHeadingColumnCell() from table/commands/utils module were moved to table/utils/common module.
  • The functions getSingleValue() and addDefaultUnitToNumericValue() from table/commands/utils module were moved to table/utils/table-properties module.
  • The functions cropTableToDimensions() and trimTableCellIfNeeded() from table/tableselection/croptable module were moved to table/utils/structure module.
  • The functions repositionContextualBalloon(), getBalloonTablePositionData(), and getBalloonCellPositionData() from table/ui/utils module were moved to table/utils/ui/contextualballoon module.
  • The functions getBorderStyleLabels(), getLocalizedColorErrorText(), getLocalizedLengthErrorText(), colorFieldValidator(), lengthFieldValidator(), lineWidthFieldValidator(), getBorderStyleDefinitions(), fillToolbar(), and getLabeledColorInputCreator() from table/ui/utils module were moved to table/utils/ui/table-properties module.
  • The defaultColors constant from table/ui/utils module was moved to table/utils/ui/table-properties module.

Features

  • link: Introduced the linking images feature. Closes #7330. (commit)
  • link: Introduced the LinkImageUI plugin 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.defaultProtocol option 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 WidgetTypeAround plugin (see #6693). (commit)
  • typing: Created a public isNonTypingKeystroke() helper (see #6693). (commit)
  • upload: Introduced the config.simpleUpload.withCredentials request configuration. Closes #7282. (commit)
  • utils: Created isArrowKeyCode(), getLocalizedArrowKeyCodeDirection(), and isForwardArrowKeyCode() 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 code attribute. 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.supportAllValues is true. 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 src and alt attributes 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 TableSelection plugin 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 BalloonToolbar should not show up when multiple objects (for instance, table cells) are selected at a time. Closes #6443. (commit)

Other changes

  • engine: Added the ignoreMarkers option to the Model#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 InsertParagraphCommand should split ancestors of the Position to 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.asWidget from 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 TableMouse plugin from TableSelection plugin. Closes #6757. (commit)
  • table: Refactor values returned by the TableWalker iterator. Closes #6785. (commit)
  • table: Add row, startColumn, and endColumn options to TableWalker constructor. See #6785. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

Don't miss a new ckeditor5 release

NewReleases is sending notifications on new releases.