marmelab / react-admin

A frontend Framework for single-page applications on top of REST/GraphQL APIs, using TypeScript, React and Material Design
http://marmelab.com/react-admin
MIT License
24.68k stars 5.21k forks source link

DateInput, TimeInput, and DateTimeInput are inconsistent #9623

Open gauthierm opened 7 months ago

gauthierm commented 7 months ago

What you were expecting:

These inputs should receive Date or string and publish Date.

What happened instead:

They are inconsistent:

Steps to reproduce:

Make a form with a DateTimeInput, change your mind after talking with the UX team and then switch to DateInput. Now the published value switched from a Date object to a string and validation and transformation functions may unexpectedly break.

Other information:

The DateInput does actually receive a Date or a string, but the documentation says it receives a string.

The parse field for DateTimeInput and TimeInput defaults to a date parser that produces a date object. For the DateInput, the parse field is empty by default.

Environment

fzaninotto commented 7 months ago

Thanks for your report.

There are various strategies to store partial dates and time, but none that is completely satisfactory. The current state of date and time inputs in react-admin is the result of a compromise between developer expectations, standards, and ease of use. Consistency between these inputs isn't a goal.

That being said, if the documentation isn't clear about the input and output, it needs fixing. So I'm marking this as a documentation issue. Would you like to open a PR to fix it?

Nela62 commented 6 months ago

Right now, the documentation for DateInput clearly states that the input can either be a Date object or a string. Can this issue be closed?

image
fzaninotto commented 6 months ago

@Nela62 You're referring to the MUI variant of DateInput. For the browser-specific variant, at the top of the page, the wording is still not clear enough.

Would you like to work on a PR to fix this?