From 3ee04bc17fee42f77b26a33632b2d81201d99b29 Mon Sep 17 00:00:00 2001 From: iyxxnjin <131842947+iyxxnjin@users.noreply.github.com> Date: Fri, 2 Jan 2026 10:20:39 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=F0=9F=9A=A8=20Fix=20:=20=EB=8C=80=EC=8B=9C?= =?UTF-8?q?=EB=B3=B4=EB=93=9C=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20=ED=99=98?= =?UTF-8?q?=EA=B2=BD=EC=97=90=EC=84=9C=20=EB=93=9C=EB=A1=AD=EB=8B=A4?= =?UTF-8?q?=EC=9A=B4=20=EB=82=98=ED=83=80=EB=82=98=EB=8F=84=EB=A1=9D=20por?= =?UTF-8?q?tal=20position=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/dropdown/dropdown-portal/DropdownPortal.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/common/dropdown/dropdown-portal/DropdownPortal.tsx b/src/components/common/dropdown/dropdown-portal/DropdownPortal.tsx index d5ef0fe..3067cb2 100644 --- a/src/components/common/dropdown/dropdown-portal/DropdownPortal.tsx +++ b/src/components/common/dropdown/dropdown-portal/DropdownPortal.tsx @@ -1,7 +1,7 @@ import { useState, useEffect } from "react"; import { useDeviceSize } from "@/hooks/useDeviceSize"; -import Portal from "../../../../components/common/dropdown/dropdown-portal/Portal"; +import Portal from "@/components/common/dropdown/dropdown-portal/Portal"; import Dropdown, { DropdownItem } from "@/components/common/dropdown"; interface DropdownPortalProps { @@ -22,8 +22,8 @@ export default function DropdownPortal({ if (isMobile) { setStyle({ - position: "fixed", - top: anchorRect.bottom + window.scrollY + 4, + position: "absolute", + top: anchorRect.bottom + window.scrollY + 5, left: anchorRect.right + window.scrollX - 90, zIndex: 1000, }); From b4a4716594f2ab70870873dbc242a40eebdddfcf Mon Sep 17 00:00:00 2001 From: iyxxnjin <131842947+iyxxnjin@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:09:25 +0900 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=9A=A8=20Fix=20:=20=ED=95=A0=20?= =?UTF-8?q?=EC=9D=BC=20=EC=88=98=EC=A0=95=20=EB=AA=A8=EB=B0=94=EC=9D=BC=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=EC=97=90=EC=84=9C=20=EC=8A=A4=ED=81=AC?= =?UTF-8?q?=EB=A1=A4=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../_components/mobile/MobileDialogLayout.tsx | 9 ++++++++- .../dropdown/dropdown-portal/DropdownPortal.tsx | 12 ++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/app/(protected)/_components/todo-modal/_components/mobile/MobileDialogLayout.tsx b/src/app/(protected)/_components/todo-modal/_components/mobile/MobileDialogLayout.tsx index cd2b2ca..164f623 100644 --- a/src/app/(protected)/_components/todo-modal/_components/mobile/MobileDialogLayout.tsx +++ b/src/app/(protected)/_components/todo-modal/_components/mobile/MobileDialogLayout.tsx @@ -1,6 +1,6 @@ "use client"; -import { ReactNode } from "react"; +import { ReactNode, useEffect } from "react"; interface MobileDialogLayoutProps { children: ReactNode; @@ -11,6 +11,13 @@ export default function MobileDialogLayout({ children, onClose, }: MobileDialogLayoutProps) { + useEffect(() => { + document.body.style.overflow = "hidden"; + + return () => { + document.body.style.overflow = ""; + }; + }, []); return (
({}); - const { isMobile } = useDeviceSize(); + const { isDesktop } = useDeviceSize(); useEffect(() => { if (!anchorRect) return; - if (isMobile) { + if (isDesktop) { setStyle({ position: "absolute", top: anchorRect.bottom + window.scrollY + 5, - left: anchorRect.right + window.scrollX - 90, + left: anchorRect.right + window.scrollX - 20, zIndex: 1000, }); } else { setStyle({ position: "absolute", - top: anchorRect.bottom + window.scrollY + 4, - left: anchorRect.right + window.scrollX - 20, + top: anchorRect.bottom + window.scrollY + 5, + left: anchorRect.right + window.scrollX - 90, zIndex: 1000, }); } - }, [anchorRect, isMobile]); + }, [anchorRect, isDesktop]); return ( From 02f8f07504f016c5bc8652b7482d288ab53bc687 Mon Sep 17 00:00:00 2001 From: iyxxnjin <131842947+iyxxnjin@users.noreply.github.com> Date: Fri, 2 Jan 2026 13:14:30 +0900 Subject: [PATCH 3/3] =?UTF-8?q?=F0=9F=94=A8=20Refactor=20:=20import=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20@=20alias=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../todos/_components/TodosContent.tsx | 2 +- .../common/input/auth-input/AuthInput.tsx | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 13 deletions(-) diff --git a/src/app/(protected)/todos/_components/TodosContent.tsx b/src/app/(protected)/todos/_components/TodosContent.tsx index 021e03d..763fdea 100644 --- a/src/app/(protected)/todos/_components/TodosContent.tsx +++ b/src/app/(protected)/todos/_components/TodosContent.tsx @@ -1,7 +1,7 @@ "use client"; import { useRouter, useSearchParams } from "next/navigation"; -import { useEffect, useRef, useState } from "react"; +import { useEffect, useState } from "react"; import GoalSelect from "./GoalSelect"; import ListItem from "@/components/common/list/list-item/ListItem"; diff --git a/src/components/common/input/auth-input/AuthInput.tsx b/src/components/common/input/auth-input/AuthInput.tsx index ab7c6d9..959556c 100644 --- a/src/components/common/input/auth-input/AuthInput.tsx +++ b/src/components/common/input/auth-input/AuthInput.tsx @@ -1,6 +1,8 @@ "use client"; -import BaseInput, { InputType as BaseInputType } from "../base-input/BaseInput"; +import BaseInput, { + InputType as BaseInputType, +} from "@/components/common/input/base-input/BaseInput"; import clsx from "clsx"; import { EyeIcon, EyeSlashIcon } from "@heroicons/react/24/outline"; @@ -41,7 +43,6 @@ export default function AuthInput({ onChangeInput, onClickTogglePassword, }: InputProps) { - const isPasswordField = type === "password"; let inputType: BaseInputType; @@ -60,23 +61,30 @@ export default function AuthInput({ "border-gray-100": status === "default", "border-gray-200": status === "filled", "border-red-500": status === "error", - } - ) + }, + ); const rightIcon = isPasswordField && ( - - ) + ); return ( -
+
); -} \ No newline at end of file +}