CalendarView
Edit This PageA calendar view lets a user view and interact with a calendar that they can navigate by month, year, or decade. A user can select a single date or multiple dates.
import { CalendarView } from "fluent-svelte";
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
Usage
Controlling Value
Selections made in the calendar can be controlled using the value
property, which outputs a Date
object or array of Date
objects. When the user clicks an item in the calendar, the value
property is updated to reflect the selection. value
can also be null
or undefined
to indicate no selection or a selection cleared by the user.
This CalendarView will be initialized with a value of March 3, 2020.
<CalendarView value={new Date(2020, 2, 3)} />
You can also use two-way binding to programatically work with the value of the calendar.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
<script>
import { Button, CalendarView } from "fluent-svelte";
let value = new Date(); // The current date
</script>
<CalendarView bind:value />
Current value: {value?.toLocaleDateString()}
<Button on:click={() => (value = null)}>Clear Value</Button>
Multiple Selections
CalendarView can also accept more than one value. To initially select multiple dates, pass an array of Date
objects to the value
property rather than a single Date
.
<CalendarView value={[new Date(2022, 2, 3), new Date(2022, 2, 4)]} />
This will render the calendar with March 3 and 4 selected, but as soon as the user attempts to choose another date, the previous selections will be cleared and value
will be set back to a single date that the user chooses.
To allow the user to pick multiple dates at once, set the multiple
property to true
.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
<CalendarView multiple value={[new Date(2022, 2, 3), new Date(2022, 2, 4)]} />
Minimum and Maximum Values
You can limit the range of dates that can be selected by the user using the min
and max
properties. These properties are both Date
objects representing the earliest and latest dates that can be selected. If the user attempts to click a date outside of the range, the calendar will not allow the selection.
In this example, the user will only be able to select dates in the year of 2020.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
<CalendarView min={new Date(2020, 0, 1)} max={new Date(2020, 11, 31)} />
Localization
Many elements of a calendar need to vary across languages. By default, the calendar automatically localizes itself based on the browser’s navigator.language
using the Intl.DateTimeFormat
API.
If you only want the calendar to render in a specific locale, you can pass in a locale string to the locale
property.
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
<CalendarView locale="ja-JP" />
Many places additionally have different starting days of the week. The JavaScript Date
object starts it’s weeks on Sunday, but you can customize the starting day of the calendar’s week using the weekStart
property. weekStart
accepts a number between 0 and 6 (zero is sunday, six is saturday).
Mon | Tue | Wed | Thu | Fri | Sat | Sun |
---|---|---|---|---|---|---|
<!-- Week will start on Monday (1) instead of Sunday (0). -->
<CalendarView weekStart={1} />
“Blackout” Dates
In some cases, it might be desirable to prevent the user from selecting a specific day (or days) in the calendar. This can be done by passing in an array of dates to the blackout
property.
In this example, the user will be able to select all dates except for March 7, 2022 and March 9, 2022.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
<CalendarView
value={new Date(2022, 2, 1)}
blackout={[new Date(2022, 2, 7), new Date(2022, 2, 9)]}
/>
Views
To aid with navigating long ranges of dates, a user can click the CalendarView’s main header to switch the view. This lets the user quickly navigate through days, months, or years.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
You can control the current view that the calendar is in using the view
property, which can be set to either days
, months
, or years
. Setting the view
property will not prevent the user from manually changing the view by clicking the header.
For example, this will start the calendar in the months
view:
<CalendarView view="months" />
Item Headers
You can choose display indicator labels for the first day of a month, or first month of a year (depending on the current view) by setting the headers
property.
- When in days view, the first day of a given month will have a header with the month’s name above it.
- When in months view, the first month of a given year will have the year labeled above it.
Sun | Mon | Tue | Wed | Thu | Fri | Sat |
---|---|---|---|---|---|---|
<CalendarView headers />
No Headers | Headers |
---|---|
Component API
API docs automatically generated by sveld and vite-plugin-sveld.Props
Name | Type | Default | Description |
---|---|---|---|
locale |
any |
undefined |
Locale code used for specifying the language of the calendar. If unset, the locale will be automatically inferred from `navigator.language`. |
multiple |
boolean |
false |
Determines if multiple dates can be manually selected by the user. |
headers |
boolean |
false |
Controls whether header text will be shown above items representing the first day of a month or the first month of a year. |
value |
any |
null |
The currently selected calendar date(s). |
blackout |
any |
undefined |
Array of specifically excluded dates that cannot be selected by the user. |
min |
any |
undefined |
The minimum date that can be manually selected by the user. |
max |
any |
undefined |
The maximum date that can be manually selected by the user. |
view |
string |
"days" |
The selection view that the calendar will start in. Views can be manually changed by the user when clicking the calendar's header. |
weekStart |
number |
0 |
Number representing the day that the calendar week starts on. 0 is sunday, 6 is saturday. |
element |
null | HTMLDivElement |
null |
Obtains a bound DOM reference to the calendar's outer container element. |
Slots
NoneEvents
Forwarded Events
NoneDispatched Events
Name | Detail |
---|---|
change |
None |