diff --git a/.changeset/rotten-birds-build.md b/.changeset/rotten-birds-build.md
new file mode 100644
index 0000000000..8ba9248165
--- /dev/null
+++ b/.changeset/rotten-birds-build.md
@@ -0,0 +1,7 @@
+---
+'example-app': minor
+'@backstage/plugin-microsoft-calendar': patch
+---
+
+created new plugin @backstage/plugin-microsoft-calendar and added it to plugins directory
+updated example-app homepage to show microsoft-calendar widget.
diff --git a/plugins/microsoft-calendar/dev/index.tsx b/plugins/microsoft-calendar/dev/index.tsx
index 18c5e8c08d..f2189ba3bc 100644
--- a/plugins/microsoft-calendar/dev/index.tsx
+++ b/plugins/microsoft-calendar/dev/index.tsx
@@ -16,12 +16,48 @@
import React from 'react';
import { createDevApp } from '@backstage/dev-utils';
import { microsoftCalendarPlugin, MicrosoftCalendar } from '../src/plugin';
+import { microsoftCalendarApiRef } from '../src';
+import responseMock from './mock.json';
+import { microsoftAuthApiRef } from '@backstage/core-plugin-api';
+import { Content, Page } from '@backstage/core-components';
+import { Grid } from '@material-ui/core';
createDevApp()
.registerPlugin(microsoftCalendarPlugin)
+ .registerApi({
+ api: microsoftAuthApiRef,
+ deps: {},
+ factory: () =>
+ ({
+ async getAccessToken() {
+ return Promise.resolve('token');
+ },
+ } as unknown as typeof microsoftAuthApiRef.T),
+ })
+ .registerApi({
+ api: microsoftCalendarApiRef,
+ deps: {},
+ factory: () =>
+ ({
+ async getCalendars() {
+ return Promise.resolve(responseMock.calendars);
+ },
+ async getEvents() {
+ return Promise.resolve(responseMock.events);
+ },
+ } as unknown as typeof microsoftCalendarApiRef.T),
+ })
.addPage({
- element: ,
- title: 'Root Page',
+ element: (
+
+
+
+
+
+
+
+ ),
+ title: 'Microsoft-Calendar Plugin Demo',
path: '/microsoft-calendar',
})
.render();
diff --git a/plugins/microsoft-calendar/dev/mock.json b/plugins/microsoft-calendar/dev/mock.json
new file mode 100644
index 0000000000..b305e187eb
--- /dev/null
+++ b/plugins/microsoft-calendar/dev/mock.json
@@ -0,0 +1,305 @@
+{
+ "calendars": [
+ {
+ "id": "AQMkADQyMDdlODU1AC05OGNiLTRhZmItOGM2Mi1kODZhMzJkYWU2OTAARgAAAwWXy9axQ31DtBuHDIFwgtYHAKRSO4MUJXZDi1hwzpYLetAAAAIBBgAAAKRSO4MUJXZDi1hwzpYLetAAAAIyswAAAA==",
+ "name": "Calendar",
+ "color": "lightBlue",
+ "hexColor": "#9fe1e7",
+ "isDefaultCalendar": true,
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAAAADYw==",
+ "canShare": true,
+ "canViewPrivateItems": true,
+ "canEdit": true,
+ "allowedOnlineMeetingProviders": ["teamsForBusiness"],
+ "defaultOnlineMeetingProvider": "teamsForBusiness",
+ "isTallyingResponses": true,
+ "isRemovable": false,
+ "owner": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ {
+ "id": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAEGAACkUjuDFCV2Q4tYcM6WC3rQAAAZs65BAAA=",
+ "name": "United Kingdom holidays",
+ "color": "auto",
+ "hexColor": "",
+ "isDefaultCalendar": false,
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAGanqjg==",
+ "canShare": false,
+ "canViewPrivateItems": true,
+ "canEdit": false,
+ "allowedOnlineMeetingProviders": [],
+ "defaultOnlineMeetingProvider": "unknown",
+ "isTallyingResponses": false,
+ "isRemovable": true,
+ "owner": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ {
+ "id": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAEGAACkUjuDFCV2Q4tYcM6WC3rQAAAZs65CAAA=",
+ "name": "Birthdays1",
+ "color": "auto",
+ "hexColor": "",
+ "isDefaultCalendar": false,
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAGanrfQ==",
+ "canShare": false,
+ "canViewPrivateItems": true,
+ "canEdit": false,
+ "allowedOnlineMeetingProviders": [],
+ "defaultOnlineMeetingProvider": "unknown",
+ "isTallyingResponses": false,
+ "isRemovable": true,
+ "owner": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ {
+ "id": "AQMkADQyMDdlODU1AC05OGNiLTRhZmItOGM2Mi1kODZhMzJkYWU2OTAARgAAAwWXy9axQ31DtBuHDIFwgtYHAKRSO4MUJXZDi1hwzpYLetAAAAIBBgAAAKRSO4MUJXZDi1hwzpYLetAAAAIytQAAAA==",
+ "name": "Birthdays",
+ "color": "auto",
+ "hexColor": "#92e1c0",
+ "isDefaultCalendar": false,
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAAAADdw==",
+ "canShare": false,
+ "canViewPrivateItems": true,
+ "canEdit": false,
+ "allowedOnlineMeetingProviders": [],
+ "defaultOnlineMeetingProvider": "unknown",
+ "isTallyingResponses": false,
+ "isRemovable": true,
+ "owner": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ {
+ "id": "AQMkADQyMDdlODU1AC05OGNiLTRhZmItOGM2Mi1kODZhMzJkYWU2OTAARgAAAwWXy9axQ31DtBuHDIFwgtYHAKRSO4MUJXZDi1hwzpYLetAAAAIBBgAAAKRSO4MUJXZDi1hwzpYLetAAAAIytgAAAA==",
+ "name": "Holidays in India",
+ "color": "auto",
+ "hexColor": "#16a765",
+ "isDefaultCalendar": false,
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAAAADug==",
+ "canShare": false,
+ "canViewPrivateItems": true,
+ "canEdit": false,
+ "allowedOnlineMeetingProviders": [],
+ "defaultOnlineMeetingProvider": "unknown",
+ "isTallyingResponses": false,
+ "isRemovable": true,
+ "owner": {
+ "name": "Abhay Soni",
+ "address": "abhay.s@statusneo.com"
+ }
+ }
+ ],
+ "events": [
+ {
+ "id": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MAFRAAgI2vdUnGxAAEYAAAAABZfL1rFDfUO0G4cMgXCC1gcApFI7gxQldkOLWHDOlgt60AAAAAABDQAApFI7gxQldkOLWHDOlgt60AAAYl_I0AAAEA==",
+ "createdDateTime": "2022-12-22T08:28:36.6131501Z",
+ "lastModifiedDateTime": "2023-01-20T05:24:31.9666518Z",
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAd5KhaA==",
+ "categories": [],
+ "transactionId": null,
+ "originalStartTimeZone": "India Standard Time",
+ "originalEndTimeZone": "India Standard Time",
+ "iCalUId": "040000008200E00074C5B7101A82E00807E7011006D3A5A92DC7D80100000000000000001000000002BB709705E28C4493E46124FF07DD89",
+ "reminderMinutesBeforeStart": 15,
+ "isReminderOn": true,
+ "hasAttachments": false,
+ "subject": "Abhay Soni",
+ "bodyPreview": "",
+ "importance": "normal",
+ "sensitivity": "normal",
+ "isAllDay": false,
+ "isCancelled": false,
+ "isOrganizer": false,
+ "responseRequested": true,
+ "seriesMasterId": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAENAACkUjuDFCV2Q4tYcM6WC3rQAABiX4jQAAA=",
+ "showAs": "tentative",
+ "type": "occurrence",
+ "webLink": "",
+ "onlineMeetingUrl": "",
+ "isOnlineMeeting": true,
+ "onlineMeetingProvider": "teamsForBusiness",
+ "allowNewTimeProposals": true,
+ "occurrenceId": "OID.AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAENAACkUjuDFCV2Q4tYcM6WC3rQAABiX4jQAAA=.2023-01-16",
+ "isDraft": false,
+ "hideAttendees": false,
+ "responseStatus": {
+ "response": "notResponded",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "body": {
+ "contentType": "html",
+ "content": ""
+ },
+ "start": {
+ "dateTime": "2023-01-16T11:00:00.0000000",
+ "timeZone": "Asia/Calcutta"
+ },
+ "end": {
+ "dateTime": "2023-01-16T11:30:00.0000000",
+ "timeZone": "Asia/Calcutta"
+ },
+ "location": {
+ "displayName": "",
+ "locationType": "default",
+ "uniqueIdType": "unknown",
+ "address": {},
+ "coordinates": {}
+ },
+ "locations": [],
+ "recurrence": null,
+ "attendees": [
+ {
+ "type": "required",
+ "status": {
+ "response": "none",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Nishkarsh Raj",
+ "address": "nishkarshraj@nishkarsh.com"
+ }
+ },
+ {
+ "type": "required",
+ "status": {
+ "response": "accepted",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Hakam Ram",
+ "address": "hakam_ram@ram.com"
+ }
+ },
+ {
+ "type": "required",
+ "status": {
+ "response": "declined",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ }
+ ],
+ "organizer": {
+ "emailAddress": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ "onlineMeeting": {
+ "joinUrl": "https://abhay-soni-developer.github.io/MyReusme/"
+ }
+ },
+ {
+ "id": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MAFRAAgI2vdUnGxAAEYAAAAABZfL1rFDfUO0G4cMgXCC1gcApFI7gxQldkOLWHDOlgt60AAAAAABDQAApFI7gxQldkOLWHDOlgt60AAAYl_I0AAAEA==",
+ "createdDateTime": "2022-12-22T08:28:36.6131501Z",
+ "lastModifiedDateTime": "2023-01-20T05:24:31.9666518Z",
+ "changeKey": "pFI7gxQldkOLWHDOlgt60AAAd5KhaA==",
+ "categories": [],
+ "transactionId": null,
+ "originalStartTimeZone": "India Standard Time",
+ "originalEndTimeZone": "India Standard Time",
+ "iCalUId": "040000008200E00074C5B7101A82E00807E7011006D3A5A92DC7D80100000000000000001000000002BB709705E28C4493E46124FF07DD89",
+ "reminderMinutesBeforeStart": 15,
+ "isReminderOn": true,
+ "hasAttachments": false,
+ "subject": "https://abhay-soni-developer.github.io/MyReusme/",
+ "bodyPreview": "",
+ "importance": "normal",
+ "sensitivity": "normal",
+ "isAllDay": false,
+ "isCancelled": false,
+ "isOrganizer": false,
+ "responseRequested": true,
+ "seriesMasterId": "AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAENAACkUjuDFCV2Q4tYcM6WC3rQAABiX4jQAAA=",
+ "showAs": "tentative",
+ "type": "occurrence",
+ "webLink": "",
+ "onlineMeetingUrl": "",
+ "isOnlineMeeting": true,
+ "onlineMeetingProvider": "teamsForBusiness",
+ "allowNewTimeProposals": true,
+ "occurrenceId": "OID.AAMkADQyMDdlODU1LTk4Y2ItNGFmYi04YzYyLWQ4NmEzMmRhZTY5MABGAAAAAAAFl8vWsUN9Q7QbhwyBcILWBwCkUjuDFCV2Q4tYcM6WC3rQAAAAAAENAACkUjuDFCV2Q4tYcM6WC3rQAABiX4jQAAA=.2023-01-16",
+ "isDraft": false,
+ "hideAttendees": false,
+ "responseStatus": {
+ "response": "notResponded",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "attendees": [
+ {
+ "type": "required",
+ "status": {
+ "response": "none",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Nishkarsh Raj",
+ "address": "nishkarshraj@nishkarsh.com"
+ }
+ },
+ {
+ "type": "required",
+ "status": {
+ "response": "accepted",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Hakam Ram",
+ "address": "hakam_ram@ram.com"
+ }
+ },
+ {
+ "type": "required",
+ "status": {
+ "response": "declined",
+ "time": "0001-01-01T00:00:00Z"
+ },
+ "emailAddress": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ }
+ ],
+ "body": {
+ "contentType": "html",
+ "content": ""
+ },
+ "start": {
+ "dateTime": "2023-01-16T11:00:00.0000000",
+ "timeZone": "Asia/Calcutta"
+ },
+ "end": {
+ "dateTime": "2023-01-16T11:30:00.0000000",
+ "timeZone": "Asia/Calcutta"
+ },
+ "location": {
+ "displayName": "",
+ "locationType": "default",
+ "uniqueIdType": "unknown",
+ "address": {},
+ "coordinates": {}
+ },
+ "locations": [],
+ "recurrence": null,
+ "organizer": {
+ "emailAddress": {
+ "name": "Abhay Soni",
+ "address": "abhaysoni.developer@gmail.com"
+ }
+ },
+ "onlineMeeting": {
+ "joinUrl": "https://abhay-soni-developer.github.io/MyReusme/"
+ }
+ }
+ ]
+}