[v0.1.2] — 2026-05-17
Bug Fixes
date_range_input/1no longer 500s when the consumer's form is built without pre-declaring the derived:<field>_from/:<field>_toatoms (e.g. a standalone playground page or aPhoenix.HTML.FormData.to_form/2map with bare keys). 0.1.1'sString.to_existing_atom/1raisedArgumentErrorin that case; the derivation now prefersto_existing_atomand falls back toto_atomwhen the atom hasn't been loaded yet. The@fieldattr is a developer-supplied component attribute bounded by source code, so the atom-table-safety rule (noto_atomon untrusted input) doesn't apply.
[v0.1.1] — 2026-05-17
Bug Fixes
<.date_input>andDatePickerLiveno longer raise on a date that can't be converted into the requested calendar.Date.convert!/2andDate.new!/3,4replaced throughout with tolerantsafe_convert/2andsafe_build_date/4helpers that fall back to the input date or today rather than crashing the render path.<.date_range_input>switched fromString.to_atom/1toString.to_existing_atom/1when deriving the{field}_from/{field}_tochild 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 (everyavailableFormatsskeleton, 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/2now returns aDatein the calendar named by the:calendaroption (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
:calendricalis a hard dependency — runtimeCode.ensure_loaded?guards removed, calendar-conversion helper made idempotent.