From 61bcd1618a1bde22678b6afc1d62d4d384263290 Mon Sep 17 00:00:00 2001 From: minjun0317 Date: Wed, 30 Sep 2026 13:23:52 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=BC=EC=A0=95=20=EB=AA=A9=EB=A1=9D?= =?UTF-8?q?=EC=97=90=20=EC=9C=84=EC=B9=98=EC=99=80=20=EB=A9=94=EB=AA=A8=20?= =?UTF-8?q?=EA=B0=84=EB=9E=B5=20=EC=A0=95=EB=B3=B4=20=ED=91=9C=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Calendar/Views/CalendarView.swift | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/Moil/Features/Calendar/Views/CalendarView.swift b/Moil/Features/Calendar/Views/CalendarView.swift index ec4106b..d3068c1 100644 --- a/Moil/Features/Calendar/Views/CalendarView.swift +++ b/Moil/Features/Calendar/Views/CalendarView.swift @@ -861,10 +861,18 @@ private struct DayScheduleSheet: View { .foregroundStyle(MoilColor.textSecondary) .multilineTextAlignment(.leading) .frame(width: 46, alignment: .leading) - Text(event.title) - .font(MoilTypography.bold(16)) - .foregroundStyle(MoilColor.textPrimary) - .lineLimit(2) + VStack(alignment: .leading, spacing: 4) { + Text(event.title) + .font(MoilTypography.bold(16)) + .foregroundStyle(MoilColor.textPrimary) + .lineLimit(2) + if let summary = summary(for: event) { + Text(summary) + .font(MoilTypography.regular(13)) + .foregroundStyle(MoilColor.textSecondary) + .lineLimit(1) + } + } Spacer(minLength: 8) AvatarDots(colors: avatarColors(event)) Image(systemName: "chevron.right") @@ -882,6 +890,17 @@ private struct DayScheduleSheet: View { } .background(MoilColor.surface) } + + /// 상세를 열지 않아도 알 수 있게 위치와 메모 첫 줄을 한 줄로 이어 보여줍니다. 둘 다 없으면 생략합니다. + private func summary(for event: CalendarEvent) -> String? { + let memoFirstLine = event.memo? + .split(whereSeparator: \.isNewline) + .first + .map(String.init)? + .nilIfBlank + let parts = [event.location?.nilIfBlank, memoFirstLine].compactMap { $0 } + return parts.isEmpty ? nil : parts.joined(separator: " · ") + } } private struct AvatarDots: View {