colon-grid v1.1.0

함정 목록

전부 실제로 당한 것만 적었습니다. 공통점은 "그럴듯하게 틀려서 눈으로는 안 잡힌다"는 점입니다.

서버 페이징 — 전제가 깨지면 조용히 틀리는 3종

화면이 전체를 들고 있다는 전제가 깨집니다. 셋 다 화면상 멀쩡해 보입니다.

그냥 두면맞는 방법
합계를 화면에서 더함 → 이 페이지 합계서버 data-sums
코드필터 선택지를 행에서 뽑음 → 이 페이지에 있는 값만서버 data-options
순번을 1부터 매김 → 페이지마다 1..10 반복총건수 − (페이지−1)×크기 − i

덧붙여, 주소로 들어온 정렬은 헤더 화살표도 같이 복원해야 합니다. 안 하면 정렬은 걸렸는데 표시가 없어 같은 헤더를 또 눌러 방향이 뒤집힙니다.

토스트 개수 제한을 비동기 제거로 돌리면 무한 루프

dismiss() 는 사라지는 애니메이션이 끝난 뒤 지웁니다 — 자식 수가 그 자리에서 줄지 않습니다. while (자식수 >= MAX) dismiss(...)네 번째 토스트에서 브라우저를 멈춥니다(복사 몇 번이면 걸림). 넘치는 만큼은 동기 removeChild.

기본 숨김 열은 폭을 고정한 뒤에 숨겨야 한다

먼저 숨기면 그 열 폭이 0px 로 굳습니다. 나중에 컬럼 토글로 켜도 체크만 켜지고 화면엔 안 보입니다.

"바깥 클릭" 판정을 e.target 위치로 하면 안 된다

편집기를 만들며 셀을 비우면 방금 클릭한 배지가 DOM 에서 떨어져 "밖"으로 오판됩니다 → 방금 연 편집기가 즉시 닫힙니다(배지를 누르면 안 열리고 옆 빈칸은 열리는 증상). 캡처 단계 플래그로 판정하세요.

DOM 테스트는 click 만 쏘면 못 잡습니다. 실제 순서인 mousedown → mouseup → click 을 재현해야 합니다.

그 밖에

붙여넣기·채우기는 직접 편집과 같은 검증을 타야 한다

편집기에서 타이핑할 때만 검증하고 setCellValue(붙여넣기·채우기 경로)를 그냥 두면, 년월 칸에 금액이, 날짜 칸에 2026-02-31 이 그대로 들어갑니다. 화면엔 빨간 테두리만 뜨고 값은 남아 "고쳐진 것처럼" 보이다가 저장까지 갑니다.

지금은 유형별로 거르고, 건너뛴 이유를 편집 불가 / 형식 불일치로 나눠 알립니다 — 사용자가 할 일이 다르니까요.

모달 fetch 는 응답 상태부터 봐야 한다

r.text() 를 바로 쓰면 404 응답 본문이 팝업에 그대로 뜹니다 — 사용자에게 {"status":404,"path":"/demo/form"} 가 노출됩니다. r.ok 를 먼저 확인하고, 실패는 토스트로 알립니다.

키트 독립 상태