Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[최제원] Sprint4 #155

Merged

Conversation

CJewon
Copy link
Collaborator

@CJewon CJewon commented Nov 15, 2024

요구사항

기본

로그인 홈페이지

  • 이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “이메일을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
  • 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 “잘못된 이메일 형식입니다” 빨강색 에러 메세지를 보입니다.
  • 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지를 보입니다,
  • 비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 “비밀번호를 8자 이상 입력해주세요.” 에러 메세지를 보입니다.
  • input 에 빈 값이 있거나 에러 메세지가 있으면 ‘로그인’ 버튼은 비활성화 됩니다.
  • Input 에 유효한 값을 입력하면 ‘로그인' 버튼이 활성화 됩니다.
  • 활성화된 ‘로그인’ 버튼을 누르면 “/items” 로 이동합니다

회원가입 홈페이지

  • 이메일 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “이메일을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
  • 이메일 input에서 focus out 할 때, 이메일 형식에 맞지 않는 경우 input에 빨강색 테두리와 아래에 “잘못된 이메일 형식입니다” 빨강색 에러 메세지를 보입니다.
  • 비밀번호 input에서 focus out 할 때, 값이 없을 경우 아래에 “비밀번호를 입력해주세요.” 에러 메세지를 보입니다,
  • 비밀번호 input에서 focus out 할 때, 값이 8자 미만일 경우 아래에 “비밀번호를 8자 이상 입력해주세요.” 에러 메세지를 보입니다.
  • 닉네임 input에서 focus out 할 때, 값이 없을 경우 input에 빨강색 테두리와 아래에 “닉네임을 입력해주세요.” 빨강색 에러 메세지를 보입니다.
  • 비밀번호 input과 비밀번호 확인 input의 값이 다른 경우, 비밀번호 확인 input 아래에 “비밀번호가 일치하지 않습니다..” 에러 메세지를 보입니다.
  • input 에 빈 값이 있거나 에러 메세지가 있으면 ‘회원가입’ 버튼은 비활성화 됩니다.
  • Input 에 유효한 값을 입력하면 ‘회원가입' 버튼이 활성화 됩니다.
  • 활성화된 ‘회원가입’ 버튼을 누르면 “/signin” 로 이동합니다

심화

  • 눈 모양 아이콘 클릭시 비밀번호의 문자열이 보이기도 하고, 가려지기도 합니다.
  • 비밀번호의 문자열이 가려질 때는 눈 모양 아이콘에는 사선이 그어져있고, 비밀번호의 문자열이 보일 때는 사선이 없는 눈 모양 아이콘이 보이도록 합니다.

주요 변경사항

스크린샷

멘토에게

  • form이나 input 태그 관련해서 추가해야하는 속성이나 불필요한 속성이 있다면 PR 부탁드립니다 !
  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

hanseulhee and others added 15 commits October 10, 2023 14:15
…ithub-actions

[Fix] delete merged branch github action
* div태그 대신 header 태그로 변경 및 logo-img에 대한 a태그 추가

* 이미지 파일구조 수정 및 파일구조 수정에 따른 이미지들의 src 수정

* login.html form태그와 label태그로 변경 및 비밀번호 가림 이미지 추가와 그에 맞는 css 적용

* signup.html form태그와 label태그로 변경 및 비밀번호 가림 이미지 추가와 그에 맞는 css 적용
* 메인 홈페이지 반응형 웹으로 변경함으로써 CSS 수정 및 변경

* login 홈페이지와 signup 홈페이지를 반응형 웹으로 변경함으로써 CSS 수정 및 변경
@CJewon CJewon requested a review from kich555 November 15, 2024 09:12
@CJewon CJewon added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Nov 15, 2024
@CJewon
Copy link
Collaborator Author

CJewon commented Nov 15, 2024

안녕하세요 멘토님 ! 작업을 하다보니 반복되는 함수(로직)이 눈에 들어와 분리하는 작업을 시도해보려고 하는데 괜찮을까요..?
일단 생각해본 구성은 login.html에 관한 이벤트리스너 관리는 login.js 에서, signup.html에 관한 이벤트리스너 관리는 signup.js에서 하되, 모든 함수(로직)는 inputFocus.js안에서 만들어놓으려고 합니다. 모든 함수(로직)는 이벤트리스너 관리하는 js파일로 export하고, 필요한 변수들은 파라미터로 전달하는 방식입니다.

Copy link
Collaborator

@kich555 kich555 left a comment

Choose a reason for hiding this comment

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

고생하셨습니다!

