Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team05][iOS][Jason] 앱 초기화면(검색탭) 구현 #26

Merged
merged 25 commits into from
May 27, 2022

Conversation

JasonLee0223
Copy link
Collaborator

안녕하세요! 이번에 Team05에서 iOS Jason입니다. 앞으로 3주 잘부탁드립니다!
이전까지 작업할 때 팀원들의 도움을 많이 받아서 혼자서 한 번 해내보고싶어서 학습했던 내용을 바탕으로
최대한 구현할 수 있는 부분까지 진행해보는게 이번 프로젝트 목적입니다!

🧑🏼‍💻 작업 목록

  • Airbnb 프로젝트 생성
  • 브랜치 생성
  • .gitignore 작성
  • 메인 레이아웃 구성
    • TabBarController & NavigationController Embed
    • 각 탭 별로 Controller 구별
    • NavigationBar 에 SearchBar 생성하기
      • UISearchController 적용

💭 학습 키워드

  • NavigationController
  • UISearchController
  • UIScrollView
  • AutoLayout
  • SF symbol

🤔 고민과 해결

  • UISearchBar를 처음 써보는 계기가 되어 진행하였다가 검색창을 눌렀을 때 목록들이 올라올 수 있도록 UISearchController로 변경하여 해결하였습니다.
  • 처음 SF symbol을 사용하다보니 searchBar에 왼쪽에 돋보기 이모티콘으로 사용될 줄 알았지만 default로 제공해준다는것을 알게되어 화면 하단의 탭바에만 symbol을 적용하였습니다.

💬 부연 설명

  • ScrollView의 Scroll 하는 액션을 취하려고 contentLayoutGuide를 사용하였는데 좀 어색하게 움직여서 보완할 예정입니다. (FrameLayoutGuide를 사용하는것도 고민해보고있습니다!)

💬 실행 화면

스크린샷 2022-05-25 오후 4 40 57

@JasonLee0223 JasonLee0223 added the review-iOS Extra attention is needed label May 25, 2022
@JasonLee0223 JasonLee0223 self-assigned this May 25, 2022
Copy link

@GangWoon GangWoon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

안녕하세요 :)
제 생각은 정답이 아니기에 참고만 하시고, 납득이 되는 부분만 수정하셨으면 좋겠습니다.

스토리보드로 작업한 부분이 있으셔서 해당 부분은 집가서 확인해보고 말씀드릴 부분이 있다면 추가적으로 언급드리도록 하겠습니다 :)

Comment on lines 16 to 31
guard let tabBarController = self.window?.rootViewController as? UITabBarController else {
return
}
tabBarController.tabBar.tintColor = .black
tabBarController.tabBar.barTintColor = .gray
tabBarController.tabBar.backgroundColor = .systemGray6
tabBarController.tabBar.clipsToBounds = true

if let tabBarItems = tabBarController.tabBar.items {
tabBarItems[0].title = "검색"
tabBarItems[1].title = "위시리스트"
tabBarItems[2].title = "내 예약"

tabBarItems[0].image = UIImage(named: "magnifyingglass")
tabBarItems[1].image = UIImage(named: "heart")
tabBarItems[2].image = UIImage(named: "person.fill")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

해당 작업을 의미가 있는 메소드로 분리시키는 건 어떠실까요? 시스템 노티를 받을 수 있는 공간에서 생각보다 큰 작업을 하실 경우에 읽는 사람에게 혼돈을 줄수도 있습니다.

추가적으로 배열 인덱스에 직접 접근하는 방법말고 다른 방법은 없었을까요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스토리보드를 사용하다보니 배열 인덱스로 접근하는 방법으로 생각하였습니다. 하여 메서드로 분리시키는 것으로 생각해보니
제가 ViewController의 컨테이너 형식을 놓친 것 같아 변경하고 스토리보드없이 코드로 작성하는쪽으로 방향을 돌리게 되었습니다.
수정한 내용은 아래와 같습니다.
SceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        
        window = UIWindow(windowScene: windowScene)
        
        let rootViewController = TabBarController()
        self.window?.rootViewController = rootViewController
        window?.makeKeyAndVisible()
    }

TabBarController.swift

class TabBarController: UITabBarController {
    
    let searchViewController = SearchViewController()
    let wishlistViewController = WishlistViewController()
    let reservationViewController = ReservationViewController()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setTabBarItems()
        setTabBarBackgroundColor()
    }
}

