fix(dates): German DD.MM.YYYY dates and 24-hour times everywhere #41

Merged
laoc merged 3 commits from fix/issue-33-german-dates into dev 2026-07-10 10:25:40 +00:00
Owner

The EuropeanDateInput picker (German masked text field + calendar popup) was only used in the OER metadata form. The create-event modal, the discover date-range filter and the publication form still used native <input type="date">, which renders in the browser locale — US-locale browsers showed MM/DD/YYYY. The event modal additionally used native <input type="time">, which shows a 12-hour clock (01:00 PM).

Changes:

  • Swap all three remaining native date inputs to EuropeanDateInput (drop-in: binds the same ISO YYYY-MM-DD value, so form handling/validation is unchanged)
  • New EuropeanTimeInput for the event modal times: 24-hour HH:MM masked text field binding the same HH:MM string; lenient typing (9.30, 930, bare 13) normalizes on blur, invalid input shows a hint
  • Guard test no-native-date-inputs.test.js fails if a native date OR time input is ever reintroduced
  • Update one e2e assertion that expected the ISO value in the visible field (it now correctly shows DD.MM.YYYY)

Verification (screenshots attached to #33):

  • Create-event modal shows DD.MM.YYYY dates and 24h HH:MM times for typed and prefilled values; typed 1330 normalizes to 13:30
  • discover-events-filter e2e suite passes against a production build with seeded relays
  • Note: calendar-creation/calendar-editing e2e suites fail on dev already due to stale FAB/event-menu selectors — tracked in #39, unrelated to this change

Closes #33

🤖 Generated with Claude Code

The `EuropeanDateInput` picker (German masked text field + calendar popup) was only used in the OER metadata form. The create-event modal, the discover date-range filter and the publication form still used native `<input type="date">`, which renders in the browser locale — US-locale browsers showed MM/DD/YYYY. The event modal additionally used native `<input type="time">`, which shows a 12-hour clock (01:00 PM). Changes: - Swap all three remaining native date inputs to `EuropeanDateInput` (drop-in: binds the same ISO `YYYY-MM-DD` value, so form handling/validation is unchanged) - New `EuropeanTimeInput` for the event modal times: 24-hour `HH:MM` masked text field binding the same `HH:MM` string; lenient typing (`9.30`, `930`, bare `13`) normalizes on blur, invalid input shows a hint - Guard test `no-native-date-inputs.test.js` fails if a native date OR time input is ever reintroduced - Update one e2e assertion that expected the ISO value in the visible field (it now correctly shows `DD.MM.YYYY`) Verification (screenshots attached to #33): - Create-event modal shows DD.MM.YYYY dates and 24h HH:MM times for typed and prefilled values; typed `1330` normalizes to `13:30` - `discover-events-filter` e2e suite passes against a production build with seeded relays - Note: `calendar-creation`/`calendar-editing` e2e suites fail on dev already due to stale FAB/event-menu selectors — tracked in #39, unrelated to this change Closes #33 🤖 Generated with [Claude Code](https://claude.com/claude-code)
The EuropeanDateInput picker was only used in the OER metadata form;
the create-event modal, discover date-range filter and publication
form still used native <input type="date">, which renders in the
browser locale (US users saw MM/DD/YYYY). Swap all three to
EuropeanDateInput — it binds the same ISO YYYY-MM-DD value, so form
handling is unchanged.

Add a guard test failing on any reintroduced native date input, and
update the edit-form e2e assertion to expect the German display value.

Closes #33

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Native <input type="time"> renders a 12-hour clock (01:00 PM) in
US-locale browsers. Replace the event modal's time fields with a new
EuropeanTimeInput: a text field masked to 24-hour HH:MM binding the
same HH:MM string, with lenient typing (9.30, 930, bare 13) normalized
on blur and an invalid hint like EuropeanDateInput. Extend the guard
test to also ban native time inputs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
laoc changed title from fix(dates): German DD.MM.YYYY date inputs everywhere to fix(dates): German DD.MM.YYYY dates and 24-hour times everywhere 2026-07-10 10:19:39 +00:00
laoc merged commit d9036decc1 into dev 2026-07-10 10:25:40 +00:00
laoc deleted branch fix/issue-33-german-dates 2026-07-10 10:25:42 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
edufeed/edufeed-app!41
No description provided.