Back to Element Plus

DatePicker

docs/en-US/component/date-picker.md

2.13.720.3 KB
Original Source

DatePicker

Use Date Picker for date input.

Enter Date

Basic date picker measured by 'day'.

:::demo The measurement is determined by the type attribute. You can enable quick options via shortcuts property. The disabled date is set by disabledDate, which is a function.

date-picker/enter-date

:::

Other measurements

You can choose week, month, year or multiple dates by extending the standard date picker component.

:::demo

date-picker/other-measurements

:::

Date Range

Picking a date range is supported.

:::demo When in range mode, the left and right panels are linked by default. If you want the two panels to switch current months independently, you can use the unlink-panels attribute.

date-picker/date-range

:::

Month Range

Picking a month range is supported.

:::demo When in range mode, the left and right panels are linked by default. If you want the two panels to switch current years independently, you can use the unlink-panels attribute.

date-picker/month-range

:::

Year Range ^(2.8.0)

Picking a year range is supported.

:::demo When in range mode, the left and right panels are linked by default. If you want the two panels to switch years independently, you can use the unlink-panels attribute.

date-picker/year-range

:::

Default Value

If user hasn't picked a date, shows today's calendar by default. You can use default-value to set another date. Its value should be parsable by new Date().

If type is daterange, default-value sets the left side calendar.

:::demo

date-picker/default-value

:::

Date Formats

Use format to control displayed text's format in the input box. Use value-format to control binding value's format.

By default, the component accepts and emits a Date object.

Check the list here of all available formats of Day.js.

:::warning

Pay attention to capitalization

:::

:::demo

date-picker/date-formats

:::

Default time for start date and end date

When picking a date range, you can assign the time part for start date and end date.

:::demo By default, the time part of start date and end date are both 00:00:00. Setting default-time can change their time respectively. It accepts an array of up to two Date objects. The first string sets the time for the start date, and the second for the end date.

date-picker/default-time

:::

Set custom content of prefix

The content of prefix can be customized.

:::demo Setting prefix-icon to component which you import form other .vue or generated by the render function.

date-picker/custom-prefix-icon

:::

Custom content

The content of cell can be customized, in scoped-slot you can get the cell data. Note that the custom content structure should be consistent with the default structure, otherwise style misalignment may occur.

:::demo

date-picker/custom-content

:::

Custom icon ^(2.8.0)

Custom icons available with slots.

:::demo

date-picker/custom-icon

:::

For data details, please refer:

ts
interface DateCell {
  column: number
  customClass: string | undefined
  disabled: boolean
  end: boolean
  inRange: boolean
  row: number
  selected: Dayjs | undefined
  isCurrent: boolean | undefined
  isSelected: boolean
  renderText: string | undefined
  start: boolean
  text: number
  timestamp: number
  date: Date
  dayjs: Dayjs
  type: 'normal' | 'today' | 'week' | 'next-month' | 'prev-month'
}

Localization

The default locale of is English, if you need to use other languages, please check Internationalization

Note, date time locale (month name, first day of the week ...) are also configured in localization.

API

Attributes

