https://github.com/ebarooni/capacitor-calendar
The Capacitor Calendar Plugin enables full calendar functionality on iOS and Android, with added reminder support for iOS devices.
https://github.com/ebarooni/capacitor-calendar
android angular calendar capacitor capacitor-plugin eventkit ionic ios kotlin native reminders swift typescript
Last synced: 19 days ago
JSON representation
The Capacitor Calendar Plugin enables full calendar functionality on iOS and Android, with added reminder support for iOS devices.
- Host: GitHub
- URL: https://github.com/ebarooni/capacitor-calendar
- Owner: ebarooni
- License: mit
- Created: 2024-02-02T22:13:27.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-13T21:50:37.000Z (about 1 year ago)
- Last Synced: 2024-04-14T05:02:33.859Z (about 1 year ago)
- Topics: android, angular, calendar, capacitor, capacitor-plugin, eventkit, ionic, ios, kotlin, native, reminders, swift, typescript
- Language: TypeScript
- Homepage: https://capacitor-calendar.pages.dev
- Size: 5.2 MB
- Stars: 3
- Watchers: 1
- Forks: 3
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-capacitor - Capacitor Calendar - A plugin for interacting with calendar and reminders. (Other plugins)
- awesome-capacitorjs - @ebarooni/capacitor-calendar - Capacitor plugin for interacting with calendar and reminders. (Plugins / Community Plugins)
README
![]()
A capacitor plugin for managing calendar events on iOS and Android, with reminders support on iOS.## Table of Contents
- [Installation](#installation)
- [Demo](#demo)
- [Setup](#setup)
- [Documentation](#documentation)
- [Changelog](#changelog)
- [API](#api)
- [Contributing](#contributing)
- [License](#license)## Installation
```bash
npm install @ebarooni/capacitor-calendar
npx cap sync
```## Demo
| iOS 18 | Android 15 |
| :-----------------------------: | :---------------------------------: |
|  |  |## Setup
This plugin requires additional platform-specific configuration. Follow the official guides:
- **iOS:** [Migrating to the Latest Calendar Access Levels](https://developer.apple.com/documentation/technotes/tn3152-migrating-to-the-latest-calendar-access-levels)
- **Android:** [Calendar Provider User Permissions](https://developer.android.com/identity/providers/calendar-provider#manifest)## Documentation
For comprehensive usage examples, detailed explanations, and API references, check out:
- **[Online documentation](https://ebarooni.github.io/capacitor-calendar/)**
- **[Type definitions & examples](src/definitions.ts)**## Changelog
See [CHANGELOG.md](CHANGELOG.md) for the latest updates and release history.
> [!NOTE]
> Version 7.1.0 introduces breaking changes.## API
- [`checkPermission(...)`](#checkpermission)
- [`checkAllPermissions()`](#checkallpermissions)
- [`requestPermission(...)`](#requestpermission)
- [`requestAllPermissions()`](#requestallpermissions)
- [`requestWriteOnlyCalendarAccess()`](#requestwriteonlycalendaraccess)
- [`requestReadOnlyCalendarAccess()`](#requestreadonlycalendaraccess)
- [`requestFullCalendarAccess()`](#requestfullcalendaraccess)
- [`requestFullRemindersAccess()`](#requestfullremindersaccess)
- [`createEventWithPrompt(...)`](#createeventwithprompt)
- [`modifyEventWithPrompt(...)`](#modifyeventwithprompt)
- [`createEvent(...)`](#createevent)
- [`modifyEvent(...)`](#modifyevent)
- [`deleteEventsById(...)`](#deleteeventsbyid)
- [`deleteEvent(...)`](#deleteevent)
- [`deleteEventWithPrompt(...)`](#deleteeventwithprompt)
- [`listEventsInRange(...)`](#listeventsinrange)
- [`commit()`](#commit)
- [`selectCalendarsWithPrompt(...)`](#selectcalendarswithprompt)
- [`fetchAllCalendarSources()`](#fetchallcalendarsources)
- [`listCalendars()`](#listcalendars)
- [`getDefaultCalendar()`](#getdefaultcalendar)
- [`openCalendar(...)`](#opencalendar)
- [`createCalendar(...)`](#createcalendar)
- [`deleteCalendar(...)`](#deletecalendar)
- [`modifyCalendar(...)`](#modifycalendar)
- [`fetchAllRemindersSources()`](#fetchallreminderssources)
- [`openReminders()`](#openreminders)
- [`getDefaultRemindersList()`](#getdefaultreminderslist)
- [`getRemindersLists()`](#getreminderslists)
- [`createReminder(...)`](#createreminder)
- [`deleteRemindersById(...)`](#deleteremindersbyid)
- [`deleteReminder(...)`](#deletereminder)
- [`modifyReminder(...)`](#modifyreminder)
- [`getReminderById(...)`](#getreminderbyid)
- [`getRemindersFromLists(...)`](#getremindersfromlists)
- [`deleteReminderWithPrompt(...)`](#deletereminderwithprompt)
- [Interfaces](#interfaces)
- [Type Aliases](#type-aliases)
- [Enums](#enums)### checkPermission(...)
```typescript
checkPermission(options: { scope: CalendarPermissionScope; }) => Promise<{ result: PermissionState; }>
```Retrieves the current permission state for a given scope.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| **`options`** |{ scope: CalendarPermissionScope; }
|**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### checkAllPermissions()
```typescript
checkAllPermissions() => Promise<{ result: CheckAllPermissionsResult; }>
```Retrieves the current state of all permissions.
**Returns:**
Promise<{ result: CheckAllPermissionsResult; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestPermission(...)
```typescript
requestPermission(options: { scope: CalendarPermissionScope; }) => Promise<{ result: PermissionState; }>
```Requests permission for a given scope.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------- |
| **`options`** |{ scope: CalendarPermissionScope; }
|**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestAllPermissions()
```typescript
requestAllPermissions() => Promise<{ result: RequestAllPermissionsResult; }>
```Requests permission for all calendar and reminder permissions.
**Returns:**
Promise<{ result: CheckAllPermissionsResult; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### requestWriteOnlyCalendarAccess()
```typescript
requestWriteOnlyCalendarAccess() => Promise<{ result: PermissionState; }>
```Requests write access to the calendar.
**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android, iOS
---
### requestReadOnlyCalendarAccess()
```typescript
requestReadOnlyCalendarAccess() => Promise<{ result: PermissionState; }>
```Requests read access to the calendar.
**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android
---
### requestFullCalendarAccess()
```typescript
requestFullCalendarAccess() => Promise<{ result: PermissionState; }>
```Requests read and write access to the calendar.
**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** Android, iOS
---
### requestFullRemindersAccess()
```typescript
requestFullRemindersAccess() => Promise<{ result: PermissionState; }>
```Requests read and write access to the reminders.
**Returns:**
Promise<{ result: PermissionState; }>
**Since:** 5.4.0
**Platform:** iOS
---
### createEventWithPrompt(...)
```typescript
createEventWithPrompt(options?: CreateEventWithPromptOptions | undefined) => Promise<{ id: string | null; }>
```Opens the system calendar interface to create a new event.
On Android always returns `null`.
Fetch the events to find the ID of the newly created event.| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** |CreateEventWithPromptOptions
|**Returns:**
Promise<{ id: string | null; }>
**Since:** 0.1.0
**Platform:** Android, iOS
---
### modifyEventWithPrompt(...)
```typescript
modifyEventWithPrompt(options: ModifyEventWithPromptOptions) => Promise<{ result: EventEditAction | null; }>
```Opens a system calendar interface to modify an event.
On Android always returns `null`.| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** |ModifyEventWithPromptOptions
|**Returns:**
Promise<{ result: EventEditAction | null; }>
**Since:** 6.6.0
**Platform:** Android, iOS
---
### createEvent(...)
```typescript
createEvent(options: CreateEventOptions) => Promise<{ id: string; }>
```Creates an event in the calendar.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** |CreateEventOptions
|**Returns:**
Promise<{ id: string; }>
**Since:** 0.4.0
**Platform:** iOS, Android
---
### modifyEvent(...)
```typescript
modifyEvent(options: ModifyEventOptions) => Promise
```Modifies an event.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** |ModifyEventOptions
|**Since:** 6.6.0
**Platform:** Android, iOS
---
### deleteEventsById(...)
```typescript
deleteEventsById(options: DeleteEventsByIdOptions) => Promise<{ result: DeleteEventsByIdResult; }>
```Deletes multiple events.
| Param | Type |
| ------------- | --------------------------------------------------------------------------- |
| **`options`** |DeleteEventsByIdOptions
|**Returns:**
Promise<{ result: DeleteEventsByIdResult; }>
**Since:** 0.11.0
**Platform:** Android, iOS
---
### deleteEvent(...)
```typescript
deleteEvent(options: DeleteEventOptions) => Promise
```Deletes an event.
| Param | Type |
| ------------- | ----------------------------------------------------------------- |
| **`options`** |DeleteEventOptions
|**Since:** 7.1.0
**Platform:** Android, iOS
---
### deleteEventWithPrompt(...)
```typescript
deleteEventWithPrompt(options: DeleteEventWithPromptOptions) => Promise<{ deleted: boolean; }>
```Opens a dialog to delete an event.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** |DeleteEventWithPromptOptions
|**Returns:**
Promise<{ deleted: boolean; }>
**Since:** 7.1.0
**Platform:** Android, iOS
---
### listEventsInRange(...)
```typescript
listEventsInRange(options: ListEventsInRangeOptions) => Promise<{ result: CalendarEvent[]; }>
```Retrieves the events within a date range.
| Param | Type |
| ------------- | ----------------------------------------------------------------------------- |
| **`options`** |ListEventsInRangeOptions
|**Returns:**
Promise<{ result: CalendarEvent[]; }>
**Since:** 0.10.0
**Platform:** Android, iOS
---
### commit()
```typescript
commit() => Promise
```Save the changes to the calendar.
**Since:** 7.1.0
**Platform:** iOS
---
### selectCalendarsWithPrompt(...)
```typescript
selectCalendarsWithPrompt(options?: SelectCalendarsWithPromptOptions | undefined) => Promise<{ result: Calendar[]; }>
```Opens a system interface to choose one or multiple calendars.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------------------- |
| **`options`** |SelectCalendarsWithPromptOptions
|**Returns:**
Promise<{ result: Calendar[]; }>
**Since:** 0.2.0
**Platform:** iOS
---
### fetchAllCalendarSources()
```typescript
fetchAllCalendarSources() => Promise<{ result: CalendarSource[]; }>
```Retrieves a list of calendar sources.
**Returns:**
Promise<{ result: CalendarSource[]; }>
**Since:** 6.6.0
**Platform:** iOS
---
### listCalendars()
```typescript
listCalendars() => Promise<{ result: Calendar[]; }>
```Retrieves a list of all available calendars.
**Returns:**
Promise<{ result: Calendar[]; }>
**Since:** 7.1.0
**Platform:** Android, iOS
---
### getDefaultCalendar()
```typescript
getDefaultCalendar() => Promise<{ result: Calendar | null; }>
```Retrieves the default calendar.
**Returns:**
Promise<{ result: Calendar | null; }>
**Since:** 0.3.0
**Platform:** Android, iOS
---
### openCalendar(...)
```typescript
openCalendar(options?: OpenCalendarOptions | undefined) => Promise
```Opens the calendar app.
| Param | Type |
| ------------- | ------------------------------------------------------------------- |
| **`options`** |OpenCalendarOptions
|**Since:** 7.1.0
**Platform:** Android, iOS
---
### createCalendar(...)
```typescript
createCalendar(options: CreateCalendarOptions) => Promise<{ id: string; }>
```Creates a calendar.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |CreateCalendarOptions
|**Returns:**
Promise<{ id: string; }>
**Since:** 5.2.0
**Platform:** Android, iOS
---
### deleteCalendar(...)
```typescript
deleteCalendar(options: DeleteCalendarOptions) => Promise
```Deletes a calendar by id.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |DeleteCalendarOptions
|**Since:** 5.2.0
**Platform:** Android, iOS
---
### modifyCalendar(...)
```typescript
modifyCalendar(options: ModifyCalendarOptions) => Promise
```Modifies a calendar with options.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |ModifyCalendarOptions
|**Since:** 7.2.0
**Platform:** Android, iOS
---
### fetchAllRemindersSources()
```typescript
fetchAllRemindersSources() => Promise<{ result: CalendarSource[]; }>
```Retrieves a list of calendar sources.
**Returns:**
Promise<{ result: CalendarSource[]; }>
**Since:** 6.6.0
**Platform:** iOS
---
### openReminders()
```typescript
openReminders() => Promise
```Opens the reminders app.
**Since:** 7.1.0
**Platform:** iOS
---
### getDefaultRemindersList()
```typescript
getDefaultRemindersList() => Promise<{ result: RemindersList | null; }>
```Retrieves the default reminders list.
**Returns:**
Promise<{ result: Calendar | null; }>
**Since:** 7.1.0
**Platform:** iOS
---
### getRemindersLists()
```typescript
getRemindersLists() => Promise<{ result: RemindersList[]; }>
```Retrieves all available reminders lists.
**Returns:**
Promise<{ result: Calendar[]; }>
**Since:** 7.1.0
**Platform:** iOS
---
### createReminder(...)
```typescript
createReminder(options: CreateReminderOptions) => Promise<{ id: string; }>
```Creates a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |CreateReminderOptions
|**Returns:**
Promise<{ id: string; }>
**Since:** 0.5.0
**Platform:** iOS
---
### deleteRemindersById(...)
```typescript
deleteRemindersById(options: DeleteRemindersByIdOptions) => Promise<{ result: DeleteRemindersByIdResult; }>
```Deletes multiple reminders.
| Param | Type |
| ------------- | --------------------------------------------------------------------------------- |
| **`options`** |DeleteRemindersByIdOptions
|**Returns:**
Promise<{ result: DeleteRemindersByIdResult; }>
**Since:** 5.3.0
**Platform:** iOS
---
### deleteReminder(...)
```typescript
deleteReminder(options: DeleteReminderOptions) => Promise
```Deletes a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |DeleteReminderOptions
|**Since:** 7.1.0
**Platform:** iOS
---
### modifyReminder(...)
```typescript
modifyReminder(options: ModifyReminderOptions) => Promise
```Modifies a reminder.
| Param | Type |
| ------------- | ----------------------------------------------------------------------- |
| **`options`** |ModifyReminderOptions
|**Since:** 6.7.0
**Platform:** iOS
---
### getReminderById(...)
```typescript
getReminderById(options: GetReminderByIdOptions) => Promise<{ result: Reminder | null; }>
```Retrieve a reminder by ID.
| Param | Type |
| ------------- | ------------------------------------------------------------------------- |
| **`options`** |GetReminderByIdOptions
|**Returns:**
Promise<{ result: Reminder | null; }>
**Since:** 7.1.0
**Platform:** iOS
---
### getRemindersFromLists(...)
```typescript
getRemindersFromLists(options: GetRemindersFromListsOptions) => Promise<{ result: Reminder[]; }>
```Retrieves reminders from multiple lists.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------- |
| **`options`** |GetRemindersFromListsOptions
|**Returns:**
Promise<{ result: Reminder[]; }>
**Since:** 5.3.0
**Platform:** iOS
---
### deleteReminderWithPrompt(...)
```typescript
deleteReminderWithPrompt(options: DeleteReminderWithPromptOptions) => Promise<{ deleted: boolean; }>
```Opens a dialog to delete a reminder.
| Param | Type |
| ------------- | ------------------------------------------------------------------------------------------- |
| **`options`** |DeleteReminderWithPromptOptions
|**Returns:**
Promise<{ deleted: boolean; }>
**Since:** 7.2.0
**Platform:** iOS
---
### Interfaces
#### CreateEventWithPromptOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----- | ------------ |
| **`title`** |string
| | 0.1.0 | Android, iOS |
| **`calendarId`** |string
| | 0.1.0 | iOS |
| **`location`** |string
| | 0.1.0 | Android, iOS |
| **`startDate`** |number
| | 0.1.0 | Android, iOS |
| **`endDate`** |number
| | 0.1.0 | Android, iOS |
| **`isAllDay`** |boolean
| | 0.1.0 | Android, iOS |
| **`alerts`** |number[]
| Sets alerts before or after the start of the event in minutes. On iOS only 2 alerts are supported. | 7.1.0 | iOS |
| **`url`** |string
| | 0.1.0 | iOS |
| **`description`** |string
| | 7.1.0 | Android, iOS |
| **`availability`** |EventAvailability
| | 7.1.0 | Android, iOS |
| **`invitees`** |string[]
| An array of emails to invite. | 7.1.0 | Android |#### ModifyEventWithPromptOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | ----- | ------------ |
| **`title`** |string
| | 0.1.0 | Android, iOS |
| **`calendarId`** |string
| | 0.1.0 | iOS |
| **`location`** |string
| | 0.1.0 | Android, iOS |
| **`startDate`** |number
| | 0.1.0 | Android, iOS |
| **`endDate`** |number
| | 0.1.0 | Android, iOS |
| **`isAllDay`** |boolean
| | 0.1.0 | Android, iOS |
| **`alerts`** |number[]
| Sets alerts before or after the start of the event in minutes. On iOS only 2 alerts are supported. | 7.1.0 | iOS |
| **`url`** |string
| | 0.1.0 | iOS |
| **`description`** |string
| | 7.1.0 | Android, iOS |
| **`availability`** |EventAvailability
| | 7.1.0 | Android, iOS |
| **`invitees`** |string[]
| An array of emails to invite. | 7.1.0 | Android |
| **`id`** |string
| The ID of the event to be modified. | 7.1.0 | Android, iOS |#### CreateEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ------------------ | --------------------------------------------------------------- | -------------------------------------------------------------------------- | ----------------- | ----- | ------------ |
| **`title`** |string
| | | 0.4.0 | Android, iOS |
| **`calendarId`** |string
| | | 0.1.0 | Android, iOS |
| **`location`** |string
| | | 0.1.0 | Android, iOS |
| **`startDate`** |number
| | | 0.1.0 | Android, iOS |
| **`endDate`** |number
| | | 0.1.0 | Android, iOS |
| **`isAllDay`** |boolean
| | | 0.1.0 | Android, iOS |
| **`alerts`** |number[]
| | | 7.1.0 | Android, iOS |
| **`url`** |string
| | | 0.1.0 | iOS |
| **`description`** |string
| | | 7.1.0 | Android, iOS |
| **`availability`** |EventAvailability
| | | 7.1.0 | Android, iOS |
| **`organizer`** |string
| Email of the event organizer. | | 7.1.0 | Android |
| **`color`** |string
| | | 7.1.0 | Android |
| **`duration`** |string
| Duration of the event in RFC2445 format. | | 7.1.0 | Android |
| **`commit`** |boolean
| Whether to save immediately (`true`) or batch changes for later (`false`). |true
| 7.1.0 | iOS |
| **`attendees`** |EventGuest[]
| The event guests. | | 7.1.0 | Android |#### EventGuest
| Prop | Type | Since |
| ----------- | ------------------- | ----- |
| **`name`** |string
| 7.1.0 |
| **`email`** |string
| 7.1.0 |#### ModifyEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ------------------ | --------------------------------------------------------------- | ---------------------------------------- | --------------------------------- | ----- | ------------ |
| **`id`** |string
| The ID of the event to be modified. | | 7.1.0 | Android, iOS |
| **`title`** |string
| | | 0.4.0 | Android, iOS |
| **`calendarId`** |string
| | | 0.1.0 | Android, iOS |
| **`location`** |string
| | | 0.1.0 | Android, iOS |
| **`startDate`** |number
| | | 0.1.0 | Android, iOS |
| **`endDate`** |number
| | | 0.1.0 | Android, iOS |
| **`isAllDay`** |boolean
| | | 0.1.0 | Android, iOS |
| **`alerts`** |number[]
| | | 7.1.0 | Android, iOS |
| **`url`** |string
| | | 0.1.0 | iOS |
| **`description`** |string
| | | 7.1.0 | Android, iOS |
| **`availability`** |EventAvailability
| | | 7.1.0 | Android, iOS |
| **`organizer`** |string
| Email of the event organizer. | | 7.1.0 | Android |
| **`color`** |string
| | | 7.1.0 | Android |
| **`duration`** |string
| Duration of the event in RFC2445 format. | | 7.1.0 | Android |
| **`attendees`** |EventGuest[]
| The event guests. | | 7.1.0 | Android |
| **`span`** |EventSpan
| The span of modifications. |EventSpan.THIS_EVENT
| | iOS |#### DeleteEventsByIdResult
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`deleted`** |string[]
| 7.1.0 |
| **`failed`** |string[]
| 7.1.0 |#### DeleteEventsByIdOptions
| Prop | Type | Description | Default | Since | Platform |
| ---------- | ----------------------------------------------- | --------------------- | --------------------------------- | ----- | -------- |
| **`ids`** |string[]
| | | 7.1.0 | |
| **`span`** |EventSpan
| The span of deletion. |EventSpan.THIS_EVENT
| | iOS |#### DeleteEventOptions
| Prop | Type | Description | Default | Since | Platform |
| ---------- | ----------------------------------------------- | --------------------- | --------------------------------- | ----- | -------- |
| **`id`** |string
| | | 7.1.0 | |
| **`span`** |EventSpan
| The span of deletion. |EventSpan.THIS_EVENT
| | iOS |#### DeleteEventWithPromptOptions
| Prop | Type | Description | Default | Since | Platform |
| ----------------------- | ----------------------------------------------- | ----------------------------------- | --------------------------------- | ----- | ------------ |
| **`id`** |string
| | | 7.1.0 | |
| **`span`** |EventSpan
| The span of deletion. |EventSpan.THIS_EVENT
| | iOS |
| **`title`** |string
| Title of the dialog. | | 7.1.0 | Android, iOS |
| **`message`** |string
| Message of the dialog. | | 7.1.0 | Android, iOS |
| **`confirmButtonText`** |string
| Text to show on the confirm button. |'Delete'
| 7.1.0 | Android, iOS |
| **`cancelButtonText`** |string
| Text to show on the cancel button. |'Cancel'
| 7.1.0 | Android, iOS |#### CalendarEvent
| Prop | Type | Since | Platform |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------ |
| **`id`** |string
| 7.1.0 | Android, iOS |
| **`title`** |string
| 7.1.0 | Android, iOS |
| **`calendarId`** |string \| null
| 7.1.0 | Android, iOS |
| **`location`** |string \| null
| 7.1.0 | Android, iOS |
| **`startDate`** |number
| 7.1.0 | Android, iOS |
| **`endDate`** |number
| 7.1.0 | Android, iOS |
| **`isAllDay`** |boolean
| 7.1.0 | Android, iOS |
| **`alerts`** |number[]
| 7.1.0 | Android, iOS |
| **`url`** |string \| null
| 7.1.0 | iOS |
| **`description`** |string \| null
| 7.1.0 | Android, iOS |
| **`availability`** |EventAvailability \| null
| 7.1.0 | Android, iOS |
| **`organizer`** |string \| null
| 7.1.0 | Android, iOS |
| **`color`** |string \| null
| 7.1.0 | Android, iOS |
| **`duration`** |string \| null
| 7.1.0 | Android |
| **`isDetached`** |boolean \| null
| 7.1.0 | iOS |
| **`birthdayContactIdentifier`** |string \| null
| 7.1.0 | iOS |
| **`status`** |EventStatus \| null
| 7.1.0 | Android, iOS |
| **`creationDate`** |number \| null
| 7.1.0 | iOS |
| **`lastModifiedDate`** |number \| null
| 7.1.0 | iOS |
| **`attendees`** |{ email: string \| null; name: string \| null; role: AttendeeRole \| null; status: AttendeeStatus \| null; type: AttendeeType \| null; }[]
| 7.1.0 | Android, iOS |
| **`timezone`** |string \| null
| 7.1.0 | Android, iOS |#### ListEventsInRangeOptions
| Prop | Type | Description | Since |
| ---------- | ------------------- | ------------------------------ | ----- |
| **`from`** |number
| The timestamp in milliseconds. | 7.1.0 |
| **`to`** |number
| The timestamp in milliseconds. | 7.1.0 |#### Calendar
| Prop | Type | Description | Since | Platform |
| -------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------ | ----- | ------------ |
| **`id`** |string
| | 7.1.0 | Android, iOS |
| **`title`** |string
| | 7.1.0 | Android, iOS |
| **`internalTitle`** |string \| null
| Internal name of the calendar (`CalendarContract.Calendars.NAME`). | 7.1.0 | Android |
| **`color`** |string
| | 7.1.0 | Android, iOS |
| **`isImmutable`** |boolean \| null
| | 7.1.0 | iOS |
| **`allowsContentModifications`** |boolean \| null
| | 7.1.0 | iOS |
| **`type`** |CalendarType \| null
| | 7.1.0 | iOS |
| **`isSubscribed`** |boolean \| null
| | 7.1.0 | iOS |
| **`source`** |CalendarSource \| null
| | 7.1.0 | iOS |
| **`visible`** |boolean \| null
| Indicates if the events from this calendar should be shown. | 7.1.0 | Android |
| **`accountName`** |string \| null
| The account under which the calendar is registered. | 7.1.0 | Android |
| **`ownerAccount`** |string \| null
| The owner of the calendar. | 7.1.0 | Android |
| **`maxReminders`** |number \| null
| Maximum number of reminders allowed per event. | 7.1.0 | Android |
| **`location`** |string \| null
| | 7.1.0 | Android |#### CalendarSource
| Prop | Type | Since |
| ----------- | ----------------------------------------------------------------- | ----- |
| **`type`** |CalendarSourceType
| 7.1.0 |
| **`id`** |string
| 7.1.0 |
| **`title`** |string
| 7.1.0 |#### SelectCalendarsWithPromptOptions
| Prop | Type | Description | Default | Since |
| ------------------ | ----------------------------------------------------------------------------------- | -------------------------- | ------------------------------------------------------ | ----- |
| **`displayStyle`** |CalendarChooserDisplayStyle
| |CalendarChooserDisplayStyle.ALL_CALENDARS
| 7.1.0 |
| **`multiple`** |boolean
| Allow multiple selections. |false
| 7.1.0 |#### OpenCalendarOptions
| Prop | Type | Default | Since |
| ---------- | ------------------- | ----------------------- | ----- |
| **`date`** |number
|Date.now()
| 7.1.0 |#### CreateCalendarOptions
| Prop | Type | Description | Since | Platform |
| ------------------ | ------------------- | ---------------------------------------------------------- | ----- | ------------ |
| **`title`** |string
| | 5.2.0 | Android, iOS |
| **`color`** |string
| The color of the calendar. Should be provided on Android. | 5.2.0 | Android, iOS |
| **`sourceId`** |string
| | 5.2.0 | iOS |
| **`accountName`** |string
| Only needed on Android. Typically set to an email address. | 7.1.0 | Android |
| **`ownerAccount`** |string
| Only needed on Android. Typically set to an email address. | 7.1.0 | Android |#### DeleteCalendarOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** |string
| 7.1.0 |#### ModifyCalendarOptions
| Prop | Type | Since | Platform |
| ----------- | ------------------- | ----- | ------------ |
| **`id`** |string
| 7.2.0 | Android, iOS |
| **`title`** |string
| 7.2.0 | Android, iOS |
| **`color`** |string
| 7.2.0 | Android, iOS |#### CreateReminderOptions
| Prop | Type | Since |
| -------------------- | --------------------------------------------------------- | ----- |
| **`title`** |string
| 7.1.0 |
| **`listId`** |string
| 7.1.0 |
| **`priority`** |number
| 7.1.0 |
| **`isCompleted`** |boolean
| 7.1.0 |
| **`startDate`** |number
| 7.1.0 |
| **`dueDate`** |number
| 7.1.0 |
| **`completionDate`** |number
| 7.1.0 |
| **`notes`** |string
| 7.1.0 |
| **`url`** |string
| 7.1.0 |
| **`location`** |string
| 7.1.0 |
| **`recurrence`** |RecurrenceRule
| 7.1.0 |
| **`alerts`** |number[]
| 7.1.0 |#### RecurrenceRule
| Prop | Type | Description | Since |
| --------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ----- |
| **`frequency`** |RecurrenceFrequency
| | 7.1.0 |
| **`interval`** |number
| How often it repeats (e.g. 1 for every occurrence, 2 for every second occurrence). | 7.1.0 |
| **`end`** |number
| Timestamp of when the recurrence ends. | 7.1.0 |#### DeleteRemindersByIdResult
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`deleted`** |string[]
| 7.1.0 |
| **`failed`** |string[]
| 7.1.0 |#### DeleteRemindersByIdOptions
| Prop | Type | Since |
| --------- | --------------------- | ----- |
| **`ids`** |string[]
| 7.1.0 |#### DeleteReminderOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** |string
| 7.1.0 |#### ModifyReminderOptions
| Prop | Type | Since |
| -------------------- | --------------------------------------------------------- | ----- |
| **`id`** |string
| 7.1.0 |
| **`title`** |string
| 7.1.0 |
| **`listId`** |string
| 7.1.0 |
| **`priority`** |number
| 7.1.0 |
| **`isCompleted`** |boolean
| 7.1.0 |
| **`startDate`** |number
| 7.1.0 |
| **`dueDate`** |number
| 7.1.0 |
| **`completionDate`** |number
| 7.1.0 |
| **`notes`** |string
| 7.1.0 |
| **`url`** |string
| 7.1.0 |
| **`location`** |string
| 7.1.0 |
| **`recurrence`** |RecurrenceRule
| 7.1.0 |
| **`alerts`** |number[]
| 7.1.0 |#### Reminder
| Prop | Type | Since |
| -------------------- | ----------------------------- | ----- |
| **`id`** |string
| 7.1.0 |
| **`title`** |string \| null
| 7.1.0 |
| **`listId`** |string \| null
| 7.1.0 |
| **`isCompleted`** |boolean
| 7.1.0 |
| **`priority`** |number \| null
| 7.1.0 |
| **`notes`** |string \| null
| 7.1.0 |
| **`location`** |string \| null
| 7.1.0 |
| **`url`** |string \| null
| 7.1.0 |
| **`startDate`** |number \| null
| 7.1.0 |
| **`dueDate`** |number \| null
| 7.1.0 |
| **`completionDate`** |number \| null
| 7.1.0 |
| **`recurrence`** |RecurrenceRule[]
| 7.1.0 |
| **`alerts`** |number[]
| 7.1.0 |#### GetReminderByIdOptions
| Prop | Type | Since |
| -------- | ------------------- | ----- |
| **`id`** |string
| 7.1.0 |#### GetRemindersFromListsOptions
| Prop | Type | Since |
| ------------- | --------------------- | ----- |
| **`listIds`** |string[]
| 7.1.0 |#### DeleteReminderWithPromptOptions
| Prop | Type | Description | Default | Since |
| ----------------------- | ------------------- | ----------------------------------- | --------------------- | ----- |
| **`id`** |string
| | | 7.2.0 |
| **`title`** |string
| Title of the dialog. | | 7.2.0 |
| **`message`** |string
| Message of the dialog. | | 7.2.0 |
| **`confirmButtonText`** |string
| Text to show on the confirm button. |'Delete'
| 7.2.0 |
| **`cancelButtonText`** |string
| Text to show on the cancel button. |'Cancel'
| 7.2.0 |### Type Aliases
#### PermissionState
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'
#### CheckAllPermissionsResult
Record< CalendarPermissionScope, PermissionState >
#### Record
Construct a type with a set of properties K of type T
{
[P in K]: T;
}#### RequestAllPermissionsResult
#### EventEditAction
"canceled" | "saved" | "deleted"
#### RemindersList
### Enums
#### CalendarPermissionScope
| Members | Value | Description | Since | Platform |
| --------------------- | ----------------------------- | ------------------------------------------------------------ | ----- | ------------ |
| **`READ_CALENDAR`** |"readCalendar"
| Permission required for reading calendar events. | 7.1.0 | Android, iOS |
| **`READ_REMINDERS`** |"readReminders"
| Permission required for reading reminders. | 7.1.0 | iOS |
| **`WRITE_CALENDAR`** |"writeCalendar"
| Permission required for adding or modifying calendar events. | 7.1.0 | Android, iOS |
| **`WRITE_REMINDERS`** |"writeReminders"
| Permission required for adding or modifying reminders. | 7.1.0 | iOS |#### EventAvailability
| Members | Value | Since | Platform |
| ------------------- | --------------- | ----- | ------------ |
| **`NOT_SUPPORTED`** |-1
| 7.1.0 | iOS |
| **`BUSY`** | | 7.1.0 | Android, iOS |
| **`FREE`** | | 7.1.0 | Android, iOS |
| **`TENTATIVE`** | | 7.1.0 | Android, iOS |
| **`UNAVAILABLE`** | | 7.1.0 | iOS |#### EventSpan
| Members | Since |
| ---------------------------- | ----- |
| **`THIS_EVENT`** | 7.1.0 |
| **`THIS_AND_FUTURE_EVENTS`** | 7.1.0 |#### EventStatus
| Members | Value | Since | Platform |
| --------------- | ------------------------ | ----- | ------------ |
| **`NONE`** |"none"
| 7.1.0 | iOS |
| **`CONFIRMED`** |"confirmed"
| 7.1.0 | Android, iOS |
| **`TENTATIVE`** |"tentative"
| 7.1.0 | Android, iOS |
| **`CANCELED`** |"canceled"
| 7.1.0 | Android, iOS |#### AttendeeRole
| Members | Value | Since | Platform |
| --------------------- | ----------------------------- | ----- | ------------ |
| **`UNKNOWN`** |"unknown"
| 7.1.0 | Android, iOS |
| **`REQUIRED`** |"required"
| 7.1.0 | iOS |
| **`OPTIONAL`** |"optional"
| 7.1.0 | iOS |
| **`CHAIR`** |"chair"
| 7.1.0 | iOS |
| **`NON_PARTICIPANT`** |"nonParticipant"
| 7.1.0 | Android, iOS |
| **`ATTENDEE`** |"attendee"
| 7.1.0 | Android |
| **`ORGANIZER`** |"organizer"
| 7.1.0 | Android |
| **`PERFORMER`** |"performer"
| 7.1.0 | Android |
| **`SPEAKER`** |"speaker"
| 7.1.0 | Android |#### AttendeeStatus
| Members | Value | Since | Platform |
| ---------------- | ------------------------ | ----- | ------------ |
| **`NONE`** |"none"
| 7.1.0 | Android |
| **`ACCEPTED`** |"accepted"
| 7.1.0 | Android, iOS |
| **`DECLINED`** |"declined"
| 7.1.0 | Android, iOS |
| **`INVITED`** |"invited"
| 7.1.0 | Android |
| **`UNKNOWN`** |"unknown"
| 7.1.0 | iOS |
| **`PENDING`** |"pending"
| 7.1.0 | iOS |
| **`TENTATIVE`** |"tentative"
| 7.1.0 | Android, iOS |
| **`DELEGATED`** |"delegated"
| 7.1.0 | iOS |
| **`COMPLETED`** |"completed"
| 7.1.0 | iOS |
| **`IN_PROCESS`** |"inProcess"
| 7.1.0 | iOS |#### AttendeeType
| Members | Value | Since | Platform |
| -------------- | ----------------------- | ----- | ------------ |
| **`UNKNOWN`** |"unknown"
| 7.1.0 | Android, iOS |
| **`PERSON`** |"person"
| 7.1.0 | iOS |
| **`ROOM`** |"room"
| 7.1.0 | iOS |
| **`RESOURCE`** |"resource"
| 7.1.0 | Android, iOS |
| **`GROUP`** |"group"
| 7.1.0 | iOS |
| **`REQUIRED`** |"required"
| 7.1.0 | Android |
| **`NONE`** |"none"
| 7.1.0 | Android |
| **`OPTIONAL`** |"optional"
| 7.1.0 | Android |#### CalendarType
| Members | Since |
| ------------------ | ----- |
| **`LOCAL`** | 7.1.0 |
| **`CAL_DAV`** | 7.1.0 |
| **`EXCHANGE`** | 7.1.0 |
| **`SUBSCRIPTION`** | 7.1.0 |
| **`BIRTHDAY`** | 7.1.0 |#### CalendarSourceType
| Members | Since |
| ---------------- | ----- |
| **`LOCAL`** | 7.1.0 |
| **`EXCHANGE`** | 7.1.0 |
| **`CAL_DAV`** | 7.1.0 |
| **`MOBILE_ME`** | 7.1.0 |
| **`SUBSCRIBED`** | 7.1.0 |
| **`BIRTHDAYS`** | 7.1.0 |#### CalendarChooserDisplayStyle
| Members | Since |
| ----------------------------- | ----- |
| **`ALL_CALENDARS`** | 0.2.0 |
| **`WRITABLE_CALENDARS_ONLY`** | 0.2.0 |#### RecurrenceFrequency
| Members | Since |
| ------------- | ----- |
| **`DAILY`** | 7.1.0 |
| **`WEEKLY`** | 7.1.0 |
| **`MONTHLY`** | 7.1.0 |
| **`YEARLY`** | 7.1.0 |## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
## License
This project is licensed under the **MIT License**. See [LICENSE](LICENSE) for details.