Skip to main content
U.S. Flag

An official website of the United States government

Calendar Picker

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.

Examples

Loading

Code

React

The calendar picker is another name for the <SingleInputDateField> with a calendar picker button. 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.

React Properties Documentation
NameTypeDefaultDescription
namerequiredstringThe input field's name attribute
onBlur(event: FocusEvent<HTMLInputElement, Element>) => anyCalled anytime any date input is blurred
onChangerequired(updatedValue: string, formattedValue: string) => anyCalled 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. @param updatedValue - The input's new value @param formattedValue - The input's new value with date formatting applied, included for convenience. Do not use this value as the component's value prop. An appropriate use for this value would be to run date-validation checks against it.
valuestringSets 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).
defaultMonthDateThe initial month to show in the calendar picker. If not provided, defaults to the month of the currently selected date.
fromDateDateEarliest day to start month navigation in the calendar picker. (This does not restrict dates entered manually.)
fromMonthDateEarliest month to start month navigation in the calendar picker. (This does not restrict dates entered manually.)
fromYearnumberEarliest year to start month navigation in the calendar picker. (This does not restrict dates entered manually.)
toDateDateLatest day to end month navigation in the calendar picker. (This does not restrict dates entered manually.)
toMonthDateLatest month to end month navigation in the calendar picker. (This does not restrict dates entered manually.)
toYearnumberLatest year to end month navigation in the calendar picker. (This does not restrict dates entered manually.)
classNamestringAdditional classes to be added to the root element.
errorPlacement"top" | "bottom"Location of the error message relative to the field input
idstringA unique id for the field element. Useful for referencing the field from other components with aria-describedby.
labelrequiredReactNodeLabel for the field.
labelClassNamestringAdditional classes to be added to the field label
labelIdstringA unique id to be used on the field label. If one isn't provided, a unique ID will be generated.
errorMessageReactNodeEnable the error state by providing an error message.
errorMessageClassNamestringAdditional classes to be added to the error message
errorIdstringThe ID of the error message applied to this field.
hintReactNodeAdditional hint text to display
inversedbooleanSet to true to apply the "inverse" theme
requirementLabelReactNodeText showing the requirement (ie. "Optional", or "Required"). In most cases, this should be used to indicate which fields are optional. See the form guidelines for more info.
textClassNamestringAdditional classes to be added to the label text.

Styles

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

CSS variables for text-input
VariableDefault Core Theme Value
--text-input__line-height1.3
--text-input__background-color--disabledhex value: #d9d9d9--color-border
--text-input__border-width2px
--text-input__border-width--error3px
--text-input__border-width--success3px
--text-input__border-colorhex value: #262626--color-base
--text-input__border-color--disabledhex value: #a6a6a6--color-gray-light
--text-input__border-color--errorhex value: #e31c3d--color-error
--text-input__border-color--error--inversehex value: #f18e9e--color-error-light
--text-input__border-color--inversehex value: #000000--color-black
--text-input__border-color--successhex value: #2a9526--color-green-light
--text-input__colorhex value: #262626--color-base
--text-input__padding8px
--text-input__border-radius3px

Form components

This component also makes use of form field styles, which can be customized by the following variables:

CSS variables for form
VariableDefault Core Theme Value
--form-label__color--inversehex value: #ffffff--color-white
--form__max-width460px
--form__max-width--small6em
--form__max-width--medium12em
--form-hint__colorhex value: #5a5a5a--color-gray
--form-hint__color--inversehex value: #e9ecf1--color-muted-inverse
--form-error__colorhex value: #e31c3d--color-error
--form-error__color--inversehex value: #f18e9e--color-error-light

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.

Component maturity

For more information about how we tested and validated our work for each checklist item, read our component maturity documentation.

Accessibility

  • Color

    Meets AA color contrast standards for accessibility and color blindness.
    Complete
  • Forced Colors Mode (FCM)

    While using FCM the components text is legible and improves readability.
    Complete
  • WCAG 2.1 Level AA Conformance

    All Axe checks for WCAG AA compliance have passed.
    Complete
  • Screen readers

    VoiceOver, NVDA, and JAWS screen readers provide concise communication and interaction.
    Complete
  • Keyboard navigation

    Component is fully navigable with a keyboard.
    Complete

Code

  • Storybook

    Component has stories to cover all defined props.
    Complete
  • Responsive

    Component designed to work in all responsive breakpoints.
    Complete
  • Spanish translations

    Includes Spanish translations for default text content.
    Complete

Tokens

  • Code

    Tokens implemented in code.
    Complete
  • Design

    Tokens implemented in the Sketch.
    Complete