-
Notifications
You must be signed in to change notification settings - Fork 39
[이상달] sprint6 #183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
addiescode-sj
merged 49 commits into
codeit-bootcamp-frontend:React-이상달
from
asksa1256:React-이상달-sprint6
Jun 18, 2025
The head ref may contain hidden characters: "React-\uC774\uC0C1\uB2EC-sprint6"
Merged
[이상달] sprint6 #183
Changes from all commits
Commits
Show all changes
49 commits
Select commit
Hold shift + click to select a range
b2e37bd
reset
hanseulhee 6f8bbb0
Merge branch 'codeit-bootcamp-frontend:main' into main
hanseulhee e11e25f
fix: 머지 후 브랜치 삭제 github action 수정
hanseulhee 212e864
env: workflows 폴더로 이동
hanseulhee 4dc5dd0
Merge pull request #237 from hanseulhee/fix-github-actions
withyj-codeit 447cf21
refactor: ItemListResults 가독성 개선 - 같이 실행되지 않는 코드들 컴포넌트로 분리
asksa1256 a6ec582
emotion css 설치, SectionTitle 컴포넌트화
asksa1256 15f2fea
refactor: PageContent 컴포넌트 추가 (레이아웃)
asksa1256 2434efe
refactor: 컴포넌트명 Item -> Product로 변경
asksa1256 d5feb2e
refactor: pages 폴더 내에서 페이지 유형별 폴더 분기, Button 컴포넌트 css-in-js로 스타일 수정
asksa1256 daad2ca
Merge branch 'codeit-bootcamp-frontend:main' into React-이상달-sprint6
asksa1256 6696bbd
style: Button disabled prop 추가
asksa1256 5b66962
ui: FormControl 컴포넌트 추가, Input 컴포넌트 css-in-js 적용
asksa1256 45efc91
ui: 상품 등록 페이지 퍼블리싱
asksa1256 da84e14
refactor: Form 관련 컴포넌트 구조 개선 및 폴더 재분류
asksa1256 2061351
refactor: Avatar ~ Pagination까지 컴포넌트 스타일 css-in-js로 변경
asksa1256 7519bf6
refactor: 컴포넌트 스타일 Emotion css로 전체 변경
asksa1256 8a3bf64
feat: 상품 등록 폼 유효성 검사
asksa1256 fecbb32
fix: 상품 등록 - 태그 입력 시 디바운스 추가 (한글 중복 입력 방지)
asksa1256 477a128
feat: 상품 등록 - 상품 이미지 파일 등록 기능 추가
asksa1256 00bfe7e
style: 상품 등록 반응형
asksa1256 41c8c83
style: Tag 제거 버튼 IconButton 컴포넌트로 수정
asksa1256 f4c64c5
refactor: 상품 등록 폼 유효성 검사 디바운스 처리 (잦은 리렌더링 방지)
asksa1256 dafb54f
feat: 상품 등록 경로 추가 (Nav '중고마켓' 메뉴 활성화)
asksa1256 bde9833
feat: 중고마켓 - 새로고침 시 검색값 초기화
asksa1256 bd81474
refactor: 상품 관련 변수명 'item' -> 'product'로 변경
asksa1256 70809ab
feat: 페이지 전환 시 스크롤 위치 맨위로 이동 처리
asksa1256 2908c59
refactor: 'ui' 폴더 위치 'components' 폴더 하위로 이동
asksa1256 377229b
refactor: Header 컴포넌트 위치 'layout' 폴더로 이동
asksa1256 8f8a669
fix: 상품 목록 불러올 때 isLoading 상태 ProductListResults에 전달 안되던 현상 수정 (Produ…
asksa1256 a5544cd
style: 상품 등록 폼 - 상품 가격 입력 시 천단위 포맷팅 적용 + Input, Textarea 컴포넌트 value, …
asksa1256 b1a772d
refactor: useForm 생성 및 상품 등록 폼에 적용
asksa1256 963a4c7
refactor: useForm 생성 및 상품 등록 폼에 적용 (useForm 의존성 배열 수정)
asksa1256 23747c8
Merge branch 'React-이상달-sprint6' of https://github.com/asksa1256/16-S…
asksa1256 522d8aa
style: Header, PageContent 반응형 수정
asksa1256 c569aea
fix: netlify 배포 오류 수정 (useEffect 의존성 배열)
asksa1256 b350560
style: 이미지 파일 등록 버튼 반응형 수정 (모바일 max-width 조절)
asksa1256 201cddc
refactor: ImageFileUploader 이미지 onLoad, onError 상태 처리 추가
asksa1256 cafb225
ImageFileUploader 스타일 파일 분리
asksa1256 42ec35e
refactor: ProductListResults에서 isLoading, isError props 제거 (BestProdu…
asksa1256 81075a4
refactor: ProductListStyle css 파일 분리
asksa1256 ebcc60f
refactor: BestProductList에 ProductListError 컴포넌트 추가 (상품 fetch 에러 ui)
asksa1256 65ea4f1
refactor: ProductList의 ProductListResult에서 로딩, 에러 props 제거
asksa1256 d6964af
refactor: ProductList 합성 컴포넌트화 (ProductList.Content, ProductList.Empty)
asksa1256 c320253
feat: 새로고침 시 keyword 초기화 기능 삭제
asksa1256 e4989a2
refactor(mentor): form 태그 onSubmit 활용한 비제어 방식으로 변경
asksa1256 8142a40
refactor: 스타일 css 파일로 분리 (추후 다른 파일들 작업 예정)
asksa1256 ceb0ce0
refactor: 비제어 방식으로 변경함에 따라 숫자 포맷팅 방식 변경
asksa1256 105d260
refactor: 가격란에 숫자값만 입력받기
asksa1256 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,11 +1,21 @@ | ||
| import styles from "./Avatar.module.css"; | ||
| /** @jsxImportSource @emotion/react */ | ||
| import { css } from "@emotion/react"; | ||
|
|
||
| const Avatar = ({ imgSrc, onClick, className }) => { | ||
| return ( | ||
| <button onClick={onClick} className={`avatar ${className}`}> | ||
| <img src={imgSrc} alt="프로필 이미지" className={styles["avatar-img"]} /> | ||
| <button | ||
| css={AvatarStyle} | ||
| className={`avatar ${className}`} | ||
| onClick={onClick} | ||
| > | ||
| <img src={imgSrc} alt="프로필 이미지" /> | ||
| </button> | ||
| ); | ||
| }; | ||
|
|
||
| export default Avatar; | ||
|
|
||
| const AvatarStyle = css` | ||
| width: 40px; | ||
| height: 40px; | ||
| `; |
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,88 @@ | ||
| /** @jsxImportSource @emotion/react */ | ||
| import * as styles from "./AddProductFormStyle"; | ||
| import SectionTitle from "../ui/SectionTitle"; | ||
| import Button from "../ui/Button"; | ||
| import FormControl from "../ui/Form/FormControl"; | ||
| import FormLabel from "../ui/Form/FormLabel"; | ||
| import ImageFileUploader from "../ImageFileUploader/ImageFileUploader"; | ||
| import Input from "../ui/Input"; | ||
| import Textarea from "../ui/Textarea"; | ||
| import TagsInput from "../ui/Tag/TagsInput"; | ||
| import useForm from "../../hooks/useForm"; | ||
|
|
||
| const AddProductForm = ({ title }) => { | ||
| const { | ||
| tags, | ||
| handleTagsChange, | ||
| handlePriceInput, | ||
| handleBlur, | ||
| validateForm, | ||
| isFormValid, | ||
| } = useForm(); | ||
|
|
||
| return ( | ||
| <form css={styles.ProductFormContainer} onSubmit={validateForm}> | ||
| <header css={styles.FormHeader}> | ||
| <SectionTitle title={title} /> | ||
| <Button | ||
| size="sm" | ||
| variant="primary" | ||
| disabled={!isFormValid} | ||
| type="submit" | ||
| > | ||
| 등록 | ||
| </Button> | ||
| </header> | ||
|
|
||
| <FormControl> | ||
| <FormLabel>상품 이미지</FormLabel> | ||
| <ImageFileUploader /> | ||
| </FormControl> | ||
|
|
||
| <FormControl> | ||
| <FormLabel inputId="productName">상품명</FormLabel> | ||
| <Input | ||
| id="productName" | ||
| name="name" | ||
| placeholder="상품명을 입력해주세요" | ||
| onBlur={handleBlur} | ||
| /> | ||
| </FormControl> | ||
|
|
||
| <FormControl> | ||
| <FormLabel inputId="productDesc">상품 소개</FormLabel> | ||
| <Textarea | ||
| id="productDesc" | ||
| name="description" | ||
| placeholder="상품 소개를 입력해주세요" | ||
| onBlur={handleBlur} | ||
| /> | ||
| </FormControl> | ||
|
|
||
| <FormControl> | ||
| <FormLabel inputId="productPrice">판매 가격</FormLabel> | ||
| <Input | ||
| id="productPrice" | ||
| name="price" | ||
| type="text" | ||
| placeholder="판매 가격을 입력해주세요" | ||
| onChange={handlePriceInput} | ||
| onBlur={handleBlur} | ||
| /> | ||
| </FormControl> | ||
|
|
||
| <FormControl> | ||
| <FormLabel inputId="tags">태그</FormLabel> | ||
| <TagsInput | ||
| id="tags" | ||
| placeholder="태그를 입력해주세요" | ||
| tags={tags} | ||
| onTagsChange={handleTagsChange} | ||
| onBlur={handleBlur} | ||
| /> | ||
| </FormControl> | ||
| </form> | ||
| ); | ||
| }; | ||
|
|
||
| export default AddProductForm; |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.