Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #11503 from ckeditor/ck/epic/2973-document-lists
Feature (list): Introducing the document (advanced) list feature (multiple blocks per list item). Closes #2973. Closes #10812. Feature (list): Introducing the document (advanced) list properties feature (list styles, start index, reversed list). Closes #11065. Feature (html-support): Adds support for document list in the `GeneralHtmlSupport` feature. Closes #11454. Closes #11359. Closes #11358. Feature (engine): Added a new `Model#insertObject()` method for inserting elements defined as objects by model schema (see #11198). Feature (engine): Introduced inheritable `$container`, `$blockObject`, and `$inlineObject` element types in the model `Schema` (see #11197). Feature (engine): Introduced `TabObserver` that allows listening to pressing down the `Tab` key in a specified context. Feature (paragraph): Added an optional `options.attributes` parameter to the `InsertParagraph` command that allows setting attributes on a created paragraph (see #11198). Feature (core): `MultiCommand` now allows setting a priority (order) of registered sub commands. Closes #11083. Feature (engine): Added a new `Schema#getAttributesWithProperty()` method that retrieves attributes from a node which have given property (see #11198). Feature (engine): Added a new `Schema#setAllowedAttributes()` method that validates whether attributes are allowed on a given element before setting them (see #11198). Other (engine): The `Differ` change entries for `insert` and `remove` types are extended with a map of attributes that were set while inserting an element or that belonged to an element that got removed. Other (engine): The `DowncastHelpers` are passing an additional parameter to the creator functions (the `data` that provides more context to the element creator callback). Other (engine): The `isAllowedInsideAttributeElement` option was removed, from now on `AttributeElements` are allowed to wrap any view element. Other (engine): The `ConversionApi` provided by the `UpcastDispatcher` was extended by an additional `keepEmptyElement()` method that marks an element that was created during splitting a model element that should not get removed on conversion even if it is empty. Other (html-support): Updated default schema definitions for various elements taking advantage of the `$container`, `$blockObject`, and `$inlineObject` elements in model schema (see #11197). Other (table, code-block, list): The handling of `Tab` and `Shift+Tab` keystrokes switched to the `'tab'` view document event and now respects the event context. Other (media-embed): Added an optional `findOptimalPosition` parameter to the `insertMedia()` helper that allows for inserting `media` model element without breaking the content (see #11198). Fix (link): The link decorators should be converted on block images only once (should not wrap block image with an additional link). Internal (engine): Added option for the `DomConverter` to transparently render only the content of the element in the data pipeline. Internal (engine): Added option for the `DomConverter` to transparently render only the content of the element in the data pipeline. Internal (engine): The `findOptimalPosition()` helper is now available in the ckeditor5-engine package for internal use (see #11198). Internal (list): `DocumentListEditing` should extend `$container` (for `blockQuote`, etc.), `$block` (for `paragraph`, `heading2`, etc.), and `$blockObject` (for `table`, `horizontalLine`, etc.) with its attributes. Closes #11197. Internal (list): `indentList` and `outdentList` commands are now registered with priority in 'Indent' `MultiCommand` , `Tab` and `Tab+Shift` listeners now executes in `li` context in order to not interfere with other plugins' listeners . Closes #11072. Internal (list): Adds `DocumentListStartCommand` and `DocumentListReversedCommand`. Closes #11166. Internal (list): Adds `DocumentListStyleCommand`. See #11166. Internal (list): Adds post-fixer that makes sure that all items in a single list have the same start, reversed, and style properties. Closes #11167. Internal (list): Deleting a widget which is a document list item should be possible. Closes #11346. Internal (list): Document list items should not get split by inserting block objects (widgets). Closes #11198. Internal (list): Implemented backspace and delete handling in and around document lists. Closes #10878. Internal (list): Implemented handling of `Tab` and `Tab+Shift` keys in document lists. Closes #10880. Internal (list): Implemented the `DocumentListMergeCommand`. Closes #10977. Internal (list): Improved enter handling in document lists by allowing to split the list item when the collapsed selection is anchored in the first (but not only) empty block of a list item (see #10879, #10976). Internal (list): Integrated the enter feature with document lists. Closes #10879. Closes #10976. Internal (list): Reset document list properties after indent. Closes #11357. Internal (table, page-break, horizontal-line, media-embed, html-embed, image): `table`, `pageBreak`, `horizontalLine`, `media`, `imageBlock`,`imageInline` elements are now inserted with `insertObject()` function instead of `insertContent()` (see #11198). Internal (list): Added `DocumentListCommand` and `DocumentListIndentCommand`. Closes #10974. Closes #10975. MINOR BREAKING CHANGE (html-support): The `$htmlSection`, `$htmlObjectBlock`, and `$htmlObjectInline` element types are no longer available for custom elements registered via `registerBlockElement()` to inherit from. Please use `$container`, `$blockObject`, and `$inlineObject` instead (see #11197). MINOR BREAKING CHANGE (engine): The `isAllowedInsideAttributeElement` option was removed so `AttributeElements` can wrap any view element (according to positions). Make sure that you are not wrapping any `ContainerElement` by an accident by not checking the target in the converter. Those would previously get wrapped by an `AttributeElement` that immediately would be removed by the `ContainerElement` within it so there would not be any visual effect. MINOR BREAKING CHANGE (engine): The handling of `Tab` and `Shift+Tab` keystrokes switched to the `'tab'` view document event across the project. If your integration uses `KeystrokeHandler` for `Tab` key handling, we recommend you migrate to the `'tab'` event to avoid unpredicted errors. MINOR BREAKING CHANGE (engine): If your integration uses `Model#insertContent()` and `findOptimalInsertionRange()` to insert widgets into the content, we recommend you migrate your code to `Model#insertObject()` for best results. This is particularly relevant for compatibility with the document (advanced) lists feature (see #11198).
- Loading branch information