Skip to content

v2.28.0

Compare
Choose a tag to compare
@github-actions github-actions released this 24 Aug 21:36
59c8d28
2 28

New features

  • Block ids now displayed in DOM via a data-id attribute. Could be useful for plugins that want to access a Block's element by id.
  • Blocks API — The blocks.convert(blockId, newType) API method was added. It allows to convert existing Block to a Block of another type.
  • Blocks API — The blocks.insertMany() API method added. It allows to insert several Blocks to the specified index.

Improvements

  • UX — The Delete keydown at the end of the Block will now work opposite a Backspace at the start. Next Block will be removed (if empty) or merged with the current one.
  • UX — The Delete keydown will work like a Backspace when several Blocks are selected.
  • UX — If we have two empty Blocks, and press Backspace at the start of the second one, the previous will be removed instead of the current.
  • Shortcuts — Tools shortcuts could be used to convert one Block to another.
  • UI — Tools shortcuts displayed in the Conversion Toolbar
  • UI — Initialization Loader has been removed.
  • Styles — Selection style won't override your custom style for ::selection outside the editor.
  • Performance — Performance optimizations: initialization speed increased, blocks.render() API method optimized. Big documents will be displayed 8x faster.
  • DX — "Editor saving" log removed
  • DX — "I'm ready" log removed
  • UI — The stub-block style is simplified.
  • UI — If some Block's tool throws an error during construction, we will show Stub block instead of skipping it during render
  • onChange — Call of blocks.clear() now will trigger onChange with "block-removed" event for all removed blocks.
  • Blocks API — The blocks.clear() now can be awaited.
  • TypesBlockMutationType and BlockMutationEvent types exported
  • Blocks APIblocks.update(id, data) now can accept partial data object — it will update only passed properties, others will remain the same.
  • onChangeblocks.update(id, data) now will trigger onChange with only block-change event.
  • Blocks APIblocks.update(id, data) will return a promise with BlockAPI object of the changed block.