Input Date Range

The Date Range picker allows users to select a start and end date through an interactive calendar. It is primarily used in booking, reservation, or reporting contexts where a period of time must be specified.

When to use

  • In booking flows where the user must select a check-in and check-out date
  • In reporting dashboards to filter data by a date interval
  • Anywhere a time period is required as user input

When not to use

  • When a single date is sufficient — use QFormFieldDate instead
  • When the range is always predefined and not editable

Default

Click the trigger to open the calendar. Click a first date to set the start, then click a second date to confirm the range and close the picker.

With controls header

Use show-controls-header to allow the user to jump directly to a specific month and year.

With clearer

Sizes

Use the size prop to match the height of other form inputs: sm, md (default), lg.

Disabled

Readonly

Multiple pickers

Props

PropTypeDefaultDescription
model-value{ start: Date | null, end: Date | null }{ start: null, end: null }The current range value
minDate | nullnullMinimum selectable date
maxDate | nullnullMaximum selectable date
max-date-includedBooleantrueWhether max date itself is selectable
disabled-datesDate[]undefinedDates that cannot be selected
disabledBooleanfalseDisables all interactions
readonlyBooleanfalseOpens the picker but prevents date selection
start-placeholderString"Start date"Placeholder text for start date
end-placeholderString"End date"Placeholder text for end date
separatorString"→"Separator between start and end in the trigger
sizeString-Trigger size: xs, sm, lg, xl
labelStringnullAccessible label for the field
show-clearerBooleanfalseShow the clear button inside the trigger
show-controls-headerBooleanfalseShow month/year selectors in the calendar header
placementString"bottom"Popover placement
modal-breakpointString"isExtraSmall"Breakpoint at which the picker opens as a modal
localeLocaleenUSdate-fns locale for formatting and week start

Events

EventPayloadDescription
update:modelValue{ start: Date | null, end: Date | null }Emitted on any range change
range-selected{ start: Date, end: Date }Emitted when a complete range is confirmed
click-field-clearerEmitted when the clear button is clicked
close-popoverEmitted when the picker panel closes
focusEmitted when the trigger gains focus
blurEmitted when the trigger loses focus
clickEmitted when the trigger is clicked

Accessibility

  • The trigger is keyboard-focusable
  • After selecting the start date, the calendar remains open waiting for the end date selection
  • Hovering over dates after start selection shows a visual preview of the potential range
  • Clicking a date before the current start restarts the selection with the new date as start
  • The calendar icon changes to bi-calendar-check when a complete range is selected
  • The disabled prop fully disables the trigger; readonly allows inspection but not editing