From 79da9935b143478e8d3960ffb6d4c30e1db4a145 Mon Sep 17 00:00:00 2001 From: SleepingOff Date: Thu, 19 Feb 2026 19:38:31 +0900 Subject: [PATCH 1/5] =?UTF-8?q?ref:=20=EC=95=84=EC=9D=B4=EC=BD=98=20?= =?UTF-8?q?=EC=95=A0=EB=8B=88=EB=A9=94=EC=9D=B4=EC=85=98=20=EB=8F=99?= =?UTF-8?q?=EC=9E=91=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/(my)/teamAlarm.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/app/(my)/teamAlarm.tsx b/app/(my)/teamAlarm.tsx index 14c2369..8cf015e 100644 --- a/app/(my)/teamAlarm.tsx +++ b/app/(my)/teamAlarm.tsx @@ -135,6 +135,7 @@ const TeamAlarm = ({}: TeamAlarmProps) => { const handlePressTeam = (teamId: number) => () => { const team = teamLists.find((t) => t.teamId === teamId); if (!team) return; + animateIcon(!isOpenTeamList ? 1 : 0); setCurrentTeam(team); setSettings(null); // 새로운 팀 선택 시 이전 설정 초기화 (로딩 표시 유도) From e406babbfada44b426deaa32986ad20949398311 Mon Sep 17 00:00:00 2001 From: SleepingOff Date: Thu, 19 Feb 2026 19:41:18 +0900 Subject: [PATCH 2/5] =?UTF-8?q?style:=20=ED=8C=80=20=EC=84=A0=ED=83=9D=20?= =?UTF-8?q?=EB=AA=A8=EB=8B=AC=20=EC=8A=A4=ED=83=80=EC=9D=BC=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/templates/CalendarModal.tsx | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/shared/ui/templates/CalendarModal.tsx b/shared/ui/templates/CalendarModal.tsx index 395e786..f338de7 100644 --- a/shared/ui/templates/CalendarModal.tsx +++ b/shared/ui/templates/CalendarModal.tsx @@ -363,7 +363,7 @@ const CalendarModal = ({ style={style.modalBackdrop} onPress={() => setIsOpenTeamList(false)} > - + item.teamId.toString()} @@ -503,6 +503,17 @@ const style = StyleSheet.create({ alignItems: "center", paddingBottom: 40, }, + teamModalContainer: { + width: "90%", + backgroundColor: globalGray0, + borderRadius: globalSpacingSm, + overflow: "hidden", + shadowColor: "#000", + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.25, + shadowRadius: 3.84, + elevation: 5, + }, modalContainer: { height: "90%", backgroundColor: globalGray0, From 68ebf20277ca341003989b4d0f1c96ca3f05e15a Mon Sep 17 00:00:00 2001 From: SleepingOff Date: Thu, 19 Feb 2026 19:50:56 +0900 Subject: [PATCH 3/5] =?UTF-8?q?ref:=20=EB=A1=B1=ED=94=84=EB=A0=88=EC=8A=A4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=8D=94=EB=B8=94=ED=83=AD=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/molecules/CalendarWeek.tsx | 31 ++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/shared/ui/molecules/CalendarWeek.tsx b/shared/ui/molecules/CalendarWeek.tsx index 05030de..081a832 100644 --- a/shared/ui/molecules/CalendarWeek.tsx +++ b/shared/ui/molecules/CalendarWeek.tsx @@ -1,7 +1,7 @@ import { CalendarContext } from "@/shared/hooks/useCalendarAPI"; import { CalendarDate, CalendarSchedule } from "@/shared/types/Calendar"; import getWeekSchedules from "@/shared/utils/getWeekSchedules"; -import { useContext } from "react"; +import { useContext, useRef } from "react"; import { GestureResponderEvent, Pressable, @@ -49,6 +49,7 @@ const packSchedulesIntoLanes = (items: ReturnType) => { const LANE_HEIGHT = 16; const LANE_GAP = 4; const DATES_HEIGHT = 18; +const DOUBLE_TAP_DELAY_MS = 280; /* ---------- props ---------- */ interface CalendarSchedulesProps { @@ -81,18 +82,40 @@ const CalendarWeek = ({ const { selectedDate } = calendarContext; const MAX_LANES = height > 1200 ? maxLanes + 2 : maxLanes; const totalHeight = DATES_HEIGHT + MAX_LANES * (LANE_HEIGHT + LANE_GAP); + const lastTapRef = useRef<{ time: number; index: number } | null>(null); const handleWeekPress = (event: GestureResponderEvent) => { const { locationX } = event.nativeEvent; - const index = Math.floor(locationX / DAY_WIDTH); - onSelectDate?.(dates[index].fullDate); + const index = Math.min(6, Math.max(0, Math.floor(locationX / DAY_WIDTH))); + const tappedDate = dates[index].fullDate; + const now = Date.now(); + const lastTap = lastTapRef.current; + + onSelectDate?.(tappedDate); + + if (isSameDay(tappedDate, selectedDate)) { + onLongSelectDate?.(); + lastTapRef.current = null; + return; + } + + if ( + lastTap && + now - lastTap.time <= DOUBLE_TAP_DELAY_MS && + lastTap.index === index + ) { + onLongSelectDate?.(); + lastTapRef.current = null; + return; + } + + lastTapRef.current = { time: now, index }; }; return ( Date: Thu, 19 Feb 2026 19:55:21 +0900 Subject: [PATCH 4/5] =?UTF-8?q?style:=20=EC=83=81=EC=84=B8=20=EB=AA=A8?= =?UTF-8?q?=EB=8B=AC=20=EB=86=92=EC=9D=B4=20=EC=A1=B0=EC=A0=95=20=EB=B0=8F?= =?UTF-8?q?=20=EC=A0=9C=EB=AA=A9=20=EC=97=AC=EB=B0=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared/ui/templates/CalendarDetailModal.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/shared/ui/templates/CalendarDetailModal.tsx b/shared/ui/templates/CalendarDetailModal.tsx index 79135da..910fc8e 100644 --- a/shared/ui/templates/CalendarDetailModal.tsx +++ b/shared/ui/templates/CalendarDetailModal.tsx @@ -120,7 +120,7 @@ const CalendarDetailModal = ({ return ( - + @@ -135,7 +135,9 @@ const CalendarDetailModal = ({ - + Date: Thu, 19 Feb 2026 19:57:17 +0900 Subject: [PATCH 5/5] =?UTF-8?q?chore:=20=EC=84=B8=EB=B6=80=20=EB=B2=84?= =?UTF-8?q?=EC=A0=84=20=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ecb3749..58f3bba 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "nemonemo", "main": "expo-router/entry", - "version": "1.0.0", + "version": "1.0.1", "scripts": { "start": "expo start", "reset-project": "node ./scripts/reset-project.js",