Initial ISO value (“2026-09-22” or “2026-09-01/2026-09-22”).
name
string
Form field name (ISO value).
placeholder
string
Pick a date
Text shown when nothing is selected.
format
short | medium | long | full
medium
Intl style of the displayed date (ranges via formatRange: “Sep 1-22, 2026”).
presets
boolean
Shows the default presets column (depends on the mode).
clearable
boolean
Button to clear the date.
required
boolean
Native validation; a range must be complete.
disabled
boolean
Disables the trigger.
invalid
boolean
Error style + aria-invalid.
placement
bottom-start | top-start…
bottom-start
Popover placement (flipped when there is no room).
min / max / disabled-dates / disable-weekends / months / locale / week-start / today
-
Forwarded as-is to <mv-calendar>.
time
boolean
Date and time mode (single mode only): a time field and a Done button sit under the calendar and the value becomes “2026-10-02T14:30”, like datetime-local. Picking a day then moves to the time; Done, Enter in the time, Escape or a click outside closes.
Time mode parts: calendar and time column, time row, its label and the Done button.
CSS variables
Name
Default
Description
--mv-date-picker-width
16rem (18rem for ranges)
Trigger width.
--mv-date-picker-radius
var(--mv-radius-md)
Trigger radius.
Accessibility
<button> trigger with aria-haspopup=dialog and aria-expanded, named by the <label for> + the displayed value. The popover is a labeled non-modal role=dialog; on open, focus moves to the calendar's active day (full APG grid), Escape or picking a date/range closes it and returns focus to the trigger; tabbing out also closes it. ↓ on the trigger opens it. Presets are aria-pressed buttons. In time mode the time field follows the calendar in the tab order (its segments are spinbuttons), then the Done button.