Skip to Content

FormItem

라벨, 컨트롤, 설명, 에러 메시지를 하나로 묶어주는 폼 필드 래퍼 컴포넌트


개요

FormItem은 Field 컴포넌트 패밀리를 간편하게 사용할 수 있도록 래핑한 컴포넌트입니다. label, description, error 등의 props만으로 접근성 있는 폼 필드를 빠르게 구성할 수 있습니다.

주요 특징

  • 간편한 API: props 기반으로 라벨, 설명, 에러를 한 번에 구성
  • 레이아웃 제어: vertical / horizontal 방향 지원
  • 라벨 정렬: 가로(labelAlign) / 세로(labelVerticalAlign) 정렬 제어
  • 유효성 검증: error prop으로 에러 상태 표시
  • 접근성: Field 컴포넌트 기반의 시맨틱 마크업 자동 적용

사용 예시

기본

설명 포함

업무용 이메일을 입력하세요.

필수 입력

에러 상태

Horizontal 레이아웃

orientation="horizontal"labelWidth를 함께 사용하여 가로 레이아웃을 구성합니다.

업무용 이메일

Label Align (가로 정렬)

labelAlign prop으로 라벨 텍스트의 가로 정렬을 제어합니다. labelWidth와 함께 사용할 때 효과적입니다.

Label Vertical Align (세로 정렬)

labelVerticalAlign prop으로 라벨의 세로 정렬을 제어합니다. horizontal 레이아웃에서 description이 있을 때 유용합니다.

세로 정렬: start

세로 정렬: center

세로 정렬: end


API Reference

Props

PropTypeDefaultDescription
labelstring-라벨 텍스트
labelWidthnumber-라벨 너비 (px, horizontal 전용)
labelAlign"start" | "center" | "end"-라벨 가로 정렬
labelVerticalAlign"start" | "center" | "end"-라벨 세로 정렬
descriptionstring-도움말 텍스트
orientation"vertical" | "horizontal" | "responsive""vertical"레이아웃 방향
requiredboolean-필수 입력 표시 (*)
errorstring-에러 메시지 (표시 시 description 숨김)
classNamestring-추가 CSS 클래스
childrenReact.ReactNode-폼 컨트롤 요소

기본 사용법

import { FormItem } from "@vortex/ui-foundation" <FormItem label="이름" required> <Input placeholder="홍길동" /> </FormItem> <FormItem label="이메일" orientation="horizontal" labelWidth={120} labelAlign="end" labelVerticalAlign="start" > <Input type="email" /> </FormItem>

접근성

시맨틱 마크업

  • 내부적으로 Field, FieldLabel, FieldDescription, FieldError를 사용하여 시맨틱 마크업 자동 적용
  • error prop 사용 시 role="alert"이 적용되어 스크린 리더에 즉시 전달

권장 사항

  • label prop을 항상 지정하여 접근성 확보
  • ✅ 에러 상태 시 error prop으로 명확한 메시지 전달
  • ✅ horizontal 레이아웃에서 labelWidth를 일관되게 설정
  • label 없이 사용하지 않기 (접근성 저하)

관련 컴포넌트

  • Field: 저수준 폼 필드 컴파운드 컴포넌트
  • Input: 텍스트 입력 필드
  • Checkbox: 체크박스
  • Switch: 토글 스위치
Last updated on