Get startedFoundationsComponentsPatternsRules

Inline Edit

인라인 편집은 읽기 뷰와 편집 뷰를 오가며 페이지를 떠나지 않고 값을 바로 고치게 해요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/steel/inline-edit.json

Examples

Inline editable textfield

한 줄 텍스트라면 권장 기본값이 들어간 InlineEditableTextfield 를 써요. 읽기 뷰를 누르거나 Tab 으로 이동해 Enter 를 누르면 편집 뷰가 열리고, 오른쪽 아래의 확인(✓)·취소(✕) 버튼이나 Enter·Esc 로 끝내요. 필드 밖을 누르면 값이 자동으로 확인돼요.

Custom edit and read view

InlineEdit 에 editView, readView 를 직접 넘기면 어떤 입력이든 감쌀 수 있어요. editView 는 fieldProps 와 ref 를 받아 입력 컴포넌트에 펼쳐 주면 돼요. 값이 비어 있을 때 보여줄 안내 문구도 읽기 뷰에서 정해요.

Validation

validate 가 문자열을 돌려주면 확인이 막히고, 입력란이 빨간 테두리와 오류 아이콘으로 바뀌며 아래에 메시지가 떠요. 입력하는 동안 바로 다시 검사해요. isRequired 는 라벨에 필수 표시(*)를 붙여요.

Textarea

여러 줄 입력처럼 내용이 긴 필드는 keepEditViewOpenOnBlur 를 켜서 밖을 눌러도 실수로 저장·종료되지 않게 해요. readViewFitContainerWidth 는 읽기 뷰를 부모 너비만큼 넓혀요. 이때는 Ctrl/⌘ + Enter 로도 확인할 수 있어요.

Compact and hidden actions

isCompact 는 높이를 32px 로 줄여요. hideActionButtons 를 켜면 확인·취소 버튼 없이 Enter 와 Esc 로만 동작해요.

Controlled

isEditing 을 넘기면 편집 상태를 직접 제어해요. 이때는 onEdit, onConfirm, onCancel 에서 상태를 직접 바꿔야 해요.

Usage guidelines

이슈 상세처럼 자주 바뀌는 정보를 보여주는 화면에서, 페이지를 떠나지 않고 읽기 뷰와 편집 뷰를 오가게 할 때 써요. 이미 값이 있고 그 값을 고치는 상황이라면 별도 폼보다 인라인 편집이 자연스러워요. 텍스트 필드, 셀렉트, 날짜 선택기 등 다양한 입력을 감쌀 수 있어요.

구성

  • 읽기 뷰 — 라벨과 값. 입력란 테두리는 보이지 않지만 글자는 라벨과 같은 선에 맞춰요. 값이 없으면 안내 문구를 보여줄 수 있어요.
  • 편집 뷰 — 같은 라벨, 열 너비만큼 넓어진 입력란, 끝에 붙는 확인·취소 컨트롤
Do· 읽기·편집 뷰를 똑같이
두 뷰의 글자 크기·굵기·여백을 맞춰서 편집으로 바뀌어도 화면이 튀지 않게 해요.
Don't· 뷰마다 다른 서체
읽기 뷰는 큰 굵은 글자, 편집 뷰는 작은 보통 글자처럼 다르게 만들지 않아요.
Do· 폼 밖에서 쓰기
폼에 속하지 않은 개별 필드에 써요.
Don't· 폼 안에 넣기
이미 저장 버튼이 있는 폼 안에서는 쓰지 않아요.
  • 밖을 누르면 저장된다는 점은 눈에 잘 띄지 않아요. 가능하면 확인·취소 버튼을 보이게 둬요.
  • 마우스로 쓸 때 컨트롤은 입력란 끝(왼쪽→오른쪽 언어에서는 오른쪽 아래)에 놓여요.
  • 헤더 같은 큰 글자 위에 쓸 때는 읽기·편집 뷰의 글꼴과 상자 크기가 정확히 맞는지 확인해요.

Accessibility

  • 읽기 뷰 앞에는 크기 0 의 편집 버튼이 있어 Tab 으로 이동할 수 있고, 포커스되면 읽기 뷰에 포커스 테두리가 그려져요. 버튼 이름은 editButtonLabel, label, editLabel 을 이어 붙인 문장이에요.
  • 편집이 끝나면 키보드 사용자에게는 포커스가 다시 편집 버튼으로 돌아가요.
  • 확인·취소 버튼은 confirmButtonLabel, cancelButtonLabel 로 이름을 정해요. 한국어 화면이면 꼭 한국어로 바꿔요.
  • 오류가 생기면 입력에 aria-invalid 와 aria-describedby 가 걸리고 메시지를 스크린 리더가 읽어줘요.
  • 사용자 지정 글자 크기를 쓸 때도 편집할 수 있다는 단서(호버 배경, 포커스 테두리)가 충분히 보여야 해요. placeholder 를 라벨 대신 쓰지 않아요.
키동작
Enter확인 (한 줄 입력)
Ctrl/⌘ + Enter확인 (여러 줄 입력, 버튼 숨김)
Esc취소하고 원래 값으로 되돌려요.

Props

InlineEdit

Prop

Type

InlineEditableTextfield

InlineEdit 의 공통 props(editView, readView, isEditing, onEdit 제외)에 더해 아래를 받아요.

Prop

Type

On this page