From 04ce4beba4c014c734d2022dc858c28371a50de0 Mon Sep 17 00:00:00 2001 From: caadiq Date: Sat, 10 Jan 2026 00:26:13 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=9D=BC=EC=A0=95=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=20=ED=8E=98=EC=9D=B4=EC=A7=80=20UI=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 외부 스크롤 제거 (h-screen overflow-hidden flex flex-col) 2. HTML 엔티티 디코딩 함수 추가 (< > 등 올바르게 표시) 3. decodeHtmlEntities 함수를 컴포넌트 외부로 이동하여 ScheduleItem에서 접근 가능 --- frontend/src/pages/pc/admin/AdminSchedule.jsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/src/pages/pc/admin/AdminSchedule.jsx b/frontend/src/pages/pc/admin/AdminSchedule.jsx index f7fc91f..64565c2 100644 --- a/frontend/src/pages/pc/admin/AdminSchedule.jsx +++ b/frontend/src/pages/pc/admin/AdminSchedule.jsx @@ -18,6 +18,14 @@ import { getTodayKST, formatDate } from '../../../utils/date'; import * as schedulesApi from '../../../api/admin/schedules'; import * as categoriesApi from '../../../api/admin/categories'; +// HTML 엔티티 디코딩 함수 +const decodeHtmlEntities = (text) => { + if (!text) return ''; + const textarea = document.createElement('textarea'); + textarea.innerHTML = text; + return textarea.value; +}; + // 일정 아이템 컴포넌트 - React.memo로 불필요한 리렌더링 방지 const ScheduleItem = memo(function ScheduleItem({ schedule, @@ -58,7 +66,7 @@ const ScheduleItem = memo(function ScheduleItem({ />
-

{schedule.title}

+

{decodeHtmlEntities(schedule.title)}

{schedule.time && ( @@ -564,7 +572,7 @@ function AdminSchedule() { }, [categories, categoryCounts]); return ( -
+
setToast(null)} /> {/* 삭제 확인 다이얼로그 */} @@ -589,7 +597,7 @@ function AdminSchedule() { {/* 메인 콘텐츠 */} -
+
{/* 브레드크럼 */}
@@ -1103,7 +1111,7 @@ function AdminSchedule() { />
-

{schedule.title}

+

{decodeHtmlEntities(schedule.title)}

{schedule.time && (