diff --git a/Projects/App/Sources/DesignSystem/InfoList/InfoListView.swift b/Projects/App/Sources/DesignSystem/InfoList/InfoListView.swift index c028ed1..57a1c03 100644 --- a/Projects/App/Sources/DesignSystem/InfoList/InfoListView.swift +++ b/Projects/App/Sources/DesignSystem/InfoList/InfoListView.swift @@ -32,6 +32,9 @@ struct InfoListView: View { Text("입실시간") .frame(width: 49, alignment: .leading) + Text("퇴실시간") + .frame(width: 49, alignment: .leading) + Spacer() } .expoFont(.caption1B) diff --git a/Projects/App/Sources/DesignSystem/InfoList/SceneApplicationInfoListView.swift b/Projects/App/Sources/DesignSystem/InfoList/SceneApplicationInfoListView.swift new file mode 100644 index 0000000..3d87ad9 --- /dev/null +++ b/Projects/App/Sources/DesignSystem/InfoList/SceneApplicationInfoListView.swift @@ -0,0 +1,49 @@ +// +// SceneApplicationInfoListView.swift +// Expo-iOS +// +// Created by 서지완 on 1/7/25. +// Copyright © 2025 SchoolofCompany. All rights reserved. +// + +import SwiftUI + +struct SceneApplicationInfoListView: View { + var body: some View { + VStack(spacing: 16) { + Rectangle() + .expoColor(ExpoColor.gray600) + .frame(height: 0.7) + + HStack(spacing: 45) { + Text("성명") + .frame(width: 25, alignment: .leading) + .padding(.leading, 50) + + Text("소속") + .frame(width: 25, alignment: .leading) + + Text("직급") + .frame(width: 25, alignment: .leading) + + Text("안내문자 발송용 연락처") + .frame(width: 129, alignment: .leading) + + Text("개인정보동의제공 동의") + .frame(width: 130, alignment: .leading) + + Spacer() + } + .expoFont(.caption1B) + .expoColor(ExpoColor.gray600) + + Rectangle() + .expoColor(ExpoColor.gray600) + .frame(height: 0.7) + } + } +} + +#Preview { + UserManagementView() +} diff --git a/Projects/App/Sources/DesignSystem/Program/ExpoProgramDetail.swift b/Projects/App/Sources/DesignSystem/Program/ExpoProgramDetail.swift index f733f94..6aa1b8e 100644 --- a/Projects/App/Sources/DesignSystem/Program/ExpoProgramDetail.swift +++ b/Projects/App/Sources/DesignSystem/Program/ExpoProgramDetail.swift @@ -15,6 +15,7 @@ public struct ExpoProgramDetail: View { var position: String var attendanceState: Bool var inTime: String + var outTime: String var action: () -> Void @State private var isPressed = false @@ -26,6 +27,7 @@ public struct ExpoProgramDetail: View { position: String, attendanceState: Bool, inTime: String, + outTime: String, action: @escaping () -> Void = {} ) { self.programNum = programNum @@ -34,6 +36,7 @@ public struct ExpoProgramDetail: View { self.position = position self.attendanceState = attendanceState self.inTime = inTime + self.outTime = outTime self.action = action } @@ -65,8 +68,10 @@ public struct ExpoProgramDetail: View { } Text(inTime) - .padding(.leading, 50) + .frame(width: 140, alignment: .center) + Text(outTime) + .frame(width: 50, alignment: .center) } .padding(.bottom, 36) .expoFont(.caption2R) diff --git a/Projects/App/Sources/Feature/ProgramDetailFeature/Sources/ProgramDetailView.swift b/Projects/App/Sources/Feature/ProgramDetailFeature/Sources/ProgramDetailView.swift index ddd63a9..0b7d130 100644 --- a/Projects/App/Sources/Feature/ProgramDetailFeature/Sources/ProgramDetailView.swift +++ b/Projects/App/Sources/Feature/ProgramDetailFeature/Sources/ProgramDetailView.swift @@ -71,49 +71,29 @@ struct ProgramDetailView: View { } .padding(.top, 13) - infoList() - .padding(.top, 12) - - ForEach(1..<10, id: \.self) { index in - ExpoProgramDetail(programNum: index, userName: "서지완", affiliation: "고등학교", position: "연수자", attendanceState: true, inTime: "10:30") + ScrollView(.horizontal, showsIndicators: false) { + InfoListView() + .padding(.top, 12) + + ScrollView(showsIndicators: false) { + ForEach(1..<10, id: \.self) { index in + ExpoProgramDetail( + programNum: index, + userName: "서지완", + affiliation: "고등학교", + position: "연수자", + attendanceState: true, + inTime: "10:30", + outTime: "11:30" + ) + } + .frame(maxWidth: .infinity, alignment: .leading) + } } Spacer() } } - - @ViewBuilder - func infoList() -> some View { - VStack(spacing: 16) { - Rectangle() - .expoColor(ExpoColor.gray600) - .frame(height: 0.7) - HStack(spacing: 0) { - Text("성명") - .padding(.leading, 54) - - Text("소속") - .padding(.leading, 36) - Text("직급") - .padding(.leading, 36) - - Text("출석여부") - .padding(.leading, 36) - - Text("입실시간") - .padding(.leading, 36) - - Spacer() - } - .expoFont(.caption1B) - .expoColor(ExpoColor.gray600) - - Rectangle() - .expoColor(ExpoColor.gray600) - .frame(height: 0.7) - } - .padding(.bottom, 16) - } } #Preview { diff --git a/Projects/App/Sources/Feature/UserManagementFeature/Sources/UserManagementView.swift b/Projects/App/Sources/Feature/UserManagementFeature/Sources/UserManagementView.swift index 6464a43..2c25439 100644 --- a/Projects/App/Sources/Feature/UserManagementFeature/Sources/UserManagementView.swift +++ b/Projects/App/Sources/Feature/UserManagementFeature/Sources/UserManagementView.swift @@ -73,7 +73,7 @@ struct UserManagementView: View { ScrollView(.horizontal, showsIndicators: false) { if userInfoListName == "현장 신청" { - sceneApplicationInfoList() + SceneApplicationInfoListView() .padding(.top, 12) } else { InfoListView() @@ -88,7 +88,8 @@ struct UserManagementView: View { affiliation: "고등학교", position: "연수자", attendanceState: true, - inTime: "10:30" + inTime: "10:30", + outTime: "11:30" ) } .frame(maxWidth: .infinity, alignment: .leading) @@ -142,40 +143,6 @@ struct UserManagementView: View { .presentationDetents([.height(230)]) } } - - @ViewBuilder - func sceneApplicationInfoList() -> some View { - VStack(spacing: 16) { - Rectangle() - .expoColor(ExpoColor.gray600) - .frame(height: 0.7) - HStack(spacing: 45) { - Text("성명") - .frame(width: 25, alignment: .leading) - .padding(.leading, 50) - - Text("소속") - .frame(width: 25, alignment: .leading) - - Text("직급") - .frame(width: 25, alignment: .leading) - - Text("안내문자 발송용 연락처") - .frame(width: 129, alignment: .leading) - - Text("입실시간") - .frame(width: 49, alignment: .leading) - - Spacer() - } - .expoFont(.caption1B) - .expoColor(ExpoColor.gray600) - - Rectangle() - .expoColor(ExpoColor.gray600) - .frame(height: 0.7) - } - } } #Preview {