express.ui.input_date

express.ui.input_date(
    id,
    label,
    *,
    value=None,
    min=None,
    max=None,
    format='yyyy-mm-dd',
    startview='month',
    weekstart=0,
    language='en',
    width=None,
    autoclose=True,
    datesdisabled=None,
    daysofweekdisabled=None,
)

Creates a text input which, when clicked on, brings up a calendar that the user can click on to select dates.

Parameters

id : str

An input id.

label : TagChild

An input label.

value : Optional[date | str] = None

The starting date. Either a date object, or a string in yyyy-mm-dd format. If None (the default), will use the current date in the client’s time zone.

min : Optional[date | str] = None

The minimum allowed date. Either a date object, or a string in yyyy-mm-dd format.

max : Optional[date | str] = None

The maximum allowed date. Either a date object, or a string in yyyy-mm-dd format.

format : str = 'yyyy-mm-dd'

The format of the date to display in the browser. Defaults to "yyyy-mm-dd".

startview : str = 'month'

The date range shown when the input object is first clicked. Can be “month” (the default), “year”, or “decade”.

weekstart : int = 0

Which day is the start of the week. Should be an integer from 0 (Sunday) to 6 (Saturday).

language : str = 'en'

The language used for month and day names. Default is “en”. Other valid values include “ar”, “az”, “bg”, “bs”, “ca”, “cs”, “cy”, “da”, “de”, “el”, “en-AU”, “en-GB”, “eo”, “es”, “et”, “eu”, “fa”, “fi”, “fo”, “fr-CH”, “fr”, “gl”, “he”, “hr”, “hu”, “hy”, “id”, “is”, “it-CH”, “it”, “ja”, “ka”, “kh”, “kk”, “ko”, “kr”, “lt”, “lv”, “me”, “mk”, “mn”, “ms”, “nb”, “nl-BE”, “nl”, “no”, “pl”, “pt-BR”, “pt”, “ro”, “rs-latin”, “rs”, “ru”, “sk”, “sl”, “sq”, “sr-latin”, “sr”, “sv”, “sw”, “th”, “tr”, “uk”, “vi”, “zh-CN”, and “zh-TW”.

width : Optional[str] = None

The CSS width, e.g. ‘400px’, or ‘100%’

autoclose : bool = True

Whether or not to close the datepicker immediately when a date is selected.

datesdisabled : Optional[list[str]] = None

Which dates should be disabled (in yyyy-mm-dd format).

daysofweekdisabled : Optional[list[int]] = None

Days of the week that should be disabled. Should be a integer vector with values from 0 (Sunday) to 6 (Saturday).

Returns

: Tag

A UI element.

Note

The date format string specifies how the date will be displayed in the browser. It allows the following values:

  • yy: Year without century (12)
  • yyyy: Year with century (2012)
  • mm: Month number, with leading zero (01-12)
  • m: Month number, without leading zero (1-12)
  • M: Abbreviated month name
  • MM: Full month name
  • dd: Day of month with leading zero
  • d: Day of month without leading zero
  • D: Abbreviated weekday name
  • DD: Full weekday name

Notes

Server value

A date object.

See Also

Examples

#| standalone: true
#| components: [editor, viewer]
#| layout: vertical
#| viewerHeight: 400

## file: app.py
from datetime import date

from shiny.express import ui

ui.input_date("date1", "Has default date:", value="2016-02-29")
# Default value is the date in client's time zone
ui.input_date("date2", "Client's current date:")
# value is always yyyy-mm-dd, even if the display format is different
ui.input_date("date3", "Format mm/dd/yy:", value="2016-02-29", format="mm/dd/yy")
# Pass in a Date object
ui.input_date("date4", "Default uses date object:", value=date(2016, 2, 29))
# Use different language and different first day of week
ui.input_date(
    "date5",
    "Language is German and the week starts on Monday:",
    language="ru",
    weekstart=1,
)
# Start with decade view instead of default month view
ui.input_date("date6", "Start Date picker in Decade view:", startview="decade")
# Disable Mondays and Tuesdays.
ui.input_date("date7", "Disable Monday and Tuesday:", daysofweekdisabled=[1, 2])
# Disable specific dates.
ui.input_date(
    "date8",
    "Disable specific dates:",
    value="2016-02-29",
    datesdisabled=["2016-03-01", "2016-03-02"],
)
# Set min and max dates.
ui.input_date(
    "date9",
    "Set min and max dates:",
    value="2016-02-03",
    min="2016-02-01",
    max="2016-02-29",
)
# Set width of the date field
ui.input_date("date10", "Set width of text input:", width="600px")
# Set autoclose to false
ui.input_date("date11", "Auto close is disabled:", autoclose=False)