[v0.1.1] — 2026-05-17

Bug Fixes

  • <.date_input> and DatePickerLive no longer raise on a date that can't be converted into the requested calendar. Date.convert!/2 and Date.new!/3,4 replaced throughout with tolerant safe_convert/2 and safe_build_date/4 helpers that fall back to the input date or today rather than crashing the render path.

  • <.date_range_input> switched from String.to_atom/1 to String.to_existing_atom/1 when deriving the {field}_from / {field}_to child fields, preventing atom-table pollution from user-supplied field names. Consumers' schemas already define these atoms for form parsing to work, so this is invisible in practice.

[v0.1.0] — 2026-05-17

Extracted from localize_inputs 0.3 alongside localize_number_inputs and localize_inputs_core. Carries the date form input components — date_input, date_range_input, date_range_picker, and the DatePickerLive LiveComponent — plus their parser, validator, and Ecto Changeset bridge. Depends on calendrical for multi-calendar (Gregorian, Buddhist, Japanese, Islamic, Persian, Hebrew, ROC, …) parsing.

Added

  • Requires calendrical ~> 0.5. Picks up the broader TR35 parser coverage (every availableFormats skeleton, quarter / week / day-of-year / weekday-validation date fields, flex day periods, time-zone resolution) and the new calendar-preserving parse return — Localize.Inputs.Date.Parser.parse_date/2 now returns a Date in the calendar named by the :calendar option (e.g. ~D[5786-09-29 Calendrical.Hebrew]).

  • Display formatting re-parses string field values under the component's :calendar, so inputs like "令和8年5月17日" (Japanese imperial) round-trip without falling through to a Gregorian re-interpretation.

  • Internal cleanups now that :calendrical is a hard dependency — runtime Code.ensure_loaded? guards removed, calendar-conversion helper made idempotent.