react-admin
react-admin copied to clipboard
DateInput, TimeInput, and DateTimeInput are inconsistent
What you were expecting:
These inputs should receive Date or string and publish Date.
What happened instead:
They are inconsistent:
DateInputreceivesstringand returnsstring,TimeInputreceivesstring | Dateand returnsDateDateTimeInputreceivesstring | Dateand returnsDate
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.
- https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/input/TimeInput.tsx#L58C1-L58C23
- https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/input/DateTimeInput.tsx#L35
- https://github.com/marmelab/react-admin/blob/master/packages/ra-ui-materialui/src/input/DateInput.tsx#L45
Environment
- React-admin version: 4.16.7
- Last version that did not exhibit the issue (if applicable): n/a
- React version: n/a
- Browser: n/Z
- Stack trace (in case of a JS error): n/a
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?
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?
@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?