ebarooni / capacitor-calendar

The Capacitor Calendar Plugin enables full calendar functionality on iOS and Android, with added reminder support for iOS devices.
https://capacitor-calendar.pages.dev
MIT License
21 stars 7 forks source link
android angular calendar capacitor capacitor-plugin eventkit ionic ios kotlin native reminders swift typescript

capacitor-calendar-logo
The Capacitor Calendar Plugin enables full calendar functionality on iOS and Android, with added reminder support for iOS devices.

https://capacitor-calendar.pages.dev

Documentation · Capacitor Compatibility · Deployment Targets


Table of Contents

Installation

To use this package, follow the instructions for installing either the stable or development release. Stable releases are recommended for production, while development releases provide access to the latest features and fixes which are still under development.

Stable

The stable releases are published to the npm package registry.

Capacitor 6

npm install @ebarooni/capacitor-calendar@latest
npx cap sync

Capacitor 5

[!IMPORTANT]
This plugin no longer receives updates for Capacitor v5 and only supports the latest version.

npm install @ebarooni/capacitor-calendar@^5
npx cap sync

Development

Development releases are published to the GitHub package registry. These releases are automatically generated from the latest state of the `develop branch every time a pull request is merged into it.

[!WARNING] Development releases are not recommended for production use as they may contain untested or experimental changes.

Setup

Create an .npmrc file and place it in the root of your project with the following content:

//npm.pkg.github.com/:_authToken=$GITHUB_PAT
@ebarooni:registry=https://npm.pkg.github.com
always-auth=true

Replace $GITHUB_PAT with your own personal access token with at least read:packages scope.

Install

npm install @ebarooni/capacitor-calendar
npx cap sync

Demo (click for details)

iOS 17 Android 14

On iOS, readCalendar permission is not needed when you a

re creating an event using the native prompt. The video is just for showing the functionality, otherwise the createEventWithPrompt method works without the readCalendar authorization.

Permissions

To be able to use the plugin, you will need to add the required usage descriptions to your app. The required platform-specific usage descriptions can be found below:

📋 API

- [`checkPermission(...)`](#checkpermission) - [`checkAllPermissions()`](#checkallpermissions) - [`requestPermission(...)`](#requestpermission) - [`requestAllPermissions()`](#requestallpermissions) - [`createEventWithPrompt(...)`](#createeventwithprompt) - [`selectCalendarsWithPrompt(...)`](#selectcalendarswithprompt) - [`listCalendars()`](#listcalendars) - [`getDefaultCalendar()`](#getdefaultcalendar) - [`createEvent(...)`](#createevent) - [`getDefaultRemindersList()`](#getdefaultreminderslist) - [`getRemindersLists()`](#getreminderslists) - [`createReminder(...)`](#createreminder) - [`openCalendar(...)`](#opencalendar) - [`openReminders()`](#openreminders) - [`listEventsInRange(...)`](#listeventsinrange) - [`deleteEventsById(...)`](#deleteeventsbyid) - [`createCalendar(...)`](#createcalendar) - [`deleteCalendar(...)`](#deletecalendar) - [`getRemindersFromLists(...)`](#getremindersfromlists) - [`deleteRemindersById(...)`](#deleteremindersbyid) - [`requestWriteOnlyCalendarAccess()`](#requestwriteonlycalendaraccess) - [`requestReadOnlyCalendarAccess()`](#requestreadonlycalendaraccess) - [`requestFullCalendarAccess()`](#requestfullcalendaraccess) - [`requestFullRemindersAccess()`](#requestfullremindersaccess) - [`modifyEventWithPrompt(...)`](#modifyeventwithprompt) - [`modifyEvent(...)`](#modifyevent) - [`fetchAllCalendarSources()`](#fetchallcalendarsources) - [`fetchAllRemindersSources()`](#fetchallreminderssources) - [`modifyReminder(...)`](#modifyreminder) - [Interfaces](#interfaces) - [Type Aliases](#type-aliases) - [Enums](#enums)

📚 Documentation

For comprehensive explanations, usage examples, and additional information, please refer to the following resources:

💙 Contributions

[!NOTE] Thank you for your interest in contributing to the project! At the moment, the focus is on reaching the first major release. Until then, the contributions will not be accepted. This approach allows to set a solid foundation and maintain consistency throughout the development process.

Community input is highly valued, and you are encouraged to engage with the project by providing feedback and suggestions. Feel free to open issues for bugs you've discovered or enhancements you'd like to see.

Stay tuned for updates. Looking forward to collaborating with you in the future once contributions are opened up!