private extension TabBarController {
    
    func setTabBarItems() {
        let navigationViewController = UINavigationController(rootViewController: searchViewController)
        
        navigationViewController.tabBarItem = UITabBarItem(title: "검색", image: UIImage(systemName: "magnifyingglass"), tag: 0)
        wishlistViewController.tabBarItem = UITabBarItem(title: "위시리스트", image: UIImage(systemName: "heart"), tag: 1)
        reservationViewController.tabBarItem = UITabBarItem(title: "내 예약", image: UIImage(systemName: "person.fill"), tag: 2)
        self.viewControllers = [navigationViewController, wishlistViewController, reservationViewController]
    }
    
    func setTabBarBackgroundColor() {
        if #available(iOS 15.0, *) {
            let appearance = UITabBarAppearance()
            appearance.configureWithOpaqueBackground()
            appearance.backgroundColor = .systemGray6
            self.tabBar.standardAppearance = appearance
            self.tabBar.scrollEdgeAppearance = self.tabBar.standardAppearance
        } else {
            self.tabBar.barTintColor = .systemGray6
        }
    }
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드로 작성하시라는 말은 아니였습니다 ㅋㅋ
스토리 보드로 작성하더라도 신델리게이트가 갖는 내부 메소드로 작성해서 해당 메소드를 호출하는 식으로 가게되면 10줄에 걸쳐 작성하던 내용을 1줄 메소드 호출로 둔갑시킬수 있어서 드린 말씀이였습니다 :)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

탭바 아이템의 경우도 조금더 이쁘게 포팅할수 있는 방법이 있을거 같아요.
다만 중요한 부분은 아니니 넘어가셔도 괜찮을 거 같습니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드로 작성하게 된 것은 배열의 인덱스로 접근하는게 위험하다고 생각이 들어 주변 팀원들도 대부분 코드로 작성하여 방향을 틀게되었습니다..😅 말씀해주신 10줄에 걸쳐 작성된 부분을 1줄로 호출할 수 있는 방법도 찾아보고 테스트해보겠습니다! ㅎㅎ

range: NSRange(location: 0, length: 9))
maintext.attributedText = attributedString

maintext.frame.size.width = newSize.width

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

프레임을 직접 설정하는 방법말고 다른 방법은 없었을까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

피그마에 표기된 Rect 사이즈를 맞추려고하다보니 직접 설정하게되었는데 해당 코드없이도 정상적으로 표현되어 삭제하였습니다.

return mainImage
}()

func addSubView() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메소드 이름이 혼란을 주는거 같습니다.
그 이유는 오픈된 메소드면서 UIView.addSubView메소드가 기존에 존재하기때문인 거 같습니다.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 함수명을 작성하면서 신경이 쓰였습니다..😅 좀 어색할 수 있지만 동일한 의미를 갖는 단어 appendSubView로 바꾸었습니다!



func scrollConfiguration() {
contentScrollView.translatesAutoresizingMaskIntoConstraints = false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

의미가 있는 코드일까요?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AutoLayout을 코드로 설정해줄때 항상 빼먹지않고 적어야하는 것으로 알고있었습니다.
scrollView의 constraint가 safeAreaLayoutGuide를 통해 리사이징 되는 것 같다고 생각이듭니다..
하여 코드를 지워도 정상적으로 돌아가서 수정하였습니다. 아래 참고사이트를 좀 더 자세히 읽어보려고합니다!
https://zeddios.tistory.com/474

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이닛할때 동일한 작업을 하신거 같아서 드린 질문이였습니다.

}