Comment on lines +12 to +21
if (
emailErrorMessage.textContent === "" &&
passwordErrorMessage.textContent === ""
) {
loginButton.disabled = false;
loginButton.style.backgroundColor = "#3692ff";
} else {
loginButton.disabled = true;
loginButton.style.backgroundColor = "#9ca3af";
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

각각의 조건을 변수로 등록하고 활용하면 좀더 가독성이 좋을것 같네요 ㅎ

    const isEmailValid = emailErrorMessage.textContent === "";
    const isPasswordValid = passwordErrorMessage.textContent === "";
    const isEnabled = isEmailValid && isPasswordValid;

    loginButton.disabled = !isEnabled;
    loginButton.style.backgroundColor = isEnabled ? "#3692ff" : "#9ca3af";

Comment on lines +32 to +33
emailErrorMessage.style.display = "block";
inputEmail.classList.add("error");
Copy link
Collaborator

Choose a reason for hiding this comment

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

위 구문이 지금 지속적으로 반복되는데

  // 에러 메시지 표시 및 입력 필드 스타일 변경 함수
  function showError(inputElement, errorElement, message) {
    errorElement.textContent = message;
    errorElement.style.display = "block";
    inputElement.classList.add("error");
  }

  // 에러 메시지 숨기고 입력 필드 스타일 복원하는 함수
  function hideError(inputElement, errorElement) {
    errorElement.textContent = "";
    errorElement.style.display = "none";
    inputElement.classList.remove("error");
  }

이렇게 별도의 함수로 빼는게 어때요?

Comment on lines +30 to +42
if (!emailValue) {
emailErrorMessage.textContent = "이메일을 입력해주세요.";
emailErrorMessage.style.display = "block";
inputEmail.classList.add("error");
} else if (!emailRegex.test(emailValue)) {
emailErrorMessage.textContent = "잘못된 이메일 형식입니다.";
emailErrorMessage.style.display = "block";
inputEmail.classList.add("error");
} else {
emailErrorMessage.textContent = "";
emailErrorMessage.style.display = "block";
inputEmail.classList.remove("error");
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

최종적으로는

   if (!emailValue) {
      showError(inputEmail, emailErrorMessage, "이메일을 입력해주세요.");
    } else if (!emailRegex.test(emailValue)) {
      showError(inputEmail, emailErrorMessage, "잘못된 이메일 형식입니다.");
    } else {
      hideError(inputEmail, emailErrorMessage);
    }

이렇게 쓰일 수 있게? ㅎ

Comment on lines +51 to +63
if (!passwordValue) {
passwordErrorMessage.textContent = "비밀번호를 입력해주세요.";
passwordErrorMessage.style.display = "block";
inputPassword.classList.add("error");
} else if (passwordValue.length < 8) {
passwordErrorMessage.textContent = "비밀번호를 8자이상 입력해주세요.";
passwordErrorMessage.style.display = "block";
inputPassword.classList.add("error");
} else {
passwordErrorMessage.textContent = "";
passwordErrorMessage.style.display = "none";
inputPassword.classList.remove("error");
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

요기도 마찬가지로

  if (!passwordValue) {
      showError(inputPassword, passwordErrorMessage, "비밀번호를 입력해주세요.");
    } else if (passwordValue.length < 8) {
      showError(inputPassword, passwordErrorMessage, "비밀번호를 8자 이상 입력해주세요.");
    } else {
      hideError(inputPassword, passwordErrorMessage);
    }

요렇게 ㅎ

</div>
<button type="submit" class="login-button">로그인</button>
<button type="button" class="login-button">로그인</button>
Copy link
Collaborator

Choose a reason for hiding this comment

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

로그인 form 내부의 로그인 button의 타입이 button으로 바뀐 이유가 뭔가요? submit이 맞는거같은데 ㅎ

@kich555 kich555 merged commit e46d37a into codeit-bootcamp-frontend:React-최제원 Nov 17, 2024
CJewon added a commit to CJewon/12-Sprint-Mission that referenced this pull request Nov 28, 2024
kich555 pushed a commit that referenced this pull request Nov 28, 2024
* Revert "[최제원] Sprint4 (#155)"

This reverts commit e46d37a.

* react npm start 오류로 인한 npm install 및 react 개발환경 셋팅

* header 추가 및 GET 리퀘스트를 받아 itemList 정렬

* 클래스 이름 추가 및 CSS 추가

* 파일 구조 정리 및 상품 정렬 쿼리 생성

* 최신순, 인기순 드롭아웃 html 구현과 검색 input 기능 html 구현

* form 태그 내부에 있는 태그들의 css 추가 및 수정
kich555 pushed a commit that referenced this pull request Dec 4, 2024
* Revert "[최제원] Sprint4 (#155)"

This reverts commit e46d37a.

* react npm start 오류로 인한 npm install 및 react 개발환경 셋팅

* header 추가 및 GET 리퀘스트를 받아 itemList 정렬

* 클래스 이름 추가 및 CSS 추가

* 파일 구조 정리 및 상품 정렬 쿼리 생성

* 최신순, 인기순 드롭아웃 html 구현과 검색 input 기능 html 구현

* form 태그 내부에 있는 태그들의 css 추가 및 수정

* 스프린트 미션5 미완성으로 코드잇에서 제공한 스프린트 미션5 완성본을 표본으로 커밋

* addItemPage html과 css 추가

* 이미지 삭제 기능 추가
kich555 pushed a commit that referenced this pull request Dec 16, 2024
* Revert "[최제원] Sprint4 (#155)"

This reverts commit e46d37a.

* react npm start 오류로 인한 npm install 및 react 개발환경 셋팅

* header 추가 및 GET 리퀘스트를 받아 itemList 정렬

* 클래스 이름 추가 및 CSS 추가

* 파일 구조 정리 및 상품 정렬 쿼리 생성

* 최신순, 인기순 드롭아웃 html 구현과 검색 input 기능 html 구현

* form 태그 내부에 있는 태그들의 css 추가 및 수정

* 스프린트 미션5 미완성으로 코드잇에서 제공한 스프린트 미션5 완성본을 표본으로 커밋

* addItemPage html과 css 추가

* 이미지 삭제 기능 추가

* input 안에 들어가있는 value값 삭제

* sprint6 templete code copy and commit

* 상품 상세페이지 html 추가 및 api 연결과 간단한 css 작업도중 git push

* ItemDetailPage css 작업완료

* user information 추가 및 useNavigate를 이용하여 목록으로 돌아가기 기능 구현
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants