npm @ckeditor/ckeditor5-upload 41.0.0

latest releases: 0.0.0-nightly-20240920.0, 0.0.0-nightly-20240919.0, 0.0.0-nightly-20240918.0...
8 months ago

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

Improved list suggestions behavior

We continue to improve the way the editor displays the formatting suggestions.

This release includes integration of the list features with the new suggestions behavior. All list-related suggestions are now visible in the editor content.

The dialog system

The dialogs finally come to the CKEditor 5 UI!

Some users found using the find and replace feature through a dropdown inconvenient as it might have covered the content, including the searched text. We listened to these voices and the find and replace UI will now be using a dialog.

If you liked the earlier user interface of this feature, you can still display it inside a dropdown by setting the config.findAndReplace.uiType configuration option.

We have also introduced a dialog in the AI Assistant feature. Displaying the AI Assistant inside a balloon came with many UX hiccups, especially when you selected large content. It works great now.

The dialogs are now a part of the CKEditor 5 UI library so you can use them, too! Read the documentation to learn how to display your custom features inside dialogs and modals.

Case change

No more selecting, deleting, retyping with Caps Lock for long legal preambles. The case change plugin enables users to easily change text cases, applying UPPERCASE, lowercase, and Title Case. This feature simplifies text formatting by allowing quick alterations with a single click or a keyboard shortcut.

As a key component of CKEditor 5's Productivity Pack, this plugin complements and enhances the suite's editing capabilities, offering a practical tool for efficient text manipulation.

Improving CKEditor 5 installation methods

We start the new year with improvements in the new installation methods project. This includes an upgrade to the latest TypeScript version, ensuring enhanced type safety.

A key part of this release is the resolution of ECMAScript Module (ESM) compliance issues. We updated all packages and their definitions to be fully ESM-compliant. This ensures smoother integration and compatibility across various development environments.

We have also renamed exports of several classes, interfaces, and helpers to eliminate naming conflicts in the code for the new bundle that will appear later this year.

Take a look at the RFC to see what is coming: #15502.

Deprecation of lists v1

This release marks a significant change in the list feature. As announced before, we are phasing out the older implementation of the List plugin, originally designed for plain lists. We are directing the development efforts towards the more advanced list v2 feature (formerly named DocumentList). This change aims to eliminate confusion for integrators and optimize the number of list functionalities.

The DocumentList plugins, which represent the advanced lists v2 feature, will now be available under the standard name List. This change enables document lists across all integrations, with the new version ensuring no loss of features from the older one.

We renamed the previous List plugins to LegacyList, providing a fallback option for integrators after the update. We will keep the LegacyList available for a couple of releases to lower the migration impact.

The existing DocumentList plugins were replaced with aliases. Integrations using the older DocumentList will continue to function without any need for configuration changes for a couple of releases. Users will be notified via console warnings to consider updating their configurations.

Additionally, we completely removed the ListStyle plugin, which has been deprecated for a while. This change aligns with our goal to simplify the list features.

Release highlights

Refer to the update guide to learn more about these changes.

MAJOR BREAKING CHANGES ℹ️

  • ai: From this release on, the UI of the AI Assistant feature is displayed in a dialog instead of a balloon. See #14973.
  • find-and-replace: From this release on, the UI of the find and replace feature is displayed by default in a dialog instead of a dropdown. To bring the previous user experience back, you can use the config.findAndReplace.uiType configuration option. See #14973.
  • list: The AdjacentListsSupport plugin is moved from the documentlist directory to the list directory. See #14942.

