vael-ui v0.3.10

Forms & Inputs

DatePicker

A text field paired with a calendar popover for picking a date or range.

Install

import { DatePicker } from 'vael-ui'

Playground

import { DatePicker } from 'vael-ui'

<DatePicker selectionMode="single" view="date" placeholder="" :disabled="false" :invalid="false" size="md" locale="en-US" :firstDayOfWeek="0" name="" side="bottom" align="start" :sideOffset="8" :alignOffset="0" closeOnEsc closeOnOutside :forceMount="false" motionCss :showButtonBar="false" :showTime="false" :timeOnly="false" hourFormat="12" :minuteStep="1">DatePicker</DatePicker>

Props

NameTypeDefaultDescription
selectionMode"single" | "range""single"
view"date" | "month" | "year""date"
placeholderstring | undefinedundefined
disabledboolean | undefinedfalse
invalidboolean | undefinedfalse
size"md" | "sm" | "lg""md"
minDateDate | undefinedundefined
maxDateDate | undefinedundefined
disabledDatesCalendarDisabledDates | undefinedundefined
localestring | undefinedundefined
firstDayOfWeeknumber | undefinedundefined
formatOptionsIntl.DateTimeFormatOptions | undefinedundefinedFormats the trigger display. Default: `{ dateStyle: 'medium' }`.
namestring | undefinedundefinedHidden `<input>` mirroring selection as `YYYY-MM-DD` for form post.
side"top" | "right" | "bottom" | "left""bottom"
align"start" | "end" | "center""start"
sideOffsetnumber | undefined8
alignOffsetnumber | undefined0
closeOnEscboolean | undefinedtrue
closeOnOutsideboolean | undefinedtrue
beforeClose((done: () => void) => void) | undefinedundefinedDefers closing (animation gate pattern): called when close is requested, call `done()` to proceed.
forceMountboolean | undefinedfalse
teleportTostring | HTMLElement | undefined"body"
motionCssboolean | undefinedtrue`false` skips popover enter/leave AND Calendar's month-slide transition.
showButtonBarboolean | undefinedfalseBuilt-in Today (single mode only) / Clear buttons below the calendar. Ignored — the `#footer` slot always renders instead — once that slot is provided.
showTimeboolean | undefinedfalseAdds an hour/minute row below the calendar. `single` selection mode only — a range's two endpoints each having their own time isn't supported here. Keeps the popover open on a date pick instead of auto-closing, since there's still time left to set.
timeOnlyboolean | undefinedfalseHides the calendar entirely — just the time row. Implies `showTime`.
hourFormat"12" | "24"undefined`'12'` adds an AM/PM toggle; `'24'` doesn't. Default: resolved from `locale` (or the runtime default) via `Intl`'s own `hour12` resolution — an explicit value always wins.
minuteStepnumber | undefined1Minute increment for the arrow-key/stepper-button adjustments. Default: 1.
uiPartial<{ root: UiPartValue; input: UiPartValue; positioner: UiPartValue; panel: UiPartValue; header: UiPartValue; navButton: UiPartValue; label: UiPartValue; weekdays: UiPartValue; weekday: UiPartValue; grid: UiPartValue; cell: UiPartValue; time: UiPartValue; footer: UiPartValue; }> | undefinedundefined
modelValueDate | CalendarRange | null | undefinednull
openboolean | undefinedfalse

Slots

NameTypeDescription
footeranyReplaces the built-in Today/Clear button bar entirely — shown whenever this slot is provided, regardless of `showButtonBar`.

Events

NameTypeDescription
open-change[value: boolean, details: PopoverOpenChangeDetails]
update:open[value: boolean]
update:modelValue[value: Date | CalendarRange | null]
change[value: Date | CalendarRange | null]
month-change[value: Date]

Exposed

NameTypeDescription
elHTMLElement | null
inputElHTMLInputElement | null
panelElHTMLElement | null
positionerElHTMLElement | null
placementPlacement
positionerStyleRecord<string, string>
isClosingboolean
close() => void
cancelClose() => void