fix(editor): 组件树上的节点拖动画布中出错,应该不响应

fix #519
This commit is contained in:
roymondchen 2023-06-30 17:21:20 +08:00
parent d480a03369
commit d8d9184f3f
2 changed files with 14 additions and 8 deletions

View File

@ -83,14 +83,13 @@ const appendComponent = ({ text, type, data = {} }: ComponentItem): void => {
const dragstartHandler = ({ text, type, data = {} }: ComponentItem, e: DragEvent) => { const dragstartHandler = ({ text, type, data = {} }: ComponentItem, e: DragEvent) => {
if (e.dataTransfer) { if (e.dataTransfer) {
e.dataTransfer.effectAllowed = 'move';
e.dataTransfer.setData( e.dataTransfer.setData(
'data', 'text/html',
serialize({ serialize({
name: text, name: text,
type, type,
...data, ...data,
}).replace(/"(\w+)":\s/g, '$1: '), }),
); );
} }
}; };
@ -121,6 +120,6 @@ const dragHandler = (e: DragEvent) => {
if (timeout || !stage.value) return; if (timeout || !stage.value) return;
timeout = stage.value.getAddContainerHighlightClassNameTimeout(e); timeout = stage.value.delayedMarkContainer(e);
}; };
</script> </script>

View File

@ -146,9 +146,8 @@ const contextmenuHandler = (e: MouseEvent) => {
const dragoverHandler = (e: DragEvent) => { const dragoverHandler = (e: DragEvent) => {
e.preventDefault(); e.preventDefault();
if (e.dataTransfer) { if (!e.dataTransfer) return;
e.dataTransfer.dropEffect = 'move'; e.dataTransfer.dropEffect = 'move';
}
}; };
const dropHandler = async (e: DragEvent) => { const dropHandler = async (e: DragEvent) => {
@ -164,7 +163,15 @@ const dropHandler = async (e: DragEvent) => {
if (e.dataTransfer && parent && stageContainer.value && stage) { if (e.dataTransfer && parent && stageContainer.value && stage) {
const parseDSL = getConfig('parseDSL'); const parseDSL = getConfig('parseDSL');
const config = parseDSL(`(${e.dataTransfer.getData('data')})`);
const data = e.dataTransfer.getData('text/html');
if (!data) return;
const config = parseDSL(`(${data})`);
if (!config) return;
const layout = await services?.editorService.getLayout(parent); const layout = await services?.editorService.getLayout(parent);
const containerRect = stageContainer.value.getBoundingClientRect(); const containerRect = stageContainer.value.getBoundingClientRect();