MINOR BREAKING CHANGES ℹ️

  • adapter-ckfinder: Rename export of the UploadAdapter class to CKFinderUploadAdapter. See #15511.
  • ai: The layout of the UI changed. Customizations based on certain CSS selectors may not work anymore because of a different DOM structure in the UI. Learn more about the scope of changes. See #14973.
  • ckfinder: Moved the browseFiles icon to the core package and added it to the icons object exported from it. See #15511.
  • ckbox: Moved the browseFiles icon to the core package and added it to the icons object exported from it. See #15511.
  • code-block: Moved the codeBlock icon to the core package and added it to the icons object exported from it. See #15511.
  • core: Bumped the TypeScript version to 5.0. See #15452.
  • engine: Renamed export of the View class to EditingView. See #15511.
  • engine: Moved the findOptimalInsertionRange function to the Schema class as a new method. See #15511.
  • find-and-replace: The layout of the UI changed. Customizations based on certain CSS selectors may not work anymore because of a different DOM structure in the UI. Learn more about the scope of changes. See #14973.
  • heading: Moved the heading1, heading2, heading3, heading4, heading5, and heading6 icons to the core package and added them to the icons object exported from it. See #15511.
  • horizontal-line: Moved the horizontalLine icon to the core package and added it to the icons object exported from it. See #15511.
  • html-embed: Moved the html icon to the core package and added it to the icons object exported from it. See #15511.
  • indent: Moved the indent and outdent icons to the core package and added them to the icons object exported from it. See #15511.
  • link: Added validation to the URL field to disallow empty URLs by default. See #12501.
  • list: All old list plugins are now prefixed with Legacy (including directory names): List -> LegacyList, ListProperties -> LegacyListProperties, TodoList -> LegacyTodoList, ListEditing -> LegacyListEditing, ListUtils -> LegacyListUtils, ListPropertiesEditing -> LegacyListPropertiesEditing, TodoListEditing -> LegacyTodoListEditing. See #14942.
  • list: The document list plugins are no longer prefixed with Document (including directory names): DocumentList -> List, DocumentListProperties -> ListProperties, TodoDocumentList -> TodoList, DocumentListEditing -> ListEditing, DocumentListUtils -> ListUtils, DocumentListPropertiesEditing -> ListPropertiesEditing, DocumentListPropertiesUtils -> ListPropertiesUtils, TodoDocumentListEditing -> TodoListEditing. See #14942.
  • list: The ListStyle plugin was removed since it had been deprecated for a while. Use the ListProperties plugin instead. See #14942.
  • list: Moved the bulletedList, numberedList, and todoList icons to the core package and added them to the icons object exported from it. See #15511.
  • table: Moved the table icon to the core package and added it to the icons object exported from it. See #15511.
  • ui: Moved the colorPalette, previousArrow, and nextArrow icons to the core package and added them to the icons object exported from it. See #15511.
  • ui: The --ck-z-modal CSS custom property was renamed to --ck-z-panel. We recommend updating custom CSS and integrations that use this custom property to avoid presentation issues. See #14973.
  • ui: The view collection (focusables) required by FocusCycler#constructor() must only contain views implementing the FocusableView interface. Failing to do so will result in a TypeScript error. If your custom code creates FocusCycler instances, make sure that all views passed in focusables implement the focus() method. See #14973.
  • ui: The font size of the FormHeaderView component was increased. This change affects the look of the find and replace and table styling features as well as custom user interfaces that use this component. See #14973.
  • ui: The type of AriaLiveAnnouncerPoliteness changed (previously enum, now a constant object). See #14973.
  • ui: The #next and #previous properties of a FocusCycler will now point to the same view if there is only one focusable view (previously null). This change may affect integrations that use this helper to manage advanced focus navigation in dynamic UIs. See #14973.
  • undo: Moved the undo and redo icons to the core package and added them to the icons object exported from it. See #15511.
  • utils: Renamed the Position interface to DomPoint. See #15511.

Features

  • ai: The UI of the feature was migrated to a dialog for a better user experience. See #14973.
  • case-change: Introduced the case change feature.
  • find-and-replace: The UI of the feature was migrated to a dialog for a better user experience. See #14973. (commit)
  • track-changes: Integrated the list feature with the new attribute suggestions. Tracked changes in lists are now immediately visible in the editor.
  • ui: Implemented the Dialog plugin that allows for displaying dialog windows in the UI of the editor. Learn more about using dialogs. Closes #14973. (commit)

Bug fixes

  • ai: AWSTextAdapter should be able to handle many data objects returned in one update (chunk).
  • ai: AWSTextAdapter should be able to handle data objects that were split between many updates (chunks).
  • ckbox: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • ckbox: Fixed the relative URL image editing. (commit)
  • clipboard: Drag and drop into the document title element should not throw errors. Closes #15306. (commit)
  • comments: Unlinked and resolved comment threads will now be correctly handled when added during the editor initialization.
  • core: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • html-support: The editor should not be stuck in an infinite post-fixing loop while modifying a list structure inside a GHS element. Closes #15527, #15565. (commit)
  • link: Fixed the editor crash using the LinkImage plugin loaded before Image, which ends with extending the schema definitions before they registering them. Closes #15617. (commit)
  • media-embed: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • ui: The TextareaView component should correctly update its size if its value changes while it is invisible. See #14973. (commit)
  • Made all CKEditor 5 packages valid ES Modules. See #13673.

Other changes

  • ckbox: Image editing should work with the on-premises CKBox. Closes #5834. (commit)
  • core: Bumped the TypeScript version to 5.0. Closes #15452 . (commit)
  • engine: Made the types of the Schema.addChildCheck and Schema.addAttributeCheck callbacks more specific. See #15290. (commit)
  • list: The document list feature was promoted to the main list feature implementation. The Document prefix was removed. The old list implementation was prefixed with the Legacy keyword. Aliases were introduced (DocumentList, DocumentListProperties, TodoDocumentList) for backward compatibility but those are marked as deprecated and log a warning in the browser console. Closes #14942. (commit)
  • ui: The FocusCycler#focusables collection should only contain FocusableView instances. See #14973. (commit)
  • ui: The #next and #previous properties of a FocusCycler instance should point to the same view if there is only one focusable view registered in the focusables collection. See #14973. (commit)
  • Updated translations. (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):

Releases containing new features:

Other releases:

Don't miss a new ckeditor5-upload release

NewReleases is sending notifications on new releases.