Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Wheel Picker

항목을 세로로 스크롤해 하나 이상의 열에서 값을 선택하는 입력 컴포넌트예요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/wheel-picker.json

Anatomy

Wheel Picker는 Root 안에 하나 이상의 Column을 두고, 모든 Column을 가로지르는 Selection Indicator와 위아래 Scroll Fog로 구성돼요.

  • Root: 전체 Wheel Picker를 감싸는 최상위 컨테이너예요.
  • Column: 하나의 값 목록을 세로로 스크롤하는 영역이에요.
  • Item: Column 안에서 선택할 수 있는 각 값이에요.
  • Item Label: Item의 한 줄 콘텐츠예요. 선택 및 비활성 상태 스타일을 가져요.
  • Selection Indicator: 모든 Column을 가로지르며 현재 선택 위치를 나타내요.
  • Scroll Fog: 위아래 경계에서 항목이 자연스럽게 흐려지도록 가려요.
<WheelPicker
  aria-label="동호수 선택"
  columns={[
    { id: 'building', 'aria-label': '동', options: buildingOptions },
    { id: 'unit', 'aria-label': '호수', options: unitOptions },
  ]}
/>

Scroll Fog 높이

Scroll Fog는 Root 높이의 40%로 늘어나며 Item 3개 높이를 넘지 않아요. 최소 높이는 Item 5개를 권장해요.

min(Root Height × 40%, Item Height × 3)

Properties

Columns

1개 이상의 Column을 사용할 수 있어요. 각 Column은 Item Label의 너비를 따르며, Column 묶음은 Root의 가운데에 배치돼요. 일반적인 사용을 위해 1~3열 조합을 권장해요. itemAlign 으로 Column 안의 라벨 정렬을 바꿔 열 사이 간격을 맞출 수 있어요.

Size

Medium과 Small 두 가지 사이즈로 제공돼요. Medium이 범용적으로 사용되며, Small은 작은 공간에서 효율적으로 사용할 수 있어요.

SizeRoot 높이Item 높이글자
Medium (기본)220px44pxt10-static
Small180px36pxt7-static

Item과 표시 개수

한 화면에는 기본적으로 5개의 Item을 표시하며, 중앙에 선택 위치가 생기도록 양의 홀수를 사용해요. visibleItemCount 로 Root 높이를 표시 개수에 맞춰 조정할 수 있어요.

State

Enabled와 Disabled 상태를 가져요. Disabled에서는 현재 값을 유지하며 포커스와 값 변경을 막아요. Read Only는 포커스는 유지하면서 스크롤·클릭·키보드 값 변경만 막아요.

Loop

Loop의 기본값은 꺼짐이에요. 끈 상태에서는 첫 값과 마지막 값에서 멈추고, 켠 상태에서는 마지막 값 다음에 첫 값이 이어져요. 월·요일·분처럼 순환하는 값에 사용해요.

Interaction

선택과 값 확정

보이는 Item을 누르면 해당 Item이 중앙으로 이동해요. 스크롤 중 중앙을 지나는 Item은 강조되지만, 중앙에 정렬되어 멈춘 뒤에만 값을 확정해요. Column을 마우스로 드래그한 뒤 놓으면 가장 가까운 Item에 정렬되고, 드래그 직후에는 탭 선택이 일어나지 않아요.

onIndexChange 는 중앙 항목이 바뀔 때마다 호출돼 항목별 햅틱에 쓸 수 있어요. 최종 선택값은 스크롤이 정착한 뒤 onValueChange 로 처리해요.

Accessibility

전체 Wheel Picker는 group, 각 Column은 spinbutton 으로 제공돼요. Root와 각 Column에 aria-label 또는 aria-labelledby 를 지정해요. React 요소를 label로 쓰면 option에 ariaLabel 을 함께 제공해요.

키동작
ArrowUp / ArrowDown이전·다음 항목 선택
Home / End처음·마지막 항목으로 이동
TabColumn 사이 이동

Guidelines

사용하기

날짜, 시간, 수량처럼 순서가 있는 값을 선택할 때 사용해요. 한 화면에서 여러 값의 관계를 함께 확인하며 조정해야 하는 경우에 적합해요.

Item 콘텐츠

Item은 짧은 한 줄 텍스트를 기본으로 해요. 단순한 시각 요소는 함께 사용할 수 있지만 버튼, 링크, 입력 필드, 여러 줄 콘텐츠는 넣지 않아요.

☀️ 맑음⛅ 구름🌧️ 비
Do· 일관된 아이콘

아이콘이나 이모지를 사용할 경우 모든 항목에 일관되게 사용해요.

1개2개변경3개
Don't· 인터랙티브 요소

단순한 시각 요소가 아닌 버튼 같은 콘텐츠는 사용하지 않아요.

다른 컴포넌트 선택하기

선택지의 수와 관계, 검색 필요 여부, 자유 입력 여부에 따라 더 적합한 입력 컴포넌트를 골라요.

컴포넌트선택 기준
Wheel Picker순서가 있는 값을 스크롤로 탐색
Radio Group적은 수의 독립적인 선택지를 모두 노출
Segmented Control2–5개의 짧고 상호 배타적인 선택지를 전환
Select항목이 많고 검색 없이 하나를 선택
Text Field정해진 목록이 아닌 값을 직접 입력

Props

WheelPicker

Prop

Type

WheelPickerColumn

Prop

Type

On this page