Date Input
Date Input
분할된 키보드 입력(segmented keyboard input)을 사용해 특정 날짜를 입력할 때 사용하는 컴포넌트예요. 날짜를 부분(segments) 단위로 정밀하게 입력할 수 있어요.
출처: 문서
본문
사용법 (Usage)
import { DateInput } from "@chakra-ui/react"
<DateInput.Root>
<DateInput.Label />
<DateInput.Control>
<DateInput.SegmentGroup>
<DateInput.Segment />
</DateInput.SegmentGroup>
</DateInput.Control>
<DateInput.HiddenInput />
</DateInput.Root>
숏컷 (Shortcuts)
DateInput 컴포넌트는 흔한 패턴을 위한 편리한 숏컷도 제공해요.
DateInput.Segments
DateInput.Segments 숏컷은 현재 granularity와 formatter가 만드는 모든 세그먼트를 포함하는 세그먼트 그룹을 렌더링해요.
<DateInput.SegmentGroup>
{dateInput.getSegments().map((segment, index) => (
<DateInput.Segment key={index} segment={segment} />
))}
</DateInput.SegmentGroup>
각 세그먼트를 커스터마이즈할 필요가 없다면 다음과 같이 더 간결할 수 있어요:
<DateInput.Segments />
날짜 값 (Date Value)
날짜 값은 @internationalized/date의 객체를 사용해 제공되며, 시간대 안전(timezone-safe)하고 로케일 인식(locale-aware) 날짜 처리를 담당해요.
이것은 Temporal API가 브라우저에서 널리 지원될 때 대체될 예정이에요.
예시 (Examples)
크기 (Sizes)
size prop을 사용하면 데이트 인풋의 크기를 바꿀 수 있어요.
변형 (Variants)
variant prop을 사용하면 데이트 인풋의 모양을 바꿀 수 있어요.
비활성화 (Disabled)
disabled prop을 사용하면 데이트 인풋과의 사용자 상호작용을 막을 수 있어요.
유효하지 않음 (Invalid)
invalid prop을 사용하면 데이트 인풋 값이 유효하지 않음을 나타낼 수 있어요.
읽기 전용 (Read Only)
readOnly prop을 사용하면 값을 유지하면서 수정을 막을 수 있어요.
제어 (Controlled)
value와 onValueChange prop을 사용하면 날짜 값을 제어할 수 있어요.
기본값 (Default Value)
defaultValue prop을 사용하면 제어하지 않고 초기 날짜를 설정할 수 있어요.
최소/최대 (Min and Max)
min과 max prop을 사용하면 허용되는 날짜 범위를 제한할 수 있어요.
선행 0 (Leading Zeros)
shouldForceLeadingZeros prop을 사용하면 일(day)과 월(month) 세그먼트를 항상 두 자리로 렌더링할 수 있어요.
세분성 (Granularity)
granularity prop을 사용하면 표시할 필드를 제어할 수 있어요. hour, minute, second로 설정하면 날짜와 함께 시간도 입력할 수 있어요.
시간 전용 (Time Only)
granularity와 formatter prop을 사용하면 시간 전용 입력을 구성할 수 있어요.
시간대 (Time Zone)
ZonedDateTime 값은 시간대 세그먼트를 렌더링해요. hourCycle을 사용하면 12시간/24시간 표기를 전환할 수 있고, hideTimeZone을 사용하면 세그먼트를 숨길 수 있어요.
범위 (Range)
selectionMode prop을 "range"로 설정하면 시작/종료 날짜를 입력할 수 있어요. DateInput.Segments와 DateInput.HiddenInput에 index prop을 전달해 범위의 각 날짜를 대상으로 지정해요.
클리어 트리거 (Clear Trigger)
useDateInputContext 훅을 clearValue 메서드와 결합하면 값이 있을 때 클리어 트리거를 렌더링할 수 있어요.
데이트 피커 (Date Picker)
useDateInput 훅과 DateInput.RootProvider 컴포넌트를 사용해 데이트 인풋을 DatePicker 컴포넌트와 구성할 수 있어요. 이렇게 하면 캘린더 트리거와 함께 분할 키보드 입력을 제공해요.
React Hook Form
Controller 패턴을 사용해 react-hook-form과 통합하는 예시예요.
로케일 (Locale)
locale prop을 사용하면 세그먼트의 순서와 형식을 바꿀 수 있어요.
RTL
데이트 인풋을 LocaleProvider로 감싸 로케일과 텍스트 방향을 함께 설정할 수 있어요. dir="rtl"을 직접 전달하면 방향만 따로 재정의할 수 있어요.
Props
Root
DateInput 컴포넌트의 Root 부분에 전달할 수 있는 prop을 확인해 주세요.
RootProvider
DateInput 컴포넌트의 RootProvider 부분에 전달할 수 있는 prop을 확인해 주세요.
Segments
DateInput 컴포넌트의 Segments 부분에 전달할 수 있는 prop을 확인해 주세요.
Segment
DateInput 컴포넌트의 Segment 부분에 전달할 수 있는 prop을 확인해 주세요.
HiddenInput
DateInput 컴포넌트의 HiddenInput 부분에 전달할 수 있는 prop을 확인해 주세요.
더 알아보기 (Learn more)
Chakra UI의 Date Input 컴포넌트에 대해 더 자세히 알아보려면 공식 문서와 Ark UI Date Input 문서를 확인해 보세요.