Skip to main content

DatePicker

The DatePicker component provides an intuitive calendar interface for selecting dates or date ranges. It supports multiple formats, locales, and validation.

Overview

DatePicker provides a complete date selection solution with:

  • Single date and date range selection
  • Multiple date formats
  • Locale support
  • Min/max date constraints
  • Calendar open/close events
  • Built-in validation

Basic Usage

{
uuid: "my-datepicker",
name: "birth_date",
component_type: "datepicker",
input: {
label: { type: "string", value: "Date of Birth" },
placeholder: { type: "string", value: "Select date" },
format: { type: "string", value: "DD/MM/YYYY" }
},
event: {
onDateChange: `
$selectedDate = EventData.value;
`
}
}

Component Inputs

PropertyTypeDefaultDescription
valuestring''Current date value
labelstring''Label text
placeholderstring''Placeholder text
helperstring''Helper text below input
formatstring'DD/MM/YYYY'Date display format
localestring'en'Locale for date formatting
sizestring'medium'Size: 'small', 'medium', 'large'
variantstring'default'Variant: 'default', 'outlined', 'filled'
statestring'default'State: 'default', 'error', 'warning', 'success'
placementstring'auto'Calendar placement: 'auto', 'bottom', 'top'
disabledbooleanfalseDisable the datepicker
requiredbooleanfalseMark as required
rangebooleanfalseEnable date range selection
minDatestring-Minimum selectable date
maxDatestring-Maximum selectable date

Events

onDateChange

Triggered: When a date is selected

EventData:

{
value: string // Selected date value
}

Example:

event: {
onDateChange: `
$selectedDate = EventData.value;

// Calculate age if birth date
const birthDate = new Date(EventData.value);
const today = new Date();
const age = today.getFullYear() - birthDate.getFullYear();
$userAge = age;
`
}

onRangeChange

Triggered: When a date range is selected (range mode)

EventData:

{
startDate: string // Start date
endDate: string // End date
value: string // Combined value
}

Example:

event: {
onRangeChange: `
$startDate = EventData.startDate;
$endDate = EventData.endDate;

// Calculate duration
const start = new Date(EventData.startDate);
const end = new Date(EventData.endDate);
const days = Math.ceil((end - start) / (1000 * 60 * 60 * 24));
$durationDays = days;
`
}

onCalendarOpen / onCalendarClose

Triggered: When calendar opens/closes

event: {
onCalendarOpen: `$calendarVisible = true;`,
onCalendarClose: `$calendarVisible = false;`
}

onValidation

Triggered: When validation occurs

EventData:

{
isValid: boolean // Validation result
message: string // Validation message
}

Common Patterns

Date Range Booking

{
component_type: "datepicker",
input: {
label: { type: "string", value: "Select booking dates" },
range: { type: "boolean", value: true }
},
inputHandlers: {
minDate: `return new Date().toISOString().split('T')[0];`
},
event: {
onRangeChange: `
$checkIn = EventData.startDate;
$checkOut = EventData.endDate;

const start = new Date(EventData.startDate);
const end = new Date(EventData.endDate);
const nights = Math.ceil((end - start) / (1000 * 60 * 60 * 24));
$totalNights = nights;
$totalPrice = nights * $pricePerNight;
`
}
}

See Also