Skip to content

Date Range Picker

Component date range picker để chọn khoảng ngày với calendar dropdown.

Cài đặt

bash
npx @galaxy-stack/nebula-cli@latest add date-range-picker
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add date-range-picker
bash
yarn dlx @galaxy-stack/nebula-cli@latest add date-range-picker
bash
bunx @galaxy-stack/nebula-cli@latest add date-range-picker
bash
# Nếu bạn đã cài đặt galaxy-design toàn cục
galaxy-design add date-range-picker

Dependencies

Component này tự động cài đặt các dependencies sau:

  • React: react-day-picker, date-fns
  • Vue: radix-vue, vue-datepicker
  • Angular: @radix-ng/primitives, date-fns
  • React Native: Không khả dụng (sử dụng date-time-picker)
  • Flutter: Không khả dụng (sử dụng DatePicker có sẵn)

Không cần cài đặt thủ công!

Sử dụng

Ví dụ cơ bản

tsx
import { DateRangePicker } from "@/components/ui/date-range-picker"

export default function DateRangePickerDemo() {
  return <DateRangePicker placeholder="Chọn khoảng ngày" />
}
vue
<script setup lang="ts">
import { DateRangePicker } from '@/components/ui/date-range-picker'
</script>

<template>
  <DateRangePicker placeholder="Chọn khoảng ngày" />
</template>

Với Presets

tsx
import { DateRangePicker } from "@/components/ui/date-range-picker"

export default function DateRangePickerWithPresets() {
  return (
    <DateRangePicker
      placeholder="Chọn khoảng ngày"
      presets={[
        { label: "7 ngày qua", value: { from: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000), to: new Date() } },
        { label: "30 ngày qua", value: { from: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000), to: new Date() } },
        { label: "90 ngày qua", value: { from: new Date(Date.now() - 90 * 24 * 60 * 60 * 1000), to: new Date() } },
      ]}
    />
  )
}

API Reference

Props

PropTypeDefaultDescriptionFramework Support
dateRange{ from: Date; to: Date }undefinedKhoảng ngày đã chọnTất cả
defaultDateRange{ from: Date; to: Date }undefinedKhoảng ngày mặc địnhTất cả
placeholderstring'Chọn khoảng ngày'Văn bản giữ chỗTất cả
disabledbooleanfalseVô hiệu pickerTất cả
minDateDateundefinedNgày tối thiểuTất cả
maxDateDateundefinedNgày tối đaTất cả
presetsArray<{ label: string; value: DateRange }>[]Preset chọn nhanhTất cả
className / classstring''Tên class CSSTất cả

Accessibility

  • Keyboard Navigation: Phím mũi tên để điều hướng calendar, Enter để chọn
  • Screen Reader: Sử dụng ARIA labels và live regions phù hợp
  • Focus Management: Focus trap trong calendar dropdown
  • WCAG Compliance: Tuân thủ WCAG 2.1 Level AA

Author

Bùi Trọng Hiếu (kevinbui)

License

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Phát hành theo Giấy phép MIT.