Fixed
- Mobile dropdown positioning at narrow widths — at 390 px the dropdown could open above the top of the viewport, leaving the presets unreachable, and a strip of calendar scrolled under the sticky Apply/Cancel bar. The dropdown now shifts on the cross axis to stay on screen, and the apply bar sits flush at the bottom. Desktop placement is unchanged.
- The input clears on unparseable state — when the filter state could not be parsed, the input kept showing the previous range (or the previous end date when only one end parsed). Parsing now starts from an empty selection.
- The calendar's "today" uses the display timezone — the today marker and keyboard focus used the browser clock; they now follow
timezone(). The README's custom-preset example now uses$component->now()instead of app-timezonenow(). - Presets highlight with
timePicker()enabled — date-only presets were already selected as 00:00–23:59:59, but the active highlight anduseRangeLabels()never matched them. One normaliser now drives select, highlight and label, and the label refreshes after a time edit. - Arabic label typo — «آخر 7 أيام» and «آخر 30 يوم» were spelled «أخر», and «هذه السنة» was «هذة».
Also in this release
- Month and year pickers filter the whole month or year —
06/2026was read as today's day of June, and on the 29th–31st02/2026rolled into March and dropped the filter. Month/year bounds now cover the whole period.
Merged pull requests
- #261 Fix mobile dropdown placement, stale input on bad state, and preset matching under timePicker
Upgrading
No action needed. Run php artisan filament:assets on deploy as usual, because the JS and CSS in dist/ changed.