DatePicker
Podo UI의 DatePicker 컴포넌트와 사용법을 안내합니다
Import
import { DatePicker } from 'podo-ui';Props
| Prop | Type | Default | Description |
|---|---|---|---|
mode | 'instant' | 'period' | 'instant' | 선택 모드 (instant: 단일, period: 기간) |
type | 'date' | 'time' | 'datetime' | 'date' | 값 타입 (date: 날짜, time: 시간, datetime: 날짜+시간) |
value | DatePickerValue | - | 선택된 값 객체 |
onChange | (value) => void | - | 값 변경 콜백 함수 |
placeholder | string | - | 플레이스홀더 텍스트 |
disabled | boolean | false | 비활성화 여부 |
disable | DateCondition[] | - | 선택 불가능한 날짜 조건 (특정 날짜, 범위, 함수) |
enable | DateCondition[] | - | 선택 가능한 날짜 조건 (지정된 날짜만 활성화) |
minDate | Date | DateTimeLimit | - | 선택 가능한 최소 날짜 (Date 또는 DateTimeLimit) |
maxDate | Date | DateTimeLimit | - | 선택 가능한 최대 날짜 (Date 또는 DateTimeLimit) |
yearRange | YearRange | - | 년도 선택 범위 (min/max). minDate/maxDate보다 우선 적용 |
minuteStep | 1 | 5 | 10 | 15 | 20 | 30 | 1 | 분 단위 선택 간격 (1, 5, 10, 15, 20, 30) |
format | string | - | 날짜/시간 표시 포맷 (y: 년, m: 월, d: 일, h: 시, i: 분) |
기본 사용법
DatePicker는 날짜, 시간, 또는 날짜+시간을 선택할 수 있는 컴포넌트입니다. 단일 선택(instant)과 기간 선택(period) 모드를 지원합니다.
import { DatePicker } from 'podo-ui';
// Single date select
<DatePicker
mode="instant"
type="date"
value={value}
onChange={setValue}
/>
// Period select
<DatePicker
mode="period"
type="date"
value={value}
onChange={setValue}
/>타입
세 가지 타입을 지원합니다: date(날짜만), time(시간만), datetime(날짜+시간)
type="date"
날짜만 선택합니다
type="time"
시간만 선택합니다
type="datetime"
날짜와 시간을 함께 선택합니다
기간 선택
mode="period"로 설정하면 시작일과 종료일을 선택할 수 있습니다. 하단에 초기화/적용 버튼이 표시됩니다.
날짜 기간
시간 기간
날짜+시간 기간
상태
다양한 상태를 지원합니다:
날짜 비활성화
disable과 enable props를 사용하여 선택 가능한 날짜를 제한할 수 있습니다. 특정 날짜, 날짜 범위, 또는 함수를 통해 조건을 지정할 수 있습니다.
특정 날짜 비활성화
특정 날짜들을 선택할 수 없게 합니다
날짜 범위 비활성화
특정 기간의 날짜들을 선택할 수 없게 합니다
함수로 비활성화
조건 함수로 날짜를 동적으로 비활성화합니다
특정 날짜만 활성화
enable을 사용하여 지정된 날짜만 선택 가능하게 합니다
최소/최대 날짜
minDate와 maxDate props를 사용하여 선택 가능한 날짜 범위를 지정할 수 있습니다. Date 객체 또는 DateTimeLimit 형태로 시간까지 지정할 수 있습니다.
날짜만 제한
오늘부터 30일 이내 선택 가능
날짜+시간 제한
시작/종료 시간까지 정밀하게 제한
년도 범위 설정
yearRange props를 사용하여 년도 선택 범위를 지정할 수 있습니다. minDate/maxDate가 있으면 자동으로 년도를 추출하며, yearRange가 명시적으로 지정되면 우선 적용됩니다.
// yearRange만 사용 (명시적 지정)
<DatePicker
yearRange={{ min: 2020, max: 2030 }}
/>
// minDate/maxDate만 사용 (년도 자동 추출)
<DatePicker
minDate={new Date(2022, 0, 1)}
maxDate={new Date(2025, 11, 31)}
/>
// 둘 다 사용 (yearRange 우선, 날짜 비활성화는 minDate/maxDate 적용)
<DatePicker
yearRange={{ min: 2020, max: 2030 }}
minDate={new Date(2022, 0, 1)}
/>yearRange만 사용
2020~2030년 선택 가능
minDate/maxDate와 함께
yearRange 우선, 날짜 제한은 minDate/maxDate 적용
부분 지정
min만 yearRange로, max는 maxDate에서 추출
분 단위 선택
minuteStep props를 사용하여 분 선택 간격을 지정할 수 있습니다. 1, 5, 10, 15, 30분 단위를 지원하며 기본값은 1분입니다.
minuteStep=1
1분 단위 (기본)
minuteStep=5
5분 단위
minuteStep=15
15분 단위
minuteStep=30
30분 단위
날짜 포맷
format props를 사용하여 날짜/시간 표시 형식을 지정할 수 있습니다. y(년), m(월), d(일), h(시), i(분)을 조합하여 원하는 포맷을 만들 수 있습니다.
format="y-m-d"
대시 구분
format="y.m.d"
점 구분
format="y년 m월 d일"
한국어 포맷
format="y.m.d h:i"
날짜+시간 포맷
초기 달력 월 설정
기간 선택 모드에서 initialCalendar props를 사용하여 왼쪽/오른쪽 달력의 초기 표시 월을 설정할 수 있습니다. 'now'(현재 달), 'prevMonth'(이전 달), 'nextMonth'(다음 달) 또는 Date 객체를 사용할 수 있습니다.
prevMonth / now
이전 달 / 현재 달
now / nextMonth
현재 달 / 다음 달
Date
특정 날짜 지정
Value 인터페이스
DatePickerValue는 날짜와 시간을 별도의 필드로 관리합니다. 이를 통해 날짜와 시간을 독립적으로 바인딩하고 제어할 수 있습니다.
interface TimeValue {
hour: number; // 0-23
minute: number; // 0-59
}
interface DatePickerValue {
date?: Date; // Start date
time?: TimeValue; // Start time
endDate?: Date; // End date (period mode)
endTime?: TimeValue; // End time (period mode)
}