private func setUpUIConfiguration() {
contentView.translatesAutoresizingMaskIntoConstraints = false

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

동일합니다.


class SearchViewController: UIViewController {

private var searchView = SearchView()

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

레퍼런스를 유지하는게 의미가 있을까요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 SearchView가 SearchBar를 구현하는 목적에 맞춰 작성하였는데 취지에 벗어나서 HomeView로 변경하였습니다!

@JasonLee0223
Copy link
Collaborator Author

JasonLee0223 commented May 26, 2022

수정한 내용을 push하여 적용하였습니다!
아! 현재 HomeView 영역을 ScrollView로 코딩하였는데 이 부분을 CollectionView로 미션 내용에 맞춰 변경할 예정입니다!

@GangWoon
Copy link

해당 pr에서 수정할게 더 이상 없다고 판단이 드시면 머지하시고 진행하셔도 됩니다 :)

@JasonLee0223 JasonLee0223 merged commit aecc3c3 into codesquad-members-2022:team-05 May 27, 2022
choisohyun pushed a commit that referenced this pull request May 29, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

Co-authored-by: moon-yerim <75062526+moonyerim2@users.noreply.github.com>
sabgilhun pushed a commit that referenced this pull request May 31, 2022
[Android][히데_라이너스] 달력 화면 기능 구현 진행
wooody92 pushed a commit that referenced this pull request May 31, 2022
feat: 위치검색기능 구현
choisohyun pushed a commit that referenced this pull request May 31, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
naneun pushed a commit that referenced this pull request Jun 2, 2022
[iOS] 커스텀 `CalendarPicker`를 사용해 현재 월부터의 캘린더를 띄울 수 있음
sabgilhun pushed a commit that referenced this pull request Jun 3, 2022
[feat] 레이아웃 전체 구성 및 달력 구현(20, 25)
wnsxor1993 added a commit that referenced this pull request Jun 3, 2022
[iOS] Refactor: 두번째 리뷰 사항 수정
choisohyun pushed a commit that referenced this pull request Jun 3, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

* Feature/15 (#42)

* refactor: 모달 배경 관련 스타일 별도 컴포넌트로 분리

* rename: custom-styled-component 폴더 utils 하위로 이동
- Header.js => Header.jsx 로 변경

* rename : calender 폴더 modal 하위 폴더로 이동
- 절대 경로 설정 및 적용

* refactor: ModalContainer 스타일 theme 사용 하도록 수정

* feat: Personnel 모달 컴포넌트 추가

* Feature/7 (#43)

* rename: context 폴더 분리
- provider 모두 context 폴더 하위로 이동

* feat: 인원 설정 모달 컨트롤러 버튼 컴포넌트 분리

* feat: 검색바 인원 상태 관리를 위한 관련 상수 추가

* feat: 검색바 인원 설정 모달 인원 추가, 인원 삭제 기능 추가

* feat: 검색바에 선택된 인원 출력 기능 추가 (#44)

* feat: 검색바에 선택된 인원 출력 기능 추가

* Feature/11 (#45)

* feat: 성인 없이 어린이, 유아 인원 추가 방지 기능 추가

* fix: 성인 인원을 줄일 수 없는 상황에 버튼 비활성화 색상 스타일 적용

* refactor: ResetButton 컴포넌트 onClick 핸들러 props로 받도록 수정

* feat: 인원 설정 초기화 기능 추가

* refactor&style: 중복코드 삭제, 줄띄움

* fix: 검색바 초기화 버튼 유무따라 크기가 변경되는 부분 수정
- 검색 버튼 아이콘 컬러 변경

* fix: 검색바 사이즈 줄면 초기화 버튼이 검색 버튼에 가리는 오류 수정

* Feature/46 (#47)

* refactor: 중복 코드 함수화, StyledExpandBackground 분기문
   - info 를 받아 time 으로 바꿔주는 함수
   - 체크인-체크아웃 사이에 있고, 1일이거나 마지막날일 경우에만 StyledExpandBackround 컴포넌트 생성

* feat: calender provider 에 prev date, next date 추가
   - 불필요한 useEffect 코드 제거

* feat: calender 컴포넌트에서 page 생성 부분을 calender carousel 컴포넌트로 이동
   - calender position 상태 생성

* chore: calender page width 수정(336 -> 350px)

* feat: 이전, 다음달 이동 버튼 로직 수정
   - curDate 를 직접 바꾸는 방식에서 calender position 만 바꿔주는 방식
   - calender position 에 따라 carousel에서 translateX 후 curDate 변경

* feat: Calender Carousel 컴포넌트 구현
   - prevDate, curDate, nextDate 기준으로 각각 Calender page wrapper 로 묶음
   - calender display 영역 내에서 moveArea 를 이동

* fix: 검색바 모달 관련 인풋창 아래에 나타나도록 위치 수정

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
junseokseo9306 added a commit that referenced this pull request Jun 8, 2022
hayoung123 pushed a commit that referenced this pull request Jun 11, 2022
* refactor : Calendar 컴포넌트 분리

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* feat : 캘린더 슬라이더 구현 (#18)

* refactor : 캘린더 스타일 지정 위치 변경

* test : slide 기능 구현 위해 테스트 코드 작성

* feat : animation으로 일회성 슬라이딩 구현

* feat : 캘린더 슬라이드 기능 구현

* refactor : 특정 간격에 대한 월, 연도를 구하는 형식으로 변경

* refactor : 연도, 월 계산 함수 통해 이벤트 함수 통합

* fix : 1월이 13월으로 나오는 버그 해결

* fix : 월 표시 문제 수정

* refactor : 스타일 컴포넌트 및 적용된 컴포넌트 이름 수정, 적용

* refactor : 연도, 월 표시 부분 리펙토링

* refactor : CalCell 부분 이름 변경 및 적용

* fix : 검색창, 모달창에 해당 월이 한 달 적게 표시되는 문제 해결

* fix : 달력 마지막 날이 토요일에 걸리는 경우 그라데이션 안되는 오류 해결

* feat : 반응형 미니바 구현 및 모달 외부 클릭 시 창 닫기 기능 구현  (#22)

* feat : MiniSearchBar 컴포넌트 생성

* feat : 미니바 애니메이션 구현

* feat : 미니바 애니메이션

* fix : 미니바 position 수정

* fix : 미니바 애니메이션 수정

* feat : StyledSearchBarWrapper 로 미니바, 서치바 랩핑

* refactor : props 받아오는 것 수정

* refactor : 미니바에 context를 사용하여 정보 표시

* feat : Modal 에 Background 추가

* feat : modal 외부 클릭 시 modal 창 닫히는 기능 구현

* fix : 모달 클릭 시에도 모달이 꺼지는 문제 해결

모달 자체에 onClick

* feat : Portal 을 사용하여 모달 창 닫기 기능 구현

* fix : portal 사용 시 모달 레이아웃이 깨지는 문제 해결

box-sizing: border-box; 을 추가했다.

* feat : 검색 버튼 클릭 시 모달 닫기

* fix : 모달 Background 로 인한 GNB z-index 수정

* fix : 모달 Background 로 인한 GNB z-index 수정

테스트를 위한 border 삭제

* feat : 검색 후 숙소 리스트 구현 (#24)

* feat : 이미지 및 데이터 추가 및 위치 이동

* feat : hotels api 추가 및 수정

* fix : 이미지, api 이동에 따른 파일 수정

* feat : Search Desc의 필터된 정보란 설정

* feat : 검색 결과 상세값 및 가격 불러오기 일부 설정

* feat : 결과창 금액란 생성

* feat : 숙소별 이미지를 불러오기 위한 api 생성 및 적용

* refactor : 페이지 수 지정

* feat : 반응형 미니바 구현 완성  (#25)

* feat : 미니바 slide-in 애니메이션 추가

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* fix : 반응형 미니바 구현 완료

검색바 외부를 클릭하면 반응형으로 검색바를 미니바로 바꾼다.

* refactor : miniSearchBarIsHidden & searBarIsHidden 상태를 selectedSearchBar 상태 하나로 통합

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* feat : 검색 결과 지도에 표시 (#26)

* feat : map 생성 및 컴포넌트 분리를 위한 상태 위치 변경

* feat : 지도 영역 분리 및 데이터에 따른 지도 표시 구현

* feat : 검색 지도가 스크롤 시 고정이 유지되도록 설정

* fix : 기타 에러 사항 수정 (#27)

* fix : 캘린더 hover 시 색상 변경되도록 수정

* fix : PR 내용 반영 및 수정

Co-authored-by: Serin-Kim <serin9864@gmail.com>
Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>
Co-authored-by: Serin Kim <68533016+Serin-Kim@users.noreply.github.com>
choisohyun pushed a commit that referenced this pull request Jun 12, 2022
* Feature/3 (#26)

* rename: gnb 폴더 생성하여 관련 컴포넌트 이동
   - styled -> customStyled 로 변경 적용
* refactor: gnb 컴포넌트 css 수정
* feat: main banner UI 구현
* refactor: gnb 컴포넌트 hover 및 cursor pointer 적용

* Feature/2 (#27)

* chore: mui 버전 통일

* feat: 글로벌 스타일 추가

* feat: SearchBar 컴포넌트 style 작성 및 이벤트 추가

* Feature/alias (#28)

* chore: alias 경로 설정을 위한 react-app-rewired 설치 및 설정파일 생성
* refactor: 절대경로 반영 (index, app, gnb, main-banner)
* fix: search input width 고정

* Feature/4 (#29)

* feat: calender page component 구현
* feat: 달력 월~일요일 부분 컴포넌트 구현
* feat: 해당 연-월에 맞는 날짜 영역 컴포넌트 구현
* feat: 이전, 다음 버튼 컴포넌트 및 클릭 기능 구현
* feat: calender 컴포넌트 구현
   - 보여줄 달력 개수를 정하는 page 옵션
   - curData 기반으로 page 만큼의 달력 렌더링
* chore: 브라우저 확인용 App 에 calender 반영
* feat: calender 관련 상태 context 사용하여 분리 및 provider 컴포넌트 생성
   - 불필요한 주석 제거
* refactor: 컴포넌트 이름 변경, DatesOfMonth 에서 DateBox 컴포넌트 분리
* feat: DateBox 컴포넌트 구현
   - 클릭 시 checkIn, checkOut 상태 변경
   - checkIn, checkOut 날짜에 따라 동적 css 적용
* chore: 오타 수정, app.js 에 provider 적용

* feat: header 컴포넌트 생성
- gnb, search-bar, calender를 header 하위 컴포넌트로 수정

* Feature/30 (#32)

* refactor: 캘린더 체크인/체크아웃 모드와 date box 체크 위치 상태를 나타내는 문자열을 상수화
* refactor: 컴포넌트 별 데이터 가공 유틸 함수를 컴포넌트 밖으로 분리
* refactor: Date box 내부에 있던 날짜 비교용 checkInTime, checkOutTime 을 콘텍스트 provider 로 이동
   - checkInDate, checkOutDate 변수명 변경 -> checkInInfo, checkOutInfo
   - checkIn, checkOut, current 변수명 변경 -> checkInTime, checkOutTime, currentTime

* refactor: 캘린더 month 빈배열 생성 시 0 -> Null 로 변경

* Feature/31 (#33)

* refactor: 코드 리뷰 반영
- visibility 속성 display로 변경
- bool 타입 결과값 함수 중복 검사 제거
- SearchMenu 컴포넌트 div 태그로 변경

* feat & refactor: SearchBar 컴포넌트 컨텍스트 추가
- props로 내려주던 상태 context로 관리 하도록 함

* feat : 검색바 반응형 컴포넌트로 수정

* refactor: isFocus를 상태 관리에서 제외
- currentInput의 상태를 통해 얻을 수 있도록 함

* feat&refactor: Header 컴포넌트 반응형으로 수정
- GNB, MainBanner, SearchBar 모두 적용

* feat: 체크인, 체크아웃 인풋 영역 클릭 시 캘린더 모달 팝업 기능 추가

* feat: Header 컴포넌트 fixed 속성 추가

* feat: 모달창 클릭시 검색바 blur가 적용되지 않게 함

* Feature/34 (#36)

* feat: 체크인-체크아웃 사이 날짜 1일과 마지막일 전후 음영 반영
   - DatesOfMonth 컴포넌트 last date 월이 안맞는 오류 수정
     : getDate() 는 현재달 인덱스에 date 0을 주면 이전달 마지막날 반환
* feat: 현재 날짜 이전 날짜 선택 불가 및 회색 표시

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가 (#38)

* feat: 검색바 체크인, 체크아웃 날짜 출력 기능 추가
- 캘린더에서 선택한 날짜를 출력하도록 함

* Feature/20 (#40)

* refactor: ResetButton 동적으로 추가하도록 수정
- input요소의 value 유무에 따라 추가, 삭제

* feat: ResetButton 클릭 이벤트 추가
- 버튼 클릭시 input value 초기화
- 검색바가 포커스되어 있을 때만 버튼이 노출되도록 수정

* feat: 검색바 캘린더 체크인 체크아웃 상태 연동 (#41)

* fix: 포커스 이벤트 에러 수정
- ResetButton 포커스 시에만 노출되도록 수정
- 검색바 포커스 시 세로로 늘어나는 오류 수정

* fix: 캘린더 날짜 선택 오류 수정
- 체크아웃을 먼저 선택 후 체크인 선택 시 체크아웃보다 뒷날이어도 선택되는 오류 수정
- DateBox 컴포넌트 내 handle click 로직 수정

* feat: 캘린더 모달 선택 시 보여지는 달 업데이트
- 체크인 날짜 있는 경우 체크인 달로 시작
- 없는 경우 현재 달로 시작

* fix: 캘린더 토요일과 날짜 정렬

* Feature/15 (#42)

* refactor: 모달 배경 관련 스타일 별도 컴포넌트로 분리

* rename: custom-styled-component 폴더 utils 하위로 이동
- Header.js => Header.jsx 로 변경

* rename : calender 폴더 modal 하위 폴더로 이동
- 절대 경로 설정 및 적용

* refactor: ModalContainer 스타일 theme 사용 하도록 수정

* feat: Personnel 모달 컴포넌트 추가

* Feature/7 (#43)

* rename: context 폴더 분리
- provider 모두 context 폴더 하위로 이동

* feat: 인원 설정 모달 컨트롤러 버튼 컴포넌트 분리

* feat: 검색바 인원 상태 관리를 위한 관련 상수 추가

* feat: 검색바 인원 설정 모달 인원 추가, 인원 삭제 기능 추가

* feat: 검색바에 선택된 인원 출력 기능 추가 (#44)

* feat: 검색바에 선택된 인원 출력 기능 추가

* Feature/11 (#45)

* feat: 성인 없이 어린이, 유아 인원 추가 방지 기능 추가

* fix: 성인 인원을 줄일 수 없는 상황에 버튼 비활성화 색상 스타일 적용

* refactor: ResetButton 컴포넌트 onClick 핸들러 props로 받도록 수정

* feat: 인원 설정 초기화 기능 추가

* refactor&style: 중복코드 삭제, 줄띄움

* fix: 검색바 초기화 버튼 유무따라 크기가 변경되는 부분 수정
- 검색 버튼 아이콘 컬러 변경

* fix: 검색바 사이즈 줄면 초기화 버튼이 검색 버튼에 가리는 오류 수정

* Feature/46 (#47)

* refactor: 중복 코드 함수화, StyledExpandBackground 분기문
   - info 를 받아 time 으로 바꿔주는 함수
   - 체크인-체크아웃 사이에 있고, 1일이거나 마지막날일 경우에만 StyledExpandBackround 컴포넌트 생성

* feat: calender provider 에 prev date, next date 추가
   - 불필요한 useEffect 코드 제거

* feat: calender 컴포넌트에서 page 생성 부분을 calender carousel 컴포넌트로 이동
   - calender position 상태 생성

* chore: calender page width 수정(336 -> 350px)

* feat: 이전, 다음달 이동 버튼 로직 수정
   - curDate 를 직접 바꾸는 방식에서 calender position 만 바꿔주는 방식
   - calender position 에 따라 carousel에서 translateX 후 curDate 변경

* feat: Calender Carousel 컴포넌트 구현
   - prevDate, curDate, nextDate 기준으로 각각 Calender page wrapper 로 묶음
   - calender display 영역 내에서 moveArea 를 이동

* fix: 검색바 모달 관련 인풋창 아래에 나타나도록 위치 수정

* Feature/15 1 (#49)

* feat: Price 컴포넌트 생성
- Title 컴포넌트 재사용을 위해 분리

* refactor: 검색바 블러 이벤트 대신 dim레이어 클릭 시 모달이 사라지도록 수정
- e.preventDefault 때문에 range input의 thumb가 움직이지 않아 수정

* feat: 요금 설정 모달 요금별 데이터 그래프 추가
- 임시 데이터 추가

* feat: 요금 범위 설정 슬라이더 추가

* chore: chart.js 설정 추가

* fix: MainBanner 이미지 연결 오류 수정

* feat: 요금 모달 세부 텍스트 출력

* feat: 검색바에 요금 상태 출력
- 초기화 버튼 이벤트 핸들러 추가

* fix: merge 후 모달창이 관련 인풋창 아래에 위치하지 않는 오류 수정

* refactor: 인원 모달 컨트롤 버튼 하나의 컴포넌트로 합침
- type으로 add, remove 구분하도록 props 추가

* refactor: calender Prev Button, Next Button 을 통합한 Calender Button 구현 (#50)

Co-authored-by: moon-yerim <75062526+moonyerim2@users.noreply.github.com>

* refactor: 모달창 클릭 시 닫히지 않도록 하는 기능 수정
- dim레이어 삭제
- Node.contains를 사용한 방법으로 수정

Co-authored-by: bangdler <90082464+bangdler@users.noreply.github.com>
Co-authored-by: bangdler <zbthz90@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-iOS Extra attention is needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants