发生了什么?
背景:DynamicGroup 插件启动限制模式 (isRestrict),且isAllowAppendIn函数设置为一直返回false(限制任意节点不能进入分组)。
问题:渲染的节点数据中存在一个分组和一个组内节点,当拖动这个组内节点再松开时,会导致该节点脱离原来的组,再次拖动时,就可以拖动到组外区域。
我这样配置的目的是:已经在分组内的元素不能出组,且其他节点不能进入到这个分组内。
问题复现地址:https://tinysimple.github.io/LogicFlowGroupBugShow/
可复现源码地址:https://github.com/tinysimple/LogicFlowGroupBugShow
查看源码发现,其逻辑在 @logicflow/extension/es/dynamic-group/index.js 中的68行函数内。
现有的逻辑为:
- 如果该节点之前已经在 group 中了,则将其从之前的 group 移除
- 然后再判断这个节点是否在某个 group 范围内,如果是,则将其添加到对应的 group 中
所以当一个节点被拖动结束时,会先执行第1步的逻辑,即:将该节点从分组内移除;再执行第2步的逻辑,由于没有移动出分组的范围,所以这个节点还在这个 group 范围内,再判断 isAllowAppendIn 函数,此处我设置的该函数一直返回false,导致元素无法再进入这个分组。
我尝试对该处的源码进行改动,改动为:
1、先不将该节点从之前的 group 移除
2、如果找到这个节点在某个 group 范围内,判断是否与上一次的 group 一样,如果一样,直接return
3、再将该节点从之前的 group 移除
改动后,分组内的元素无法在第二次拖动时拖出分组区域,其他节点也无法拖进分组内。
效果地址:https://tinysimple.github.io/LogicFlowGroupFixPage/
改动后的源码地址:https://github.com/tinysimple/LogicFlowGroupFixPage
如果有需要,我可以提交PR,感谢~
logicflow/core版本
2.2.3
logicflow/extension版本
2.2.3
logicflow/engine版本
No response
浏览器&环境
Chrome
发生了什么?
背景:DynamicGroup 插件启动限制模式 (isRestrict),且isAllowAppendIn函数设置为一直返回false(限制任意节点不能进入分组)。
问题:渲染的节点数据中存在一个分组和一个组内节点,当拖动这个组内节点再松开时,会导致该节点脱离原来的组,再次拖动时,就可以拖动到组外区域。
我这样配置的目的是:已经在分组内的元素不能出组,且其他节点不能进入到这个分组内。
问题复现地址:https://tinysimple.github.io/LogicFlowGroupBugShow/
可复现源码地址:https://github.com/tinysimple/LogicFlowGroupBugShow
查看源码发现,其逻辑在
@logicflow/extension/es/dynamic-group/index.js中的68行函数内。现有的逻辑为:
所以当一个节点被拖动结束时,会先执行第1步的逻辑,即:将该节点从分组内移除;再执行第2步的逻辑,由于没有移动出分组的范围,所以这个节点还在这个
group范围内,再判断isAllowAppendIn函数,此处我设置的该函数一直返回false,导致元素无法再进入这个分组。我尝试对该处的源码进行改动,改动为:
1、先不将该节点从之前的 group 移除
2、如果找到这个节点在某个 group 范围内,判断是否与上一次的 group 一样,如果一样,直接return
3、再将该节点从之前的 group 移除
改动后,分组内的元素无法在第二次拖动时拖出分组区域,其他节点也无法拖进分组内。
效果地址:https://tinysimple.github.io/LogicFlowGroupFixPage/
改动后的源码地址:https://github.com/tinysimple/LogicFlowGroupFixPage
如果有需要,我可以提交PR,感谢~
logicflow/core版本
2.2.3
logicflow/extension版本
2.2.3
logicflow/engine版本
No response
浏览器&环境
Chrome