#37083: Add opt-in HTML5 date/time input types for form widgets
-------------------------------------+-------------------------------------
     Reporter:  Denny Biasiolli      |                     Type:
                                     |  Cleanup/optimization
       Status:  new                  |                Component:  Forms
      Version:  6.0                  |                 Severity:  Normal
     Keywords:  datetime, date,      |             Triage Stage:
  time, inputs, admin, forms         |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  1
-------------------------------------+-------------------------------------
 == Summary

 Django's `DateInput`, `TimeInput`, and `DateTimeInput` widgets currently
 render `<input type="text">` unconditionally.
 Modern browsers provide native date and time pickers via `<input
 type="date">`, `<input type="time">`, which offer a significantly better
 user experience—especially on mobile devices—without requiring any
 JavaScript.

 The Django admin's `vDateField` and `vTimeField` rely on custom JavaScript
 (`DateTimeShortcuts.js`) to provide calendar and clock popups. While
 functional, these are less accessible and less consistent across platforms
 than the native browser pickers.

 My idea is to add a new global setting, `USE_HTML5_DATE_INPUT`, that when
 set to `True`, switches these widgets to their HTML5 counterparts on an
 opt-in basis.

 The end goal it to go back on this ticket
 (https://code.djangoproject.com/ticket/29822) after (if) the current one
 gets approved/merged.

 == Motivation

 - **Better mobile UX**: Native pickers are touch-friendly and consistent
 with OS conventions. The current JS-based popups are difficult to use on
 small screens.
 - **Accessibility**: Browser-native pickers are built with accessibility
 in mind (keyboard navigation, screen reader support) out of the box.
 - **Reduced JS overhead**: When native pickers are used, the admin's
 `calendar.js` and `DateTimeShortcuts.js` become unnecessary for date/time
 fields.
 - **Gradual rollout**: Defaulting to `False` ensures zero breaking
 changes. Projects can opt in when ready and validate behavior before
 committing.
-- 
Ticket URL: <https://code.djangoproject.com/ticket/37083>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/django-updates/0107019df71dd15c-91271032-df29-4a50-b58f-1c9bb9dca239-000000%40eu-central-1.amazonses.com.

Reply via email to