Skip to main content
U.S. Flag

An official website of the United States government

CMS Design System

Date field (with calendar picker)

Jump to Guidance
View related guidance in the U.S. Web Design System

Date field (with calendar picker), also known as date picker, provides single date entry with a text field or selection through a visual calendar element tied to the input.

<SingleInputDateField>

To enable the date picker feature, you must pass both a from<TIME> property (i.e., fromDate, fromMonth, etc.) and a to<TIME> property (i.e., toDate, toMonth, etc.) to the date field component.

View Source File

Code snippet

Props

React Properties Documentation
NameTypeDefaultDescription
namerequiredstring

The input field's name attribute

onBlur(event: React.FocusEvent<HTMLInputElement>) => any

Called anytime any date input is blurred

onChangerequired(updatedValue: string, formattedValue: string) => any

Called anytime any date input is changed. This function is called with two arguments. The first argument should be used to update whatever state your application uses to supply back to this component's value prop in a controlled component pattern.

valuestring

Sets the input's value. Use in combination with an onChange handler to implement a controlled component pattern. This component expects the value to match whatever string the user types (i.e., the first argument provided to your onChange handler).

defaultMonthDate

The initial month to show in the calendar picker. If not provided, defaults to the month of the currently selected date.

fromDateDate

Earliest day to start month navigation in the calendar picker. (This does not restrict dates entered manually.)

fromMonthDate

Earliest month to start month navigation in the calendar picker. (This does not restrict dates entered manually.)

fromYearnumber

Earliest year to start month navigation in the calendar picker. (This does not restrict dates entered manually.)

toDateDate

Latest day to end month navigation in the calendar picker. (This does not restrict dates entered manually.)

toMonthDate

Latest month to end month navigation in the calendar picker. (This does not restrict dates entered manually.)

toYearnumber

Latest year to end month navigation in the calendar picker. (This does not restrict dates entered manually.)

Guidance

When to use

  • Use the date picker for dates that have happened within the last year, in the future, or is relevant to selecting the day of the week.

When to consider alternatives

  • Don't use if users are entering a memorable date. Instead, use either single- or multi-input date fields.
  • Don't use if the date occurred in the distant past (like date of birth).

Usage

Allow users to have flexibility in entering the date, such as allowing one-digit numbers with or without "0" prior to the number, or entering a date with or without slashes to separate month, day, and year.

  • Example: "1" as well as "01" for a month or day.
  • Example: "05/18/2022" as well as "05182022".

Accessibility

  • These text fields should follow the accessibility guidelines for all text inputs.
  • Users will be able to enter a variety of date formats that automatically format to the correct date format of MM/DD/YYYY. This change happens once the form field loses focus. For example, a user enters a date as "4122020" and it changes to "04/01/2020" once focus leaves the date input.
  • Instructions are available make this more usable/accessible for assistive technology.

Customization

The following Sass variables can be overridden to customize Input/Form components:

VariableDefault Core Theme Value
$text-input__line-height1.3
$text-input__background-color--disabled$color-border
$text-input__border-width2px
$text-input__border-color$color-base
$text-input__border-color--disabled$color-gray-light
$text-input__border-color--error$color-error
$text-input__border-color--error--inverse$color-error-light
$text-input__border-color--inverse$color-black
$text-input__border-color--success$color-green-light
$text-input__color$color-base
$text-input__padding8px
$text-input__border-radius3px

Form components

VariableDefault Core Theme Value
$form-label__color--inverse$color-white
$form__max-width460px
$form__max-width--small6em
$form__max-width--medium12em
$form-hint__color$color-gray
$form-hint__color--inverse$color-muted-inverse
$form-error__color$color-error
$form-error__color--inverse$color-error-light