Skip to content

v43.0.0

Compare
Choose a tag to compare
@CKEditorBot CKEditorBot released this 07 Aug 08:15
· 276 commits to master since this release

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

Release highlights

Merge fields

The new merge fields feature is a game-changer for creating document templates and other kinds of personalized or dynamic content. Thanks to this feature, you can insert placeholders into your content, indicating where actual values should go. These places are marked in the final content in a distinctive way, making it easy to later process the template and fill it with the actual values. The feature supports a preview mode too - you can define preview data sets, and see how the content will look like when real values are used directly in the editor. The plugin is highly customizable to fit various applications and scenarios. Finally, merge fields are fully integrated with our Export to Word, Export to PDF, and Import from Word features, both when they are used from the editor and via REST API.

We are extremely happy to share with you this highly demanded feature, and we cannot wait to listen to your feedback!

Make sure to visit our builder or documentation to learn more about the feature.

Export to Word V2 as the default version

The V2 version of the export to Word feature introduced significant improvements, optimizations, and fixes. This update enhances the overall performance, making the export process faster and more reliable, especially for large documents. Key improvements include better handling of table borders, automatic detection of Word styles from CSS, and support for more text-related CSS properties, ensuring your documents maintain their intended formatting.

Starting this version, the V2 configuration becomes the default in the ExportWord plugin. Make sure to migrate your configuration if you are using it.

Improved sidebar accessibility and navigation

We have introduced multiple enhancements to make the sidebar more accessible. Among other improvements, you can now use the Shift+Ctrl+E keystroke to move focus from the editor marker to the active annotation. When your comment reply is ready, you can quickly submit it using the new Ctrl+Enter shortcut. Also, navigation from one annotation to another is now possible by using arrow keys.

The full lists of keyboard supported actions can be reviewed in our Accessibility support guide.

Important bug fixes and improvements

This release brings notable bug fixes and improvements to enhance your editing experience.

  • Several improvements have been made to typing in the editor, especially for Android IME and Safari. On Android, issues like duplicated characters and reverse writing effects have been resolved. In Safari, the reverse typing effect after focus change has been fixed.
  • A couple of UI improvements:
    • We replaced the visual indication of the selected option in dropdowns (blue background) with the checkbox marks to better indicate selected options, aligning visual cues across the toolbar and menu bar.
    • All editor types now support the menu bar.
    • Additionally, the special characters UI has been moved from a dropdown to a dialog. This unifies the action between the menu bar and toolbar, and also gives content creators quicker access to the always-on-top dialog.
  • We have improved the drawing of page break line algorithm to address the pagination feature issues. We also improved the performance of the plugin.

React and Vue integrations updates

We have released new major versions of the React and Vue integrations. In both of them, we have migrated to JavaScript modules (ESM) and rewritten large parts of the codebases to support the latest versions of these frameworks and to follow the latest recommendations for writing the components.

We strongly recommend that you follow the release highlights to update to the latest versions:

MAJOR BREAKING CHANGES ℹ️

  • ckeditor5: Global name for the ckeditor5 package in the UMD builds has been changed to CKEDITOR.
  • ckeditor5-premium-features: Global name for the ckeditor5-premium-features package in the UMD builds has been changed to CKEDITOR_PREMIUM_FEATURES.
  • export-word: Export to Word V1 configuration format is deprecated, V2 is set as default. The exportWord.converterOptions configuration should be adjusted to new API. See the migration guide.
  • export-word: The auto_pagination configuration option in exportWord.converterOptions is set to false by default.

