Skip to content

Date Picker

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

Cài đặt

bash
npx @galaxy-stack/nebula-cli@latest add date-picker
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add date-picker
bash
yarn dlx @galaxy-stack/nebula-cli@latest add date-picker
bash
bunx @galaxy-stack/nebula-cli@latest add date-picker
bash
# Nếu bạn đã cài đặt galaxy-design toàn cục
galaxy-design add date-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 { DatePicker } from "@/components/ui/date-picker"

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

<template>
  <DatePicker placeholder="Chọn ngày" />
</template>

Với Form

tsx
import { useForm } from "react-hook-form"
import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage } from "@/components/ui/form"
import { DatePicker } from "@/components/ui/date-picker"
import { Button } from "@/components/ui/button"

export default function DatePickerForm() {
  const form = useForm({
    defaultValues: {
      date: undefined,
    },
  })

  function onSubmit(values: { date: Date }) {
    console.log(values)
  }

  return (
    <Form {...form}>
      <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
        <FormField
          control={form.control}
          name="date"
          render={({ field }) => (
            <FormItem>
              <FormLabel>Ngày sinh</FormLabel>
              <FormControl>
                <DatePicker {...field} />
              </FormControl>
              <FormMessage />
            </FormItem>
          )}
        />
        <Button type="submit">Gửi</Button>
      </form>
    </Form>
  )
}

API Reference

Props

PropTypeDefaultDescriptionFramework Support
dateDateundefinedNgày đã chọnTất cả
defaultDateDateundefinedNgày mặc địnhTất cả
placeholderstring'Chọn 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ả
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.