~50일차~
완성된 페이지는 다음과 같다.
(firebase로 배포했지만 환경변수 설정이 계속 오류나서 배포링크는 첨부하지 않는다.)
감사하게도 같이 과제한 동기분들의 코드를 참고해서 구현을 성공했다.
function checkAndDelete() {
  try{
    const checkBoxes = document.querySelectorAll('input[type="checkbox"]:not(#selectAll)');
    if (checkBoxes) {
      checkBoxes.forEach(checkBox => {
        if (checkBox.checked) {
          const userRow = checkBox.closest('.row');
          const userId = checkBox.id;
          if (userRow) {
            // db에서 staff 삭제하기
            deleteDoc(doc(db, "product", userId));
            // 사용자 화면에서 staff 삭제하기
            userRow.remove();
          } else throw "404 페이지로";
        }
      });
    } else throw "404 페이지로";
  } catch (err) {
    console.log(err);
  }
}
//delete 버튼 클릭 이벤트 (staff 삭제)
const deleteBtn = document.getElementById('del-btn');
deleteBtn
  ? deleteBtn.addEventListener("click", checkAndDelete)
  : console.log("404 페이지로");
이전에 이 부분을 구현하지 못한건 checked 상태한 row를 가져오고 그 row의 id값을 가져오는 게 어려워서 하지 못했는데,
생각보다 간단한 메소드와 코드로 해결이 되었다.
①  checkbox의 부모요소인 row를 가져오기  checkBox.closest('.row');
closest()로 조상요소를 가져올 수 있었다.
② 선택한 row의 id값 가져오기
const userId = checkBox.id;
이건 수정하다보니 떠오른 생각이었고 더 간단했다.
기존에 firebase의 id값을 유저가 name칸에 입력한 value로 설정했는데, 이 부분을 checkbox의 id에도 같이 부여하니 가져오기가 편했다.
(*물론 input value값을 id로 지정하는 건 좋지 못한 생각이다. 다음에는 타임스탬프 등을 활용해볼 예정.)
 기존에는 min 사이즈를 주지 않아서 모바일 사이즈로 줄이면 이미지가 찌그러졌다.
이번엔 최소 사이즈 설정하고, object-fit에 cover을 줬다.
.id_picture {
 min-width: 100px;
 min-height: 100px;
}
.cell_input_image {
 width: 100%;
 height: 100%;
 object-fit: cover;
 margin: 5px;
}
 이 외의 부분들도 모두 해결하고 싶었지만 react와 타입스크립트를 배운 뒤에 적용해서 수정해볼까 싶다.