Fixed
Locales
- Arabic noon and AM/PM — Arabic 12-hour pickers showed noon as ص (morning) and the AM/PM selects in English. Noon is now م, and the selects show ص / م.
- Every formatted value reads back, in every locale — the picker couldn't read back some of its own text (Kurdish month names, 12-hour times in Kurdish, Russian, Korean and Chinese, weekday formats), so a stored value could show empty or wrong after a reload. All 33 bundled locales now round-trip.
- Dual-state 12-hour fields store afternoon times in Arabic, Russian, Korean, Kurdish and Chinese, and calendar picks on an empty field are written in the page locale.
- Dual-state storage is written in English — a storage format with names or AM/PM (
A,MMMM) was written in the page locale (م, نوفمبر, утра), which Carbon cannot read. Values stored that way by older versions still load. - Greek and Norwegian load — Laravel and Filament use
elandnb; the translations lived only undergrandno. Both pairs now ship as full copies, so published overrides of either keep working. - Weekday headers in Russian, Ukrainian and Lithuanian — Monday showed Friday's label and the header lost a column.
Picker
- Escape inside Filament's filter panel closes only the picker — the first Escape closes the picker, a second closes the panel.
- Space types a space in
allowInput()fields — it used to pick the highlighted day and wipe what was typed. ArrowDown now opens a closed typed field. - Year-picker arrows respect
minYear()/maxYear()andminDate()/maxDate(), and the day calendar's month arrows stop at theminDate/maxDatemonths. - An explicit
placeholder()shows onallowInput()fields even when it equals the format hint (e.g.mm/yyyy). - An impossible time can't become "Invalid Date" — Apply stays disabled until the time is valid, and the last valid time is kept.
- Dual-state ends cover the whole minute — with minutes but no seconds on screen, the end is stored at
:59(as the server already did for defaults). - Disabled dates are much faster in non-English locales (parsed once instead of on every calendar cell).
Formats
jSrenders ordinals ("1st", "2nd"…) andethe timezone name, in the browser and on the server.- Unsupported PHP tokens (
N,W,z,T,Snot afterj,t,L,B,I,Z,c,r) render as before and are now logged once a day as a warning naming the token. They will throw in 6.0.
Added
enforceBoundTimes()(opt-in) — withtimePicker(), the bound days keep to the time ofminDate()/maxDate(): out-of-range hours and minutes are disabled, presets and picks are clamped, typed values outside are rejected, and timed Carbon bounds are sent in the display timezone. Off by default, so existing fields behave exactly as in 5.0.11. Note:now()is fixed when the page renders.
Behaviour changes to note
- In
allowInput()fields, Space is a character and ArrowDown opens the picker. - Clearing still stores
''from the browser andnullfrom the Clear button, as in 5.0.11; unifying onnullis planned for 6.0. - A view published before 5.0.12 keeps the old placeholder behaviour until it is republished.
Upgrading
Run php artisan filament:assets after updating; the JS changed.