Datepicker
Default
Selected date: None
<script lang="ts">
import { Datepicker, P } from "flowbite-svelte";
let selectedDate = $state<Date | undefined>(undefined);
</script>
<div class="mb-64 md:w-1/2">
<Datepicker bind:value={selectedDate} />
<P class="mt-4">Selected date: {selectedDate ? selectedDate.toLocaleDateString() : "None"}</P>
</div>
Date Range Selection
Selected range: None - None
<script lang="ts">
import { Datepicker, P } from "flowbite-svelte";
let dateRange: { from: Date | undefined; to: Date | undefined } = $state({
from: undefined,
to: undefined
});
</script>
<div class="mb-64 md:w-1/2">
<Datepicker range bind:rangeFrom={dateRange.from} bind:rangeTo={dateRange.to} color="pink" />
<P class="mt-4">
Selected range:
{dateRange.from ? dateRange.from.toLocaleDateString() : "None"} -
{dateRange.to ? dateRange.to.toLocaleDateString() : "None"}
</P>
</div>
Inline Datepicker
Sun
Mon
Tue
Wed
Thu
Fri
Sat
Selected date: None
<script lang="ts">
import { Datepicker, P } from "flowbite-svelte";
let selectedDate = $state<Date | undefined>(undefined);
</script>
<div class="md:w-1/2">
<Datepicker inline bind:value={selectedDate} />
<P class="mt-4">Selected date: {selectedDate ? selectedDate.toLocaleDateString() : "None"}</P>
</div>
Color and classes
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker color="blue" classes={{ polite: "hover:text-blue-700!", dayButton: "hover:text-blue-400", titleVariant: "text-blue-800", monthButton: "text-blue-700" }} title="Select your preferred date" monthBtnSelected="bg-blue-200" />
</div>
Localization
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker locale="fr-FR" />
</div>
Custom Date Format
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker dateFormat={{ year: "numeric", month: "short", day: "2-digit" }} />
</div>
Action Buttons
Selected date: None
Last action:
<script lang="ts">
import { Datepicker, P, type DateOrRange } from "flowbite-svelte";
let selectedDate = $state<Date | undefined>(undefined);
let lastAction = $state<string | undefined>();
function handleClear() {
lastAction = "Cleared";
}
function handleApply(detail: DateOrRange): void {
lastAction = "Applied";
if (detail instanceof Date) {
selectedDate = detail;
}
}
</script>
<div class="mb-64 md:w-1/2">
<Datepicker bind:value={selectedDate} showActionButtons autohide={false} onclear={handleClear} onapply={handleApply} />
<P class="mt-4">Selected date: {selectedDate ? selectedDate.toLocaleDateString() : "None"}</P>
<P class="mt-2">Last action: {lastAction}</P>
</div>
Custom Title
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker title="Select your preferred date" />
</div>
Disabled State
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker disabled />
</div>
Required Field
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker required />
</div>
Custom First Day of Week
<script lang="ts">
import { Datepicker } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker firstDayOfWeek={3} />
</div>
Event Handling
<script lang="ts">
import { Datepicker, type DateOrRange } from "flowbite-svelte";
function handleDateSelect(detail: DateOrRange) {
console.log("Selected date:", detail);
}
</script>
<div class="mb-64 md:w-1/2">
<Datepicker onselect={handleDateSelect} />
</div>
Restricting the selectable date range
Available from: August 4, 2025 to: August 24, 2025
Selected date: None selected
Today: August 14, 2025
Range: 10 days before today to 10 days after today
<script lang="ts">
import { Datepicker, P } from "flowbite-svelte";
let selectedDate = $state<Date | undefined>(undefined);
// Helper function to add/subtract days
function addDays(date: Date, days: number): Date {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
// Calculate dates relative to today
const today = new Date();
const availableFrom = addDays(today, -10); // 10 days ago
const availableTo = addDays(today, 10); // 10 days from now
function formatDate(date: Date): string {
return date.toLocaleDateString("en-US", {
year: "numeric",
month: "long",
day: "numeric"
});
}
</script>
<Datepicker bind:value={selectedDate} {availableFrom} {availableTo} placeholder="Select available date" />
<P class="mt-4">Available from: {formatDate(availableFrom)} to: {formatDate(availableTo)}</P>
<P>Selected date: {selectedDate ? formatDate(selectedDate) : "None selected"}</P>
<!-- Show some context -->
<P class="mt-4 text-sm text-gray-600">
Today: {formatDate(today)}
<br />
Range: 10 days before today to 10 days after today
</P>
Local translation
<script lang="ts">
import { Datepicker, P } from "flowbite-svelte";
</script>
<div class="mb-64 md:w-1/2">
<Datepicker locale="de-DE" translationLocale="en-US" />
</div>
Accessing Datepicker Element with elementRef
<script lang="ts">
import { Datepicker, Button } from "flowbite-svelte";
let datepickerRef: HTMLInputElement | undefined = $state();
let selectedDate: Date | undefined = $state();
</script>
<Datepicker bind:elementRef={datepickerRef} bind:value={selectedDate} placeholder="Select a date" />
<div class="my-4">
<Button onclick={() => datepickerRef?.focus()}>Focus Datepicker</Button>
<Button onclick={() => datepickerRef?.select()}>Select All Text</Button>
<Button onclick={() => datepickerRef?.blur()}>Blur Datepicker</Button>
</div>
Usage & Localization
Datepicker Locale Test
<script lang="ts">
import { Datepicker, P, Label, Select, Button } from "flowbite-svelte";
let value = $state<Date | undefined>(undefined);
let locale = $state("de");
const locales = [
{ value: "en-US", name: "en-US (US)" },
{ value: "en-GB", name: "en-GB (UK)" },
{ value: "de", name: "de (Germany)" },
{ value: "fr", name: "fr (France)" },
{ value: "ja", name: "ja (Japan)" }
];
const handleSubmit = (event: Event) => {
event.preventDefault();
console.log("Selected date:", value ? value.toLocaleDateString(locale) : "None");
};
$effect(() => {
// Only clear if locale is actually changing from a previous value
if (locale) {
value = undefined;
}
});
</script>
<div class="overflow-visible p-4">
<h1 class="mb-4 text-xl font-bold">Datepicker Locale Test</h1>
<form onsubmit={handleSubmit} class="mb-4">
<Label>
Choose locale:
<Select class="mb-4 w-40 rounded p-2" items={locales} bind:value={locale} />
</Label>
<Datepicker bind:value {locale} translationLocale={locale} placeholder="Type a date or use calendar" />
<P class="mt-4">
<strong>Selected Locale:</strong>
{locale}
<br />
<strong>Selected Date:</strong>
{value ? value.toLocaleDateString(locale) : "None"}
</P>
<Button type="submit" class="mt-4">Submit</Button>
</form>
</div>