GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
BSD 3-Clause "New" or "Revised" License
22.36k stars 4.05k forks source link

BUG: Cannot select component in ``component:remove`` handler #5633

Closed kla-ko closed 8 months ago

kla-ko commented 8 months ago

GrapesJS version

What browser are you using?

Chrome Version 120.0.6099.225

Reproducible demo link

https://jsfiddle.net/wattnu/opmwfvjn/

Describe the bug

How to reproduce the bug?

  1. open and run the fiddle
  2. two components are on the canvas. The "hello world" div and a blue background div.
  3. The "hello world" div is selected due to the command editor.select(editor.getComponents().models[0]);
  4. When selecting the blue box and when choosing delete in the canvas spot, the component:remove handler is called.
  5. However, the "hello world" div is not selected afterwards as demanded by the instruction in the handler

What is the expected behavior? editor.select(editor.getComponents().models[0]); shall work in the handler

What is the current behavior? editor.select(editor.getComponents().models[0]); shows no effect in the handler

Code of Conduct

artf commented 8 months ago

Thanks @kla-ko there is actually one logic that prevents selecting other components during component:remove events and I will fix it for the next release but what I'd suggest to you is to switch to another event.

The event component:remove is triggered for each removed component, which means it will be triggered for each nested one inside the one you decided to remove. You can use run:core:component-delete event which is triggered only once after the deletion command is completed and it should currently work without any fix.

kla-ko commented 8 months ago

Thanks @artf . This works like a charme ! /