본문으로 건너뛰기
액션

행 메뉴

표의 행이나 카드 끝에 두는 「⋯」 메뉴. Popover 위에 서고, 항목은 링크, 클라이언트 동작, 서버 액션 폼, 구분선 네 가지다. 메뉴 안의 클릭은 행이나 카드로 전파되지 않는다. 지우기 같은 항목의 확인 절차는 호출자가 맡는다.

활용 방법

항목 종류

href 는 링크, onClick 은 단추, divider 는 구분선이다. tone danger 는 글자만 빨갛게 한다.

Preview
tsx
<RowMenu
items={[
{ label: "열기", href: `/items/${id}` },
{ label: "복제", onClick: duplicate },
{ divider: true },
{ label: "삭제", onClick: () => setPending(id), tone: "danger" },
]}
/>

누를 수 있는 카드 안

카드 전체를 누르면 상세가 열리는 목록에서도 「⋯」 과 그 항목을 누를 때는 카드의 클릭이 일어나지 않는다.

Preview
볼트 M8대기

카드를 누른 횟수: 0

tsx
<div onClick={openDetail}>
...
<RowMenu items={menu(item)} />
</div>

다른 폼 안에 있을 때

일괄 처리 표처럼 행 전체가 한 폼 안에 있으면 메뉴의 서버 액션 폼을 그 안에 둘 수 없다. 브라우저가 안쪽 form 을 버려 숨은 칸이 바깥 폼에 섞인다. action 항목에 form 아이디를 주고, 같은 항목 목록으로 RowMenuForms 를 바깥 폼 밖에 렌더한다. 메뉴의 단추는 form 속성으로 그 폼을 가리킨다.

속성

이름타입기본값설명
itemsRowMenuItem[]-{ label, href } · { label, onClick } · { label, action, fields?, form? } · { divider: true }. 앞의 셋은 tone?: "danger"
labelstring"더 보기"「⋯」 단추의 접근 가능한 이름
classNamestring-root details 클래스
refRef<HTMLDetailsElement>-root details