Đi tới nội dung tài liệu
Underverse UI Logo
ComponentPicker & Select

Calendar

Calendar thuộc nhóm Picker & Select. Xem demo trực tiếp, cách tích hợp và các lưu ý triển khai.

Bắt đầu nhanh

Import Calendar từ entry công khai. Các ví dụ bên dưới thể hiện những kiểu tương tác và cấu hình được hỗ trợ.

component.tsxtsx
import { Calendar } from '@underverse-ui/underverse';

Ví dụ tương tác

Dùng thử Calendar thật, xem mã ví dụ và tra cứu các prop đã được mô tả.

Đang tải ví dụ tương tác…
Tham chiếu

Tham chiếu API

Tra cứu các thuộc tính, kiểu dữ liệu được chấp nhận, giá trị mặc định và lưu ý về hành vi.

Dữ liệu được sinh từ API TypeScript công khai của thư viện. Kiểu dữ liệu, thuộc tính bắt buộc và giá trị mặc định luôn đồng bộ với mã nguồn.

Calendar

Component
Thuộc tínhMô tảKiểuMặc định
monthTháng hiển thị (controlled).Date
defaultMonthTháng ban đầu khi uncontrolled.Date
onMonthChangeGọi khi chuyển tháng.(next: Date) => void
valueGiá trị ngày được chọn (phụ thuộc selectMode).Date | Date[] | { start?: Date; end?: Date }
defaultValueGiá trị ban đầu khi uncontrolled.Date | Date[] | { start?: Date; end?: Date }
onSelectGọi với giá trị đã chọn.(value: Date | Date[] | { start?: Date; end?: Date }) => void
selectModeChế độ chọn: single/multiple/range.SelectMode"single"
weekStartsOnNgày bắt đầu tuần (0-6).0 | 1 | 2 | 3 | 4 | 5 | 60
showWeekdaysHiển thị tiêu đề ngày trong tuần.booleantrue
showHeaderHiển thị header điều hướng tháng.booleantrue
sizeKích thước hiển thị."sm" | "md" | "lg" | "xl""md"
variantMã nguồn chưa cung cấp mô tả bổ sung.Variant"default"
eventsDanh sách sự kiện hiển thị dạng chấm màu.CalendarEvent[][]
renderDayHàm custom render cho ô ngày.(args: { date: Date; isCurrentMonth: boolean; isToday: boolean; isSelected: boolean; events: CalendarEvent[] }) => React.ReactNode
labelsLabel bản địa hoá cho tiêu đề và ngày tuần.{ weekdays?: string[]; month?: (date: Date) => string; prev?: string; next?: string; today?: string; clear?: string }
displayDisplay mode: month grid, single week, or yearDisplayMode"month"
monthsNumber of months to render side-by-side (month mode only)number1
showTodayShow "Today" buttonbooleanfalse
showClearShow "Clear" buttonbooleanfalse
minDateMinimum selectable dateDate
maxDateMaximum selectable dateDate
disabledDatesDisabled datesDate[] | ((date: Date) => boolean)
denseDense mode with less paddingbooleanfalse
animateAnimate transitionsbooleanfalse
showEventBadgesShow event badgesbooleanfalse
highlightWeekendsHighlight weekendsbooleanfalse
weekendTextColorCustom weekend text color class (default: text-destructive)string"text-destructive"
highlightHolidaysHighlight holidaysbooleanfalse
holidayTextColorCustom holiday text color class (default: text-destructive)string"text-destructive"
holidaysList of holidays to highlightCalendarHoliday[]VIETNAM_HOLIDAYS
cellModeRender mode for each day cell (compact dots vs large cell with event list)CellMode"compact"
maxEventsPerDayMax events shown per day (events cell mode)number3
showEventCountShow the event count badge in day cell header (events cell mode). Default: truebooleantrue
showMonthYearPickerShow month/year picker dropdowns in header (events cell mode). Default: falsebooleanfalse
monthNamesMonth names for month picker (default: English)string[]["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
yearRangeYear range for year picker [startYear, endYear][number, number]
onEventClickFired when clicking an event in a day cell (events cell mode)(event: CalendarEvent, date: Date) => void
renderEventCustomize event rendering (events cell mode)(args: { event: CalendarEvent; date: Date }) => React.ReactNode
enableEventSheetOpen a right-side Sheet when clicking an eventboolean
eventSheetSizeSheet size (right side)"sm" | "md" | "lg" | "xl" | "full""md"
renderEventSheetCustom sheet content renderer(args: { event: CalendarEvent; date: Date; close: () => void }) => React.ReactNode
selectedEventIdControlled selected event id (recommended to provide `event.id`)string | number
eventSheetOpenControlled open state for the event sheetboolean
onEventSheetOpenChangeControlled open state handler(open: boolean) => void
onSelectedEventIdChangeControlled selected event handler(id: string | number | undefined) => void

Hướng dẫn sử dụng

Dùng Calendar khi lựa chọn có giới hạn nhanh và an toàn hơn nhập tự do. Cần cấu hình rõ locale, giới hạn, giá trị bị vô hiệu hóa và trạng thái xóa.

Trợ năng

Khi dùng Calendar, hãy giữ trạng thái focus dễ nhận biết, cung cấp tên truy cập khi cần và kiểm tra bàn phím cùng trình đọc màn hình trong ngữ cảnh thực tế.