shadcn-ui / ui

Beautifully designed components that you can copy and paste into your apps. Accessible. Customizable. Open Source.
https://ui.shadcn.com
MIT License
62.89k stars 3.54k forks source link

[Bug]: Date Picker not usable for Selecting Birth Date, despite this use case being advertised. #2982

Open johanneskares opened 3 months ago

johanneskares commented 3 months ago

Describe the bug

Has anyone actually tried to use the date picker for selecting your bith date?

Screenshot 2024-03-11 at 16 50 55

It's basically impossible, because you can't select the year.

Affected component/components

Date Picker, Calendar

How to reproduce

Obvious

Codesandbox/StackBlitz link

No response

Logs

No response

System Info

all browsers

Before submitting

johanneskares commented 3 months ago

For anyone looking for a solution, here is a small modification to the component that works for me.

Screenshot 2024-03-11 at 17 43 22
<Calendar
    selected={field.value}
    onSelect={field.onChange}
    disabled={(date) => date > new Date() || date < new Date("1900-01-01")}
    captionLayout="dropdown"
    toYear={2010}
    fromYear={1900}
    classNames={{
        day_hidden: "invisible",
        dropdown: "px-2 py-1.5 rounded-md bg-popover text-popover-foreground text-sm  focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 ring-offset-background",
        caption_dropdowns: "flex gap-3",
        vhidden: "hidden",
        caption_label: "hidden",
    }}
    initialFocus
/>

I'm happy to create a PR to add this as a variant.

TheZodo commented 3 months ago

really nice @johanneskares I guess I took a hard route and just used another component. Tremendously helpful!

Nikkakko commented 3 months ago

@johanneskares
its fine but when you select calendar and re-open , its reseted. how can we fix it?

camposvictor commented 3 months ago

@johanneskares its fine but when you select calendar and re-open , its reseted. how can we fix it?

https://react-day-picker.js.org/basics/navigation

you have to pass the current field value to the defaultMonth prop.

nathanielrich commented 2 months ago

it would be great when this works for range too... if i change the date in the caption it changes for both calendar views...

dmr commented 2 weeks ago

This is a great ticket and solution, thank you!