Syncfusion React Calendars
Comprehensive guide for implementing Syncfusion React Calendar components including Calendar, DatePicker, DateRangePicker, DateTimePicker, and TimePicker. Covers installation, data binding, date/time selection, range selection, formatting, localization, masking, validation, customization, templates, accessibility, and controlled component patterns in React applications.
- Skill ID
- syncfusion/react-ui-components-skills/syncfusion-react-calendars
- Publisher
- syncfusion
- Repository
- react-ui-components-skills
- Installs
- 0
- Files
- 38
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
syncfusion/react-ui-components-skills/syncfusion-react-calendarsInstalls these files- SKILL.md
- references/calendar-accessibility-globalization.md
- references/calendar-api-reference.md
- references/calendar-calendar-views.md
- references/calendar-date-selection.md
- references/calendar-events-methods.md
- references/calendar-getting-started-react.md
- references/calendar-styling-customization.md
- references/datepicker-accessibility-and-keyboard.md
- references/datepicker-customization-and-styling.md
- references/datepicker-date-formats-and-input.md
- references/datepicker-date-masking-and-strict-mode.md
- references/datepicker-date-range-and-validation.md
- references/datepicker-date-views-and-navigation.md
- references/datepicker-getting-started.md
- references/datepicker-globalization-and-localization.md
- references/daterangepicker-advanced-patterns.md
- references/daterangepicker-api-reference.md
- references/daterangepicker-customization-and-styling.md
- references/daterangepicker-date-range-formatting.md
- references/daterangepicker-date-range-selection.md
- references/daterangepicker-events-and-methods.md
- references/daterangepicker-getting-started.md
- references/datetimepicker-accessibility.md
- references/datetimepicker-advanced-features.md
- references/datetimepicker-api-reference.md
- references/datetimepicker-date-time-selection.md
- references/datetimepicker-events-and-methods.md
- references/datetimepicker-getting-started.md
- references/datetimepicker-styling-and-customization.md
- references/datetimepicker-time-configuration.md
- references/timepicker-advanced-patterns.md
- references/timepicker-api-reference.md
- references/timepicker-customization-and-styling.md
- references/timepicker-events-and-methods.md
- references/timepicker-getting-started.md
- references/timepicker-time-format-and-display.md
- references/timepicker-time-range-and-selection.md
What this skill tells the agent
Implementing Syncfusion React Calendars
Calendar
The Syncfusion React CalendarComponent is a highly customizable calendar UI control that allows users to select single or multiple dates. It supports multiple views (Month, Year, Decade), navigation, week numbers, disabled dates, custom day cell rendering, localization, RTL support, and full accessibility (WCAG 2.2 compliant).
Quick Start (React)
Install
npm install @syncfusion/ej2-react-calendars @syncfusion/ej2-baseBasic Example (App.jsx)
import React, { useState } from 'react';
import { CalendarComponent } from '@syncfusion/ej2-react-calendars';
import '@syncfusion/ej2-base/styles/material3.css';
import '@syncfusion/ej2-calendars/styles/material3.css';
export default function App() {
const [value, setValue] = useState(new Date());
const onChange = (args) => setValue(args.value || args);
return (
<div style={{ padding: 20 }}>
<h3>Select a date</h3>
<CalendarComponent value={value} change={onChange} />
<p>Selected: {value.toDateString()}</p>
</div>
);
}Notes:
- Use the
changeevent to sync selected date to React state. - Import theme CSS once (global or component-level) to style the control.
Guidance & Patterns
- Controlled component: keep source-of-truth in React state and update
valueviachangeevent. - Multi-selection: use
isMultiSelection={true}withvaluesprop andaddDate()/removeDate()methods. - Programmatic navigation: use a
refto callnavigateTo(view, date)— both arguments are required (see references/getting-started-react.md). - Date ranges: for range selection, use DateRangePicker (separate component). The Calendar itself does not have a built-in range highlight mode.
- Accessibility: use wrapper elements with
role="region"and a separatearia-liveregion for announcements — these are not direct Calendar props. - Week numbers: enable with
weekNumber={true}(the correct prop name).
References
Navigate to the reference that matches your current task:
Getting Started
📄 Read: references/getting-started-react.md
- Installation and npm setup
- React component examples
- CSS/theme imports
- Using refs and methods
Date Selection
📄 Read: references/date-selection.md
- Single date selection
- Multiple dates and ranges
- Min/max constraints
- Disabling specific dates
Calendar Views
📄 Read: references/calendar-views.md
- Month, Year, Decade views
- Navigating between views
- Initial and depth controls
- Programmatic navigation
Styling & Customization
📄 Read: references/styling-customization.md
- Theme selection and switching
- CSS class customization
- Custom day cell rendering
- RTL and responsive design
Events & Methods
📄 Read: references/events-methods.md
- Event handlers (change, created, renderDayCell)
- Using refs and imperative methods
- Advanced renderDayCell hook
- Event tracking patterns
Accessibility & Globalization
📄 Read: references/accessibility-globalization.md
- WCAG 2.1 compliance
- Keyboard navigation
- ARIA attributes
- Locale support and RTL
- Testing for accessibility
API Reference (Quick Lookup)
📄 Read: references/api-reference.md
- Props, events, methods at a glance
- Common enums and types
- Link to upstream docs
Troubleshooting & Tips
- Styles not applied: confirm CSS imports point to
node_modules/@syncfusion/ej2-calendars/styles/and are loaded before component styles. - React state mismatch: use the
valueprop andchangeevent to keep React state in sync — do not rely on framework-specific bindings. - Multiple date selection not working: ensure
isMultiSelection={true}and usevalues(notvalue) for the initial array. - `navigateTo` not working: the method requires two arguments —
navigateTo(view: CalendarView, date: Date). - "Cannot find module": run
npm install @syncfusion/ej2-react-calendars @syncfusion/ej2-baseand confirmpackage.json. - Week numbers not showing: use
weekNumber={true}(notshowWeekNumber).
DatePicker
The Syncfusion React DatePickerComponent provides an intuitive input control with a calendar popup for selecting a single date. It features flexible formatting, masked input, min/max date validation, strict mode, multiple input formats, custom day rendering, localization, and seamless integration as a controlled React component.
Component Overview
The DatePicker is a Syncfusion React component for date selection with powerful features:
- Calendar popup - Visual date selection with navigation
- Flexible formatting - Display and input formats with pattern support
- Masked input -
enableMaskfor segment-by-segment date entry withmaskPlaceholder - Range validation - Min/max dates with
strictModeautomatic correction - Multiple views - Month, year, and decade views via
startanddepthproperties - Day cell customization - Disable weekends, highlight special dates via
renderDayCellevent - Full globalization - 150+ cultures, RTL (
enableRtl), locale-specific formatting,firstDayOfWeek - WCAG 2.2 compliant - Full accessibility with keyboard navigation and ARIA attributes
- Form ready - Controlled components, React hooks, form validation integration
- Programmatic control -
show(),hide(),focusIn(),focusOut(),navigateTo(),currentView()
Complete API Summary
Key Properties
| Property | Type | Default | Description | |
|---|---|---|---|---|
value | Date | null | Selected date | |
min | Date | 1900-01-01 | Minimum selectable date | |
max | Date | 2099-12-31 | Maximum selectable date | |
format | string \ | FormatObject | null | Display format (e.g., "dd/MM/yyyy") |
inputFormats | string[] \ | FormatObject[] | null | Accepted input formats array |
placeholder | string | null | Placeholder text for the input | |
enabled | boolean | true | Enable or disable the component | |
readonly | boolean | false | Readonly state | |
allowEdit | boolean | true | Allow editing the input textbox | |
strictMode | boolean | false | Auto-correct out-of-range dates | |
showClearButton | boolean | true | Show/hide the clear button | |
showTodayButton | boolean | true | Show/hide today button | |
start | CalendarView | Month | Initial view: "Month", "Year", "Decade" | |
depth | CalendarView | Month | Deepest navigation level | |
enableMask | boolean | false | Enable masked date input | |
maskPlaceholder | MaskPlaceholderModel | {...} | Segment placeholders for masked input | |
enableRtl | boolean | false | Right-to-left rendering | |
locale | string | '' | Culture/locale code | |
firstDayOfWeek | number | 0 | First day of week (0=Sunday) | |
weekNumber | boolean | false | Show week numbers | |
weekRule | WeekRule | FirstDay | Rule for first week of year | |
calendarMode | CalendarType | Gregorian | Calendar type (Gregorian or Islamic) | |
dayHeaderFormat | DayHeaderFormats | Short | Day name format in header | |
floatLabelType | FloatLabelType | Never | Floating label behavior | |
fullScreenMode | boolean | false | Full screen popup on mobile | |
openOnFocus | boolean | false | Open popup on input focus | |
serverTimezoneOffset | number | null | Server timezone offset | |
cssClass | string | null | Custom CSS class | |
htmlAttributes | { [key: string]: string } | {} | Additional HTML attributes | |
keyConfigs | { [key: string]: string } | null | Custom key action mappings |
More from syncfusion
Use this skill in a project
Open any RiverX project, search the Skills panel for syncfusion/react-ui-components-skills/syncfusion-react-calendars, and install it in one click.
