Skip to main content
Use FlexDatePicker to select a day, FlexDateTimePicker when the choice includes time, and FlexDateField for guided entry without a calendar.

Basic date

The default display is Oct 15, 2026; storage is 2026-10-15. Clicking the input opens the calendar. The trailing chevron is decorative. Picking a day closes the ordinary date picker by default.

Guided entry

Each date part is a separate numeric segment. Typing replaces the selected segment; completing it advances to the next. Letters cannot become date values. Month/year changes keep the day valid, including leap years. A partial date remains incomplete rather than silently retaining the previous selection.
FlexDateField has guided entry enabled and no calendar. ArrowUp/ArrowDown change a segment; Home/End select its minimum/maximum; Delete clears it. ArrowLeft/ArrowRight move between parts. F4 or Alt+ArrowDown opens an available calendar.

Readonly, disabled and clearing

editable(false) prevents manual entry but keeps calendar selection available. readOnly() prevents changes. disabled() disables the field; use Filament’s persistence settings if you need a disabled value submitted. Date and date/time pickers are clearable by default; their calendar includes Clear.

Earliest and latest date

Bounds are inclusive. minValue() and maxValue() are equivalent aliases. A Carbon date or closure can provide a dynamic bound.

Block weekdays and individual days

Weekdays are 0 Sunday through 6 Saturday. Blackout dates use Y-m-d, also when a date/time picker stores a time. Duplicate dates are removed; use a callback instead of shipping more than 10,000 blackout dates.

Custom availability

Return true for an unavailable date. The calendar checks the visible date window and shows loading/retry feedback if that request fails. Submission checks the selected date again. The callback is not a reservation lock: booking applications must check capacity again when saving.

Always-visible calendar

inline() keeps the calendar visible. fixedWeeks(false) permits four, five or six week rows; the default is six. outsideDays(false) hides dates from adjacent months in the single-date calendar. highlightToday(false) removes today’s marker.
The calendar can stay open after selection. Hiding the chevron does not remove calendar selection from the input.

Language, week order and formats

locale() translates month/day names and determines text direction and the default first weekday. It does not automatically replace an explicitly chosen format or the default English-style token order. Set displayFormat() for the order you want. weekStartsOn(0) starts with Sunday; 1 starts with Monday. firstDayOfWeek() is the equivalent API.
The calendar supports RTL navigation and layout. See the configuration reference for alternate calendar systems and storage semantics.

Date and time

The date/time picker stays open while choosing a date and a clock value. The timezone is a label and determines Today; the saved value is a local date/time without an offset.
showSeconds() enables second precision in date/time storage and display when time is enabled. For hour-only selection, use granularity('hour'); for seconds, use granularity('second'). granularity('day') removes time entirely.

Appointment slots

Only the specified hours pass validation. Use allowedTimes([]) for no available hours, or allowedTimes(null) to return to the interval list. An explicitly configured default time must be in the allowed list.

Date/time bounds

On the first/last date, only times within the corresponding bound are offered. To restrict opening hours on every day, use allowedTimes() as well; these two bounds describe a continuous period, not recurring business hours.

Keep time hidden

This hides calendar clock controls while retaining time in the stored value. It does not convert the field to date-only; use granularity('day') for that.

Custom saved format

Use the same format when restoring saved values. Prefer Y-m-d for interoperable date storage and keep dates in the year range 1–9999.

Saving to DATE and DATETIME columns

The displayed date is separate from the saved value. A date uses Y-m-d; date/time uses a local ISO date/time such as 2026-06-15T14:30:00 by default. For a Filament resource using Eloquent, define matching model casts:
Eloquent converts the value to its database date format when saving and returns a Carbon instance when reading. Both pickers accept that instance when restoring the form. Use nullable database columns for optional fields. For direct Query Builder writes, or when you need an explicit SQL date/time string, configure the saved format:
Date/time values represent local wall time. The picker does not infer the user’s timezone or silently convert it to UTC. Apply the application’s timezone policy before persistence when storing an instant. A range is an array of start and end: use a JSON attribute or explicitly map its endpoints to separate date columns.
Last modified on October 16, 2026