diff --git a/packages/web/src/designer/Designer.svelte b/packages/web/src/designer/Designer.svelte
index 1ab4740ee..fd7165f7e 100644
--- a/packages/web/src/designer/Designer.svelte
+++ b/packages/web/src/designer/Designer.svelte
@@ -50,6 +50,7 @@
import { extendDatabaseInfoFromApps } from 'dbgate-tools';
import SearchInput from '../elements/SearchInput.svelte';
import CloseSearchButton from '../buttons/CloseSearchButton.svelte';
+ import DragColumnMemory from './DragColumnMemory.svelte';
export let value;
export let onChange;
@@ -951,9 +952,12 @@
{/if}
{#if tables?.length > 0}
-
@@ -972,12 +976,16 @@
.canvas {
position: relative;
}
- .searchbox {
+ .panel {
position: absolute;
right: 16px;
top: 0;
+ display: flex;
+ }
+ .searchbox {
width: 200px;
display: flex;
+ margin-left: 1px;
}
svg.drag-rect {
diff --git a/packages/web/src/designer/DragColumnMemory.svelte b/packages/web/src/designer/DragColumnMemory.svelte
new file mode 100644
index 000000000..7a5f3a0f2
--- /dev/null
+++ b/packages/web/src/designer/DragColumnMemory.svelte
@@ -0,0 +1,54 @@
+
+
+{#if settings?.allowCreateRefByDrag}
+ {
+ if (!settings?.allowCreateRefByDrag) return;
+ if (!memory) return;
+
+ const dragData = { ...memory };
+ sourceDragColumn$.set(dragData);
+ e.dataTransfer.setData('designer_column_drag_data', JSON.stringify(dragData));
+ }}
+ on:dragend={e => {
+ sourceDragColumn$.set(null);
+ targetDragColumn$.set(null);
+ }}
+ on:dragover={e => {
+ if ($sourceDragColumn$) {
+ e.preventDefault();
+ }
+ }}
+ on:drop={e => {
+ var data = e.dataTransfer.getData('designer_column_drag_data');
+ e.preventDefault();
+ if (!data) return;
+ memory = $sourceDragColumn$;
+ sourceDragColumn$.set(null);
+ targetDragColumn$.set(null);
+ }}
+ >
+ {#if memory}
+ {memory.columnName}
+ {:else}
+ Drag & drop column here
+ {/if}
+
+{/if}
+
+