editor.js icon indicating copy to clipboard operation
editor.js copied to clipboard

Tunes with wrappers aren't calling didMutated, when changing tune value

Open VelssLacis opened this issue 1 year ago • 1 comments

Creating a custom tune, if a wrapper element is used, it will not call didMutated, and because of it, onChange is also not called. Issue comes from v2.27.0-rc.5 : https://github.com/codex-team/editor.js/commit/b7b00fd0606330ae41876bd481b2c57fe4e99640#diff-3a2e107229dbebf0e0b7e00160e7faec0cf71e6baf51872078e031789692c8b5R934

On data mutation, it will check if block element contains the mutated wrapper tune element, and will always fail, as it is a wrapper, and not a child of the block.

https://github.com/kaaaaaaaaaaai/editorjs-alignment-blocktune/issues/12 https://github.com/kaaaaaaaaaaai/editorjs-alignment-blocktune/pull/13

Steps to reproduce:

  1. Create a tune with a wrapper element / install editorjs-alignment-blocktune mentioned above
  2. Try setting a tune for the block
  3. onChange is not called

Expected behavior: if this is intended, should all tunes use dispatchChange() on tune change starting from v2.27.0-rc.5? if not, then, I think the onChange should be called regardless if mutated element is part of a block. (E.g. What happens if there is some button outside of EditorJS container, that would, change a tune for all blocks (backgrounds, alignments, etc.)?)

Screenshots: image The ce-tune-alignment--center is the tune wrapper element, and ce-paragraph is the block element, didMutated will not be called whenever wrapper is mutated, as it is not part of block element.

Device, Browser, OS: any

Editor.js version: v2.27.0-rc.5 and above

Plugins you use with their versions: https://github.com/kaaaaaaaaaaai/editorjs-alignment-blocktune 1.0.3

VelssLacis avatar Apr 20 '24 14:04 VelssLacis

手动触发: this.block.dispatchChange();

chf-gh avatar Jun 28 '24 03:06 chf-gh