diff --git a/frontend/components/report/designer/CanvasComponent.tsx b/frontend/components/report/designer/CanvasComponent.tsx
index 5f9b0aef..5d9ac69a 100644
--- a/frontend/components/report/designer/CanvasComponent.tsx
+++ b/frontend/components/report/designer/CanvasComponent.tsx
@@ -47,6 +47,8 @@ export function CanvasComponent({ component }: CanvasComponentProps) {
// 마우스 이동 핸들러 (전역)
useEffect(() => {
+ if (!isDragging && !isResizing) return;
+
const handleMouseMove = (e: MouseEvent) => {
if (isDragging) {
const newX = Math.max(0, e.clientX - dragStart.x);
@@ -66,15 +68,25 @@ export function CanvasComponent({ component }: CanvasComponentProps) {
setIsResizing(false);
};
- if (isDragging || isResizing) {
- document.addEventListener("mousemove", handleMouseMove);
- document.addEventListener("mouseup", handleMouseUp);
- return () => {
- document.removeEventListener("mousemove", handleMouseMove);
- document.removeEventListener("mouseup", handleMouseUp);
- };
- }
- }, [isDragging, isResizing, dragStart, resizeStart, component.id, updateComponent]);
+ document.addEventListener("mousemove", handleMouseMove);
+ document.addEventListener("mouseup", handleMouseUp);
+
+ return () => {
+ document.removeEventListener("mousemove", handleMouseMove);
+ document.removeEventListener("mouseup", handleMouseUp);
+ };
+ }, [
+ isDragging,
+ isResizing,
+ dragStart.x,
+ dragStart.y,
+ resizeStart.x,
+ resizeStart.y,
+ resizeStart.width,
+ resizeStart.height,
+ component.id,
+ updateComponent,
+ ]);
// 표시할 값 결정
const getDisplayValue = (): string => {
diff --git a/frontend/components/report/designer/QueryManager.tsx b/frontend/components/report/designer/QueryManager.tsx
index d4b3e2a4..ced3f9ff 100644
--- a/frontend/components/report/designer/QueryManager.tsx
+++ b/frontend/components/report/designer/QueryManager.tsx
@@ -67,7 +67,6 @@ export function QueryManager() {
setSelectedQueryId(null);
setParameterValues({});
setParameterTypes({});
- setTestResult(null);
}
};
@@ -76,7 +75,6 @@ export function QueryManager() {
setSelectedQueryId(queryId);
setParameterValues({});
setParameterTypes({});
- setTestResult(null);
};
// 파라미터 값이 모두 입력되었는지 확인
diff --git a/frontend/components/report/designer/ReportDesignerCanvas.tsx b/frontend/components/report/designer/ReportDesignerCanvas.tsx
index 0cea297f..74f56892 100644
--- a/frontend/components/report/designer/ReportDesignerCanvas.tsx
+++ b/frontend/components/report/designer/ReportDesignerCanvas.tsx
@@ -38,9 +38,9 @@ export function ReportDesignerCanvas() {
fontFamily: "Malgun Gothic",
fontWeight: "normal",
fontColor: "#000000",
- backgroundColor: "#ffffff",
- borderWidth: 1,
- borderColor: "#666666",
+ backgroundColor: "transparent",
+ borderWidth: 0,
+ borderColor: "#cccccc",
borderRadius: 5,
textAlign: "left",
padding: 10,
diff --git a/frontend/components/report/designer/ReportDesignerToolbar.tsx b/frontend/components/report/designer/ReportDesignerToolbar.tsx
index 1075b387..f2ca1b74 100644
--- a/frontend/components/report/designer/ReportDesignerToolbar.tsx
+++ b/frontend/components/report/designer/ReportDesignerToolbar.tsx
@@ -16,6 +16,11 @@ export function ReportDesignerToolbar() {
await saveLayout();
};
+ const handleSaveAndClose = async () => {
+ await saveLayout();
+ router.push("/admin/report");
+ };
+
const handleReset = async () => {
if (confirm("현재 변경사항을 모두 취소하고 마지막 저장 상태로 되돌리시겠습니까?")) {
await loadLayout();
@@ -56,7 +61,7 @@ export function ReportDesignerToolbar() {
미리보기
-