{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":611577213,"defaultBranch":"main","name":"javascript-movie-review","ownerLogin":"woowacourse","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2023-03-09T05:22:08.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/45747236?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1711010448.0","currentOid":""},"activityList":{"items":[{"before":"1a80aece7d71b91175ffb300b2a6c7a404692477","after":"241fc22ad84c1cb2ca1be7c5279760667e6acea9","ref":"refs/heads/pp449","pushedAt":"2024-04-07T15:44:54.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"woowapark","name":"공원","path":"/woowapark","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/81607552?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 다르(이상엽) 미션 제출합니다. (#147)\n\n* style(MoviePoster): 스켈레톤의 가로 세로 길이를 고정으로 지정\r\n\r\n* fix(createMoviePoster): 별점의 이미지와 숫자의 높이 안맞는 문제 수정\r\n\r\n* feat(createCloseButton): 닫기 버튼 구현\r\n\r\n* feat(createModal): 모달 생성 컴포넌트 구현\r\n\r\n* chore(star_empty.png): 이미지 파일 위치 변경\r\n\r\n* feat(fetchMovieDetail): 영화 상세 내역을 불러오는 api 추가\r\n\r\n* feat(getMessageByRating): 별점 별 메시지를 반환하는 함수 추가\r\n\r\n* chore: 영화 정보를 전달할 때 영화 id 값도 같이 전달하도록 수정\r\n\r\n* feat(EditableStarRating): 별점을 수정할 수 있는 컴포넌트 추가\r\n\r\n* feat(localStore): 로컬스토리지 값을 제어하는 모듈 추가\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 보여주는 모달 컴포넌트 추가\r\n\r\n* style(Header, MoviePosterBoard, SearchBox): 반응형 디자인 추가\r\n- Header: 헤더의 창이 줄어들면 검색바가 작아지고, hover 시에 검색바가 커지도록 추가\r\n- MoviePosterBoard: 창의 가로 크기에 따라 보여지는 영화 목록 수 조절\r\n\r\n* feat(MoviePosterBoard): 무한 스크롤 구현\r\n'더보기' 버튼 제거 및 무한 스크롤을 이용해 컨텐츠를 볼 수 있도록 변경\r\n\r\n* fix(createMoviePoster): 이미지 로드되기 전까지 스켈레톤 화면이 계속 보이도록 수정\r\n\r\n* fix(InfiniteScroll): 마지막 페이지의 경우 옵저버를 제거\r\n\r\n* fix(MoviePosterBoard): 검색결과가 없는 경우 검색 결과가 없다는 문구가 안나오는 문제 해결\r\n\r\n* chore(MovieDetailModal): 영화 줄거리가 없는 경우 디폴트 메시지 보여주도록 추가\r\n\r\n* fix(createMoviePoster): 만약 이미지 로드가 안된경우 디폴트 이미지가 보여지도록 수정\r\n\r\n* docs(README.md): 기능 요구사항 및 반영 내용 추가\r\n\r\n* test: 신규 기능에 대한 테스트코드 추가\r\n- 무한 스크롤이 동작하는지 테스트\r\n- 영화 상세내역을 보여주는 모달창 테스트\r\n- 영화 상세내역에 대한 mock data (fixtures) 추가\r\n\r\n* refactor(DOMController): MoviePosterController -> DOMController 로 이름 변경\r\n\r\n* fix(createMoviePoster): 중복된 폴더/파일 제거\r\n\r\n* test(main): 매직넘버를 상수로 처리\r\n\r\n* refactor(fetchMovie): 데이터 패칭 시 에러 핸들링까지 처리하도록 변경\r\n\r\n* fix(EditableStarRating): 별점 컴포넌트가 모바일 UI의 경우 텍스트는 안보이도록 수정\r\n\r\n* style(Modal): 모달 상단에 border 추가\r\n\r\n* style(MoviePosterBoard): 영화 포스터를 중앙에 배치되도록 디자인 변경\r\n\r\n* fix(createSearchBox): 모바일 UI 에서 검색바를 클릭하면 검색창이 보이도록 수정\r\n\r\n* fix(EditableStarRating): 기존에 저장된 별점 불러올 때 별점 스코어가 잘못 저장되어 있는 문제 해결\r\n\r\n* fix(EditableStarRating): getBoundingClientRect() 메서드 사용 제거\r\ngetBoundingClientRect() 메서드를 통해 x 좌표 계산 로직을 지우고 data 어트리뷰트 값을 이용하도록 수정\r\n\r\n* style(Modal): 영화 설명이 너무 길면 모달창이 깨지는 문제 해결\r\n- 영화 설명을 스크롤로 볼 수 있도록 수정\r\n\r\n* fix(EditableStarRating): 저장된 별점을 불러올 때 잘못된 수치를 보여주는 문제 해결\r\n\r\n* refactor(decounce): 디바운스 로직을 유틸함수로 분리\r\n\r\n* refactor: 컴포넌트는 모두 클래스로 관리되도록 수정\r\n\r\n* fix(MovieDetailModal): 영화 상세 모달 디자인 변경\r\n- 모바일 UI 에서 글자 크기 및 간격 수정\r\n\r\n* refactor(MovieDetail): 불필요한 if 조건문의 조건 삭제\r\n\r\n* refactor(EditableStarRating): 매직넘버를 상수로 처리","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 다르(이상엽) 미션 제출합니다. (#147)"}},{"before":"ee81f4d10985a03a9f8849c2f1a19eb335528a23","after":"b202ede90b5f3cf87e19928b23c20682bc370afb","ref":"refs/heads/vi-wolhwa","pushedAt":"2024-04-07T04:03:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"zigsong","name":"jieun song","path":"/zigsong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/44080404?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 월하(남수민) 미션 제출합니다. (#164)\n\n* chore: .env 설정\r\n\r\n* chore: .env ignore\r\n\r\n* docs: Readme 기능요구사항 명세\r\n\r\nCo-authored-by: lurgi \r\n\r\n* chore: Cypress 환경변수 & Prettier 세팅\r\n\r\nCo-authored-by: lurgi \r\n\r\n* test: API 테스트\r\n\r\nCo-authored-by: lurgi \r\n\r\n* chore: eslint 설정\r\n\r\nCo-authored-by: 월하 \r\n\r\n* chore: eslint endofline 충돌 해결\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: Header 컴포넌트 생성\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* chore: 이미지 파일 관련 수정\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 영화 UI 함수 구현\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: button 컴포넌트 UI\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: Header Logo 분리 및 설정 변경\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* reafcotr: 드릴링 수정\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* refactor: Header 컴포넌트 분리\r\n\r\nCo-authored-by: lurgi \r\n\r\n* refactor: Main 컴포넌트 분리\r\n\r\nCo-authored-by: lurgi \r\n\r\n* refactor: Main 컴포넌트 분리\r\n\r\nCo-authored-by: lurgi \r\n\r\n* refactor: Main 컴포넌트 분리\r\n\r\nCo-authored-by: lurgi \r\n\r\nrefactor: Main 컴포넌트 분리\r\n\r\nCo-authored-by: lurgi \r\n\r\nrebase\r\n\r\n* feat: 페칭 데이터 리스팅\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* chore: endOfLine\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 스켈레톤 UI 적용\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: SearchBox 버튼 이벤트 구현\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: api 관련 분리\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 검색 기능 추가\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 버튼 눌렀을 경우 이벤트 발생\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* refaoctr: 전역 state 구성\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* docs: 기능 구현 목록\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: page State 변경 로직\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* docs: 기능 구현 목록\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 영화 목록 없으면 더보기 삭제\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 별점 반올림\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat: 영화 스코어 UI 정렬\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* feat : 에러 처리 로직\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* chore: eslint cypress\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* chore: 불필요한 코드 수정\r\n\r\n* test: cypress 더보기 버튼 클릭 테스트\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* rebase\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* text: cypress 검색결과에 따른 더보기 버튼 display 테스트\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* text: cypress 검색 결과 테스트\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* test: cypress 커맨드 설정\r\n\r\nCo-Authored-By: 월하 <52562061+vi-wolhwa@users.noreply.github.com>\r\n\r\n* chore: package 설치\r\n\r\n* build: 애플리케이션 빌드\r\n\r\n* docs: readme\r\n\r\n* fix: 배포 문제\r\n\r\n* fix: 빌드 문제\r\n\r\n* fix: 빌드 문제\r\n\r\n* fix: 빌드 문제\r\n\r\n* fix: 빌드 문제\r\n\r\n* fix: 빌드문제\r\n\r\n* init\r\n\r\n* chore: 프로젝트 환경설정\r\n\r\n* rename: css 분리\r\n\r\n* chore: TS 확장 선언 (css, png)\r\n\r\n* feat: Text 컴포넌트\r\n\r\n* feat: Img 컴포넌트\r\n\r\n* feat: Button 컴포넌트\r\n\r\n* feat: Input 컴포넌트\r\n\r\n* feat: Form 컴포넌트\r\n\r\n* feat: Dom Utility\r\n\r\n* feat: 이미지 맵퍼 선언\r\n\r\n* feat: Logo 컴포넌트\r\n\r\n* feat: SearchBox 컴포넌트\r\n\r\n* feat: AppHeader 컴포넌트\r\n\r\n* feat: AppHeader 렌더링\r\n\r\n* feat: Wrapper 컴포넌트\r\n\r\n* refactor: Form 컴포넌트 속성 undefined 허용\r\n\r\n* refactor: AppHeader Wrapper 사용\r\n\r\n* feat: MovieListSection 컴포넌트\r\n\r\n* feat: MovieListSection 렌더링\r\n\r\n* refactor: List(ul) 컴포넌트 분리\r\n\r\n* refactor: Text > TextBox 컴포넌트 이름 변경\r\n\r\n* feat: ListItem 컴포넌트\r\n\r\n* feat: TMDB API\r\n\r\n* chore: ESLint 클래스멤버 간 빈라인 규칙 비활성화\r\n\r\n* chore: SpellChecker \"TMDB\" 등록\r\n\r\n* refactor: Img 컴포넌트 속성 추가\r\n\r\n* feat: MovieItem 컴포넌트\r\n\r\n* comment: 맞춤법 수정\r\n\r\n* refactor: DomUtils/$ 파라미터 변경\r\n\r\n* chore: ESLint \"class-method-use-this\" 규칙 비활성화\r\n\r\n* refactor: TMDB API 타입 선언 - 확장 제거\r\n\r\n* refactor: TmdbAPI 사용 방식 변경\r\n\r\n* feat: MovieListController\r\n\r\n* refactor: TextBox 컴포넌트 리턴타입 디테일\r\n\r\n* feat: 영화 리스트 렌더링\r\n\r\n* feat: 앱 실행 시 인기영화 렌더링링\r\n\r\n* refactor: API 요청 파라미터 타입 변경\r\n\r\n* refactor: DomUtils 확장 및 jsdoc 수정\r\n\r\n* refactor: DomUtils appendChildren 확장\r\n\r\n* feat: 영화 아이템의 별점 이미지 추가\r\n\r\n* feat: 더보기 버튼 기능\r\n\r\n* refactor: setAttributes를 함수까지 확장\r\n\r\n* docs: MovieItem 주석 위치 변경\r\n\r\n* feat: Anchor 컴포넌트\r\n\r\n* feat: 로고 링크 생성\r\n\r\n* fix: 로고 클릭 기능\r\n\r\n* feat: 검색 기능\r\n\r\n* fix: MovieList 초기화 안되는 문제\r\n\r\n* feat: DomController 생성 및 초기화\r\n\r\n* feat: 더보기 버튼 hide/show 기능\r\n\r\n* feat: 검색상자 x버튼 제거\r\n\r\n* refactor: 더보기 버튼 노출 방식 변경\r\n\r\n* feat: 검색 후 blur\r\n\r\n* refactor: DomUtil QuerySelector 제너릭타입 추가\r\n\r\n* refactor: SearchBox Blur 간략화\r\n\r\n* refactor: 영화 리스트 로딩 함수 병합\r\n\r\n* fix: 검색 시 리스트 타이틀이 변경되지 않는 문제\r\n\r\n* refactor: 불필요한 then 구문 제거\r\n\r\n* refactor: TMDB API 상수\r\n\r\n* feat: API Fetch 에러 처리\r\n\r\n* feat: MovieItemSkeleton 컴포넌트\r\n\r\n* remove: MovieItemSkeleton 삭제\r\n\r\n* feat: Skeleton UI 적용\r\n\r\n* style: MovieList 요소 Margin 변경\r\n\r\n* refactor: MovieItem 렌더링 책임 DomController로 위임\r\n\r\n* chore: template 파일 업로드\r\n\r\n* chore: cypress config 삭제\r\n\r\n* refactor: domUtils 불필요한 타입단언 제거\r\n\r\n* feat: 무한스크롤 구현\r\n\r\n* feat: Detail Modal 구현 완료\r\n\r\n* init: step2 초기 상태 복구\r\n\r\n* chore: .gitignore 변경\r\n\r\n* refactor: domUtils 분리\r\n\r\n* fix: 썸네일 로딩 전 Item 크기 확보\r\n\r\n* refactor: IntersectionObserver 불필요한 options 제거\r\n\r\n* refactor: 스켈레톤UI 재등록\r\n\r\n* fix: 로고 홈페이지 경로 변경\r\n\r\n---------\r\n\r\nCo-authored-by: Jeongwoo Park \r\nCo-authored-by: 월하 ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 월하(남수민) 미션 제출합니다. (#164)"}},{"before":"a169c813f6a7f2cb60e6f458394728db9552bc95","after":"843ab1221671c184251f64435d965c18c5700576","ref":"refs/heads/chlwlstlf","pushedAt":"2024-04-05T16:26:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"moonheekim0118","name":null,"path":"/moonheekim0118","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61469664?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 텐텐(최진실) 미션 제출합니다 (#162)\n\n* Co-authored-by: jaeml06 \r\n\r\n* docs: 기능 명세서 작성\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: header 컴포넌트 생성\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* chore: css, images 폴더로 분리\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* fix: header 이미지 로드 실패 오류 해결\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* chore: gitignore에 env 추가\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* chore: 프리티어 설정\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* fix: css 순서 변경\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 영화 목록 불러오기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 더보기 기능 만들기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 마지막 페이지에서 더보기 버튼 사라지게 하기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 영화 검색 기능 구현\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 영화 스켈레톤 UI 구현\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: MovieWrapper 생성\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: fetchData, MovieService 파일 분리\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: 불필요한 인자 제거\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* fix: tsconfig.json 오류 해결\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: movie 인터페이스 설정\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 오류 메세지 toast로 띄우기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 에러 메세지 toast로 보여주기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* fix: 불필요한 코드 삭제\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: 변수명 변경\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: 불필요한 조건문 제거\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* feat: 이미지 null일때 비어있는 이미지 띄우기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: 데이터 불러온 후에 버튼 생성\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* chore: cypress 기본 파일 세팅\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: api url 상수화하기\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* test: api 연결 테스트 작성\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* test: 영화 리스트 E2E 테스트\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* refactor: css를 각 컴포넌트로 분리\r\n\r\nCo-authored-by: jaeml06 \r\n\r\n* docs: 기능 구현사항 완료\r\n\r\n* chore: gitignore 변경\r\n\r\n* fix: 검색버튼 이미지 변경\r\n\r\n* refactor: js로 변경\r\n\r\n* fix: 파일 import 명 변경\r\n\r\n* fix: img 경로 추가\r\n\r\n* chore: dist 폴더\r\n\r\n* chore: 고아 브랜치 생성\r\n\r\n* chore: 불필요한 파일 제거\r\n\r\n* docs: 2단계 구현 사항 작성\r\n\r\n* fix: default일 때 코드 추가\r\n\r\n* chore: api 테스트 코드 삭제\r\n\r\n* fix: toast 함수 import 하기\r\n\r\n* refactor: 카멜케이스로 변경\r\n\r\n* refactor: 소수 첫 째 자리까지 보이게 하기\r\n\r\n* feat: 무한 스크롤 구현하기\r\n\r\n* fix: search에서 두 번째 페이지에서 none-text 화면 나오는 것 해결\r\n\r\n* docs: 별점에 대한 설명 추가\r\n\r\n* feat: 영화 상세 정보 모달 띄우기\r\n\r\n* feat: 모달 반으형 구현\r\n\r\n* design: 모바일 뷰 검색창 디자인\r\n\r\n* refactor: 도메인 객체 리팩토링\r\n\r\n* refactor: API 상수 만들기\r\n\r\n* feat: 모달 닫히면 html에서 제거\r\n\r\n* refactor: 유틸 함수로 분리\r\n\r\n* feat: 내 평점 등록하기\r\n\r\n* design: 반응형 추가하기\r\n\r\n* feat: 다시 0점도 될 수 있게 하기\r\n\r\n* refactor: api 함수 분리\r\n\r\n* fix: header 버튼 두 번 눌리는 오류 해결\r\n\r\n* design: 모바일 규격 변경\r\n\r\n* test: e2e 테스트\r\n\r\n* docs: 2단계 구현사황 완료\r\n\r\n* chore: step2 배포\r\n\r\n* refactor: 숫자 상수화하기\r\n\r\n* refactor: 장르, 오버뷰 없을 때 처리\r\n\r\n* chore: step2 배포\r\n\r\n* fix: 이미지 reflow 막기\r\n\r\n* chore: src 폴더 제거\r\n\r\n* chore: 충돌 일어나는 폴더 제거\r\n\r\n* remove: gitmessage 파일 삭제\r\n\r\n* feat: 에러 메세지 추가\r\n\r\n* refactor: 에러메세지 추가\r\n\r\n* refactor: 불리언 반환 함수 축약\r\n\r\n* refactor: css variables로 관리\r\n\r\n* refactor: display 공통 스타일 적용\r\n\r\n* feat: null 일 때 문구 상수화\r\n\r\n* refactor: localStorage 서비스 파일 만들기\r\n\r\n* refactor: 무한 스크롤 공통 함수 분리\r\n\r\n* feat: 모든 평점 테스트하기\r\n\r\n* feat: interface 추가, 상속\r\n\r\n* feat: image url 빌더 만들기\r\n\r\n* refactor: 검색창 form 동작 막기\r\n\r\n* feat: 모달 뒤에 스크롤 막기\r\n\r\n* feat: 모달 로딩 중 화면 띄우기\r\n\r\n* refactor: search box 리팩토링\r\n\r\n* refactor: eol 수정\r\n\r\n* chore: 배포\r\n\r\n---------\r\n\r\nCo-authored-by: jaeml06 \r\nCo-authored-by: jaeml06 ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 텐텐(최진실) 미션 제출합니다 (#162)"}},{"before":"9aebd0a54e9b837acc80a907e1fe60cbcc944200","after":"4b61025393e5893a676f34def4277939c722eb92","ref":"refs/heads/useon","pushedAt":"2024-04-05T15:55:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"moonheekim0118","name":null,"path":"/moonheekim0118","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61469664?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 썬데이(김유선) 미션 제출합니다 (#173)\n\n* style: eslint 및 prettier 설정 변경으로 코드 스타일 수정\r\n\r\n* feat: 영화 상세정보를 받아오는 api 생성\r\n\r\n* style: eslint 설정으로 코드 포맷팅 적용\r\n\r\n* feat: 영화를 누르면 해당 상세정보가 담긴 모달을 확인할 수 있고, 닫기를 누르면 모달이 닫히는 기능\r\n\r\n* refactor: header class 추가\r\n\r\n* docs: 2단계 기능 목록 구현 추가\r\n\r\n* feat: 영화의 별점을 매기는 기능\r\n\r\n* feat: 로컬스토리지에 이미 존재하는 영화면 값을 갱신해주고 아니면 새로 넣어주는 기능\r\n\r\n* feat: 로컬스토리지에 저장된 네별점을 가져와 보여주는 기능\r\n\r\n* refactor: 영화 아이템을 누르면 모달이 생성되고 닫으면 삭제하는 로직에서 모달을 먼저 그리고 안에 내용을 변경하는 로직으로 개선\r\n\r\n* fix: 모달의 내별점이 클릭되지 않는 문제 해결\r\n\r\n* fix: 영화 검색에서 영화 모달이 뜨지 않는 문제 해결\r\n\r\n* docs: 기능 목록 구현 업데이트\r\n\r\n* feat: 무한 스크롤 기능\r\n\r\n* fix: 데이터를 전부 로드해도 계속 데이터를 불러와 에러를 표시하는 문제 해결\r\n\r\n* fix: 1페이지가 아닌 페이지에서 모달이 여러개 띄워지는 문제 해결\r\n\r\n* refactor: 모달 스타일 추가 및 내별점이 없을 때 별점 0이 안뜨도록 수정\r\n\r\n* feat: 반응형 구현\r\n\r\n* refactor: 사용하지 않는 더보기 버튼 컴포넌트 삭제\r\n\r\n* feat: width를 줄였을 때도 헤더가 사라지지 않도록 수정, 모달 미디어쿼리 설정, 아이템 호버시 확대\r\n\r\n* docs: 영화 모달 컴포넌트 설명 추가\r\n\r\n* refactor: 여러 군데에서 쓰이는 imageUrl 상수화\r\n\r\n* refactor: 무한 스크롤 로직 별도의 유틸함수로 분리\r\n\r\n* refactor: 특정 요소가 감지되면 데이터가 더 추가되는 로직에서 특정 요소 변수명 수정\r\n\r\n* refactor: if-else문 early return으로 수정\r\n\r\n* refactor: pagination 공통 로직 유틸함수로 분리 및 setTimeout 제거\r\n\r\n* fix: 페이지 끝에 도달했는데도 옵저버가 지워지지 않아 에러 발생하는 문제 해결\r\n\r\n* refactor: 에러 메세지 및 내 별점 텍스트 상수화\r\n\r\n* refactor: 여러 부분에서 사용되는 별점 fomat코드(소수점 첫째자리까지 만드는) 유틸로 분리\r\n\r\n* refactor: 별점 표시 로직 변경\r\n\r\n* refactor: 내 별점 설명 로직 switch문에서 lookup table로 수정\r\n\r\n* refactor: 스타일 코드 스타일 파일로 분리\r\n\r\n* refactor: 컬러값 css variable로 관리\r\n\r\n* refactor: 영화 검색input type을 text에서 search로 수정\r\n\r\n* refactor: z-index 값 수정\r\n\r\n* refactor: localstorage key값 상수화\r\n\r\n* fix: 로고 눌렀을 때 404 페이지나오는 문제 해결\r\n\r\n* feat: 모달 클릭시 뒷 배경 스크롤 방지하는 기능\r\n\r\n* fix: 모달 데이터 다 받아오기 전 이전 데이터가 나오는 문제를 스켈레톤 띄워주면서 해결\r\n\r\n* refactor: base url 상수화\r\n\r\n* test: 인기 영화 테스트, 검색 영화 테스트 분리 및 api 테스트 추가\r\n\r\n* fix: 영화 상세 정보가 안불러와지는 문제 해결\r\n\r\n* feat: 모달 밖 영역 눌렀을 때 또는 모달이 오픈일 때 esc 누르면 모달이 닫히는 기능\r\n\r\n* refactor: 반응형 breake point 를 CSS Custom Property 로 사용","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 썬데이(김유선) 미션 제출합니다 (#173)"}},{"before":"ccef8c122ac0493f7d6557b1fac34164d07e31f0","after":"9e37a7443d7bea64d12525c814fb19a27c28e9f6","ref":"refs/heads/pakxe","pushedAt":"2024-04-05T15:22:14.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"iborymagic","name":"An Hyun Cheol","path":"/iborymagic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42052110?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 웨디(박세현) 미션 제출합니다. (#178)\n\n* test: api가 잘 호출되는지 테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* chore: env 파일 ignore\r\n\r\n* test: 영화 객체 테스트 작성\r\n\r\n* feat: 영화 객체 구현\r\n\r\n* feat: 포스터 상대 경로를 절대 경로로 바꿔주는 유틸 함수 구현\r\n\r\n* feat: 상대 경로의 이미지를 절대 경로 이미지로 저장하고 있도록 수정\r\n\r\n* test: 절대 경로 이미지와 일치하는지 테스트하도록 수정\r\n\r\n* chore: eslint 세팅\r\n\r\n* test: 가짜 영화 데이터 세팅\r\n\r\n* chore: 공동 작업자 설정\r\n\r\n* chore: 프리티어 세팅\r\n\r\n* docs: 기능 명세 작성\r\n\r\n* rename: 파일명 변경에 따른 수정\r\n\r\n* chore: ts, cypress 세팅\r\n\r\n* feat: 인기 영화 목록을 받아오는 메서드 구현\r\n\r\n* rename: 파일 명 변경\r\n\r\n* feat: 데이터를 받아오는 로직 구현\r\n\r\n* feat: 검색 결과를 반환하는 메서드 구현\r\n\r\n* feat: 도메인과 이미지 도메인 주소 상수화\r\n\r\n* rename: 파일명 변경\r\n\r\n* feat: 불필요한 프로퍼티 제거\r\n\r\n* refactor: 반복되는 데이터 가공 로직을 함수로 분리해 재사용하도록 수정\r\n\r\n* feat: 헤더 컴포넌트 구현\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* chore: 정적 파일 경로 수정\r\n\r\n* feat: 영화 컨테이너 컴포넌트 구현 완료\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 영화 컨테이너를 제작하고 다루는 클래스 구현\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 버튼 컴포넌트 구현\r\n\r\n* feat: 영화 아이템 컴포넌트 구현\r\n\r\n* feat: 영화 목록 컴포넌트 구현\r\n\r\n* feat: 메인 페이지 컨트롤러 구현\r\n\r\n* feat: 더 보기 버튼에 대한 이벤트 핸들러 구현\r\n\r\n* feat: 요소를 가져오기 위한 함수 구현\r\n\r\n* feat: 페이지 넘버를 관리하기 위한 클래스 구현\r\n\r\n* fix: 데이터를 받아서 주입하도록 수정\r\n\r\n* fix: 스켈레톤보다 실제 데이터 개수가 작을 때 남은 스켈레톤은 제거\r\n\r\n* fix: 다음 페이지가 없어도 더 보기 버튼을 지우지 않는 오류를 해결\r\n\r\n* feat: 자체적으로 페이지 번호를 관리하는 부분을 제거\r\n\r\n* rename: 폴더명 변경\r\n\r\n* feat: 스켈레톤 아이템 리스트를 반환하도록 수정\r\n\r\n* feat: 커스텀 이벤트를 호출하도록 기능 추가\r\n\r\n* feat: 스켈레톤 아이템에 데이터를 주입해 재사용하도록 수정\r\n\r\n* feat: 스켈레톤 아이템 제작과 이 아이템에 데이터를 주입하는 함수 구현\r\n\r\n* feat: 검색 페이지를 위한 컨트롤러 구현\r\n\r\n* feat: 스켈레톤 아이템 리스트를 반환하도록해 인자 제거\r\n\r\n* feat: 프로그램 진입점 작성\r\n\r\n* feat: 베이스 html 작성\r\n\r\n* fix: 리펙토링하며 제거한 함수 호출부 삭제\r\n\r\n* chore: 환경 설정\r\n\r\n* fix: outDir 속성 작성\r\n\r\n* chore: 불필요한 import 제거\r\n\r\n* feat: form태그로 바꿔 엔터를 눌러서 검색을 수행할 수 있도록 수정\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 검색 결과가 없을 경우 없다고 안내하도록 기능 구현\r\n\r\n* feat: 토스트 컴포넌트 추가\r\n\r\n* style: logo에 대한 스타일 작성\r\n\r\n* feat: 로고 클릭시 홈페이지로 돌아가도록 구현\r\n\r\n* chore: 토스트 css import\r\n\r\n* chore: 재요청 버튼 이미지 추가\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: e2e테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: baseUrl 설정\r\n\r\n* test: 서버 에러가 발생하는 경우 테스트 작성\r\n\r\n* test: 불필요한 테스트 제거\r\n\r\n* test: 비동기 테스트를 위한 목업 데이터 작성\r\n\r\n* chore: 재요청 이미지 import\r\n\r\n* feat: 에러 발생시 스켈레톤 제거\r\n\r\n* feat: 재시도 버튼 컴포넌트 구현\r\n\r\n* rename: 목업 데이터 이름 변경\r\n\r\n* feat: 환경 변수를 키로 찾아 반환하는 함수 구현\r\n\r\n* feat: interface 따로 분리\r\n\r\n* feat: retry 버튼 추가\r\n\r\n* feat: api 요청에 필요한 엔드포인트 상수화\r\n\r\n* feat: 타입 단언 제거\r\n\r\n* feat: api response의 데이터 타입 선언\r\n\r\n* feat: params를 위해 객체를 string 객체로 변환하는 함수 구현\r\n\r\n* rename: ts 로 파일 확장자 변경\r\n\r\n* test: 추가적인 경우의 e2e 테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: 검색 결과가 없는 경우의 목 데이터 작성\r\n\r\n* test: 5번을 초과한 재요청은 불가능한 테스트 작성\r\n\r\n* refector: 재시도 버튼의 책임을 하위 컴포넌트로 위임\r\n\r\n* feat: 재시도가 5번을 초과하면 오류를 던지는 함수 구현\r\n\r\n* feat: depth를 지키기 위해 로직 분리\r\n\r\n* fix: 이미지가 없는 경우 빈 이미지를 삽입하도록 수정\r\n\r\n* chore: 영화 이미지가 없는 경우 띄울 빈 이미지 import\r\n\r\n* chore: 영화가 없는 경우를 위한 빈 이미지 파일 추가\r\n\r\n* chore: 파일 위치 util 폴더로 이동\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* docs: 리드미 업데이트\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* chore: 빌드 폴더 업로드\r\n\r\n* feat: URLSearchParams 2번 호출하는 부분을 수정\r\n\r\n* chore: 불필요한 파일 제거\r\n\r\n* chore: 주석 제거\r\n\r\n* feat: 데이터를 fetch해오는 함수에 generic 적용\r\n\r\n* feat: key에 해당하는 환경 변수가 없는 경우에 대해 조건문 내부의 비교하는 값을 수정\r\n\r\n* refactor: js로 작성되어있는 css를 분리\r\n\r\n* rename: 의미가 모호한 prefix를 수정\r\n\r\n* feat: selector함수에 ts를 적용하고 찾기 시작할 위치를 받아오도록 수정\r\n\r\n* feat: default 제네릭 설정\r\n\r\n* feat: 이미지가 있는 카드형태의 스켈레톤 리스트를 반환하는 컴포넌트 구현\r\n\r\n* feat: 영화 아이템 스켈레톤 컴포넌트 구현\r\n\r\n* feat: 하나의 페이지에 대해서만 고려한 movieContainer 구현 수정\r\n\r\n* feat: 주어진 요소의 모든 자식 요소를 제거하는 함수 구현\r\n\r\n* feat: 특정하기 위한 클래스 추가\r\n\r\n* chore: 이미지를 import하기 위한 세팅\r\n\r\n* chore: 불필요한 import 파일 제거\r\n\r\n* rename: import 파일 확장자 변경\r\n\r\n* feat: movieContainer에 물려있던 과도한 책임 분리\r\n\r\n* feat: 같은 레이아웃을 사용하는 스켈레톤과 데이터아이템을 위한 청사진 컴포넌트 구현\r\n\r\n* feat: 페이지의 mainTitle을 수정하는 함수 구현\r\n\r\n* style: css에 대한 책임을 제거\r\n\r\n* feat: 스켈레톤 목록을 구성하는 아이템에 대한 책임을 외부로 이동\r\n\r\n* feat: 5회 오류시 재시도 하는 로직 제거\r\n\r\n* feat: 여러 페이지를 관리하는게 아닌 하나만 관리하도록 수정\r\n\r\n* feat: 이벤트 핸들러 타입 정의\r\n\r\n* feat: 페이지 타입 정의\r\n\r\n* feat: 요소를 보여주거나 숨기기 위한 함수 구현\r\n\r\n* feat: HTMLElement를 사용하도록 타입 수정\r\n\r\n* feat: 리스트 각각을 li로 감싸서 반환하는 함수 구현\r\n\r\n* fix: li로 감싸서 ul을 구성하도록 수정\r\n\r\n* chore: 스켈레톤 아이템을 생성하는 파일 제거\r\n\r\n* style: item의 이미지가 없을 땐 회색 배경이 보이도록 수정\r\n\r\n* feat: 변수가 포함된 타이틀에 대해서도 처리할 수 있도록 수정\r\n\r\n* chore: 리펙토링 후 사용하지 않게된 컴포넌트 파일 제거\r\n\r\n* feat: ts 마이그레이션\r\n\r\n* chore: import문 정리\r\n\r\n* chore: 빌드 파일 제거\r\n\r\n* feat: 빌드\r\n\r\n* feat: 스켈레톤 컴포넌트가 계속 떠있을 수 있도록 수정\r\n\r\n* style: search-box 반응형 css추가\r\n\r\n* feat: searchBox 컴포넌트로 분리\r\n\r\n* fix: 검색어를 입력하지 않은 경우에도 리스트를 클리어하는 부분을 수정\r\n\r\n* feat: 별점을 매기기 위한 ScoreStar 컴포넌트 구현\r\n\r\n* feat: 무한 스크롤 적용\r\n\r\n* feat: 옵저버 지정을 위한 엘리먼트 추가\r\n\r\n* feat: MovieService 클래스의 타입과 가공 데이터 타입 작성\r\n\r\n* feat: api를 받아서 간접적으로 데이터를 불러오도록 수정\r\n\r\n* feat: 불필요한 데이터 타입 제거\r\n\r\n* feat: 불필요한 라인을 지워 html 정리\r\n\r\n* feat: 로딩을 시각화하는 gif파일 추가\r\n\r\n* fix: 폭이 기준인 660px이상이어도 검색창이 최소화되는 문제 해결\r\n\r\n* feat: localStorage와 통신하기 위한 클래스 구현\r\n\r\n* feat: TMDB와 통신하기 위한 클래스 구현\r\n\r\n* style: 메인 파일에 css import\r\n\r\n* feat: localStorage가 반환하는 raw 데이터 타입 정의\r\n\r\n* feat: TMDB 가 응답 결과로 반환하는 raw 데이터 타입 정의\r\n\r\n* style: loader css 추가\r\n\r\n* feat: searchBox를 클래스로 구현함에 따라 import 방식으로 수정\r\n\r\n* feat: 이벤트 장착하는 부분 분리\r\n\r\n* chore: 불필요한 주석 제거\r\n\r\n* style: scoreStar 컴포넌트의 css 작성\r\n\r\n* feat: 이미지를 js안에서 처리하도록 수정\r\n\r\n* feat: 모달의 배경과 컨텐트를 감싸는 컨테이너를 반환하는 함수 구현\r\n\r\n* feat: 모달을 열고 닫는 함수 구현\r\n\r\n* feat: 영화 상세 모달 컴포넌트 구현\r\n\r\n* chore: 함수명 변경에 따라 수정\r\n\r\n* rename: css에 맞는 이름으로 함수명 수정\r\n\r\n* feat: 오류 처리를 위해 분기 추가\r\n\r\n* chore: 주석 제거\r\n\r\n* feat: 무한 스크롤 구현\r\n\r\n* feat: 이미지를 완성된 url로 만드는 책임을 위임해 그에 따라 수정\r\n\r\n* feat: 오류를 잡아 토스트를 띄우도록 구현\r\n\r\n* feat: 오류가 났음을 밖에서 알 수 있도록 null 타입 추가\r\n\r\n* feat: 개인화된 영화 정보(별점 등)을 불러오기 위한 api서비스 구현\r\n\r\n* feat: 개인화된 영화 정보를 불러오는 객체들의 타입 정의\r\n\r\n* chore: 타입 이동으로 인한 삭제\r\n\r\n* chore: DB 객체로 이동한 엔드포인트 삭제\r\n\r\n* style: 모달 css 작성\r\n\r\n* chore: 따옴표 수정\r\n\r\n* feat: 옵저버 height 삭제\r\n\r\n* style: 태블릿 뷰일 땐 6개의 스켈레톤만 보여지도록 수정\r\n\r\n* feat: 클릭됐을 때 채워진 별 이미지로 수정되게 함\r\n\r\n* feat: 스켈레톤이 화면을 가득 채워 옵저버가 보이지 않는 상황을 위해 첫 호출을 먼저 수행하도록 함\r\n\r\n* feat: 저장된 별점이 없을 땐 점수를 띄우지 않도록 수정\r\n\r\n* style: pointer css 추가\r\n\r\n* refactor: eventListener내부의 로직 분리\r\n\r\n* feat: 영화 설명이 없다면 없다고 띄우기\r\n\r\n* fix: hasNextPage가 false인 리스트를 받았을 때 렌더가안되던 오류 해결\r\n\r\n* feat: 스켈레톤 리스트가 최소화되면서 그리드 안에 남아있는 문제 해결\r\n\r\n* feat: 커스텀 이벤트를 모든 상황에서 버블링 시키도록 수정\r\n\r\n* test: e2e 테스트 수정\r\n\r\n* feat: 배포 파일 제거\r\n\r\n* style: 스켈레톤이 아닌 리스트 아이템도 지우는 문제 임시 방지\r\n\r\n* feat: 빌드\r\n\r\n* feat: Loader를 컴포넌트로 분리\r\n\r\n* feat: js에서 css에 직접 접근하는 코드를 class를 조작하는 코드로 수정\r\n\r\n* feat: Movie 클래스 삭제하고 MovieData타입으로 대체\r\n\r\n* feat: 타입 단언 제거\r\n\r\n* feat: base url을 환경 변수로 관리하기 위해 수정\r\n\r\n* feat: 무한 스크롤를 컨트롤러에서 분리\r\n\r\n* fix: 스켈레톤 아이템이 클릭되던 오류 해결\r\n\r\n* chore: 불필요한 콘솔 제거\r\n\r\n* feat: 상단으로 스크롤을 올려주는 버튼 컴포넌트 구현\r\n\r\n* style: 스크롤을 내려도 header가 상단에 고정되도록 수정\r\n\r\n* feat: 별점이 없는 경우 점수가 표시는 안되지만 공간을 차지하고 있어 어색하게 존재하는 넓은 간격을 보이지 않도록 수정\r\n\r\n* style: 별점 사진과 숫자의 높이가 맞지 않는 문제 해결\r\n\r\n* feat: 40px 스크롤을 내리면 상단으로 올라가는 버튼이 뜨도록 이벤트 장착\r\n\r\n* feat: 검색어가 바뀔 떄마다 fetch 요청을 수행하도록 수정\r\n\r\n* feat: 헤더가 문서 레이어의 제일 상단에 위치하도록 수정\r\n\r\n* feat: 입력 수정중 빈 칸이 발생하면 인기 페이지를 로드하도록 수정\r\n\r\n* docs: 기능 목록 체크\r\n\r\n* feat: 빌드\r\n\r\n---------\r\n\r\nCo-authored-by: Seongjin Hong ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 웨디(박세현) 미션 제출합니다. (#178)"}},{"before":"7ffbf5f73a1d1f460c8b409c65e645b30ac8fd54","after":"46192b644072ecdb93d10bba79e0cba2b82c0d8c","ref":"refs/heads/seongjinme","pushedAt":"2024-04-05T14:54:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"moonheekim0118","name":null,"path":"/moonheekim0118","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61469664?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 아르(홍성진) 미션 제출합니다. (#157)\n\n* test: api가 잘 호출되는지 테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: 영화 객체 테스트 작성\r\n\r\n* feat: 영화 객체 구현\r\n\r\n* feat: 포스터 상대 경로를 절대 경로로 바꿔주는 유틸 함수 구현\r\n\r\n* feat: 상대 경로의 이미지를 절대 경로 이미지로 저장하고 있도록 수정\r\n\r\n* test: 절대 경로 이미지와 일치하는지 테스트하도록 수정\r\n\r\n* chore: eslint 세팅\r\n\r\n* test: 가짜 영화 데이터 세팅\r\n\r\n* chore: 공동 작업자 설정\r\n\r\n* docs: 기능 명세 작성\r\n\r\n* rename: 파일명 변경에 따른 수정\r\n\r\n* chore: ts, cypress 세팅\r\n\r\n* feat: 인기 영화 목록을 받아오는 메서드 구현\r\n\r\n* rename: 파일 명 변경\r\n\r\n* feat: 데이터를 받아오는 로직 구현\r\n\r\n* feat: 검색 결과를 반환하는 메서드 구현\r\n\r\n* feat: 도메인과 이미지 도메인 주소 상수화\r\n\r\n* refactor: 반복되는 데이터 가공 로직을 함수로 분리해 재사용하도록 수정\r\n\r\n* feat: 헤더 컴포넌트 구현\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* chore: 정적 파일 경로 수정\r\n\r\n* feat: 영화 컨테이너 컴포넌트 구현 완료\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 영화 컨테이너를 제작하고 다루는 클래스 구현\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 버튼 컴포넌트 구현\r\n\r\n* feat: 영화 아이템 컴포넌트 구현\r\n\r\n* feat: 영화 목록 컴포넌트 구현\r\n\r\n* feat: 메인 페이지 컨트롤러 구현\r\n\r\n* feat: 더 보기 버튼에 대한 이벤트 핸들러 구현\r\n\r\n* feat: 페이지 넘버를 관리하기 위한 클래스 구현\r\n\r\n* fix: 데이터를 받아서 주입하도록 수정\r\n\r\n* fix: 스켈레톤보다 실제 데이터 개수가 작을 때 남은 스켈레톤은 제거\r\n\r\n* fix: 다음 페이지가 없어도 더 보기 버튼을 지우지 않는 오류를 해결\r\n\r\n* feat: 자체적으로 페이지 번호를 관리하는 부분을 제거\r\n\r\n* rename: 폴더명 변경\r\n\r\n* feat: 스켈레톤 아이템 리스트를 반환하도록 수정\r\n\r\n* feat: 커스텀 이벤트를 호출하도록 기능 추가\r\n\r\n* feat: 스켈레톤 아이템에 데이터를 주입해 재사용하도록 수정\r\n\r\n* feat: 스켈레톤 아이템 제작과 이 아이템에 데이터를 주입하는 함수 구현\r\n\r\n* feat: 검색 페이지를 위한 컨트롤러 구현\r\n\r\n* feat: 스켈레톤 아이템 리스트를 반환하도록해 인자 제거\r\n\r\n* feat: 프로그램 진입점 작성\r\n\r\n* fix: 리펙토링하며 제거한 함수 호출부 삭제\r\n\r\n* chore: 환경 설정\r\n\r\n* fix: outDir 속성 작성\r\n\r\n* chore: 불필요한 import 제거\r\n\r\n* feat: form태그로 바꿔 엔터를 눌러서 검색을 수행할 수 있도록 수정\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* feat: 검색 결과가 없을 경우 없다고 안내하도록 기능 구현\r\n\r\n* feat: 로고 클릭시 홈페이지로 돌아가도록 구현\r\n\r\n* chore: 토스트 css import\r\n\r\n* chore: 재요청 버튼 이미지 추가\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: e2e테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: baseUrl 설정\r\n\r\n* test: 서버 에러가 발생하는 경우 테스트 작성\r\n\r\n* test: 불필요한 테스트 제거\r\n\r\n* chore: 재요청 이미지 import\r\n\r\n* feat: 에러 발생시 스켈레톤 제거\r\n\r\n* feat: 재시도 버튼 컴포넌트 구현\r\n\r\n* rename: 목업 데이터 이름 변경\r\n\r\n* feat: 환경 변수를 키로 찾아 반환하는 함수 구현\r\n\r\n* feat: interface 따로 분리\r\n\r\n* feat: retry 버튼 추가\r\n\r\n* feat: api 요청에 필요한 엔드포인트 상수화\r\n\r\n* feat: 타입 단언 제거\r\n\r\n* feat: api response의 데이터 타입 선언\r\n\r\n* feat: params를 위해 객체를 string 객체로 변환하는 함수 구현\r\n\r\n* rename: ts 로 파일 확장자 변경\r\n\r\n* test: 추가적인 경우의 e2e 테스트 작성\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* test: 5번을 초과한 재요청은 불가능한 테스트 작성\r\n\r\n* refector: 재시도 버튼의 책임을 하위 컴포넌트로 위임\r\n\r\n* feat: 재시도가 5번을 초과하면 오류를 던지는 함수 구현\r\n\r\n* feat: depth를 지키기 위해 로직 분리\r\n\r\n* fix: 이미지가 없는 경우 빈 이미지를 삽입하도록 수정\r\n\r\n* chore: 영화 이미지가 없는 경우 띄울 빈 이미지 import\r\n\r\n* chore: 파일 위치 util 폴더로 이동\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* docs: 리드미 업데이트\r\n\r\nCo-authored-by: Seongjin Hong \r\n\r\n* chore: 불필요 파일 제거\r\n\r\n* chore: 개발 환경에서만 필요한 dependencies 정리\r\n\r\n* refactor: 재시도 버튼 스타일 및 생성 코드를 '더 보기' 버튼과 일치화\r\n\r\n* refactor: 외부 API 요청 로직 및 query url 생성 로직을 별도로 분리\r\n\r\n* refactor: API 엔드포인트를 요청 메서드 별로 관리 가능하도록 구조 변경\r\n\r\n* refactor: 영화 API 요청 관련 에러 메시지 상수화\r\n\r\n* refactor: 변경된 API 호출 로직을 MovieService 객체에 적용\r\n\r\n* refactor: 영화 리스트 타입 상수화\r\n\r\n* refactor: 앱 내 페이지네이션 로직 간소화 및 적용\r\n\r\n* refactor: fetch 실패시 재시도 횟수를 컨트롤러가 관리하도록 수정\r\n\r\n* refactor: 불필요 요소 제거 및 변수명 변경\r\n\r\n* refactor: 이벤트 리스너와 연결된 익명 함수 코드들을 내부 메서드로 분리\r\n\r\n* refactor: 이미지 확장자에 대한 모듈 선언 적용\r\n\r\n* refactor: 인기 영화, 검색 결과 데이터 fetching 메서드를 하나로 병합 처리\r\n\r\n* fix: 중복된 try-catch 구문 및 에러 처리 코드 삭제\r\n\r\n* refactor: 검색어 입력 에러, 재요청 횟수 초과 에러 메시지 상수화\r\n\r\n* test: 반복적으로 사용되는 테스트 코드를 commands.ts에 메서드화\r\n\r\n* refactor: fetchAPI 내 네트워크 에러 처리 추가\r\n\r\n* test: e2e 테스트 내 에러 메시지 설정 추가\r\n\r\n* chore: dist 업데이트\r\n\r\n* chore: git rebase 과정에서 발생한 패키지 중복 제거\r\n\r\n* refactor: 전체 컴포넌트 코드를 JavaScript에서 TypeScript로 마이그레이션\r\n\r\n* refactor: 존재하지 않을 수 있는 DOM 요소 셀렉터 유틸 추가 및 적용\r\n\r\n* docs: 2단계 구현 사항 정리\r\n\r\n* refactor: 각 영화 아이템별 포스터 사이즈 조정\r\n\r\n* feat: 개별 영화에 대한 상세 내용 데이터 객체(MovieDetail) 구현\r\n\r\n* feat: 특정 영화 ID에 대한 상세 정보 요청 및 수신 구현\r\n\r\n* feat: LocalStorage를 이용한 사용자 별점 정보 초기화, 로드 및 저장 구현\r\n\r\n* refactor: 이미지 경로 모듈화\r\n\r\n* refactor: 버튼 컴포넌트 생성 인자 간소화\r\n\r\n* refactor: 사용자 평균 별점에 대한 소수점 자릿수 반올림 설정 추가\r\n\r\n* feat: 영화 상세 정보 모달 구현\r\n\r\n* feat: 영화 목록에서 클릭한 해당 영화에 대한 모달 출력 구현\r\n\r\n* feat: 영화에 대한 사용자 별점 추가/업데이트 기능 구현\r\n\r\n* refactor: HTMLDialogElement로 구현된 모달 위에 toast를 띄울 수 있도록 코드 수정\r\n\r\n* feat: 영화에 대한 사용자 별점 추가 기능 구현\r\n\r\n* fix: 영화 별점 추가 직후 모달 닫았다가 열면 사라졌던 토스트가 다시 나타나는 현상 수정\r\n\r\n* feat: 영화 목록에 대한 무한 스크롤 기능 구현\r\n\r\n* style: 영화 클릭시 모달창 출력 전 로딩 애니메이션 추가\r\n\r\n* fix: 스켈레톤 UI 상태에서 별점 아이콘이 먼저 노출되는 버그 수정\r\n\r\n* style: 반응형 레이아웃 적용\r\n\r\n* refactor: 컴포넌트 폴더링 구조 개선\r\n\r\n* docs: 구현 사항 문서 업데이트\r\n\r\n* refactor: data fetch 재시도 횟수 상수화\r\n\r\n* refactor: 검색폼 input type을 text에서 search로 변경\r\n\r\n* refactor: fetchAPI 함수에서 method 타입 정리\r\n\r\n* refactor: 검색 결과 없을 시 노출 화면 개선\r\n\r\n* chore: dist 빌드 내용 업데이트\r\n\r\n* refactor: 불필요 주석 제거\r\n\r\n* refactor: 수신한 영화 목록 길이에 대한 조건식의 대응 범위를 넓히도록 수정\r\n\r\n* refactor: 버튼 컴포넌트에 대한 이벤트 리스너 생성용 파라미터 구성 간소화\r\n\r\n* fix: 검색결과 없음 이후에도 검색 empty 컴포넌트가 계속 노출되는 버그 수정\r\n\r\n* refactor: 각 별점 아이콘별 점수 정보를 변수화하여 코드에 명확히 드러나도록 수정\r\n\r\n* refactor: 사용자 평가 점수에 대한 타입을 CONFIG 설정값 기반으로 리팩토링\r\n\r\n* refactor: 무한 스크롤 로직을 InfiniteScroll 유틸 클래스로 분리\r\n\r\n* fix: 현재의 영화 목록이 로드 완료되지 않은 상태에서 새 목록을 다시 불러오는 문제 수정\r\n\r\n* refactor: controller에 남아있던 intersection observer 로직 삭제\r\n\r\n* refactor: 각 별점 아이콘별 점수 정보 계산을 함수화하여 분리\r\n\r\n* refactor: 앱 내 주요 메시지 상수화 적용\r\n\r\n* refactor: MovieDetailModal 오픈시 배경 요소의 스크롤을 제한\r\n\r\n* refactor: 사용자 평균 점수에 대한 가공 로직을 유틸화하여 분리\r\n\r\n* refactor: CSS 내 id 선택자 사용 최소화\r\n\r\n* refactor: CSS 내 공통 색상 요소 변수화\r\n\r\n* refactor: 스크린 크기에 따른 breakpoint들을 CSS 파일 안에 명시\r\n\r\n* feat: event throttling을 위한 유틸 함수 구현\r\n\r\n* feat: 모바일 화면에서의 반응형 검색 입력폼 구현\r\n\r\n* fix: 영화 목록 불러오기 재시도 횟수 카운팅 에러 수정\r\n\r\n* refactor: 불필요 파일 삭제\r\n\r\n* refactor: 외부 노출 불필요한 메서드 private 처리\r\n\r\n* test: 영화 상세 정보 모달 테스트 추가 및 기존 테스트 코드 수정\r\n\r\n---------\r\n\r\nCo-authored-by: pakxe ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 아르(홍성진) 미션 제출합니다. (#157)"}},{"before":"e5fbd7875c420773d45124e9143a8b4c62078957","after":"f044a8474942b86ce39448c11a663be08fa5fce4","ref":"refs/heads/chosim-dvlpr","pushedAt":"2024-04-05T13:50:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"moonheekim0118","name":null,"path":"/moonheekim0118","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61469664?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 프룬(변민지) 미션 제출합니다. (#156)\n\n* fix: init의 renderMainContents에 await 추가\r\n\r\n* refactor: 검색창 form의 id 및 input type search로 변경\r\n\r\n* refactor: template 상수로 분리\r\n\r\n* refactor: 인기 영화, 검색 영화별 페이지 멤버 분리\r\n\r\n* refactor: api 필터링 도메인 추가\r\n\r\n* fix: total page가 1인 페이지 검색 시 검색 결과 미노출 해결\r\n\r\n* fix: fetchSearchedMovies type 수정\r\n\r\n* refactor: httpRequest 구조분해할당 추가\r\n\r\n* feat: 상세 모달 기본 세팅 추가\r\n\r\n* feat: 영화 데이터 바인딩 및 detailModal 파일명을 movieDetailModal로 변경\r\n\r\n* fix: 검색 시 나타나는 main title 수정\r\n\r\n* feat: 닫기 버튼 클릭 시 모달 닫는 기능 추가\r\n\r\n* feat: 모달 poster path 없는 경우 no image 추가\r\n\r\n* fix: 중복으로 호출되는 handleDetailModal 제거\r\n\r\n* fix: 더보기 버튼 클릭하여 데이터 받아오는 경우 모달이 뜨지 않는 버그 해결\r\n\r\n* design: 모달 backdrop, ratings 디자인 수정\r\n\r\n* feat: 모달 별점 입력 기능 추가 및 문구 데이터 바인딩\r\n\r\n* feat: 별점 클릭 시 localStorage 업데이트 기능 추가\r\n\r\n* fix: localStorage 업데이트 시 ratings 배열에 null값이 추가되는 오류 수정\r\n\r\n* refactor: MoviePage 클래스 생성 및 상속 추가, MovieApp 전반 리팩터링\r\n\r\n* refactor: rating 도메인 타입 강화 및 리팩터링\r\n\r\n* refactor: RATING_MESSAGE 타입 Record 형태로 변경\r\n\r\n* feat: 무한 스크롤 추가 및 movieData 도메인 생성 (MovieApp 리팩터링)\r\n\r\n* design: 본문 영역 반응형 디자인 구현\r\n\r\n* design: 헤더 반응형 디자인 적용\r\n\r\n* refactor: movieDetailModal 리팩터링\r\n\r\n* design: 모달 반응형 디자인 구현\r\n\r\n* design: 모달 open 시 배경 고정 추가\r\n\r\n* fix: api 요청 중 무한스크롤로 인한 추가 api 요청되는 버그 해결\r\n\r\n* design: 모달 컨텐츠 너비 조정\r\n\r\n* refactor: getMovieDetail 메서드를 domain으로 분리\r\n\r\n* refactor: 더미데이터 상수화 및 주입 위치 변경\r\n\r\n* refactor: color 상수화 및 header box sizing 제거\r\n\r\n* refactor: 에러 메세지 상수화 및 적용\r\n\r\n* refactor: API_PATH 분리 및 URLSearchParams 적용, MOVIE_PATH를 MOVIE_POSTER_PATH로 상수명 변경\r\n\r\n* refactor: RATING_MESSAGE 상수 지정에 따른 타입 수정\r\n\r\n* fix: 더미데이터 삭제\r\n\r\n* refactor: templates 중복되는 로직 축약\r\n\r\n* refactor: 모달 별점 색칠하는 로직의 index 변수 추가 및 GenreType 표기 수정\r\n\r\n* fix: tablet 화면에서 영화 리스트 배열 비어보이는 오류 해결\r\n\r\n* refactor: MoviePage 재사용성 추가 및 각 page를 MoviePage로 변경, 사용하지 않는 createShowMoreButton 메서드 삭제\r\n\r\n* fix: 검색 결과 없는 경우 발생하는 무한 api 요청 해결\r\n\r\n* fix: modal detail api 중복 요청 에러 해결\r\n\r\n* refactor: createSection의 ul태그 생성 메서드 분리\r\n\r\n* fix: 모달 esc로 닫는 경우 스크롤 고정되는 에러 해결 및 setModalCloseEvent 메서드 리팩토링\r\n\r\n* design: 모달 스켈레톤 UI 추가\r\n\r\n* fix: css 선택자 class로 변경\r\n\r\n* refactor: isLoading 위치 변경 및 스켈레톤 관련 호출 위치 변경\r\n\r\n* refactor: unfixBackGroundBody 메서드의 스크롤 y좌표 변수 리팩터링\r\n\r\n* refactor: search form hover이벤트로 변경\r\n\r\n* refactor: 무한 스크롤 threshold 인자로 받을 수 있도록 리팩터링\r\n\r\n* design: scroll-end-box class 추가 및 css 적용\r\n\r\n* test: e2eTest를 requestApiTest로 파일명 변경 및 li 선택자 class name 추가\r\n\r\n* fix: test 위한 무한 스크롤 root 조건 추가\r\n\r\n* test: 무한 스크롤 테스트 추가\r\n\r\n* test: 반응형 grid 테스트","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 프룬(변민지) 미션 제출합니다. (#156)"}},{"before":"002278479b2ada0c8c52bc898e9b14e276310e1f","after":"28d337c81c61da533d47f2eb489047d71407f753","ref":"refs/heads/imxyjl","pushedAt":"2024-04-05T08:10:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"365kim","name":"Kim Haru","path":"/365kim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60066472?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 올리(이예진) 미션 제출합니다. (#175)\n\n* docs(README.md): step2 기능 요구사항 및 컴포넌트 정보 작성\r\n\r\n* fix: fetchData를 export하는 파일 이름이 함수와 같게 fetchData.ts가 되도록 수정\r\n\r\n* refactor: 각 영화 정보를 출력하는 li 요소의 id를 해당 영화의 id 정보로 설정\r\n\r\n* refactor: fetchData 함수명 변경에 따른 import 경로 수정\r\n\r\n* feat: 영화 상세 정보 모달에 제목, 썸네일, 장르, 평점, 줄거리 정보 추가\r\n\r\n* feat: 영화 상세 정보 모달에 내 별점 등록 기능 추가\r\n\r\n* fix: 영화 검색에서, 마지막으로 불러온 영화 데이터가 20개인 경우 이전 검색 결과가 있음에도 영화가 없다는 에러를 표시하지 않도록 수정\r\n\r\n* refactor: 빈 모달 요소를 main 태그의 자식으로 append하도록 변경\r\n\r\n* docs(README.md): 별점 부여 기능 추가 반영\r\n\r\n* feat: 무한 스크롤 구현\r\n\r\n* chore: 불필요한 주석 제거\r\n\r\n* refactor: handlePopularPageEnd 메서드를 private으로 복원\r\n\r\n* chore: 디버깅용 console.log 삭제\r\n\r\n* refactor: 스켈레톤 UI 식별을 위한 setTimeout 타이머 시간을 0.5초로 변경\r\n\r\n* refactor: 영화 줄거리 정보가 없을 때 사용할 기본 문구 추가\r\n\r\n* style: 영화 상세정보 모달(기본 데스크탑 규격) 완성\r\n\r\n* refactor: 최상위 헤더에 클래스 이름 추가\r\n\r\n* style: 모달 반응형 적용\r\n\r\n* refactor: starRatingButton에 aria-label 추가 및 빈 별 버튼에서 alt를 빈 문자열로 변경\r\n\r\n* refactor: 별점 계산 수치 상수화\r\n\r\n* refactor: 영화 별점 설정 기능에서 문자열 데이터 사용시 불필요한 백틱 제거\r\n\r\n* refactor: starImg 요소에 alt 속성 추가\r\n\r\n* refactor: IntersectionObserver의 콜백 함수 간결하게 수정 - entries 배열의 첫 번째 요소에 대한 isIntersecting만 체크\r\n\r\n* refactor: 무한스크롤에서 observe하는 요소를 영화 목록의 마지막 썸네일 요소로 변경\r\n\r\n* refactor: infiniteScroll.ts에서 addScrollAnchorDiv 메서드 삭제\r\n\r\n* fix: IntersectionObserver의 threshold를 0.9로 확장\r\n\r\n* refactor: IMovieDetailsData 인터페이스가 IMovieItemData를 상속받은 뒤 커스텀하게끔 수정\r\n\r\n* refactor: starRatingsButton이 empty에서 filled가 될 때 높이 및 너비가 달라 흔들리는 문제 수정\r\n\r\n* chore: 사용하지 않는 파일 삭제\r\n\r\n* fix: 영화 리스트 CSS 조정\r\n\r\n* fix: 모달에서 줄거리가 긴 경우 내용이 잘리는 문제 해결\r\n\r\n* test(e2e): 무한 스크롤 테스트 추가\r\n\r\n* test(e2e): 모달을 통한 영화 상세정보 확인 테스트 추가\r\n\r\n* test(e2e): 검색할 영화 이름을 별도의 변수로 분리\r\n\r\n* test(e2e): 중복 코드 제거\r\n\r\n* test(e2e): 불필요한 테스트 코드 삭제\r\n\r\n* test(e2e): 모달 테스트 간소화\r\n\r\n* test(e2e): 모달 동작 테스트시 영화 정보 불러오기를 fixture를 이용하도록 테스트\r\n\r\n* test(e2e): 무한 스크롤 테스트를 인터셉터를 이용해 테스트","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 올리(이예진) 미션 제출합니다. (#175)"}},{"before":"8836e063d8581df111281bbd173e537759ebe211","after":"88cf69e782335f1e3c6bd74512376c10c98e4916","ref":"refs/heads/jaymyong66","pushedAt":"2024-04-05T06:58:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JeongBin0227","name":null,"path":"/JeongBin0227","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/45503248?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 마스터위(명재위) 미션 제출합니다. (#169)\n\n* feat: 더보기 버튼 대신 무한 스크롤 기능 추가\r\n\r\n* feat: 모바일 반응형 UI 추가\r\n\r\n* feat: 검색 후 인기순 화면 돌아올 때 페이지 제목 바뀌도록\r\n\r\n* feat: 영화 상세 정보 모달 기능\r\n\r\n* feat: 영화 상세 정보 모달 - 유저 평점 레이아웃\r\n\r\n* feat: UX - 영화 Card hover시, 애니메이션 추가\r\n\r\n* feat: 영화 상세 모달 - detail API 요청에서 받아오도록\r\n\r\n* feat: 영화 상세 모달 - 스켈레톤 추가\r\n\r\n* feat: 영화 상세 모달 - 유저 평점 기능 추가\r\n\r\n* feat: 헤더 search-box 반응형 UI\r\n\r\n* feat: 영화 상세 모달 - 반응형 UI\r\n\r\n* test: e2e - 무한스크롤 테스트\r\n\r\n* test: e2e - 영화 상세 모달 테스트\r\n\r\n* deploy: 2단계 미션 빌드\r\n\r\n* deploy: 이미지 경로 에러 수정\r\n\r\n* deploy: 배포 이미지 주소 에러 fix\r\n\r\n* deploy: 2단계 - 배포시 이미지 경로 오류 수정\r\n\r\n* fix: search-box의 검색 버튼 이미지 버그 수정\r\n\r\n* feat: 선택된 사용자 별점이 이전과 같다면 업데이트 안함, 버튼이 아닌 div 구역 이벤트 방지 처리\r\n\r\n* refactor: 무한스크롤 observer 인스턴스 let -> const\r\n\r\n* feat: observe할 컴포넌트가 없는 경우 observer를 disconnect, 무한 스크롤 관련 메서드 분리\r\n\r\n* feat: 홈버튼을 눌렀을 떄, 검색 input 초기화\r\n\r\n* feat: 모바일 Input을 여는 방식 - class명에 따라 감지\r\n\r\n* refactor: any 타입 지정\r\n\r\n* feat: 로컬스토리지 사용 - Map객체로 유저 별점 저장\r\n\r\n* refactor: css backround-size 속성 제거\r\n\r\n* refactor: Infinite scroll에서 forEach 문 제거\r\n\r\n* feat: 변경된 별점에 해당하는 별만 리렌더링\r\n\r\n* refactor: 영화 카드 컴포넌트 hover시, header 위에 올라오는 현상 해결\r\n\r\n* feat: userNotify 페이지가 두번 렌더링 되는 현상 수정\r\n\r\n* fix: 검색 결과가 없거나 totalpage가 1일때, 검색이 다시 안되는 버그 수정","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 마스터위(명재위) 미션 제출합니다. (#169)"}},{"before":"d9a864f4b7bf54f11e5fa5938d9fc8766fd028f8","after":"5c88f1389961ea1987232e82ec34a81f5e267128","ref":"refs/heads/greetings1012","pushedAt":"2024-04-05T02:52:03.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"liswktjs","name":"JASUN LEE","path":"/liswktjs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60773373?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 파란(안영훈) 미션 제출합니다. (#163)\n\n* chore: 미션 시작을 위한 기본 설정\r\n\r\n* chore: prettier 초기 설정\r\n\r\n* docs: 기능 명세 작성\r\n\r\n* chore: img 타입 import 오류 수정\r\n\r\n* chore: .gitignore에 환경 변수 추가\r\n\r\n* rename: css, png 파일 정리\r\n\r\n* chore: 패키지 및 eslint 설정 수정\r\n\r\n* feat: css, png 파일 import\r\n\r\n* fix: 버그 발생시키는 unit.test.js 삭제\r\n\r\n* feat: MovieHeader.ts 구현\r\n\r\n* feat: SearchBox.ts 구현\r\n\r\n* feat: MovieItems.ts 구현\r\n\r\n* feat: index.js 및 index.html 구현\r\n\r\n* feat: sendRequest.ts 구현\r\n\r\n* docs: README.md 업데이트\r\n\r\n* feat: OPTIONS.ts 구현\r\n\r\n* feat(Button): 버튼 컴포넌트 구현\r\n\r\n* refactor(SearchBox): createSearchButton 메서드 Button 컴포넌트 활용하도록 구현\r\n\r\n* feat(INFORMATION): BUTTON, CONTAINER_TITLE 상수화\r\n\r\n* feat(ItemView): ItemView create 기능 구현\r\n\r\n* chore: airbnb convention issue 해결을 위한 eslint 재설정\r\n\r\n* feat(Interface): IMovieData, IRespondData 선언\r\n\r\n* feat(DTO): API 통신을 위한 URL 선언\r\n\r\n* feat(sendRequest): fetchPopularMovies, fetchSearchMovies 메서드 기능 구현\r\n\r\n* feat(MovieItems): replaceSkeletons 메서드 기능 구현\r\n\r\n* feat(ItemView): ItemView 클래스 구현\r\n\r\n* refactor(Constants): MOVIE_POSTER_URL, CONTAINER_TITLE.searchResult 상수화\r\n\r\n* feat(ItemView): 최대 페이지 도달시 더 보기 button 제거 및 상수화를 통한 매개 변수 제거\r\n\r\n* feat(MovieHeader): showPopularMovies 메서드 핸들러 구현\r\n\r\n* feat(MovieItems): 데이터가 없는 스켈레톤 제거\r\n\r\n* refactor(ItemView, MovieItems): 올바른 비동기 타이밍 설정으로 스켈레톤이 등장하지 않던 오류 해결\r\n\r\n* feat(SearchValidator): 사용자 입력 값 유효성 검증 기능 구현\r\n\r\n* feat(MovieHeader): 이벤트 추가 및 이벤트 핸들러 리팩토링\r\n\r\n* refactor(sendRequest): 불필요한 console.log 제거\r\n\r\n* feat(ToastPopup): 토스트 메시지 구현\r\n\r\n* style(toast_message): 토스트 메시지 css 작성\r\n\r\n* feat(MovieHeader): 사용자 입력 검증 오류 시 토스트 메시지 띄우도록 구현\r\n\r\n* feat(SearchValidator): isInputEmpty 구현\r\n\r\n* design(index.html): toast message div 추가\r\n\r\n* remove(templates): 필요없는 템플릿 파일 삭제\r\n\r\n* style(sendRequest): 오타 수정\r\n\r\n* style(index.js): 필요없는 주석 제거\r\n\r\n* test(.gitignore): API key 테스트를 위해 cypress.env.json 설정\r\n\r\n* test(cypress): cypress 초기 설정\r\n\r\n* test(fixtures): fixture 데이터 작성\r\n\r\n* test(APITest, FixtureTest): API와 Fixture에 대해 테스트 구현\r\n\r\n* feat(package, package-lock): 사이트 배포를 위한 gh-pages 설치 및 설정\r\n\r\n* chore: 기타 사항 수정\r\n\r\n* refactor: 배포 오류 수정\r\n\r\n* refactor(index.js): 활용되지 않는 상수 선언 삭제\r\n\r\n* feat: dom element가 null일 경우를 처리하는 함수 구현\r\n\r\n* refactor(ItemView -> MovieList): 클래스명 수정\r\n\r\n* refactor(MovieList): 가독성이 떨어지는 constructor 수정\r\n\r\n* refactor(Skeleton): 스켈레톤을 만드는 메서드 분리\r\n\r\n* refactor(replaceAllSkeletons): 헷갈릴 수 있는 함수명 수정\r\n\r\n* fix: 검색 결과가 올바르게 등장하지 않던 오류 해결\r\n\r\n* refactor(DTO): 잘못 쓰이고 있던 용어 수정\r\n\r\n* feat: fetch error handling 추가\r\n\r\n* test: 더 보기 버튼을 눌렀을 때의 e2e 테스트 추가\r\n\r\n* test: 검색 관련 테스트와 인기 순위 관련 테스트 분리\r\n\r\n* refactor: 필요없는 import문 삭제\r\n\r\n* design: header가 앱 상단에 fix되도록 변경\r\n\r\n* fix: app과 item-view가 서로 분리되어 있던 문제 해결\r\n\r\n* feat(InfiniteScroll): 무한 스크롤 구현\r\n\r\n* refactor(InfiniteScrollOption): 헷갈릴 수 있는 상수 위치 리팩터링\r\n\r\n* refactor(InfiniteScroll): 필요없는 option값 삭제\r\n\r\n* refactor: 스켈레톤 구조 변경으로 각 스켈레톤이 동적으로 변경되게 구현\r\n\r\n* fix: 특정 엘리먼트 스켈레톤이 제거되지 않던 오류 헤결\r\n\r\n* refactor(DOM): 중복되는 메서드 제거\r\n\r\n* refactor: 클래스 멤버를 이용해 불필요한 함수 인자 삭제\r\n\r\n* refactor(ToastPopup): 떠있는 시간을 인수로 받도록 수정\r\n\r\n* refactor(fetch): key값에 문제가 발생할 경우 사용자에게 정보를 전달하도록 수정\r\n\r\n* fix: 바뀐 ToastPopup 인자에 맞게 수정\r\n\r\n* feat: 네트워크가 오프라인일 때 토스트 팝업으로 에러를 표시하도록 구현\r\n\r\n* fix: 필요 없는 파일 삭제\r\n\r\n* feat: 과도한 api 통신을 막기 위해 딜레이 추가, 로딩 중 메시지 추가\r\n\r\n* refactor: 파일명 명확하게 수정\r\n\r\n* feat(IMovieDetail): 서버와 통신을 위한 인터페이스 선언\r\n\r\n* feat: 영화 상세정보를 가져오기 위한 함수 구현\r\n\r\n* feat: 영화 상세정보를 가져오기 위한 링크 주소 선언\r\n\r\n* refactor: API의 데이터 이름과 프로젝트 변수명 동일하게 변경\r\n\r\n* feat: 영화 상세 정보 모달 구현\r\n\r\n* feat: 모달 버튼을 구현하기 위한 상수 선언\r\n\r\n* feat: 모달 버튼에 사진을 넣기 위해 interface 멤버 상수 추가 선언\r\n\r\n* docs(README.md): 2단계 기능 요구사항 반영\r\n\r\n* docs(README.md): localStorage 요구 사항 추가\r\n\r\n* refactor(IMovieDetail): 영화 상세 정보 fetch를 위한 인터페이스 데이터 양식에 맞게 수정\r\n\r\n* feat(MovieInfoModal): 영화 상세 정보 모달 구현\r\n\r\n* feat(URLs.ts): 영화 상세 정보 데이터 URL 선언\r\n\r\n* feat(INFORMATION.ts): localVote, voteStar 상수화\r\n\r\n* feat(MovieItems.ts): 각 영화 카드에 modal을 여는 event 구현\r\n\r\n* refactor(index.html): 필요 없는 항목 삭제\r\n\r\n* feat(MovieHeader.ts): 모바일 환경을 위한 검색 창 반응형 UI 구현\r\n\r\n* style(common.css): 각 구현 사항을 위한 css 작성\r\n\r\n* fix(MovieInfoModal.ts): 영화 설명 정보가 존재하지 않을 경우 메시지가 등장하지 않던 오류 해결\r\n\r\n* refactor(MovieInfoModal): 장르 목록에 띄어쓰기를 추가해 가독성 향상\r\n\r\n* refactor: 화면을 767 이하로 줄인 후 다시 늘려도 input box가 나타나지 않던 오류 해결\r\n\r\n* fix: 모바일 환경에서 검색 창 크기가 일관적이지 않던 문제 해결\r\n\r\n* feat(movie-detail.json): 모달 테스트를 위한 fixture 작성\r\n\r\n* test(MovieDetailModalFixtureTest.cy.ts): 모달 및 별점 저장 테스트 구현\r\n\r\n* test: 각 테스트 분류에 맞게 위치 변경\r\n\r\n* test: 테스트 케이스가 실패하는 오류 해결\r\n\r\n* docs(README.md): 구현 항목 체크\r\n\r\n* feat(ResizeHandler.ts): 화면 크기를 조절할 때 클래스 추가 및 제거를 수행하는 util 함수 구현 및 적용\r\n\r\n* refactor(DEVICE_WIDTH): 기기별 화면 크기 상수로 선언\r\n\r\n* refactor: 의미없는 console.log() 삭제\r\n\r\n* refactor(MovieInfoModal): 삼항 연산자 간소화\r\n\r\n* refactor(MovieInfoModal.ts): 가독성 향상 및 style을 ts에서 지정하고 있던 문제 해결\r\n\r\n* refactor(InfiniteScroll.ts): util 함수임에도 재사용 불가한 문제 해결\r\n\r\n* refactor(EscapeModal.ts): 모달 제거하는 메서드 util 함수로 분리\r\n\r\n* refactor: MovieHeader에 선언되어 있던 SearchBox의 역할 위임\r\n\r\n* feat(ModalInfoModal.ts): 모달 백드롭을 클릭했을 때 모달이 닫히는 기능 구현\r\n\r\n* refactor(MovieInfoModal.ts): 중복된 선언 제거\r\n\r\n* style(common.css): 별, 카드 호버 애니메이션, 모달 등장 애니메이션 추가\r\n\r\n* feat: 화면 상단으로 가는 버튼 추가","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 파란(안영훈) 미션 제출합니다. (#163)"}},{"before":"2ea3317fda256889a7d19f4407f04114ad79ec8e","after":"492a2c427195878ccf531cfd328622279ec3d3df","ref":"refs/heads/dle234","pushedAt":"2024-04-05T01:30:10.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Tanney-102","name":"Tigger","path":"/Tanney-102","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57767891?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 해시(김가연) 미션 제출합니다. (#159)\n\n* chore(eslint,prettier): 초기 셋팅\r\n\r\nCo-Authored-By: Largopie \r\n\r\n* chore(.gitignore): .env 파일 추가\r\n\r\nCo-Authored-By: Largopie \r\n\r\n* docs(README): 기능 요구사항 목록 작성\r\nCo-Authored-By: Largopie \r\n\r\n* feat: 초기 템플릿 구성\r\n\r\nCo-Authored-By: Largopie \r\n\r\n* chore(tsconfig): tsconfig 설정 추가\r\n\r\nCo-Authored-By: Largopie \r\n\r\n* fix: 충돌 해결\r\n\r\n* feat(index): 홈 버튼 클릭 시 최상단으로 이동\r\n\r\n* feat(apiType): common 타입 생성\r\n\r\n* feat(constant): 메세지 상수화\r\n\r\n* feat(api): 영화 디테일 정보 불러오기 api 기능 구현\r\n\r\n* feat(constant): api path 및 아이콘 상수화\r\n\r\n* chore: 폴더 구조 변경\r\n\r\n* feat(MovieDetail): 영화 디테일 모달 기능 구현\r\n\r\n* feat(MyVote): 사용자가 매긴 별점 저장\r\n\r\n* chore(util): 유틸성 함수들 분리하기\r\n\r\n* feat(MovieContainer): 더보기 버튼 무한스크롤로 수정\r\n\r\n* feat(MovieItem): 영화 클릭 시 모달 open 커스텀 이벤트 발생\r\n\r\n* refactor: 코드 분리 및 중복되는 코드 메서드로 만들기\r\n\r\n* style(common): 영화 모달 스타일 및 애니메이션\r\n\r\n* feat(dist): 배포 파일 생성\r\n\r\n* fix(MyVote): 로컬 데이터 못 가져오는 버그 수정\r\n\r\n* refactor(apiType): 타입 네이밍 수정\r\n\r\n* refactor: 유틸 메서드들 정리\r\n\r\n* remove(dist): 배포 파일 삭제\r\n\r\n* refactor(throttling): 쓰로틀링 메서드 타입 수정\r\n\r\n* refactor(MovieContainer): intersectionObserver 로 무한스크롤 구현\r\n\r\n* refactor(MovieContainer): 무한스크롤 로딩 수정\r\n\r\n* refactor(MovieContainer): 에러 처리 수정\r\n\r\n* refactor(MovieContainer): 네트워크 에러 처리\r\n\r\n---------\r\n\r\nCo-authored-by: Largopie ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 해시(김가연) 미션 제출합니다. (#159)"}},{"before":"f7beb76629e7fd3a8e926292bd51c62ba91c4037","after":"cfd111be3c23736a0507d2ec9905a0616dd4bbb8","ref":"refs/heads/lurgi","pushedAt":"2024-04-05T01:23:01.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Tanney-102","name":"Tigger","path":"/Tanney-102","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57767891?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 러기(박정우) 미션 제출합니다. (#154)\n\n* chore: state의 타입 지정\r\n\r\n* feat: 더보기 버튼에서 무한 스크롤로 변경\r\n\r\n* feat: 이미지 클래스 네이밍\r\n\r\n* docs: 요구사항 추가\r\n\r\n* feat: movie list 그리드 반응형\r\n\r\n* feat: 헤더 min-width 삭제\r\n\r\n* refactor: responsive css 분리 및 버튼 reset css 추가\r\n\r\n* refactor: 일관성 있는 async await 사용\r\n\r\n* feat: 모달창 dialog 반응형 구현\r\n\r\n* feat: 영화 모달 내부 헤더\r\n\r\n* feat: 영화 상세 모달 반응형 구현\r\n\r\n* refactor: fetchErrorCheck 함수 모듈 분리\r\n\r\n* feat: 영화 상세 정보 모달에 적용\r\n\r\n* docs: 기능구현 목록 추가\r\n\r\ndocs rebase\r\n\r\n* feat: 모바일 화면 적용\r\n\r\n* feat: 상세 모달 추가 구현\r\n\r\n줄거리, 제목 글자수 제한, 줄거리 없을 경우 '없습니다.' 표시\r\n\r\n* feat: 별 hover 이벤트 구현\r\n\r\n* feat: 별점 클릭시 interface 변경 로직\r\n\r\n* feat: 별점 로컬스토리지 사용\r\n\r\nrebase\r\n\r\n* refactor: 영화 상세정보 모달 모듈 분리\r\n\r\n* refactor: 불필요한 초기화 삭제\r\n\r\n* refactor: 파일 이름 변경 및 정리\r\n\r\n* chore: 파일 경로 수정\r\n\r\n* refactor: 스타일 수정\r\n\r\n* feat: 상세 영화 스켈레톤 적용\r\n\r\n* fix: 모바일 화면 수정\r\n\r\n* fix: 반응형 css 수정\r\n\r\nfix rebase\r\n\r\n* feat: 검색 결과 없습니다 출력\r\n\r\n* feat: 스켈레톤 화면 비율 수정\r\n\r\n* feat: 영화 카드 hover 기능 추가\r\n\r\n* feat: 검색 required 추가\r\n\r\n* feat: 스켈레톤 닫기 구현\r\n\r\n* feat: 검색어가 같다면 페칭하지 않는다.\r\n\r\n* docs: 테스트 구현 목록 추가\r\n\r\n* fix: 무한 스크롤 버그 수정\r\n\r\n* test: cypress 무한스크롤 테스트\r\n\r\n* fix: intercept 함수를 앞으로 옮김\r\n\r\nintercept가 제대로 이루지기 위해서 visit코드 앞으로 옮겼다\r\n\r\n* test: cypress 모달창 오픈/클로즈 테스트\r\n\r\n* chore: result-string 클래스 추가\r\n\r\n* test: cypress 별점 리뷰 테스트\r\n\r\n* feat: Top 버튼 추가\r\n\r\n* fix: Top button 기본 값 hidden 추가\r\n\r\n* refactor: 불필요한 매개변수 전달 삭제\r\n\r\n* chore: TODO 주석 추가\r\n\r\n* refactor: 파일 위치 변경\r\n\r\n* chore: exlint 수정\r\n\r\nno-unused-vars 속성 typesciprt로 설정\r\n\r\n* refactor: fetching 함수 공통 부분 분리\r\n\r\n* fix: replace 함수 수정\r\n\r\n* refactor: 이미지 크기 상수 분리\r\n\r\n* chore: 불필요한 코드 삭제\r\n\r\n* refactor: 상수 분리\r\n\r\n순환 구조 제거\r\n\r\n* refactor: 생성로직 변경 및 상수 분리\r\n\r\n* refactor: 상수 분리\r\n\r\n* feat: 헤더 search form 반응형\r\n\r\n* feat: 헤더 search form 반응형\r\n\r\nrebase\r\n\r\n* docs: 기능 구현 목록 추가\r\n\r\n* feat: 스켈레톤 UI에 애니메이션 적용\r\n\r\n* refactor: 함수 분리\r\n\r\n* feat: input 이벤트 추가\r\n\r\n* refactor: style파일 css로 변경\r\n\r\ndosc rebase\r\n\r\n* feat: 영화 상세 정보 캐싱","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 러기(박정우) 미션 제출합니다. (#154)"}},{"before":"5c9aa1e8641c441ea847aa64b92ee1cf1ea391c5","after":"80aefa6cfafcad34c537e83a88f886abc515126c","ref":"refs/heads/todari","pushedAt":"2024-04-04T18:16:24.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JeongBin0227","name":null,"path":"/JeongBin0227","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/45503248?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 토다리(이태훈) 미션 제출합니다. (#168)\n\n* chore: ts eslint 설정\r\n\r\n* docs: README.md에 기능 구현 요구사항 작\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* chore: eslint, prettire, gitingnore 등 프로젝트 초기 설정\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: movie api response들에 대한 타입 지정\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* chore: 프로젝트 진입점 변경\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* rename: index.ts 이름 충돌로 인해 module.d.ts로 이름 변경\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* chore: 프로젝트 진입점 다시 변경\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* move: img 파일들 src/imgs에 생성\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* move: 사용을 위한 image 파일 추가\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: 화면을 이루는 components들 생성\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* design: 브라우저 기본 css 초기화를 위한 reset.css 추가\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: index.ts에 components들 생성 로직 추가\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* move: component 들의 file 디렉토리 변경\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* design: component들의 css 적용\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: api baseurl 상수화\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* chore: fetch method를 위한 fetchWrapper 구현\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: api를 통해 검색된 query가 포함된 영화를 불러오는 기능 구현\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: api를 통해 인기 영화를 불러오는 기능 구현\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* feat: 인기 영화 불러오는 기능 구현\r\n\r\nCo-authored-by: Todari \r\n\r\n* feat: 검색해서 결과를 보여주는 기능 구현\r\n\r\nCo-authored-by: Todari \r\n\r\n* fix: 더 보기시 제대로 정보를 불러오지 않았던 문제 해결\r\n\r\nCo-authored-by: Todari \r\n\r\n* feat: 마지막 목록일 때 버튼 비활성화 기능 구현\r\n\r\nCo-authored-by: Todari \r\n\r\n* feat: 스켈레톤 이미지 보이는 기능 구현\r\n\r\nCo-authored-by: Todari \r\n\r\n* feat: 오류상황일 때 fallback screen 출력기능구현\r\n\r\nCo-authored-by: Todari \r\n\r\n* design: 버튼 마진 조정, star icon 정렬\r\n\r\nCo-authored-by: Todari \r\n\r\n* feat: 검색어 최대 30자 제한\r\n\r\nCo-authored-by: Todari \r\n\r\n* docs: 추가고려사항 변경\r\n\r\nCo-authored-by: Todari \r\n\r\n* fix: createSearchField 오타 수정\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* fix: 영화 목록을 불러올 때 skeleton class를 제대로 삭제하지 않던 오류 수정\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* test: cypress e2e test 작성\r\n\r\nCo-authored-by: jinhokim98 \r\n\r\n* style: 사용하지 않는 코드 제거, 오타 수정, 주석 제거\r\n\r\n* design: 별점 텍스트와 별 이미지 vertical 중앙 정렬\r\n\r\n* fix: html lang을 en에서 ko로 변경\r\n\r\n* style: 사용하지 않는 코드 삭제\r\n\r\n* fix: 영화를 검색하는 과정에서 api 오류를 감지하지 않던 오류 수정\r\n\r\n* test: 검색 test가 제대로 되지 않던 오류 수정 및 test 코드 분리\r\n\r\n* test: matchedMoviesFlow test 코드에서 의미 없는 코드 삭제\r\n\r\n* test: command를 이용한 cypress test 코드 수정\r\n\r\n* test: it의 테스트 명세를 자세한 내용을 포함하도록 수정\r\n\r\n* refactor: Button이 단일 클래스를 받을 경우를 고려해 type 변경\r\n\r\n* style: disabled prop을 강제 형변환을 이용하여 간소화\r\n\r\n* refactor: function 키워드로 작성된 fetchWrapper를 const로 변경\r\n\r\n* refactor: css 색상 값들 변수로 지정\r\n\r\n* refactor: fallback screen의 message 상수화\r\n\r\n* style: rem 단위 px로 변경\r\n\r\n* refactor: logo eventListener에게 메소드를 넘겨줄 경우 this binding\r\n\r\n* style: h2 계층에 fontsize가 잘못된 부분 수정\r\n\r\n* refactor: moveItem의 skeleton className을 제거하는 방법 변경\r\n\r\n* refactor: MovieItems의 element들 type을 더 명확히 변경\r\n\r\n* design: fallback screen UX writing 위치 수정\r\n\r\n* design: fallback screen 오류 폰트 크기 변경\r\n\r\n* test: test 정보를 담은 상수 선언\r\n\r\n* fix: h2 type을 잘못 설정한 오류 수정\r\n\r\n* refactor: FallbackScreen MovieItems에서 분리, MovieService를 이용하여 MovieItems 수정\r\n\r\n* fix: 타이틀을 계속 생성하던 오류 수정\r\n\r\n* style: 사용하지 않는 코드 제거\r\n\r\n* fix: input value가 없는 경우, api 요청을 하지 않도록 수정\r\n\r\n* refactor: lastPage method 이름 setIsLastPage로 변경\r\n\r\n* refactor: 한 페이지에 아이템을 불러오는 갯수 상수화\r\n\r\n* fix: SETTING import를 하지 않던 오류 수정\r\n\r\n* feat: movieDetail을 받아오는 api 추가\r\n\r\n* feat: 영화 목록을 누르면 상세 정보를 보여주는 MovieDetailModal 기능 추가\r\n\r\n* refactor: MovieDetailModal 생성 시, 별도의 api 요청을 보내지 않도록 수정\r\n\r\n* refactor: MovieApp.ts 생성을 통한 index.ts 로부터의 기능 분리\r\n\r\n* design: MovieDetailModal css 변경\r\n\r\n* feat: MovieDetailModal 안에 별점을 기록할 수 있는 ScoreSelector 생성\r\n\r\n* feat: 영화 별 평점 정보를 기록하는 기능 추가\r\n\r\n* style: 사용하지 않는 코드 제거\r\n\r\n* style: 코드 컨벤션에 따른 코드 스타일 변경 및 통일성을 위해 일부 함수명 수정\r\n\r\n* feat: MovieDetailModal 닫기 버튼 추가\r\n\r\n* design: 영화 상세 설명이 긴 경우, overflow:scroll 적용\r\n\r\n* design: MovieDetailModal 내 backgroundImage 적용\r\n\r\n* fix: 같은 영화의 별점을 여러번 변경할 경우, 계속 별점이 생성되던 오류 수정\r\n\r\n* fix: MovieApp의 event가 main, section을 지우는 오류 수정\r\n\r\n* feat: 더보기 pagination 무한 스크롤 기능으로 대체\r\n\r\n* design: MovieItems component 반응형 디자인 및 레이아웃 적용\r\n\r\n* design: MovieDetailModal의 모바일 해상도 대응 반응형 design 및 layout 적용\r\n\r\n* fix: 초기 스켈레톤이 제대로 불러와지지 않던 오류 수정\r\n\r\n* design: 1200px 이상 해상도에서 layout이 왼쪽으로 치우치던 문제 해결\r\n\r\n* feat: 검색 필드 입력 시 바로바로 검색 결과를 출력하는 기능 추가\r\n\r\n* feat: poster imagePath가 null인 경우 보여주는 placeholder 이미지 적용\r\n\r\n* feat: 검색창에 영화 검색 시 검색 중인 value를 이용해 목록을 불러오는 기능 추가\r\n\r\n* design: Header 반응형 layout 적용\r\n\r\n* fix: intersectionObserver threshold 수정\r\n\r\n* design: button text 더보기 에서 목록을 불러오고 있어요 로 변경\r\n\r\n* design: movieItems가 1200px 이상의 해상도에서 중앙에 위치하지 않던 오류 수정\r\n\r\n* fix: cache를 사용하지 않을 때, image가 불러오기 전에 layout이 변경되는 문제 수정\r\n\r\n* design: 태블릿, pc 대응 해상도에서 score-selector의 layout이 변경되던 오류 수정\r\n\r\n* design: 모바일 대응 해상도에서, detail-poster-container이 남아있던 오류 수정\r\n\r\n* design: score-selector가 모바일 대응 해상도에선 중앙 정렬로, pc 대응 해상도에선 좌측 정렬이 되도록 변경\r\n\r\n* fix: 검색 debouncing 수정\r\n\r\n* fix: 등록된 영화 설명이 없는 경우, 기본 값 출력\r\n\r\n* design: 모바일 대응 해상도에서 별점 영역이 중앙에 있도록 수정\r\n\r\n* fix: input이 긴 경우 heading 에 truncated 처리\r\n\r\n* design: 영화 제목이 긴 경우, 모달에서 truncated 처리\r\n\r\n* fix: detail modal 있을 경우, scroll 되지 않도록 변경\r\n\r\n* feat: 최상단으로 이동할 수 있는 floating button 추가\r\n\r\n* design: floatingButton이 detailModal보다 위에 있던 오류 수정\r\n\r\n* fix: detailModal에서도 imagePlaceholder를 보여줄 수 있도록 수정\r\n\r\n* fix: Error Fallback screen 출력 및 정상화시 DOM에 직접 접근하여 생성 및 삭제하지 않도록 변경\r\n\r\n* fix: App.ts에서 eventListener들이 중복으로 등록될 수 없도록 수정\r\n\r\n* style: 오타 수정\r\n\r\n* fix: modal이 보일 때, overflow-hidden을 주는 방식을 js style에서 css로 변경\r\n\r\n* style: 사용하지 않는 주석 제거\r\n\r\n* feat: esc키 입력을 이용해 movieDetailModal을 닫을 수 있는 기능 추가\r\n\r\n* refactor: css z-index 상수화\r\n\r\n* refactor: 매직넘버 상수화\r\n\r\n---------\r\n\r\nCo-authored-by: 김진호 ","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 토다리(이태훈) 미션 제출합니다. (#168)"}},{"before":"a793ed8aa6635a08a35b1c8a44605e3bc6bee260","after":"75c418609f859a6bcd2453028ba79305248d7bcd","ref":"refs/heads/yoonkyoungme","pushedAt":"2024-04-04T17:35:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"JeongBin0227","name":null,"path":"/JeongBin0227","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/45503248?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 빙봉(김윤경) 미션 제출합니다. (#165)\n\n* feat(throttle): 영화 목록 무한 스크롤 구현\r\n\r\n- 영화 목록의 페이징 방식을 무한 스크롤 방식으로 변경\r\n\r\n* rename: components/MovieList 디렉터리명 변경 (movieList)\r\n\r\n* feat: BaseModal 컴포넌트 생성\r\n\r\n* feat(movieList api): getMovieDetail 함수 추가\r\n\r\n* feat(MovieState): Movie id 상태를 관리하는 클래스 추가\r\n\r\n* feat(MovieList): movie Item을 클릭 시 상세 모달 활성화 기능 추가\r\n\r\n* feat(MovieDetailModal): 상세 모달 컴포넌트 추가\r\n\r\n* design(common): 모달 스타일 추가\r\n\r\n* fix: MovieList 파일 수정 시 2개의 파일이 추적되는 문제 수정\r\n\r\n* feat: 로컬 스토리지 유틸 함수 추가\r\n\r\n* feat(generateStarRating): 별점 HTML 템플릿 생성 함수 추가\r\n\r\n* feat(MovieDetailModal): 별점 평가 기능 추가\r\n\r\n- 사용자가 선택한 별점을 로컬 스토리지에 저장 (사용자가 별을 클릭할 때마다 해당 영화의 ID와 함께 평가 값이 업데이트 된다.)\r\n\r\n- 영화 상세 모달에 현재 별점을 표시하는 기능을 추가 (해당 영화에 대한 이전 사용자 평가가 있을 경우, 로컬 스토리지에서 평가 값을 불러와서 표시)\r\n\r\n* feat(MovieDetailModal): 별점 UI 업데이트 메서드 추가\r\n\r\n* fix(generateStarRating): 별점을 누를 때 star-rating-container 요소 내에 동일한 요소가 추가되는 문제 수정\r\n\r\n* design(common): 별점 스타일 추가\r\n\r\n* design(responsive): 반응형 스타일 적용 (영화 목록, 영화 상세 모달)\r\n\r\n* refactor(handleAPIError): 중복된 오류 처리 로직을 분리하여 공통 모듈로 사용\r\n\r\n* feat(MovieHeader): 모바일 사이즈일 경우 검색 input 비활성화 처리\r\n\r\n- 모바일 사이즈에서 검색 아이콘을 클릭할 시 검색 input 활성화\r\n- window.resize 이벤트 사용\r\n\r\n* refactor(MovieHeader): resize 이벤트에 throttle 적용\r\n\r\n* fix(MovieList): 검색 후 무한 스크롤 시 검색 결과가 아닌 인기 목록이 불러와지는 오류 수정\r\n\r\n* refactor(constants/urls): 여러 번 사용되는 BASE_POSTER_URL을 constants 디렉터리에 분리\r\n\r\n* remove: components/MovieList 디렉터리 내 파일 모두 삭제\r\n\r\n- MovieListTitle / MovieList 파일 수정 시 2개의 파일이 추적되는 문제 수정 (MovieList 디렉터리 명을 movieList로 바꾼 뒤로 해당 디렉터리 내 파일들을 수정할 때 2개의 파일 변경이 추적됨)\r\n\r\n* refactor(MovieHeader): 모바일 화면에서 검색 입력창 초기화 및 제출 폼 동작 수정\r\n\r\n* feat(roundNumber): 소수점 자리수를 지정하여 반올림하는 함수 추가\r\n\r\n- generateMovieItems, generateMovieDetailModal 영화 평점(vote_average)에 roundNumber 함수 적용하여 소수점 첫째 자리까지 표시\r\n\r\n* feat(generateMovieDetailModal): overview가 비어 있을 경우 'overview 정보가 없습니다.'를 표시\r\n\r\n* comment: 주석 삭제\r\n\r\n* test(MovieDetailModal): 영화 상세 모달 테스트 추가\r\n\r\n* fix(index.ts): 검색 결과가 movie-list-title에 반영 안 되는 문제 수정\r\n\r\n- 6925bc4 커밋 때 날아갔던 8808052 커밋 되돌림(MovieList)\r\n\r\n* test(SearchMovie): 중복되는 테스트 코드 리팩터링\r\n\r\n* test(MovieList): 더보기 기능에 대한 테스트 삭제\r\n\r\n* refactor: 모달 클래스의 DOM 조회 최적화 및 CSS 변경\r\n\r\n- BaseModal 클래스에서 모달을 조회할 때 중복된 DOM 쿼리를 방지하기 위해 인스턴스 변수를 사용하도록 개선\r\n- CSS에서 모달을 토글할 때 :not() 가상 선택자를 활용\r\n\r\n* refactor: 별점 설명을 변수에 할당하는 대신 함수 호출로 변경\r\n\r\n- generateStarRating 함수에서 별점 설명을 변수에 할당하는 대신, createScoreDescription 함수를 직접 호출하여 사용하도록 변경\r\n\r\n* refactor(MovieDetailModal): 타입 가드를 사용하여 movieId에 대한 안전한 접근 처리\r\n\r\n* fix(MovieHeader): 모바일 화면에서 검색 입력창이 포커싱되면 display:none이 되는 문제 수정\r\n\r\n* feat(BaseModal): 모달 닫힐 때 데이터 초기화 기능 추가\r\n\r\n* design: 영화 상세 모달 overview, 별점 스타일 수정\r\n\r\n* feat: 영화 상세 모달 활성화 시 스크롤 비활성화 기능 추가\r\n\r\n* refactor: 이벤트 핸들러, 비동기 함수를 화살표 함수로 변경\r\n\r\n* design(common): 영화 아이템 썸네일에 hover 효과 추가","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 빙봉(김윤경) 미션 제출합니다. (#165)"}},{"before":"56f6171453832333470c9a582155308a5092f4c4","after":"20f8cdede7083d4a21eab9e7e536a0c41201dc6c","ref":"refs/heads/ss0526100","pushedAt":"2024-04-04T16:40:22.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"iborymagic","name":"An Hyun Cheol","path":"/iborymagic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42052110?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 소파(차승하) 미션 제출합니다. (#174)\n\n* refactor: MoviePreview 파일명 변경\r\n\r\n* feat:SubTitle 컴포넌트화\r\n\r\n* refactor: DomainComponent로 이름변경\r\n\r\n* refactor: 컴포넌트 숨김/보임 함수 분리\r\n\r\n* docs(README): 2차 미션 추가 요구사항 작성 및 완료사항 체크\r\n\r\n* fix: 별점 위치 수정\r\n\r\n* feat: 투명 버튼 생성\r\n\r\n* feat: 불투명도 0으로 만드는 클래스 구현\r\n\r\n* refactor: 요소 숨기기, 드러내기 함수 분리\r\n\r\n* feat: 무한 스크롤 구현\r\n\r\n* docs(README): 무한스크롤 에러 작성\r\n\r\n* refactor: movieThumbnail 파일 분리\r\n\r\n* feat:모달 컴포넌트 구현\r\n\r\n* feat(Modal): containerprotect로 변경\r\n\r\n* feat: HeaderModal 컴포넌트 구현\r\n\r\n* feat: StarRating 컴포넌트 생성\r\n\r\n* feat: MovieDescription 구현\r\n\r\n* feat: MovieDetailWithRating 구현\r\n\r\n* feat: 상세 모달창 구현\r\n\r\n* feat: 스토리지 인터페이스 구현\r\n\r\n* feat: 아이템 클릭 시 모달창 띄우기 구현\r\n\r\n* feat(common.css): 스크롤바 삭제\r\n\r\n* fix: page api fetching시 중복 페이지를 받아오던 버그 수정\r\n\r\n* feat: 시놉시스 없을 때 모달 창 수정\r\n\r\n* feat: 모달 창 내부에 들어가는 UI 컴포넌트 구현\r\n\r\n* feat: 없는 영화 검색 시 대응 구현\r\n\r\n* feat(MovieDetailModal): 모달 스켈레톤 구현\r\n\r\n* feat: 별점을 눌러도 설명 위치가 고정되게 구현\r\n\r\n* fix(MoviePoster): 가끔 로딩이 안되는 버그 수정\r\n\r\n* feat: 헤더 상단 고정\r\n\r\n* feat: 창 크기 작아질 시 모달 창 하단에 붙임 구현\r\n\r\n* feat: 반응형 스타일 추가\r\n\r\n* feat: 스크롤바 삭제\r\n\r\n* feat(MoviePosterBoard): 현재 요소 개수 프로퍼티 추가\r\n\r\n* docs(README): 리드미 작성\r\n\r\n- 기능 요구 사항\r\n- 필요한 컴포넌트, UX 작성\r\n\r\n* config(gitignore): dist 추가\r\n\r\n* feat: 검색버튼 반응형으로 변경\r\n\r\n* feat: 검색 input 크기 확대\r\n\r\n* feat: 모달 반응형 디자인 추가\r\n\r\n* refactor: 모달 닫을 때 함수 Modal로 분리\r\n\r\n* refactor(movieDetailModal): MovieDetail 생성 분리\r\n\r\n* feat(MoviePosterBoard): length 삭제 및 isEmpty 추가\r\n\r\n* refactor: await를 .then으로 변경\r\n\r\n* feat: string 상수화\r\n\r\n* feat(NetworkErrorFallBack): 너비 auto로 변경","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 소파(차승하) 미션 제출합니다. (#174)"}},{"before":"b40a362532f4ab2ae3a60a0d460b1349802d98bd","after":"f781b99ff6beb81512c83ea11c50bc96466c5946","ref":"refs/heads/jaeml06","pushedAt":"2024-04-04T15:58:13.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"iborymagic","name":"An Hyun Cheol","path":"/iborymagic","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/42052110?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 치코(이재민) 미션 제출합니다. (#151)\n\n* refactor: 불필요한 import 삭제\r\n\r\n* refactor: 제네릭 타입 사용\r\n\r\n* docs: 기능 명세서 작성\r\n\r\n* refactor: 불필요한 console.log 삭제\r\n\r\n* feat: 무한 스크롤 기능 추가\r\n\r\n* refactor: 불필요한 console.log 제거\r\n\r\n* feat: 무한 스크롤 개선\r\n\r\nsetTimeout으로 버퍼시간을 추가\r\n\r\n* feat: 영화 상세 정보 가져오기 구현\r\n\r\n* feat: 영화 상세 정보를 보여주는 모달 구현\r\n\r\n* feat: 영화 상세 보기를 위한 타입 추가\r\n\r\n* feat: 영화 별점주기 UI 구현\r\n\r\n* feat: 별점 기능 구현\r\n\r\n* feat: 반응형 웹페이지 구현\r\n\r\n* refactor: 불필요한 console.log 제거\r\n\r\n* refactor: style 제거\r\n\r\n* refactor: render함수 분할\r\n\r\n* refactor: item-list 위치 변경\r\n\r\n* refactor: querySelectr을 Dom 유틸로 변경\r\n\r\n* refactor: querySelectr을 Dom 유틸로 변경\r\n\r\n* refactor: rerender함수명 변경\r\n\r\n* refactor: handleResize 함수 분리\r\n\r\n* refactor: querySelectr을 Dom 유틸로 변경\r\n\r\n* refactor: .item-list위치 변경으로 인한 삭제\r\n\r\n* test: 상세보기 모달 기능 검사 추가\r\n\r\n* feat: 모달 close-button style 변경\r\n\r\n* refactor: 불필요한 console.log 삭제\r\n\r\n* feat: input 너비 변경시 애니메이션 추가\r\n\r\n* refacotr: item-view, tem-list위치 변경\r\n\r\n* refactor: getSavedRecommend 함수 이동\r\n\r\n* refactor: 불필요한 구문 삭제\r\n\r\n* feat: 모바일 환경에서 input 닫기 버튼 추가\r\n\r\n* fix: 디바운싱을 스로틀링으로 수정\r\n\r\n* style: 모바일 환경에서 모달 위치 변경\r\n\r\n* style: modal 생성 애니메이션 추가\r\n\r\n* refactor: 중복 코드 제거\r\n\r\n* refactor: closeModalCallBack 삭제\r\n\r\n* refactor: InfiniteScroll 유틸성 확보\r\n\r\n* refactor: localStorage로직 분리\r\n\r\n* refactor: handleResize함수 util로 분리\r\n\r\n* refactor: 불필요한 improt 제거\r\n\r\n* feat: 웹 접근성 개선\r\n\r\n* refactor: View 삭제 openMovieDetailModal분리","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 치코(이재민) 미션 제출합니다. (#151)"}},{"before":"0be0a769113b2b918cc76c650ce555c9489ef915","after":"a60b9c2525cc2905e60cfd814203ffa39619d525","ref":"refs/heads/skiende74","pushedAt":"2024-04-04T14:08:06.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"365kim","name":"Kim Haru","path":"/365kim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60066472?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 제이드(전세영) 미션 제출합니다. (#177)\n\n* docs(기능목록): 스텝2에 따른 기능목록 업데이트\r\n\r\n* feat(Modal): 기본 모달 재사용 컴포넌트 작성\r\n\r\n* feat(common.css): :root 속성추가\r\n\r\n* feat(MovieItemDetail): 기본 뼈대 완성\r\n\r\n* feat(App): MovieItemDetail 테스트및작성을 위해 기본앱에 바로 띄워지게 수정\r\n\r\n* feat(MovieItemDetail): 끄기 버튼 삽입\r\n\r\n* feat(MovieItemDetail): 끄기버튼 테두리 제거\r\n\r\n* feat(StarRating): StarRating, StarIcon 기능 추가\r\n\r\n* feat(MovieItemDetail): 별점 변화에 따라 설명캡션 변경되도록 기능 구현\r\n\r\n* feat(MovieItemDetail): 내 별점에 스타일 적용\r\n\r\n* feat(App): 모달 끄기버튼 클릭시 모달 꺼짐기능 추가. 버튼을 MovieItemDetail->App에서 만들어주는 것으로 변경.\r\n\r\n* feat(MovieItemDetail): 별점 클릭시 별점 점수 보이기 기능 추가\r\n\r\n* feat(Modal): MovieItem클릭시 모달 켜지는 기능 추가. Modal을 싱글톤 패턴으로 변경\r\n\r\n* fix(MovieItem): MovieItem클릭시 새로고침 되는 버그 수정. (감싸던 a 태그 제거)\r\n\r\n* fix(Modal): 새 아이템으로 모달이 띄워질 경우 모달끄기버튼이 안만들어지던 문제 수정. App을 싱글톤으로 변경\r\n\r\n* fix(App): 모달 두번째 아이템 클릭시 업데이트되지 않던 버그 수정\r\n\r\n* refactor(All): 불변 필드에 readonly 속성 추가\r\n\r\n* fix(MovieListContainer): 더보기버튼 클릭시 이전 아이템클릭해도 모달안뜨던 버그수정\r\n\r\n* style(MovieItem): 단순 메소드명 수정. console.log 삭제\r\n\r\n* docs(README): 기능요구사항 업데이트\r\n\r\n* feat(Modal): Modal에서 esc클릭시 꺼짐 기능 추가. 모달 open시 container를 focus\r\n\r\n* docs(README): 기능목록 업데이트\r\n\r\n* feat(MovieItemDetail): 별점 멘트 수정\r\n\r\n* feat(App): 모달 켜고 시작하기 해제\r\n\r\n* test(fixture): 20개의 영화목록을 표시하는 fixture 테스트코드 작성\r\n\r\n* fix(MovieItem): 잘못 올라간 makeUrl 메소드 제거\r\n\r\n* feat(Modal): Modal의 tabIndex를 container->$target으로 이동\r\n\r\n* feat(MovieItem): 호버시 클릭포인터커서 생기게 수정\r\n\r\n* feat(Modal.css): 클릭시 스크롤움직이던 문제 해결. 모달의 visibility 설정을 container->modal본체로 옮김.\r\n\r\n* feat(star_filled): 별 그림 24x25 px ->25x25px로 수정\r\n\r\n* feat(StarToggle): 별 버튼 호버시 cursor:pointer 설정\r\n\r\n* feat(App): 무한스크롤 구현\r\n\r\n* feat(App): 더보기 버튼 제거\r\n\r\n* dcos(README): 더보기->무한스크롤 기능목록 반영\r\n\r\n* feat(Modal, MovieItem): 반응형 모달 구현\r\n\r\n* feat(MovieItemDetail): 영화설명 줄간격 1.5로 설정\r\n\r\n* feat(Header): 헤더 크기가 조정되게 설정\r\n\r\n* feat(Header): 반응형 구현. 768px 이하의 환경에서는 검색바를 축소\r\n\r\n* feat(Header): important 옵션제거\r\n\r\n* chore(webpack): 설정 수정\r\n\r\n* feat(Header): 모바일에서. 헤더 반응형 검색버튼 클릭시 검색창 늘어나게 변경\r\n\r\n* feat(App): 스로틀 주기를 10ms로 변경\r\n\r\n* feat(MovieItemDetail): 스크롤 체이닝 막음. 긴 컨텐츠의 스크롤 스타일링.\r\n\r\n* feat(MovieListContainer): 영화 목록 아이템 열 갯수 반응형 구현\r\n\r\n* feat(MovieListContainer): flex space-between에서 flex-start로 변경\r\n\r\n* feat(Header): 검색바 가로길이 조절 반응형 transition 구현\r\n\r\n* refactor(Modal): 변수명 변경 CSS->CLASS_NAME\r\n\r\n* refactor(StarRating): onClick인자가 들어올경우에만 이벤트리스너를 넣도록 변경.\r\n\r\n* refactor(StarRating): 불필요한 starCount타입가드 제거\r\n\r\n* docs(README): 기능목록 반영\r\n\r\n* test(MovieStorageService): 테스트 구현\r\n\r\n* feat(MovieStorageService): 영화 스토리지 구현\r\n\r\n* test(Movie): Movie test 구현\r\n\r\n* feat(Movie): Movie 도메인엔티티 구현\r\n\r\n* test(MovieCollection): Movie의 일급콜렉션 테스트코드 구현\r\n\r\n* feat(MovieCollection): Movie의 일급콜렉션 구현\r\n\r\n* feat(MovieCollection): 단일 영화 업데이트 기능 추가 및 테스트코드 구현\r\n\r\n* feat(MovieStorageService): 스토리지에 단일영화를 업데이트하는 기능 구현 및 테스트 구현\r\n\r\n* feat(영화): MovieStorage에 저장하는 것을 영화의 별점으로 한정.\r\n\r\n* feat(별점정보): 별점 정보 로직을 도메인 내에 구현.\r\n\r\n* feat(MovieCollection): MovieCollection의 기능구현 및 테스트코드 구현\r\n\r\n* refactor(MovieCollection): 메소드명 단순 변경 getMovies->get\r\n\r\n* feat(MovieStorage): 영화가 없는 경우에도 update함수로 추가할 수 있게 변경\r\n\r\n* feat(IMovie): IMovie의 타입에 myScore 추가. 그에따른 변경사항 반영.\r\n\r\n* feat(내 별점 저장): 상세모달의 별점 저장 & 불러오기 기능 구현\r\n\r\n* docs(README): 사용자의 별점 유지 기능목록 업데이트\r\n\r\n* feat(CloseButton): alt 닫기버튼 추가\r\n\r\n* test(MovieStorageService): 테스트코드가 기존로직을 이용하여 구현하지않게끔 개선.\r\n\r\n* fix(Header): 큰 화면에서는 검색버튼클릭시 로고 지우지않기\r\n\r\n* feat(MovieItemDetail): 별점 위치 미세조정(아래로)","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 제이드(전세영) 미션 제출합니다. (#177)"}},{"before":"8fdbfcd86d759634c7b0181d6505fa397f0b1190","after":"a3d46b5dc1a3ca16344cdb255224c4d131fda041","ref":"refs/heads/simorimi","pushedAt":"2024-04-04T13:38:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uk960214","name":"Yo Wook Kim","path":"/uk960214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43166681?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 시모(심호림) 미션 제출합니다. (#166)\n\n* rename(MovieItems): 동사형 변수명 명사형으로 수정\r\n\r\n* feat(Throttle): 쓰로틀 함수 구현\r\n\r\n* refactor(ItemView): 무한 스크롤 기능을 위한 기능 수정\r\n\r\n* feat(index): 무한스크롤 기능 구현\r\n\r\n* refactor(Throttle): ts로 수정\r\n\r\n* refactor(index): 가독성 향상을 위한 조건 상수화\r\n\r\n* feat(ReplaceSkeletonProps): 인터페이스 생성\r\n\r\n* feat(ReplaceSkeletonsProps): 인터페이스 생성\r\n\r\n* feat(MovieItemDetailModalInstance): 타입 별칭 생성\r\n\r\n* feat(Modal): 모달 생성 클래스 기능 구현\r\n\r\n* design(common): modal css 추가\r\n\r\n* feat(MovieItemDetailModal): 영화 상세모달 setMovieItem 메서드 생성\r\n\r\n* refactor(MovieItems): props 인터페이스 적용 및 movieData 세팅 기능 및 이벤트리스너 추가\r\n\r\n* refactor(ItemView): 생성자 매개변수 변경 및 MovieItems.replaceSkeletons 매개변수 props 형식으로 변경\r\n\r\n* refactor(MovieItems): replaceSkeleton 메서드 MovieItem으로 역할 분리\r\n\r\n* remove(MovieItemSkeleton): 링크 테그 생성 메서드 삭제\r\n\r\n* feat(sendRequest): fetchMovieDetail 메서드 기능 구현\r\n\r\n* feat(DetailMovieData): 인터페이스 구현\r\n\r\n* refactor(MovieItem): ReplaceSkeletonProps 수정 및 클릭시 setDetailMovieData 실행되도록 구현\r\n\r\n* feat(MOVIES_URL): MOVIE_DETAIL_BASE_URL 상수 추가\r\n\r\n* fix(index): 스크롤이 바닥에 닿기 전 영화 목록 업데이트 되는 오류 해결\r\n\r\n* refactor(MovieItemDetailModal): setDetailMovieData 메서드 movieDetail 데이터 받도록 수정\r\n\r\n* fix(Modal): toggle 메서드 대신 close open 메서드를 구현함으로써 esc 버튼 눌렀을 때 켜지는 오류 해결 및 replaceChildren 메서드 위치를 옮김으로써 닫았을 때 모달 컨테이너 지워지도록 수정\r\n\r\n* rename(MovieItem): createStarElement 네이밍 createStarImg로 변경\r\n\r\n* refactor: setAttribute를 점 연산자로 변경\r\n\r\n* refactor(index): 0.75 숫자 상수화\r\n\r\n* refactor(MovieItem): 재사용을 위한 StarImg 생성 메서드 분리\r\n\r\n* refactor(MovieItemDetailModal): MovieItemDetailTitleContainer와 MovieItemDetailContentContainer 분리\r\n\r\n* feat(MovieItemDetailTitleContainer): 디테일 모달 제목과 버튼 생성 기능 구현\r\n\r\n* feat(MovieItemDetailContentContainer): 영화 디테일 내용 부분 생성 기능 구현\r\n\r\n* feat(MyRatingContainer): 디테일 모달 내 별점 컨테이너 생성 기능 구현\r\n\r\n* feat(INFORMATION): close 버튼, MY_RATING 상수 선언 및 CONDITIONS에 존재하던 MOVIE_ITEM.count INFORMATION으로 이동\r\n\r\n* design(common): 상세 모달 css 설정\r\n\r\n* refactor(INFORMATION): STORAGE_KEY 상수 선언 및 MY_RATING score 삭제\r\n\r\n* feat(UserVote): UserVote 타입 별칭 선언\r\n\r\n* feat(UserMoviesStorage): 내 별점 저장 기능 구현\r\n\r\n* refactor(DetailMovieData): user_vote 속성 추가\r\n\r\n* feat(MyRatingContainer): 별점 동적 생성 기능 구현\r\n\r\n* feat(ChangeMyRatingContentProps): 인터페이스 생성\r\n\r\n* feat(HandleStarOnClickProps): 인터페이스 생성\r\n\r\n* design(common): 내 별점 별 모양 커서 디자인 추가\r\n\r\n* refactor(MovieItemDetailContentContainer): MyRatingContainer.create() 메서드 변수 등록\r\n\r\n* fix: 화면을 줄여 영화가 3개씩 나열될 때 20개의 약수가 아니라 공백이 생기는 오류 해결\r\n\r\n* refactor(index): 스크롤 역할 분리\r\n\r\n* refactor(CONDITIONS): 사용자의 편의성을 고려하여 supplement 값 변경\r\n\r\n* feat(MovieHeader): searchCloseButton 생성\r\n\r\n* feat(INFORMATION): searchClose 속성 추가\r\n\r\n* refactor(MovieItemDetailTitleContainer): Buttons 속성 close에서 modalClose로 수정\r\n\r\n* feat(CONDITIONS): mobileViewWidth 속성 추가\r\n\r\n* feat(SearchBox): handleSearchButton 메서드 기능 구현\r\n\r\n* design(common): 반응형 css 구현\r\n\r\n* docs(README): step2 기능 요구사항 업데이트\r\n\r\n* Rename: css 분리 및 폴더 정리\r\n\r\n* rename(utils): 폴더명 일관성을 위한 유틸 폴더 네이밍 수정\r\n\r\n* refactor(UserMoviesStorage): 객체의 불변성을 위한 스프레드 연산자 사용\r\n\r\n* feat(GenerateMoviesUrl): url 생성 함수 구현\r\n\r\n* refactor(sendRequest): url 생성 함수를 활용하여 반복되는 부분 수정\r\n\r\n* refactor(ItemView): mountItems 네이밍 createMovieItems로 변경 및 역할 분리\r\n\r\n* rename(throttle): 함수명이기에 머리 글자 소문자로 변경\r\n\r\n* rename(sendRequest): 함수이기에 generateMoviesUrl 머리글자 소문자로 변경\r\n\r\n* rename: 함수명 머리글자 대문자에서 소문자로 수정","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 시모(심호림) 미션 제출합니다. (#166)"}},{"before":"e5dd885a75206c64e60b9f4d55aeeca66a9f7855","after":"3a663d41d5c38a35bdf1a4e0fa5460b97862f92a","ref":"refs/heads/0jenn0","pushedAt":"2024-04-04T12:46:47.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uk960214","name":"Yo Wook Kim","path":"/uk960214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43166681?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 리버(최재희) 미션 제출합니다. (#158)\n\n* Refactor: 구조 분해 할당 사용\r\n\r\n* Fix: 네트워크 에러 메시지를 사용자 친화적으로 변경\r\n\r\n* Fix: 로고 주소를 루트 주소로 수정\r\n\r\n* Refactor: Error 컴포넌트이름 ErrorScreen으로 수정\r\n\r\n- Error와 헷갈려서 수정했습니다\r\n\r\n* Docs: 2단계 기능 구현 목록 작성\r\n\r\n* Docs: 2단계 기능 구현 목록 수정\r\n\r\n* Refactor: Error -> ErrorScreen 컴포넌트 사용된 곳에 적용\r\n\r\n* Feat: search,popular api만 도메인객체 적용\r\n\r\n* Feat: 영화 상세보기 구현\r\n\r\n* Feat: 별점 매기기 컴포넌트 구현\r\n\r\n* Feat: MovieItem 컴포넌트 속성에 movieId 주입\r\n\r\n* Feat: 무한스크롤 addEventListener로 구현\r\n\r\n* Style: 영화 상세 컴포넌트 스타일\r\n\r\n* Style: 영화 목록 반응형 스타일링\r\n\r\n* Style: 상세 모달창 반응형 스타일링\r\n\r\n* Style: header 반응형 스타일링\r\n\r\n* Feat: 더보기 버튼 사용부분 삭제\r\n\r\n* Feat: PageManager에서 totalPage 관리 및 마지막 페이지에 도착시 안내 문구 출력 구현\r\n\r\n* Feat: 검색 결과가 존재하지 않는다는 안내 문구 2번 출력 수정\r\n\r\n* Chore: 주석,console.log 삭제\r\n\r\n* Refactor: NoImage 파일 오타 수정\r\n\r\n* Refactor: 이미지 사이즈 상수화\r\n\r\n* Feat: 영화썸네일 div로 감싸기\r\n\r\n* Docs: 2단계 기능 구현 목록 체크\r\n\r\n* Feat: Intersection Observer API 사용해서 무한 스크롤 구현\r\n\r\n* Style: 영화 상세 모달창 높이 조절\r\n\r\n* Fix: 로고 주소 배포 주소로 변경\r\n\r\n* Refactor: 함수 인자 단순화\r\n\r\n* Refactor: 함수 depth 줄이기\r\n\r\n* Refactor: 구조 분해 할당 사용\r\n\r\n* Feat: 영화 포스터 alt를 null로 설정\r\n\r\n* Feat: ratingStars 컴포넌트 return 단순화\r\n\r\n* Refactor: 함수 이름 명확하게 변경\r\n\r\n* Refactor: 불필요한 구조분해 할당 삭제\r\n\r\n* Refactor: 클래스 이름 명확하게 수정\r\n\r\n* Deploy: 배포","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 리버(최재희) 미션 제출합니다. (#158)"}},{"before":"98be7d30d640727a9b77ef0f1a81beeb03c9ca00","after":"9ca50ea38322af85a9476ef91aeeff1ded7cf9c2","ref":"refs/heads/hwinkr","pushedAt":"2024-04-04T11:58:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"uk960214","name":"Yo Wook Kim","path":"/uk960214","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/43166681?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 해리(최현웅) 미션 제출합니다 (#155)\n\n* docs(README.md): 스텝 2 기능 요구 사항 작성\r\n\r\n* feat(Storage): 스토리지 추상화 및 별점 도메인 구현\r\n\r\n* chore(delete unused file): 사용하지 않는 파일 삭제\r\n\r\n* chore(change image file name): 별점 이미지 네이밍 수정\r\n\r\n* feat(Modal): 재사용할 수 있는 모달 컴포넌트 구현\r\n\r\n- html dialog 태그 활용\r\n- 공개 메서드 showModal -> Element를 인자로 받아서 dialog에 추가한 후, dailog 태그가 기본적으로 제공하는 showModal 메서드 호출\r\n- 공개 메서드 hideModal -> 모달 뒷배경을 클릭하거나, 외부에서 호출할 경우 모달을 언마운트하고 내용을 비움\r\n\r\n* chore(MovieDetail): 영화 상세 정보 모달 컴포넌트 구현\r\n\r\n- 영화 목록에서 한 영화를 클릭하면, 해당 영화의 id를 받아서 상세 정보를 얻어오는 api 호출\r\n- 영화 별점 평가 컴포넌트를 생성 후 추가\r\n\r\n* docs(README.md): 영화 상세 정보 모달 요구사항 완료\r\n\r\n* feat(MovieRatingPanel): 사용자 별점 컴포넌트 구현\r\n\r\n- MoveRatingManager 도메인 로직을 활용해서 로컬 스토리지에 별점을 저장하거나 업데이트\r\n- 사용자가 별점을 클릭할 때, 별점이 수정되며 UI에 반영\r\n\r\n* feat(infinite-scroll): 무한 스크롤 구현\r\n\r\n- 사용자 눈에 보이지 않는 div 태그가 뷰포트에 들어올 경우 api를 호출하여 무한 스크롤 구현\r\n- 10 페이지에 도달할 경우 div 태그를 제거하고, 옵저버 연결 제거\r\n\r\n* style(MovieListContainer): MovieListContainer 내부에서 사용되는 스타일 분리\r\n\r\n* style(MovieSection): MovieSection 내부에서 사용되는 스타일 분리\r\n\r\n* chore(Header): Header 컴포넌트 폴더 구조 변경\r\n\r\n* chore(MovieList): MovieList 컴포넌트 폴더 구조 변경\r\n\r\n* style(common.css): 컴포넌트별 스타일 분리 반영\r\n\r\n* feat(type guide): 주어진 값이 유요한지 검증하고, 타입을 확인하는 유틸 함수 구현\r\n\r\n* feat(dom utils): querySelectorAll 추상화 함수 구현 추가\r\n\r\n* refactor(type): 영화 상세 정보 도메인 객체 추가 구현\r\n\r\n* refactor(MovieFetcher): 영화 데이터 api를 제공하는 도메인에 상세 정보 엔드포인트 추가\r\n\r\n* chore(App): 컴포넌트 폴더구조 변경 반영\r\n\r\n* chore(Component): 공통 컴포넌트 폴더구조 변경\r\n\r\n* chore(MovieDetail): 영화 평점 컴포넌트 이름 변경 반영\r\n\r\n* chore(Skeleton): 영화 목록 아이템 스켈레톤 컴포넌트 폴더구조 변경\r\n\r\n* refactor(MovieRatingManager): 평점 타입을 확인하는 함수를 외부 유틸 함수를 사용하는것으로 변경\r\n\r\n* chore(MovieListManager): 도메인 이름 Movie -> MovieListManager로 변경\r\n\r\n* style(common): 공통 스타일 속성 추가\r\n\r\n* util(dom): 현재 디바이스 크기가 모바일 크기인지 확인하는 유틸 함수 구현\r\n\r\n* refactor(MovieFetcher): 상세 정보 요청 api 추가, 에러 핸들링 메서드 추가 구현\r\n\r\n* chore(Fetcher): 구현하지 않는 메서드 삭제, 네트워크 공통 에러 메시지 수정\r\n\r\n* chore(contants): 에러 발생 시 보여 줄 이미지 주소, 한 번 요청시 가져오는 데이터 갯수 상수 설정\r\n\r\n* refactor(Skeleton): ul 태그를 생성하지 않고, 생성된 스켈레톤 리스트를 영화 목록 ul 태그에 추가하는 것으로 수정\r\n\r\n- 태블릿 디바이스에서 한 줄에 3개의 데이터를 보여주는데, 스켈레톤에서 ul 태그를 추가로 만든다면 스켈레톤이 한 줄 구분되어 생성되는 문제를 해결하기 위함\r\n\r\n* chore(MovieSection): 공통 스타일 클래스 이름 사용하는 것으로 수정\r\n\r\n* style(MovieSection): 디바이스 크기 반응형 스타일 추가\r\n\r\n* feat(MovieRatingPanel): 영화 평점 컴포넌트 구현\r\n\r\n- 사용자가 클릭하는 별점에 따라서, 평점 & 평점 메시지 UI가 달라짐\r\n- 로컬 스토리지 도메인과 메시지를 주고받아 새로고침해도 평점이 유지됨\r\n- 모바일 디바이스 크기일 경우 평점 메시지는 사라짐\r\n\r\n* refactor(MovieListContainer): 영화 목록 데이터 페칭 컴포넌트 리팩터링\r\n\r\n- 더보기 버튼에서 스크롤로 api 요청 트리거 변경\r\n- 데이터 페칭 중 예외가 발생했을 경우 보여지는 UI 구현\r\n\r\n* refactor(MovieList): 영화 목록 컴포넌트 리팩터링\r\n\r\n- 검색 결과가 존재하지 않을 경우, 보여주는 UI 변경\r\n- 공통 스타일 클래스를 사용하는 것으로 수정\r\n- 스켈레톤 고도화를 위해서 썸네일 이미지에 skeleton 클래스 추가\r\n\r\n* style(MovieDetail): 공통된 스타일 클래스를 사용하는 것으로 수정, 반응형 디자인 적용\r\n\r\n* style(Header): 공통된 스타일 클래스를 적용하는 것으로 수정, 반응형 디자인 적용\r\n\r\n* test(config): cypress commands 설정\r\n\r\n* test(MovieDetail): 영화 상세 정보 기능 테스트\r\n\r\n* test(MovieList): 무한 스크롤 기능 테스트 & 네트워크 예외시 UI 테스트\r\n\r\n* chore(test data): 상세 정보 모킹 데이터 추가\r\n\r\n* style(App): 공통된 스타일 클래스를 사용하는 것으로 수정\r\n\r\n* chore(index.html): title 변경\r\n\r\n* feat(type.ts): 특정 객체의 키들로 이루어진 배열인지 타입을 확인하는 함수 구현\r\n\r\n* config(utility type): Optional, Nullabel 커스텀 유틸리티 타입 추가\r\n\r\n* refactor(MovieFetcher): url에 특정 쿼리가 추가되어도 유연하게 대응할 수 있도록 수정\r\n\r\n* chore(delete unused file): 사용하지 않는 파일 삭제\r\n\r\n* test(MovieList): 테스트 skip 취소하지 않도록 수정\r\n\r\n* chore(App): Optional 유틸리티 타입 사용\r\n\r\n* chore(Header): Optional 유틸리티 타입 사용\r\n\r\n* chore(Modal): Optional 유틸리티 타입 사용\r\n\r\n* chore(MovieDetail): Optional 유틸리티 타입 사용, 디테일 헤더 너비 수정\r\n\r\n* chore(MovieList): Optional 유틸리티 타입 사용, 빈 검색 화면 ul 태그로 수정\r\n\r\n* refactor(MovieListContainer): MovieListContainer 컴포넌트 리팩터링\r\n\r\n- 네트워크 에러 메시지 레이어 분리\r\n- Optional 유틸리티 타입 사용\r\n- 페이지 관리 레이어 분리\r\n\r\n* feat(NetworlErrorMessage): 네트워크 통신 에러메시지 UI 구현\r\n\r\n* feat(MovieRatingPanel): Optional 유틸리티 타입 사용, 도메인 이름 변경 반영\r\n\r\n* chore(MovieSection): Optional 유틸리티 타입 사용, 빈 검색화면 ul 태그 사용으로 수정\r\n\r\n* feat(MovieListPage): 영화 목록 데이터 페칭 페이지 관리 도메인 구현\r\n\r\n* feat(MovieListAPI): 영화 목록 데이터 페칭 도메인 구현\r\n\r\n- MovieListManager -> MovieListAPI 네이밍 수정\r\n- 데이터 페칭 페이지를 외부에서 주입하도록 수정\r\n\r\n* feat(MovieRating): 영화 평점 도메인 구현\r\n\r\n- MovieRatingManager -> MovieRating 네이밍 수정\r\n- 인터페이스 제거\r\n\r\n* chore(BrowserStorage): Optional 유틸리티 타입 사용, 인터페이스 네이밍 수정\r\n\r\n* chore(MovieRating): 브라우저 저장소 인터페이스 네이밍 수정 반영","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 해리(최현웅) 미션 제출합니다 (#155)"}},{"before":"9b3ac21ae5a90e070f73bbf928230b3f69522d19","after":"22d0448e62de5e75569e030856323e724de7c842","ref":"refs/heads/00kang","pushedAt":"2024-04-04T08:37:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"yujo11","name":"JO YUN HO","path":"/yujo11","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/61097373?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 초코(강다빈) 미션 제출합니다. (#171)\n\n* feat: eslint와 prettier 기본 세팅\r\n\r\n* feat: eslint, prettier 패키지 설치\r\n\r\n* feat: eslint error를 warn으로 설정 변경\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* chore: ts-eslint parse 설정\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* feat: image 소스 파일 추가\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* feat : css - common.css, reset.css 추가\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* feat: index.html 템플릿 설정\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* docs: 기능 요구 사항 정리\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* feat: mockingData 설정\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* feat: MovieCard 컴포넌트 구현\r\n\r\n- mockingData 사용\r\n- template을 컴포넌트화\r\n\r\nCo-Authored-By: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>\r\n\r\n* chore: eslint - browser env : true로 변경\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: mockingData 20개로 업데이트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* chore: webpack-dev-server - 설정 및 이미지 파일 경로\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* refactor: MovieCard 메서드 분리\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: index.js에 css import\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: MoreButton 컴포넌트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: API에서 받아온 데이터 렌더링\r\n\r\nmocking 데이터 제거\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: MovieCard 영화 데이터 주입\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: 더보기 버튼 클릭 시, 다음 페이지 영화 렌더링\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: 영화 검색 기능\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: skeleton UI 적용\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* feat: 영화 검색 기능 추가, page가 더 있을 때에만 더보기 버튼 렌더링\r\n\r\n* feat: 검색 결과가 없을때, UI 표시\r\n\r\n* feat: 현재 영화 리스트에 따른 리스트 Title 변경\r\n\r\n* feat: 응답에 따른 에러 처리\r\n\r\n* fix: 검색어 입력 후 Enter 누를 시, 두번 event가 발생하는 버그 수정\r\n\r\n* fix: 검색어 입력마다 presentPage count 리셋\r\n\r\n검색 -> 더보기 버튼 클릭 -> 다시 검색 시, presentPage count가 유지되는 버그 수정\r\n\r\n* fix: skeleton li element가 완전히 제거되지 않는 버그 수정\r\n\r\n* feat: 검색 후 home으로 돌아올 시, 기존 가져온 인기 영화 render\r\n\r\n* style: 영화 평점 css\r\n\r\n* chore: cypress 설정\r\n\r\n* chore: gitignore - dist,, env 추가\r\n\r\n* chore: tsconfig 옵션 추가\r\n\r\n* test: 인기순 영화 페이지 E2E 테스트\r\n\r\n* chore: gitignore에 cypress.env.json 추가\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* test: TMDB에서 인기순 영화 GET요청 API 테스트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* test: TMDB에서 영화 검색 GET요청 API 테스트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* test: Fixture를 이용한 인기순 영화 목록 테스트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* test: Fixture를 이용한 영화 검색 결과 렌더링 테스트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* test: fixture - search 데이터 업데이트\r\n\r\nCo-Authored-By: 00kang <70834044+00kang@users.noreply.github.com>\r\n\r\n* chore: output Path 수정\r\n\r\n* refactor: image 디렉토리 위치 변\r\n\r\n* refactor: css 디렉토리 위칭 이동 및 css variables 생성\r\n\r\n* refactor: 매직넘버 상수화\r\n\r\n* refactor: ErrorRender로 클래스명 수정\r\n\r\n* refactor: SearchBox 컴포넌트 내 함수 이름 변경 및 메서드 분리\r\n\r\n- onClick- > searchBoxElement\r\n- #addFormEvent -> #addFormEvent + #handleSubmit\r\n\r\n* refactor: MovieStore와 SearchMovieStore에서 API 호출 로직 분리\r\n\r\n* refactor: DocumentFragement 사용으로 DOM 접근 줄이기\r\n\r\n* refactor: early return으로 depth 줄이기\r\n\r\n* refactor: #genereateMovieList와 #generateSearchMovieList의 중복 코드 메서드 분리\r\n\r\n* refctor: 헤더 고정, 포스터 이미지 없는 데이터 이미지 삽입\r\n\r\n* refactor: 검색결과에 검색어(해리)가 포함되어 있는지 test 코드 추가\r\n\r\n* feat: deploy 디렉토리에 css와 png 추가\r\n\r\n* chore: eslint, package, tsconfig 설정\r\n\r\n* docs: 구현 기능 목록 작성\r\n\r\n* feat: 스켈레톤의 태그 제거\r\n\r\n* feat: 임의 데이터를 활용한 모달창 오픈\r\n\r\n* feat: 모달 클로즈 기능 구현\r\n\r\n- 무비카드 클릭 이벤트 메서드 분리\r\n- 모달 인스턴스 공유 메서드 생성\r\n\r\n* feat: movieDetail API로부터 데이터 받아와서 모달에 보여주기\r\n\r\n* fix: 이미지 영역 고정\r\n\r\n- 이미지가 다 로드되기 전에는 컨텐츠 영역이 이미지 영역을 침범하는 문제 해결\r\n\r\n* fix: 모달 내 텍스트 영역 조정\r\n\r\n- overview 데이터가 길 경우를 대비해 크기 지정 및 스크롤 기능 추가\r\n\r\n* fix: 모달 클로즈 오류 비동기 키워드 사용으로 해결\r\n\r\n- 비동기 작업이 완료되기 전에 그 결과를 사용하려고 시도하는 경우\r\n\r\n* feat: 클릭한 무비카드에 맞는 데이터 모달에 띄우기\r\n\r\n* feat: API 요청 메서드 분리\r\n\r\n* feat: 더보기 버튼 대신 무한 스크롤 기능 구현\r\n\r\n- 그런데 안됨!!\r\n\r\n* refactor: 데이터 로드시 스켈레톤 ui 확인을 위한 딜레이 메서드 삭제\r\n\r\n* feat: 모달 내 별점 0으로 세팅\r\n\r\n* feat: 모달 내 별점 클릭 이벤트 구현\r\n\r\n- 클릭한 지점까지 'star_filled.png'로 채우기\r\n\r\n* feat: 모달 내 평점 소수점 2자리까지 표현\r\n\r\n* feat: tablet size 반응형 디자인 적용\r\n\r\n* feat: tablet size 일 때 스켈레톤 ui 6개로 변경\r\n\r\n* feat: mobile size일 때 그리드 조절\r\n\r\n* feat: mobile size일 때 스켈레톤 4개로 조정\r\n\r\n* feat: mobile size일 때 모달 사이즈 수정\r\n\r\n* feat: npm run build\r\n\r\n* feat: 스크립트 추가 후 npm run build\r\n\r\n* feat: npm run build\r\n\r\n* feat: npm run build\r\n\r\n* feat: import문 삽입\r\n\r\n* refactor: mobile, tablet 사이즈 기준 상수화\r\n\r\n* refactor: let 연산자 삭제\r\n\r\n* refactor: moviesData의 타입 명확히 Movie[]로 지정\r\n\r\n* feat: 무한 스크롤 구현!\r\n\r\n* refactor: 반응형 디자인 수정\r\n\r\n- 레이아웃 기준 재설정\r\n- 헤더 넘침으로 인한 x축 스크롤 이벤트 해결\r\n\r\n* feat: 모달 내 별점 localstorage에 반영 및 localstorage에 저장된 결과 보여주기\r\n\r\n* feat: ESC key 로 모달 클로즈\r\n\r\n* docs: 업데이트\r\n\r\n* feat: 영화 포스터와 검색창 hover시 border 디자인\r\n\r\n* feat: 최상단으로 이동하는 버튼\r\n\r\n* refactor: 모달 디테일 수정\r\n\r\n- overview가 없을 시 문구 삽입\r\n- 모달이 오픈되었을 때 백그라운드 스크롤 금지\r\n- 평점의 별 이미지와 텍스트 정렬\r\n- 모달 내 별점 컨테이너의 요소 위치 고정\r\n\r\n* fix: 모달 오픈시 무비리스트의 스크롤이 최상단으로 가는 문제 해결\r\n\r\n* refactor: store 코드 메서드 분리\r\n\r\n* fix: 없는 데이터에 forEach() 를 사용하는 문제\r\n\r\n* refactor: response 반환\r\n\r\n* refactor: 메서드 분리\r\n\r\n* refactor: return new Error\r\n\r\n* refactor: 스크립트 파일 제거\r\n\r\n* fix: 초기 세팅 시 별 이미지 안 뜨는 문제\r\n\r\n* refactor: movieCard 클래스 메서드 분리\r\n\r\n* refactor: Modal 클래스 메서드 분리\r\n\r\n* refactor: Modal 클래스 분리 : Modal, MovieInfo, VoteHandler\r\n\r\n* feat: 모달에 skeleton UI 추가\r\n\r\n* refactor: 반응형 디자인 수정 및 모달 스켈레톤 UI 적용\r\n\r\n---------\r\n\r\nCo-authored-by: jayming66 \r\nCo-authored-by: MYONG JAEWI <78201530+jaymyong66@users.noreply.github.com>","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 초코(강다빈) 미션 제출합니다. (#171)"}},{"before":"f6318b53f1e84f4262b928d10f6a028bc81b9008","after":"7d3eb8d8d89c93600193f0a12a96e24bcdd7d6c4","ref":"refs/heads/soosoo22","pushedAt":"2024-04-04T08:23:12.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"liswktjs","name":"JASUN LEE","path":"/liswktjs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60773373?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 쑤쑤(현수연) 미션 제출합니다. (#167)\n\n* docs: 2단계 \"영화 목록 불러오기\" 기능 목록 작성\r\n\r\n* chore: 영화 목록 사이즈 변경\r\n\r\n* feat: 영화 상세 정보 모달 구현\r\n\r\n* docs: 영화 상세정보 조회, 별점 매기기 완료\r\n\r\n* feat: 무한 스크롤 구현\r\n\r\n* docs: 무한 스크롤 완료\r\n\r\n* feat: 영화 상세 정보 모달에서 별점을 매길 때 마다 스토리지에 추가 기능 구현\r\n\r\n* docs: 새로고침하더라도 사용자가 남긴 별점은 유지된다. 완료\r\n\r\n* chore: 영화 포스터에 마우스를 갖다 대면 이미지 확대\r\n\r\n* feat: 영화 목록과 영화 상세 정보가 뜨는 모달창에 대한 반응형 레이아웃 구현\r\n\r\n* docs: 영화 목록과 모달창에 대한 반응형 레이아웃 구현 완료\r\n\r\n* feat: ESC 키를 누르면 모달창을 닫는 기능 구현\r\n\r\n* docs: ESC 키를 누르면 모달창을 닫는 기능 구현 완료\r\n\r\n* refactor: DOM 객체의 $ 및 $$ 함수를 제네릭으로 변경\r\n\r\n* refactor: 모달창에 별점 컨테이너 분리\r\n\r\n* chore: 객체명 카멜 케이스로 변경\r\n\r\n* chore: skeletonManager 로 객체명 변경\r\n\r\n* feat: http 에러 발생 시 상태 코드 설명 추가\r\n\r\n* chore: http 에러 메시지에 스타일 적용\r\n\r\n* chore: 에러 메시지 띄어쓰기 수정\r\n\r\n* fix: 검색 버튼 연타 시 http 에러 문구 중복 문제 해결\r\n\r\n* refactor: html 내부에서 사용된 함수 분리 및 함수명 변경\r\n\r\n* refactor: 모달 사이즈 변경\r\n\r\n* refactor: 커스텀 이벤트 관리 함수를 별도 모듈로 분리함\r\n\r\n* refactor: 옵저버 관련 함수 분리\r\n\r\n* refactor: http 에러 표시 코드 수정\r\n\r\n* chore: 불필요한 변수 제거 및 검색창에 영화 입력 시 이전 에러 메시지 삭제\r\n\r\n* feat: 모달 외부 스크롤 막기 기능 추가\r\n\r\n* refactor: 영화 장르 이름 변환 후 데이터에 갱신시켜주는 함수 분리","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 쑤쑤(현수연) 미션 제출합니다. (#167)"}},{"before":"1cd45cd43aceb72a4d5886488354ff04123eaf3d","after":"e292f17cd815268da632354e35854651d746d820","ref":"refs/heads/chysis","pushedAt":"2024-04-04T01:51:19.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"igy95","name":"Kyle","path":"/igy95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57053577?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 에프이(박철민) 미션 제출합니다. (#176)\n\n* refactor: 서비스 레이어 이름 변경\r\n\r\n* feat(MovieDetailFetcher): 영화 상세 데이터 API fetcher 구현\r\n\r\n* feat(Modal): 모달 컨테이너 컴포넌트 생성\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 모달 생성\r\n\r\n* feat: 영화 상세 정보 모달 데이터 연동\r\n\r\n* refactor: Modal 컴포넌트 삭제, MovieDetailModal을 독립적으로 관리\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 모달에서 별점 매기기 기능 구현\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 모달 X 버튼 클릭 이벤트 추가\r\n\r\n* refactor(Skeleton): 스켈레톤 UI 컴포넌트 분리\r\n\r\n* feat: 아이템 별로 각각 스켈레톤 UI 구현\r\n\r\n* refactor: skeleton UI를 재활용해 movieItem으로 사용하도록 변경\r\n\r\n* feat: Intersection observer API를 사용하여 무한 스크롤 기능 구현\r\n\r\n* refactor(formatList): 반환값 type 명시\r\n\r\n* style: 사용 파일에 알맞도록 css 파일 분리\r\n\r\n* feat: 영화 상세 정보 모달창 활성화 시 뒷배경 스크롤 방지 기능 구현\r\n\r\n* style: Roboto font 적용\r\n\r\n* style(MovieDetailModal): 영화 상세 정보 모달 스타일 수정\r\n\r\n* style(MovieItem): 영화 아이템 hover 스타일 적용\r\n\r\n* style: 영화 리스트 반응형 UI 적용\r\n\r\n* style: 영화 리스트 및 상세 정보 모달에 자연스러운 반응형 UI 적용\r\n\r\n* style: 반응형 header UI 적용\r\n\r\n* fix: 검색 결과 없는 경우 UI 출력\r\n\r\n* refactor: 사용하지 않는 함수 제거\r\n\r\n* refactor: scss를 도입하여 media query 조건식 상수화\r\n\r\n* refactor: localStorage 관련 로직 유틸화\r\n\r\n* refactor: 관심사별 상수 분리\r\n\r\n* refactor: debounce 로직 유틸화 및 매직 넘버 상수화\r\n\r\n* refactor: intersectionObserver에 margin 부여\r\n\r\n* test: 무한 스크롤 e2e 테스트 작성\r\n\r\n* test: 반응형 헤더 e2e 테스트 작성\r\n\r\n* fix(movieDetailModal): 별점 아이콘 5개 각각에 같은 id값이 들어간 오류 수정\r\n\r\n* test: 영화 상세 정보 모달 및 별점 기능 e2e 테스트 작성","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 에프이(박철민) 미션 제출합니다. (#176)"}},{"before":"5a69a5c0425070904d189ab59160c43e37734b6f","after":"1251298ecded891a8c93d006d48ccae4912f32a6","ref":"refs/heads/rbgksqkr","pushedAt":"2024-04-04T01:41:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"igy95","name":"Kyle","path":"/igy95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57053577?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 마루(박규한) 미션 제출합니다. (#145)\n\n* feat(scroll): scroll 이벤트를 활용하여 무한 스크롤 구현\r\n\r\n* refactor(scroll): scroll 이벤트를 IntersectionObserver WEB API를 활용하여 성능 개선\r\n\r\n* refactor(App): 무한스크롤 메서드로 분리\r\n\r\n* chore(url): 영화정보 상세보기 url 추가\r\n\r\n* feat(movie API): 영화 상세보기 API 호출 함수 구현\r\n\r\n* refactor(type): MovieDetail 타입 추가\r\n\r\n* feat(movieDetail): 상세보기 데이터 변환하는 도메인 객체 구현\r\n\r\n* refactor(fetcher): 에러 헨들링을 fetcher 내에서 처리\r\n\r\n* chore: toast button 생성 위치 변경\r\n\r\n* feat(movieDetailModal): 영화 상세보기 모달 구현\r\n\r\n* design(movieDetailModal): 상세보기 모달 스타일링 추가\r\n\r\n* feat(MovieItem): 영화 클릭 시 상세보기 모달 나오는 클릭 이벤트 구현\r\n\r\n* chore(movieDetail): 타입 수정 및 구조분해할당\r\n\r\n* chore(movieDetailModal): 시멘틱 태그 적용\r\n\r\n* chore(movie API): 한글로 언어 설정\r\n\r\n* chore(constants): 점수에 따른 텍스트 상수 처리\r\n\r\n* chore(type): score 리터럴 타입 지정\r\n\r\n* feat(movieDetailModal): 별점 주는 로직 구현\r\n\r\n* refactor: webpack 설정 수정하여 별점 hover 스타일 추가\r\n\r\n* feat(movieDetailModal): esc로 상세보기 모달 닫기\r\n\r\n* feat(movieDetailModal): 로컬 스토리지 활용하여 새로고침해도 별점 유지하기\r\n\r\n* refactor(movieDetailModal): 점수 갱신 메서드 분리 및 forEach문으로 수정\r\n\r\n* fix(movieDetailModal): 별점 달기 메서드 오류 수정\r\n\r\n* design(movieDetailModal): 불필요한 배경 이미지 제거\r\n\r\n* feat(storage): 로컬 스토리지 메서드에 타입 지정 가능한 유틸함수 구현\r\n\r\n* refactor(movieDetailModal): 유틸 함수 활용하여 코드 개선\r\n\r\n* refactor(movieDetailModal): API 데이터를 불러와 그리는 메서드 분리\r\n\r\n* feat(movieListContainer): 영화 목록이 화면 너비에 맞게 grid column 개수 조절\r\n\r\n* feat(Header): 반응형을 고려한 작은 검색 버튼 렌더링\r\n\r\n* design(Header): 반응형 UI 구현\r\n\r\n* design(MovieListContainer): 영화 목록 반응형 UI 적용\r\n\r\n* feat(Header): debounce를 활용하여 resize 이벤트 호출 횟수 개선\r\n\r\n* refactor: MovieItem css 위치 변경\r\n\r\n* design(MovieItem): 영화 hover animation 추가\r\n\r\n* fix(storage): 로컬 스토리지에 프로퍼티가 없는 경우 오류 해결\r\n\r\n* fix(movieDetailModal): 영화 hover animation 후 클릭 시 모달 위로 올라오는 오류 해결\r\n\r\n* design(movieDetailModal): 상세보기 모달 반응형 UI 적용\r\n\r\n* design(movieDetailModal): 400px 이하에서 description 폰트 크기 줄이기\r\n\r\n* chore: 제목 id값 수정\r\n\r\n* feat(MovieItem): 로딩 시 spinner를 제공하여 UX 개선\r\n\r\n* refactor(movieDetailModal): description이 긴 경우 scroll 적용\r\n\r\n* fix(MovieListContainer): 해당 페이지에서 끝나는 경우 스켈레톤이 유지되는 아이템 삭제\r\n\r\n* feat: 이미지가 없는 경우 처리\r\n\r\n* feat(movieDetailModal): 모달 닫기 버튼 구현 및 이벤트 등록\r\n\r\n* chore: webpack mode 설정 변경\r\n\r\n* e2e(search): 검색 기능 e2e 테스트 파일 분리\r\n\r\n* test(e2e): 더보기 버튼 클릭 e2e 테스트 무한스크롤로 수정\r\n\r\n* test(e2e): 영화 상세보기 api 테스트 코드 작성\r\n\r\n* refactor(Header): 버튼을 새로 만들지 않고 input 박스를 조절하여 반응형 구현\r\n\r\n* design(Header): 모바일 뷰에서 검색버튼 클릭 시 애니메이션 적용\r\n\r\n* test(e2e): 영화 상세보기 모달 렌더링 테스트 구현\r\n\r\n* test(e2e): 상세보기 모달에서 해당 영화의 별점 매기는 테스트 코드 작성\r\n\r\n* fix(e2e): intercept url 정규식 수정\r\n\r\n* test(e2e): 별점이 로컬 스토리지에 저장되었는지 확인하는 테스트 코드 작성\r\n\r\n* fix(e2e): 응답 속도에 따라 테스트가 깨지는 오류 해결\r\n\r\n* test(e2e): 상세보기 모달에서 ESC 키 클릭 시 모달 닫히는 테스트 코드 작성\r\n\r\n* test(e2e): 영화 목록 리스트 반응형 UI 테스트 코드 작성\r\n\r\n* test(e2e): 영화 상세보기 모달 반응형 UI 테스트 코드 작성\r\n\r\n* test(e2e): 검색창이 width에 따라 변화하는 반응형 UI 테스트 코드 작성\r\n\r\n* fix(movieDetailModal): 별점 클릭 시 텍스트 이동하는 문제 해결\r\n\r\n* fix(movieDetailModal): 모달에 스크롤 추가\r\n\r\n* build: dist 배포\r\n\r\n* refactor(fetcher): 에러명 수정 및 response.ok에 따른 분기처리\r\n\r\n* refactor(scss): media query에서 width값을 상수화하기 위해 scss 도입\r\n\r\n* chore(Toast): toast 버튼 태그를 body 안으로 넣고 css 수정\r\n\r\n* refactor(constants): resize delay & mobile width 상수화\r\n\r\n* feat(debounce): debounce를 util 함수로 분리\r\n\r\n* refactor: 별점 점수를 상수의 key 타입으로 구하기\r\n\r\n* fix(storage): 로컬스토리지 set 함수 제네릭 제거\r\n\r\n* refactor(storage): 타입 단언문을 없애고 논리연산자 추가\r\n\r\n* refactor(storage): 로컬 스토리지 데이터가 손상되어 JSON.parse에서 오류날 경우 storage.clear 로직 추가\r\n\r\n* refactor(fetcher): error를 API 레이어가 아닌 view 레이어에서 catch하여 에러처리\r\n\r\n* refactor(css): !important 를 사용하지 않고 반응형 구현\r\n\r\n* feat: 영화 아이템 클릭 시 중복 호출되지 않게 dimmer 추가\r\n\r\n* feat(throttle): 비동기 함수 throttle 유틸 함수 구현\r\n\r\n* feat(movieItem): throttle 활용하여 연속해서 호출된 API 호출 무시\r\n\r\n* fix(e2e): 인기순이 바뀔 때 테스트케이스가 깨지는 오류 해결\r\n\r\n* test(e2e): 무한 스크롤 테스트 케이스 추가\r\n\r\n* chore: dist 폴더 제거","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 마루(박규한) 미션 제출합니다. (#145)"}},{"before":"56f745f16cec10d2408006f0a1dc6a43cdfc9ee2","after":"94d18fc276e2201da13e9682f6c5d5c3ff03774f","ref":"refs/heads/anttiey","pushedAt":"2024-04-04T01:18:16.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"igy95","name":"Kyle","path":"/igy95","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57053577?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 파슬리(김윤아) 미션 제출합니다. (#160)\n\n* docs(README.md): 2단계 기능 구현 목록 추가\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 조회 모달 생성\r\n\r\n* feat(MovieDetailModal): 영화 상세 정보 조회 모달 API 연결 및 스타일 추가\r\n\r\n* feat(MovieDetailModal): 영화 별점 매기기 UI 생성\r\n\r\n* refactor(MovieReviewHeader): MovieReviewHeader 렌더링 로직 이동\r\n\r\n* refactor(MovieReviewBody & MovieList): MovieReviewBody 일부 로직을 MovieList 아래로 이동\r\n\r\n* feat(MovieDetailModal): 영화 별점 매기기 저장소 연결\r\n\r\n* feat(MovieList): 무한 스크롤 기능 구현\r\n\r\n* refactor(MovieList): 무한 스크롤 함수 이름 수정\r\n\r\n* refactor(MovieRatingBox): 영화 별점 매기기 컴포넌트 분리\r\n\r\n* refactor(MovieRatingBox): 함수 분리 및 로직 개선\r\n\r\n* feat(MovieList): 마우스 오버 시 확대 기능 구현\r\n\r\n* feat: 반응형 CSS 적용\r\n\r\n* feat(MovieReviewHeader): 검색 폼 반응형 CSS 적용\r\n\r\n* refactor(ErrorModal): 에러 모달 디자인 변경\r\n\r\n* fix(MovieReviewBody): 스켈레톤이 제대로 뜨지 않는 오류 해결\r\n\r\n* refactor: 모달 로직 개선\r\n\r\n* remove(Selector): 파일 삭제\r\n\r\n* refactor(MovieService): Movie API 로직 MovieService 안으로 이동\r\n\r\n* fix(App): this 바인딩 오류 해결\r\n\r\n* refactor(MovieService): MovieService 일반 객체로 변경\r\n\r\n* refactor: 모달 로직 개선\r\n\r\n* feat(App): 위로 스크롤 기능 추가\r\n\r\n* feat(MovieReviewBody): 상세 모달 팝업 전 로딩중 기능 추가\r\n\r\n* feat: 빈 데이터 처리 추가\r\n\r\n* refactor: CSS 순서 획일화\r\n\r\n* fix(index): 새로고침 시 스크롤 유지되는 문제 해결\r\n\r\n* test: 무한 스크롤 테스트 추가\r\n\r\n* test: 영화 상세 모달 테스트 추가\r\n\r\n* docs(README.md): 2단계 기능 구현 완료 반영\r\n\r\n* refactor(Storage): Storage 로직 공통화\r\n\r\n* refactor(MovieList): 영화 목록 최대 아이템 상수 적용\r\n\r\n* refactor: 불필요한 !important 제거\r\n\r\n* refactor: 불필요한 리렌더링 로직 제거","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 파슬리(김윤아) 미션 제출합니다. (#160)"}},{"before":"09b5a7fb99145dd7ec2978380f07987d56f7030e","after":"a77b95cf1f20a46f076f7c99efc5ce7c80cdd06d","ref":"refs/heads/largopie","pushedAt":"2024-04-04T00:41:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"365kim","name":"Kim Haru","path":"/365kim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60066472?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 낙타(송재석) 미션 제출합니다. (#149)\n\n* refactor(Movies, Fetcher): 에러 핸들링 메서드 Movies로 이동\r\n\r\n* refactor(MovieController): 메서드명 수정 및 불필요한 메서드 제거\r\n\r\n* refactor(MovieItem): 이미지 로딩중일 때 skeleton 이미지 보이도록 수정\r\n\r\n* refactor(MovieApp): 옵셔널체이닝 연산자 수정\r\n\r\n* refactor(SkeletonItems): 미리 만들어둔 skeleton 리스트에 숨기고 보여줄 수 있도록 수정\r\n\r\n* refactor(skeleton-items): 스켈레톤 숨기기 스타일 수정\r\n\r\n* feat(ModalWrapper): 클래스 정의 및 css 적용\r\n\r\n* feat(MovieDetail): 템플릿 구현, 닫기 버튼 기능 구현\r\n\r\n* feat(Movies): 영화 세부 정보 api 연결 로직 구현\r\n\r\n* chore(MovieItem): 영화 아이템 커서 포인터 추가\r\n\r\n* refactor(ModalWrapper): toggle 메서드 로직 수정\r\n\r\n* refactor(Movies): Movies 데이터 수정\r\n\r\n* feat: 영화 아이템 클릭 시 영화 상세정보 모달 구현\r\n\r\n* fix(MovieController): 화면 렌더 시 에러 페이지 숨기기 로직 수정\r\n\r\n* fix(MovieApp): li 태그 외 클릭 이벤트 발생 버그 해결\r\n\r\n* chore: skeleton UI 스타일 수정\r\n\r\n* feat(throttle): util 함수 구현\r\n\r\n* feat: 더보기 버튼 삭제 및 무한스크롤 구현\r\n\r\n* feat: 영화 목록 반응형 grid 구현\r\n\r\n* refactor(MovieController): 마지막 페이지 시 스크롤 이벤트 제거하도록 수정\r\n\r\n* refactor(SkeletonItem): 반응형에도 잘 동작하도록 로직 수정\r\n\r\n* refactor(MovieApp): skeletonItem은 이벤트 동작하지 않도록 수정\r\n\r\n* refactor(Alert): 3초 후 경고창 삭제\r\n\r\n* refactor(SearchBox): 빈 텍스트에 검색버튼 클릭시 이벤트 동작 안되도록 수정\r\n\r\n* chore: header width 제거\r\n\r\n* refactor(SearchBox): search 버튼 css 수정\r\n\r\n* refactor(MovieApp): 검색 버튼 이벤트 추가\r\n\r\n* refactor(Modal): 모달 창 반응형 구현\r\n\r\n* chore: 헤더 반응형 로직 수정\r\n\r\n* feat(MovieDetail): 별 hover 시 색상 바뀌도록 수정\r\n\r\n* feat(MovieDetail): 평점 hover 시 텍스트 변화 기능 구현\r\n\r\n* feat(MovieDetailController): 영화 상세정보 저장 및 업데이트 컨트롤러 구현\r\n\r\n* feat(MovieApp): 평점 등록 이벤트 구현\r\n\r\n* refactor(MovieDetail): 평점 등록 이벤트 주입 및 컴포넌트 분리\r\n\r\n* refactor(SearchBox): 모바일 searchBox 이벤트 수정\r\n\r\n* refactor(MovieApp): 이벤트 분리\r\n\r\n* feat(SearchBar): 모바일 환경에서 서치바 외부 공간을 클릭 시 서치바 닫히는 기능 구현\r\n\r\n* refactor(MovieController): 같은 로직 통합\r\n\r\n* refactor(MovieController): 무한 스크롤 중복 로직 삭제\r\n\r\n* refactor(MovieRenderController): MovieController 이름 수정\r\n\r\n* chore(MovieDetail): 컴포넌트 위치 수정\r\n\r\n* test: 더보기 테스트 삭제 및 영화 상세정보 테스트 추가\r\n\r\n* refactor(messages): 평점 선택 메시지 수정\r\n\r\n* chore: 영화 리스트 hover시 효과 구현\r\n\r\n* feat(TopButton): 최상위 이동 버튼 구현\r\n\r\n* feat(MovieDetailSkeleton): 영화 상세정보 skeleton UI 구현\r\n\r\n* refactor(MovieDetail): 제목 가운데 정렬 및 개요 빈 값 수정\r\n\r\n* chore: 미사용 import 삭제\r\n\r\n* test(movie-detail-api): 매직 넘버 상수화\r\n\r\n* refactor(MovieApp): onResize 메서드 분리\r\n\r\n* feat(MovieDetail): 별 이미지 mouseout 이벤트 구현\r\n\r\n- 별 이미지 바깥으로 벗어날 시 저장되어 있는 점수 세팅\r\n\r\n* refactor(Fetcher, Movies): 에러 메서드 주입할 수 있도록 수정\r\n\r\n* fix(MovieRenderController): 에러 발생 시 스켈레톤 UI 유지되는 현상 수정\r\n\r\n* refactor(Alert): 경고 창 정적 컨텐츠로 관리하도록 수정\r\n\r\n- 기존에 div를 생성하는 방법에서 미리 만들어준 정적 컨텐츠를 통해 display 하도록 수정\r\n\r\n* refactor: 각 파일 내 분산된 media query 하나로 통합\r\n\r\n* refactor(SearchBox): 이벤트 통해서 엘리먼트 찾을 수 있도록 수정\r\n\r\n* refactor(constant): 상수 역할에 맞도록 분리\r\n\r\n* feat(TopButton): 스크롤을 내렸을 때만 topButton이 보이도록 수정\r\n\r\n- scroll 이벤트 네이밍 수정 및 불필요 메서드 삭제\r\n\r\n* refactor(searchBox): 모바일 반응형 이벤트 CSS 제어 로직 수정\r\n\r\n- element.style -> classList.add, classList.remove로 수정\r\n\r\n* chore: console.log 제거\r\n\r\n* refactor(MovieDetail): 별점 mouseover 이벤트 내부 로직으로 수정\r\n\r\n* refactor(MovieDetailModal): 컴포넌트 클래스로 변경 및 이벤트 로직 수정\r\n\r\n* refactor(MovieDetailModal): 로컬스토리지로 가져오는 문제 수정\r\n\r\n* refactor(MovieDetailModal): reviewContainer 컴포넌트 분리\r\n\r\n* refactor(ModalDetailModal): 별점 이미지 템플릿 분리\r\n\r\n* feat(ModalWrapper): ESC 누를 시 모달 창 닫기 기능 구현\r\n\r\n* feat(ModalDetailModal): X버튼 hover 시 shadow 구현\r\n\r\n* feat(ModalWrapper): 모달 창 열려있을 시, scroll 되지 않도록 구현","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 낙타(송재석) 미션 제출합니다. (#149)"}},{"before":"da2cdfa3e51419ac791258e0e4857789fa789257","after":"c6022290dc789cbacede181599e32d2448d8278c","ref":"refs/heads/hain-tain","pushedAt":"2024-04-03T19:22:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"Tanney-102","name":"Tigger","path":"/Tanney-102","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/57767891?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 헤인(방세린) 미션 제출합니다. (#172)\n\n* docs: 2단계 기능 목록 작성\r\n\r\n* feat: 영화 상세 모달 기능 구현\r\n\r\n* feat: 별점 기능 구현\r\n\r\n* fix: 데이터 더 보기를 무한스크롤 방식으로 변경\r\n\r\n* fix: 영화 목록과 영화 상세 정보가 뜨는 모달창에 대한 반응형 적용\r\n\r\n* refactor(createElement): eventListener 로 매개변수 이름 변경\r\n\r\n* feat(CommonHtmlElement): html 감싸는 객체 생성\r\n\r\n* feat: 새로고침시 맨 위로 가기 및 맨 위로 이동하는 scrollTopButton 생성\r\n\r\n* test: 사용자가 movieItem을 눌러 모달로 영화 상세정보를 확인할 수 있는지 테스트 작성\r\n\r\n* test: 사용자가 영화에 대해 별점을 줄 수 있는지 테스트 작성\r\n\r\n* fix(getMovieListByQuery, getPopularMovieList): 서버에서 받은 데이터 재가공해서 내보내도록 수정\r\n\r\n* fix: 도메인 로직에 의존하지 않고, skeleton 개수 제어할 수 있도록 수정\r\n\r\n* refactor(MovieRating): 별점 text 및 number 계산해주는 함수 constants > rating 파일로 분리\r\n\r\n* refactor(App): 최초 render 로직 분리\r\n\r\n* feat(MovieItem): 이미지 load event 추가\r\n\r\n* refactor(CommonHtmlElement):$element 필드에 private 추가\r\n\r\n* refactor(CommonHtmlElement) : $element 초기값 설정 제거 및 removeClassName으로 util성 확장\r\n\r\n* refactor(MovieDetailModal): reRender 함수 분리 및 removeClassName 적용\r\n\r\n* refactor: ObserveIntersection 삭제\r\n\r\n* refactor(handleUserRating): addRating 삭제\r\n\r\n* feat(App): page 상태를 객체로 변경 및 renderNextPage, renderSearchNextPage 를 renderPage 함수로 추상화","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 헤인(방세린) 미션 제출합니다. (#172)"}},{"before":"ead5db393d96f7c4e8a7eadcd3244c8dce4d72a2","after":"5a46ee9181c52eabb99681b05bba72b1a6139571","ref":"refs/heads/soi-ha","pushedAt":"2024-04-03T15:45:18.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"365kim","name":"Kim Haru","path":"/365kim","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60066472?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 소하(최소연) 미션 제출합니다. (#152)\n\n* refactor: movies와 results의 차이를 타입스크립트로 표현\r\n\r\n* refactor: generateUrl을 util 폴더로 분리\r\n\r\n* refactor: 사용하지 않는 코드 제거\r\n\r\n* refactor: 불필요한 toString 삭제\r\n\r\n* refactor: 불필요한 타입추론 제거\r\n\r\n* refactor: 이름 변경 및 카멜케이스로 변경\r\n\r\n* refactor: hadleMovies 콜백함수 내용으로 변경\r\n\r\n* style: h1 태그의 textContent 추가 및 sr-only 적용\r\n\r\n* style: header 반응형 스타일 구현\r\n\r\n* style: 반응형 스타일 구현\r\n\r\n* feat: Modal 기능 구현\r\n\r\n- 모달 클릭시 스크롤 최상단 이동 에러 미해결\r\n\r\n* feat: 무한 스크롤 구현\r\n\r\n* feat: 영화 평점 (starRating) 구현\r\n\r\n* fix: movieItem 클릭시 화면 상단 이동 에러 해결\r\n\r\n* refactor: 코드 기능별 분리\r\n\r\n* refactor: 오타 수정 및 constant 분리\r\n\r\n* docs: README 업데이트\r\n\r\n* refactor: 가독성을 위한 변수 생성 및 줄 생성\r\n\r\n* refactor: poster base url 상수화 및 주석 제거\r\n\r\n* refactor: movies와 results를 타입스크립트로 표현 수정 (Pick 타입 제거)\r\n\r\n* refactor: div태그를 button 태그로 변경\r\n\r\n* refactor: if문 코드 리팩토링\r\n\r\n* refactor: starId*2 매직넘버 함수로 분리\r\n\r\n* fix: ResizeObserver를 사용하여 resize시 기능 에러 해결\r\n\r\n* refactor: 매직넘버 상수화\r\n\r\n* feat: 무한 스크롤 throttle 추가\r\n\r\n* feat: 포스터 이미지가 존재하지 않을 때, NoPossterImage 이미지 추가\r\n\r\n* fix: item-card가 존재하지 않을 떄, 최소 넓이 주기\r\n\r\n* feat: backdrop 클릭시 모달 창 닫기\r\n\r\n* fix: 뷰포트에 따른 최소 넓이 수정\r\n\r\n* test: modal e2e 테스트\r\n\r\n* test: starRating e2e 테스트\r\n\r\n* test: 무한 스크롤 e2e 테스트\r\n\r\n* feat: esc 키를 누르면 모달창이 닫히는 기능 구현\r\n\r\n* test: esc키를 누르면 모달이 닫히는지 확인하는 e2e테스트\r\n\r\n* feat: 에러 메세지 추가","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 소하(최소연) 미션 제출합니다. (#152)"}},{"before":"778e4026160758d91826f1c06e035b29d0f21b88","after":"c54ac81ff72cc8b11aea0aced5a1c56bc49b15be","ref":"refs/heads/llqqssttyy","pushedAt":"2024-04-03T08:26:55.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"zigsong","name":"jieun song","path":"/zigsong","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/44080404?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 렛서(김다은) 미션 제출합니다. (#153)\n\n* refactor: ErrorMessage 컴포넌트에서 DOM 부착 로직을 제거하고 element만 반환하도록 수정\r\n\r\n* chore: SkeletonMovieList에서 ul 태그만 남기고 모두 제거\r\n\r\n* refactor: API 통신과 관련한 로직\r\n\r\n1. fetchData: onSuccess, onError, onLoading 콜백을 전달 받아 api 통신 시 행동을 바깥에서 주입할 수 있도록 변경\r\n2. MovieService: fetchData 변경에 따른 타입 선언 변경 및 MovieService 객체 제거\r\n3. Main: 데이터 fetching 이벤트를 Main에서 제거 및 MovieList로 이동\r\n4. movie.d.ts: api 통신과 관련한 타입을 재정의\r\n\r\n* refactor: MovieList에서 LoadMoreButton에 대한 이벤트 리스너 등록 로직 제거 및 MovieStore 리팩토링\r\n\r\n* feat: 검색 결과가 없을 때 문구 추가\r\n\r\n* chore: Maint.ts의 사용하지 않는 코드 제거\r\n\r\n* feat: 무한 스크롤 기능 추가\r\n\r\n* fix: 스크롤을 빠르게 내리면 교차 이벤트가 무수히 발생하는 버그 수정\r\n\r\n* refactor: 사용하지 않는 LoadMoreButton 컴포넌트 제거\r\n\r\n* chore: hide 스타일을 display: none에서 visibility: hidden으로 변경\r\n\r\n* refactor: MovieService를 TMDBService로 이름 변경\r\n\r\n* feat: 포스터가 없을 때 기본 이미지를 노출하는 기능\r\n\r\n* feat: Modal 공용 컴포넌트 제작\r\n\r\n* chore: modal header, body 스타일 추가\r\n\r\n* refactor: MovieItem 컴포넌트에서 poster 요소를 MoviePoster 컴포넌트로 분리\r\n\r\n* feat: 사용자 별점 컴포넌트(StarRating) 추가\r\n\r\n* feat: 영화 상세 보기 모달 컴포넌트 추가\r\n\r\nMovieDetailModal에서 date fetching 후 Poster와 MovieDetail 컴포넌트를 appendChild\r\n\r\nMovieDetailModal\r\n ㄴ Poster\r\n ㄴ MovieDetail\r\n\r\n* chore: 포스터 이미지 요청 크기 변경(220px -> 500px)\r\n\r\n* feat: MovieItem을 클릭하면 영화 상세 보기 모달이 열리는 기능 추가\r\n\r\n* feat: 영화 상세 정보 요청 에러 시 콜백 함수 추가\r\n\r\n* chore: App 컴포넌트에 Modal 컴포넌트 부착\r\n\r\n* chore: MovieList, MovieItem 반응형 스타일 추가\r\n\r\n* chore: MovieList, MovieItem 반응형 수정\r\n\r\n* chore: Header 컴포넌트 반응형 디자인\r\n\r\n* chore: z-index 상수화\r\n\r\n* chore: SearchInput 토글 resize에 대응\r\n\r\n* fix: 검색 결과가 없을 때 올바르게 재검색 해도 여전히 에러 메세지가 뜨는 오류\r\n\r\n* refactor: 모달을 열 때 닫힘 버튼을 추가해 주는 것으로 수정\r\n\r\n* feat: StarRating 컴포넌트와 로컬 스토리지 연동\r\n\r\n* chore: MovieItem의 평점 표시를 소수점 2자리로 제한\r\n\r\n* chore: MovieItem에서 `` 제거\r\n\r\n* feat: 줄거리 정보가 없을 때 대체 문구 추가\r\n\r\n* refactor: API 요청 에러 메시지를 상수로 분리\r\n\r\n* docs: 시연 영상 첨부\r\n\r\n* chore: 사용하지 않는 주석 제거\r\n\r\n* feat: 불필요한 인기 영화 목록 요청 삭제\r\n\r\n* refactor: fetchData 함수 내 onError의 실행 위치 및 매개변수 타입 변경\r\n\r\n* chore: 불필요한 타입 선언 제거\r\n\r\n* feat: resize 이벤트에 쓰로틀링 적용\r\n\r\n* feat: 모바일 화면에서 검색어 입력 버튼의 동작을 유지하도록 수정\r\n\r\n검색어 입력 form이 아닌 다른 위치를 클릭했을 때 검색창이 닫히도록 함.\r\n\r\n* refactor: SearchInput 컴포넌트 내에서 사용되는 셀렉터 상수화","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 렛서(김다은) 미션 제출합니다. (#153)"}},{"before":"aaa6f04ca2d9bd1162980f2a59b5bac828f9bdb4","after":"d3ad396f78e057f87593be1baa74a0a965771751","ref":"refs/heads/parkhanyoung","pushedAt":"2024-04-03T08:20:02.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"liswktjs","name":"JASUN LEE","path":"/liswktjs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/60773373?s=80&v=4"},"commit":{"message":"[2단계 - 상세 정보 & UI/UX 개선하기] 라이언(박한영) 미션 제출합니다. (#148)\n\n* fix(MovieList): 검색 후 더보기 버튼 클릭 시 popular movie를 불러오는 오류 수정\r\n\r\n* refactor(APIClient): get 메서드 url 구성 로직 수정\r\n\r\n* refactor(MovieList): 가독성을 고려한 리팩토링\r\n- 메서드 분리\r\n- 메서드명 수정\r\n- 메서드 선언 순서 수정\r\n\r\n* docs: step2 기능 요구 사항 정리\r\n\r\n* feat(MovieDetail): 영화 상세 페이지 html 및 css 작업 완료\r\n\r\n* feat(MovieDetailModal): 영화 상세 모달 기본 기능 구현(별점 기능 제외)\r\n\r\n* feat: 별점 평가 기능 완성\r\n\r\n* feat(MovieList): 영화 목록 더보기 버튼을 무한 스크롤 방식으로 수정\r\n\r\n* feat: 반응형 UI 및 사용성 개선을 위한 기능 추가\r\n\r\n* fix(MovieList): resetPage 메서드에 isLastPage/isLoading 초기화 로직 추가\r\n\r\n* chore: console.log 제거\r\n\r\n* style(MovieDetailModal): 문자열 내 연산을 별도의 변수로 분리하여 사용\r\n\r\n* style(MovieHeader): MOBILE_WIDTH 매직넘버를 상수로 선언\r\n\r\n* chore(MovieList): 불필요한 이벤트 리스너 세팅(더보기 버튼 클릭) 제거\r\n\r\n* chore(MovieList): handleMovieItemClick 메서드 내 불필요한 if 문 삭제\r\n\r\n* refactor(ScrollToTopButton): ScrollToTopButton을 별도의 컴포넌트로 분리\r\n\r\n* chore(MovieDetailModalState): 불필요한 import 문 삭제\r\n\r\n* refactor(RatingBar): 값 반환 메서드의 네이밍을 동사형으로 수정","shortMessageHtmlLink":"[2단계 - 상세 정보 & UI/UX 개선하기] 라이언(박한영) 미션 제출합니다. (#148)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEKjBPSAA","startCursor":null,"endCursor":null}},"title":"Activity · woowacourse/javascript-movie-review"}