MINOR BREAKING CHANGES ℹ️

  • ckbox: The CKBoxUtils#getWorkspaceId() and CKBoxUtils#getToken() methods now return a promise instead of a resolved value.
  • comments: AnnotationView#focus() will focus the first view in the content collection instead of the view DOM element.
  • comments: Sidebar#addAnnotation() will expect the annotation view to meet the FocusableView interface (previously any UI View).
  • engine: Schema callbacks added through addChildCheck() will no longer add event listeners with high priority and will no longer stop checkChild event. Instead, these callbacks are now handled on normal priority, as a part of the default checkChild() call. This also means that listeners added to checkChild event on high priority will fire before any callbacks added by checkChild(). Earlier they would fire in registration order. This may impact you if you implemented custom schema callback using both addChildCheck() and direct listener to checkChild event. All above is also true for addAttributeCheck() and checkAttribute event and callbacks.
  • html-embed: HTML Embed plugin configuration value sanitizeHtml was moved from the htmlEmbed space to top-level configuration space. config.htmlEmbed.sanitizeHtml is now deprecated. It will still be used if it set, however we recommend updating the configuration as this property may be removed in upcoming releases.
  • real-time-collaboration: The size of avatars in the user presence list has been changed, which may affect integrations that depend on their dimensions. In addition, a focus border has been added to these avatars, which extends beyond the editor container. Please refer to the styling guide to learn how to change the look of the list.
  • real-time-collaboration: The collaboration user presence list dropdown now has a conditional overflow: scroll style (previously the style was permanent).
  • special-characters: Special characters plugin now uses a dialog (instead of a toolbar dropdown).
  • theme-lark: The --ck-list-button-padding custom property has been removed from the codebase.
  • track-changes: A substantial part of the SuggestionThreadView template was moved to a new view SuggestionView. It may affect you if you provided customization for suggestions annotations through an extended SuggestionThreadView or BaseSuggestionThreadView class. Please review updated API documentation for SuggestionThreadView#getTemplate() and SuggestionView#getTemplate(). You can extend SuggestionView the same way as SuggestionThreadView and BaseSuggestionThreadView, and provide the extended class through the newly added configuration property TrackChangesConfig#SuggestionView.
  • ui: We changed styles for "active" items inside menu bar and dropdowns lists. Previously, an active (chosen, enabled, opened, etc.) item was highlighted with a blue background. Now, the active element has a checkmark icon on the left.

Features

  • ckbox: The image upload and edit buttons are now disabled if the user has no permission to upload an asset. (commit)
  • ckbox: Added more configuration options passed down to the CKBox. Closes #3695. (commit)
  • collaboration-core: Introduced the AriaDescriptionView class that brings aria-describedby functionality to any view.
  • collaboration-core: Introduced the LateFocusButtonView and LateFocusDropdownButtonView classes that are specific buttons, for which focus event is fired after mouseup instead of mousedown. This delays all focus-related actions until the button action is performed.
  • comments: Introduced keyboard navigation and screen reader support to the annotations sidebar.
  • editor-balloon: Added support for the menu bar. Closes #16571. (commit)
  • editor-inline: Added support for the menu bar. Closes #16571. (commit)
  • engine: Schema#addChildCheck() and Schema#addAttributeCheck() can now register a callback for a specific item or attribute, which should improve performance when using custom callback checks. Callback checks should be added only for specific item or attribute if possible. See the API reference. Closes #15834. (commit)
  • export-word: Added config.exportWord.converterOptions.language configuration property to set the language of the exported Word document. The editor's content language will be used by default.
  • heading: Simplify TypeScript types of the Heading plugin configuration. (commit)
  • image: The image upload and edit buttons are disabled if the user has no permission to upload any asset. (commit)
  • import-word: The comments and suggestions imported from Word documents will preserve the original dates respecting the local timezone.
  • List: The list styles can be enabled for selected list types. Closes #15554. (commit)
  • merge-fields: Introduced the merge fields feature.
  • real-time-collaboration: Made the real-time collaboration user presence list accessible to screen reader users.
  • special-characters: Added menu bar integration for special characters. New component menuBar:specialCharacters is now by default added in "Insert" menu. Closes #16501. (commit)
  • track-changes: Introduced keyboard navigation and screen reader support to the annotations sidebar.
  • ui: Introduced keystroke handler options in FocusCycler#constructor() to allow for fine-tuning of the class behavior. (commit)
  • ui: Implemented a new FocusCycler#chain() method to connect multiple focus cyclers and provide seamless keyboard navigation across complex user interfaces. (commit)
  • ui: Redesigned "active state" style for menu bar dropdown items. Closes #16572. (commit)
  • utils: Introduced events filtering in KeystrokeHandler#set() to allow for fine-tuning of the helper's behavior. (commit)

Bug fixes

  • ai: Opening AI Assistant with a selection containing an empty line will no longer cause a crash.
  • ai: AI Assistant will now correctly handle selected content containing empty lines.
  • ckbox: Use a safer way to convert numbers to strings to avoid issues with some bundlers. Closes #16040. (commit)
  • comments: The user had to click the annotation button twice to execute an action as the first click focused the annotation and caused it to move away, which prevented the click.
  • engine: Schema#checkChild() will now correctly check custom callback checks for each item in the context. (commit)
  • engine: insertcontent-invalid-insertion-position exception is no longer thrown after pasting content containing block element + non-paragraph + block element elements. Closes #16321. (commit)
  • engine: Predictive text should not get doubled while typing. Closes #16106. (commit)
  • engine: The reverse typing effect should not happen after the focus change. Closes #14702.Thanks, @urbanspr1nter!. (commit)
  • engine: Typing on Android should avoid modifying DOM while composing. Closes #13994, #14707, #13850, #13693, #14567. Closes: #11569. (commit)
  • engine: Formatting should not get lost on a text with a marker in a table cell during upcast. (commit)
  • export-word: The author name of suggestions from an imported Word document will be correctly persisted after exporting and importing this document again.
  • find-and-replace: Allow to pass searchTerm when using findCallback in find command. (commit)
  • link: Creating a link in sentences containing an empty line will no longer cause a crash. Closes #16660. (commit)
  • list: Text nodes directly inside <ul> or <ol> should not be removed while loading editor data. Closes #16450. (commit)
  • mention: Escape mentions markers when building regular expression to prevent crashes when markers like '' are used. Closes #16818. (commit)
  • pagination: No longer generate an extra empty page after placing a page break after an element with a margin.
  • pagination: Should not apply additional styles on pageBreak element.
  • pagination: The pagination feature no longer skips pages when handling large tables. Closes #14426.
  • pagination: The pagination renders pages differently depending on user selection.
  • real-time-collaboration: The deleted comment thread will no longer be brought back after restoring a revision in which it existed.
  • table: Horizontal split button no longer splits larger table cell spans into more than two parts. Closes #14658. (commit)
  • theme-lark: Addressed a regression in the height of buttons displayed inside lists (such as buttons in annotation menus). (commit)
  • track-changes: The user had to click the annotation button twice to execute an action as the first click focused the annotation and caused it to move away, which prevented the click.
  • track-changes: Fixed editor crash when accepting or discarding a replace suggestion with multiple parts including adding or merging a block element (paragraph, etc.).
  • typing: Predictive text should not get doubled while typing. Closes #16106. (commit)
  • typing: Typing on Android should avoid modifying DOM while composing. Closes #13994, #14707, #13850, #13693, #14567. Closes: #11569. (commit)
  • ui: Hide the pinned balloon panel view when the pin target is no longer visible. Closes #16739. (commit)
  • ui: Block toolbar button no longer remains fixed in the same position while scrolling the editable content. Closes #5460. (commit)
  • ui: The user should be able to move the focus back to where it came from upon Esc key press while navigating the menu bar. Closes #16683. (commit)
  • ui: Add /* #__PURE__ */ comments before mixin calls to properly tree-shake unused classes. Closes #16651. (commit)
  • ui: Improve accessibility of toggleable menu bar items by marking them as menucheckbox aria roles. (commit)
  • ui: Fixed element tag name from <label> to <span> in the color picker component to improve the accessibility. (commit)
  • ui: Changed the place of restricted editing buttons in the menu bar to correct ones. Closes #16609. (commit)
  • UI: The aria-live views will no longer violate the a11y aXe rule: landmarks should be unique. Closes #16544. (commit)

Other changes

  • autoformat: The blockAutoformatEditing and the inlineAutoformatEditing are now exported from the package index. Closes #16815. (commit)
  • ckbox: The plugin no longer slows down the editor startup because it fetches the token in the background instead of during the editor’s initialization. Closes #16760. (commit)
  • ckeditor5: Global name for the ckeditor5 package in the UMD builds have been changed to CKEDITOR. Closes #16798. (commit)
  • ckeditor5-premium-features: Global name for the ckeditor5-premium-features package in the UMD builds have been changed to CKEDITOR_PREMIUM_FEATURES.
  • engine: Introduced Schema#trimLast(). (commit)
  • engine: The Model#insertContent() method should keep inline objects in the same auto paragraph as text nodes and other inline objects. See #16321. (commit)
  • engine: The Schema#checkMerge() method should return false if one of the elements is a limit element. See #16321. (commit)
  • export-word: Set export word v2 as default.
  • html-embed: HTML Embed plugin configuration value sanitizeHtml was moved from the htmlEmbed space to top-level configuration space. config.htmlEmbed.sanitizeHtml is now deprecated.
  • page-break: No longer generate an extra empty page after placing a page break after an element with a margin. (commit)
  • pagination: Enhance the performance of rendering large documents when the pagination plugin is enabled.
  • special-characters: Special characters plugin now uses a dialog (instead of a toolbar dropdown). (commit)
  • track-changes: Part of the SuggestionThreadView template was moved to a new view SuggestionView.
  • track-changes: Configuration property SuggestionView was added to enable the SuggestionView class customization.
  • track-changes: Made the track changes icon more in line with other icons in the icon set.
  • ui: Added the LabelWithHighlightView and ButtonLabelWithHighlightView components to the UI library. (commit)
  • ui: Added the filterGroupAndItemNames() helper to the UI library. (commit)
  • ui: The SearchTextView#reset() method will also reset the scroll of its filteredView to the top. (commit)
  • Updated translations. (commit, commit, commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Other releases: