화면이 쓰는 선언 전부입니다. 여기 없는 동작은 공통 컴포넌트에 없다는 뜻입니다.
표(<table>)
| 속성 | 뜻 |
data-grid | 필수. 이 표를 그리드로 만든다 |
data-empty="…" | 데이터가 없을 때 보여줄 문구 |
data-server | 서버 페이징 모드. 검색·정렬·페이징을 주소로 실어 서버가 처리 |
data-total / data-page / data-size | 서버 모드에서 서버가 알려주는 전체 건수·현재 페이지·페이지크기 |
data-sum-row="on|off" | 합계행 사용 여부(화면별 선언). off 면 서버도 집계 쿼리를 돌지 않는다 |
data-sums="필드:합계,…" | 서버가 계산한 조건 전체 합계. 화면에서 더하면 '이 페이지 합계'가 된다 |
data-batch-url="…" | 수정모드 일괄저장 엔드포인트. 있으면 수정 버튼이 생긴다 |
data-bulk-url="…" | 선택 건 일괄 액션. 있으면 수정모드 도구에 버튼이 생긴다. 키트는 {ids:[…]} 만 보내고 서버가 준 message 를 보여준다 |
data-bulk-label / data-bulk-tip | 버튼 글자 / 툴팁 |
data-bulk-sum="필드" | (선택) 확인창에 그 열의 합계를 미리 보여준다 |
열(<th>)
| 속성 | 뜻 |
data-label="…" | 열 이름(툴팁·모바일 카드 라벨·엑셀 헤더에 쓰임). 아이콘이 섞인 헤더는 필수 |
data-field="…" | 서버가 아는 필드명. 정렬·필터 파라미터와 일괄저장 키가 된다 |
data-search | 통합검색 대상 + 검색유형 목록에 등장 |
data-sort | 헤더 클릭 정렬 |
data-code | 셀렉트 필터 생성. 서버 모드에선 선택지를 data-options 에서 읽는다 |
data-range="month|date" | 기간(부터~까지) 필터 |
data-sum | 합계 대상 열 |
data-col-off | 처음엔 숨김(컬럼 버튼으로 켤 수 있음). 본문처럼 폭 큰 열에 |
data-nocol | 컬럼 토글·엑셀에서 제외(체크박스 등 시스템 열) |
data-edit="text|number|select|date|month" | 수정모드 편집 유형. 헤더에 유형 아이콘이 뜬다 |
data-options="값:라벨,…" | select 편집·코드필터 선택지. 값의 , : 는 공백으로 치환된다 |
data-creatable | 콤보에 없는 값도 입력 허용 |
data-dec="N" | 숫자 소수 자릿수 |
data-badge="값:클래스,…" | 편집 후 셀을 배지로 다시 그릴 때 쓸 클래스 |
data-recalc="드라이버필드,…" | 파생 열. 드라이버가 바뀔 때만 서버가 재계산 |
행(<tr>) · 셀(<td>)
| 속성 | 뜻 |
data-id | 행 식별자. 수정모드·일괄저장에 필수 |
data-modal-url | 행 클릭 시 모달로 가져올 폼 주소(목록 리로드 없음) |
class="row-clickable" | 클릭 가능한 행 표시 |
data-raw="…" | 표시값과 정렬/필터값이 다를 때의 원시값(배지·포맷된 날짜 등) |
class="cell-goto" | 다른 화면으로 가는 셀. 셀 전체가 클릭 대상이 된다 |
전역 함수
| 함수 | 쓰는 곳 |
adminToast(msg, {tone:'warn', duration}) | 됐다는 확인(복사·붙여넣기 결과). 아무것도 막지 않음 |
adminConfirm(msg, title) → Promise<bool> | 되돌릴 수 없는 확인(삭제·발행) |
adminAlert(msg, title) | 오류·검증 — 막아야 하는 것만 |
adminModal.open(html) / .close() | 모달 직접 제어 |
comboboxEnhance(selectEl) | 동적으로 추가한 select 를 콤보로 |
table.__grid.apply() | 외부에서 값을 바꾼 뒤 합계·정렬·페이징 다시 태우기 |