Single Date + Time
Default booking style picker with time selection and clear title label.
Show setup code
pick("#demo-single", {
enableTime: true,
dateFormat: "Y-m-d H:i",
calendarTitle: "Select a date",
announceChanges: true
});
Tip: These controls change CSS variables live so you can inspect what a11y_datetime looks like in different design systems.
Single, range, multiple, and locale basics for general date/time usage.
Default booking style picker with time selection and clear title label.
pick("#demo-single", {
enableTime: true,
dateFormat: "Y-m-d H:i",
calendarTitle: "Select a date",
announceChanges: true
});
German locale with day-month-year formatting and 24h time.
pick("#demo-locale-de", {
locale: "de",
enableTime: true,
time_24hr: true,
dateFormat: "d.m.Y H:i",
calendarTitle: "Termin wählen",
announceChanges: true
});
French locale with localized month/day names and compact datetime format.
pick("#demo-locale-fr", {
locale: "fr",
enableTime: true,
time_24hr: true,
dateFormat: "d/m/Y H:i",
calendarTitle: "Choisir une date",
announceChanges: true
});
Japanese locale example for date/time input with locale-aware labels.
pick("#demo-locale-ja", {
locale: "ja",
enableTime: true,
time_24hr: true,
dateFormat: "Y/m/d H:i",
calendarTitle: "日付を選択",
announceChanges: true
});
Check-in / check-out flow with three visible months for faster range selection.
pick("#demo-range", {
mode: "range",
showMonths: 3,
dateFormat: "Y-m-d",
calendarTitle: "Select a date range",
announceChanges: true
});
Useful for blackout dates, campaign days, or flexible attendance planning.
pick("#demo-multiple", {
mode: "multiple",
dateFormat: "Y-m-d",
conjunction: ", ",
calendarTitle: "Select dates",
announceChanges: true
});
Time-only flows, stepped wheels, weekday business windows, and precise timestamps.
Compact time chooser for appointments, calls, and shift start windows.
pick("#demo-time", {
enableTime: true,
noCalendar: true,
dateFormat: "H:i",
calendarTitle: "Select a time",
announceChanges: true
});
Apple-like split time selection with fixed 15 minute steps, accessible on desktop and mobile.
pick("#demo-time-wheel", {
enableTime: true,
minuteIncrement: 15,
dateFormat: "Y-m-d H:i",
calendarTitle: "Select date and stepped time",
announceChanges: true
});
Compact stepped time popover without AM/PM, using a 24 hour clock.
pick("#demo-time-wheel-24", {
enableTime: true,
time_24hr: true,
minuteIncrement: 15,
dateFormat: "Y-m-d H:i",
calendarTitle: "Select date and stepped time (24h)",
announceChanges: true
});
Define time limits by weekday, for example Monday to Friday 08:00-17:00 and Saturday 10:00-14:00.
pick("#demo-business-hours", {
enableTime: true,
dateFormat: "Y-m-d H:i",
defaultDate: "2026-07-06 09:00",
timeRules: [
{ days: [1, 2, 3, 4, 5], from: "08:00", to: "17:00" },
{ days: [6], from: "10:00", to: "14:00" }
],
calendarTitle: "Business hours schedule",
announceChanges: true
});
Monday-Friday 08:00-17:00, Saturday 10:00-14:00. Sunday is disabled in this example.
pick("#demo-business-hours-de", {
locale: "de",
enableTime: true,
time_24hr: true,
dateFormat: "d.m.Y H:i",
timeRules: [
{ days: [1, 2, 3, 4, 5], from: "08:00", to: "17:00" },
{ days: [6], from: "10:00", to: "14:00" }
],
calendarTitle: "Termine innerhalb der Oeffnungszeiten",
announceChanges: true
});
Scheduler preset: month/year wheel, small future window, and weekday office hours.
pick("#demo-appointment", {
enableTime: true,
dateFormat: "Y-m-d H:i",
monthYearWheel: true,
yearRange: { past: 1, future: 2 },
yearWheelManualInput: true,
minuteIncrement: 15,
timeRules: [
{ days: [1, 2, 3, 4, 5], from: "08:00", to: "17:00" }
],
minDate: "today",
calendarTitle: "Appointment booking",
announceChanges: true
});
Advanced picker with week numbers, 24h clock, and second-level precision.
pick("#demo-precision", {
enableTime: true,
enableSeconds: true,
time_24hr: true,
weekNumbers: true,
dateFormat: "Y-m-d H:i:S",
calendarTitle: "Precise date and time"
});
Month/year wheel, preset ranges, and plugin-driven confirmation and week selection.
Wheel-style month/year chooser with configurable year range and optional manual year input.
pick("#demo-month-year-wheel", {
dateFormat: "Y-m-d",
monthYearWheel: true,
yearRange: { past: 10, future: 10 },
yearWheelManualInput: true,
calendarTitle: "Month and year wheel",
announceChanges: true
});
Month/year wheel with a birthdate range: current year back to 100 years, no future dates.
pick("#demo-birthday", {
dateFormat: "Y-m-d",
monthYearWheel: true,
yearRange: { past: 100, future: 0 },
yearWheelManualInput: true,
maxDate: "today",
calendarTitle: "Birth date",
announceChanges: true
});
Example with an explicit confirm action before the picker closes.
pick("#demo-confirm", {
enableTime: true,
dateFormat: "Y-m-d H:i",
calendarTitle: "Confirm date and time",
announceChanges: true,
plugins: [plugins_confirmDatePlugin.default({
confirmText: "Confirm ",
showAlways: true,
theme: "light"
})]
});
Toggle optional UI behavior for titlebar, close button, and initial keyboard day focus.
pick("#demo-optional", {
dateFormat: "Y-m-d",
calendarTitle: "Optional feature demo",
showTitleBar: true,
showCloseButton: true,
initialDayFocus: "today",
announceChanges: true
});
Constrain date range and disable non-business days for scheduling workflows.
pick("#demo-limits", {
minDate: "today",
maxDate: new Date().fp_incr(30),
disable: [
function (date) {
return date.getDay() === 0 || date.getDay() === 6;
}
],
calendarTitle: "Business day booking"
});
Store machine format while showing a user-friendly date string in the UI.
pick("#demo-alt", {
altInput: true,
altFormat: "l, d F Y",
dateFormat: "Y-m-d",
defaultDate: "today",
calendarTitle: "Human friendly date"
});
Pick an entire calendar week with hover preview and week number output.
pick("#demo-weekselect", {
weekNumbers: true,
plugins: [plugins_weekSelect.default()],
calendarTitle: "Select a week",
announceChanges: true
});
Input constraints, disabled dates, and display-focused alternatives.
Always-visible calendar for dashboards, kiosks, or booking sidebars.
pick("#demo-inline", {
inline: true,
dateFormat: "Y-m-d",
defaultDate: "today",
calendarTitle: "Inline planning"
});
Keyboard: focus input, press Enter to open, Tab through controls, Arrow keys move days/months, Enter/Space selects, Esc closes.
General-purpose UI with neutral surfaces and medium contrast.
--a11y-dt-day-bg / --a11y-dt-month-bg
Airy typography and lower visual noise for content-heavy products.
--a11y-dt-font-size / --a11y-dt-radius
Stronger borders and day contrast for demanding accessibility baselines.
--a11y-dt-day-fg / --a11y-dt-calendar-border
Rams-inspired reduction: calm neutrals, clear hierarchy, minimal visual noise.
--a11y-dt-calendar-bg / --a11y-dt-selected-bg
All variations are done without changing picker internals, only through configuration and CSS variables.
This demo highlights core accessibility behavior and provides direct shortcuts for quick keyboard testing.
Month/date updates are announced through aria-live when announceChanges is active.
Time and month/year popovers keep Tab focus inside until Done, Enter, or Escape.
timeRules can restrict time windows and disable weekdays without a matching rule.
Motion and contrast can be adapted without code changes using variables and presets.
Shortcuts are active outside text inputs. Each action is also announced in a hidden live region.