NameDescriptionTypeDefault
model-value / v-modelbinding value, if it is an range picker, the length of the array should be 2^[number] / ^[string] / ^[Date] / ^[array]number[] | string[] | Date[]''
readonlywhether DatePicker is read only^[boolean]false
disabledwhether DatePicker is disabled^[boolean]false
sizesize of Input^[enum]'' | 'large' | 'default' | 'small'
editablewhether the input is editable^[boolean]true
clearablewhether to show clear button^[boolean]true
placeholderplaceholder in non-range mode^[string]''
start-placeholderplaceholder for the start date in range mode^[string]
end-placeholderplaceholder for the end date in range mode^[string]
typetype of the picker^[enum]'year' | 'years' |'month' | 'months' | 'date' | 'dates' | 'datetime' | 'week' | 'datetimerange' | 'daterange' | 'monthrange' | 'yearrange'date
formatformat of the displayed value in the input box^[string] see date formatsYYYY-MM-DD
popper-classcustom class name for DatePicker's dropdown^[string]
popper-stylecustom style for DatePicker's dropdown^[string] / ^[object]
popper-optionsCustomized popper option see more at popper.js^[object]Partial<PopperOptions>{}
range-separatorrange separator^[string]'-'
default-valueoptional, default date of the calendar^[object]Date | [Date, Date]
default-timeoptional, the time value to use when selecting date range^[object]Date | [Date, Date]
value-formatoptional, format of binding value. If not specified, the binding value will be a Date object^[string] see date formats
idsame as id in native input^[string] / ^[array][string, string]
namesame as name in native input^[string] / ^[array][string, string]''
unlink-panelsunlink two date-panels in range-picker^[boolean]false
prefix-iconcustom prefix icon component. By default, if the value of type is TimeLikeType, the value is Clock, else is Calendar^[string] / ^[object]Component''
clear-iconcustom clear icon component^[string] / ^[object]ComponentCircleClose
validate-eventwhether to trigger form validation^[boolean]true
disabled-datea function determining if a date is disabled with that date as its parameter. Should return a Boolean^[Function](data: Date) => boolean
shortcutsan object array to set shortcut options^[array]Array<{ text: string, value: Date | Function }>[]
cell-class-nameset custom className^[Function](data: Date) => string
teleportedwhether date-picker dropdown is teleported to the body^[boolean]true
empty-values ^(2.7.0)empty values of component, see config-provider^[array]
value-on-clear ^(2.7.0)clear return value, see config-provider^[string] / ^[number] / ^[boolean] / ^[Function]
fallback-placements ^(2.8.4)list of possible positions for Tooltip popper.js^[array]Placement[]['bottom', 'top', 'right', 'left']
placement ^(2.8.4)position of dropdownPlacementbottom
show-footer ^(2.10.5)whether to show footer^[boolean]true
show-confirm ^(2.11.0)whether to show the confirm button^[boolean]true
show-week-number ^(2.10.3)show the week number besides the week^[boolean]false
automatic-dropdown ^(2.11.4)this prop decides if the date picker panel pops up when the input is focused. (The default value will be set to false in version 3.0)^[boolean]true

Events

NameDescriptionType
changetriggers when user confirms the value or click outside^[Function](val: typeof v-model) => void
blurtriggers when Input blurs^[Function](e: FocusEvent) => void
focustriggers when Input focuses^[Function](e: FocusEvent) => void
clear ^(2.7.7)triggers when a clear button is clicked^[Function]() => void
calendar-changetriggers when the calendar selected date is changed. Only for range^[Function](val: [Date, null | Date]) => void
panel-changetriggers when the navigation button click.^[Function](date: Date | [Date, Date], mode: 'month' | 'year', view?: string) => void
visible-changetriggers when the DatePicker's dropdown appears/disappears^[Function](visibility: boolean) => void

Slots

NameDescription
defaultcustom cell content
range-separatorcustom range separator content
prev-month ^(2.8.0)prev month icon
next-month ^(2.8.0)next month icon
prev-year ^(2.8.0)prev year icon
next-year ^(2.8.0)next year icon

Exposes

NameDescriptionType
focusfocus the DatePicker component^[Function]() => void
blur ^(2.8.7)blur the DatePicker component^[Function]() => void
handleOpen ^(2.2.16)open the DatePicker popper^[Function]() => void
handleClose ^(2.2.16)close the DatePicker popper^[Function]() => void

Type Declarations

<details> <summary>Show declarations</summary>
ts
import type { Options as PopperOptions } from '@popperjs/core'

type TimeLikeType = 'datetime' | 'datetimerange'

type Placement =
  | 'top'
  | 'top-start'
  | 'top-end'
  | 'bottom'
  | 'bottom-start'
  | 'bottom-end'
  | 'left'
  | 'left-start'
  | 'left-end'
  | 'right'
  | 'right-start'
  | 'right-end'
</details>