# streamlit-calendar 📆
[![PyPI](https://img.shields.io/pypi/v/streamlit-calendar)](https://pypi.org/project/streamlit-calendar/)
[![Supported Python versions](https://img.shields.io/pypi/pyversions/pypistats.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/streamlit-calendar/)
[![PyPI downloads](https://img.shields.io/pypi/dm/streamlit-calendar.svg)](https://pypistats.org/packages/streamlit-calendar)
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/im-perativa/streamlit-calendar/ci.yml)](https://github.com/im-perativa/streamlit-calendar/actions)
[![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)
**A Streamlit component to show calendar view using [FullCalendar](https://fullcalendar.io/) with support for Streamlit light/dark theme, callbacks, and custom CSS**
<a href="https://www.buymeacoffee.com/imperativa" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/arial-orange.png" alt="Buy Me A Coffee" height="28" width="105"></a>
## 🌏Demo [![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://calendar-component.streamlit.app/)
![](https://github.com/im-perativa/streamlit-calendar-demo/blob/main/demo.gif)
## ⚙️Installation
```bash
pip install streamlit-calendar
```
## 💻Usage
```python
import streamlit as st
from streamlit_calendar import calendar
calendar_options = {
"editable": True,
"selectable": True,
"headerToolbar": {
"left": "today prev,next",
"center": "title",
"right": "resourceTimelineDay,resourceTimelineWeek,resourceTimelineMonth",
},
"slotMinTime": "06:00:00",
"slotMaxTime": "18:00:00",
"initialView": "resourceTimelineDay",
"resourceGroupField": "building",
"resources": [
{"id": "a", "building": "Building A", "title": "Building A"},
{"id": "b", "building": "Building A", "title": "Building B"},
{"id": "c", "building": "Building B", "title": "Building C"},
{"id": "d", "building": "Building B", "title": "Building D"},
{"id": "e", "building": "Building C", "title": "Building E"},
{"id": "f", "building": "Building C", "title": "Building F"},
],
}
calendar_events = [
{
"title": "Event 1",
"start": "2023-07-31T08:30:00",
"end": "2023-07-31T10:30:00",
"resourceId": "a",
},
{
"title": "Event 2",
"start": "2023-07-31T07:30:00",
"end": "2023-07-31T10:30:00",
"resourceId": "b",
},
{
"title": "Event 3",
"start": "2023-07-31T10:40:00",
"end": "2023-07-31T12:30:00",
"resourceId": "a",
}
]
custom_css="""
.fc-event-past {
opacity: 0.8;
}
.fc-event-time {
font-style: italic;
}
.fc-event-title {
font-weight: 700;
}
.fc-toolbar-title {
font-size: 2rem;
}
"""
calendar = calendar(events=calendar_events, options=calendar_options, custom_css=custom_css)
st.write(calendar)
```
## 📝API References
### Initialization Args
For complete `event` object properties, check out: [https://fullcalendar.io/docs/event-object](https://fullcalendar.io/docs/event-object)
For complete `options` object properties, check out: [https://fullcalendar.io/docs](https://fullcalendar.io/docs)
For complete `custom_css` options, check out: [https://fullcalendar.io/docs/css-customization](https://fullcalendar.io/docs/css-customization)
### Component Values
The component value, i.e. the return value of the `calendar(...)` instance, is a dict which properties depends on the current called callback.
For example, when the user clicked on an event, the component value would be:
```python
st.write(calendar)
# {
# "callback": "eventClick",
# "eventClick": {
# "event": {
# "allDay": true,
# "title": "Event 1",
# "start": "2023-07-03",
# "end": "2023-07-05",
# "backgroundColor": "#FF6C6C",
# "borderColor": "#FF6C6C"
# },
# "view": {
# "type": "dayGridMonth",
# "title": "July 2023",
# "activeStart": "2023-06-24T17:00:00.000Z",
# "activeEnd": "2023-08-05T17:00:00.000Z",
# "currentStart": "2023-06-30T17:00:00.000Z",
# "currentEnd": "2023-07-31T17:00:00.000Z"
# }
# },
# }
```
The properties of each callback is explained as follows:
#### `dateClick`
Triggered when the user clicks on a date or a time.
Source: [https://fullcalendar.io/docs/dateClick](https://fullcalendar.io/docs/dateClick)
| Property | Type | Description |
| -------- | :------------------------: | --------------------------------------------------------------------------------------------------- |
| allDay | `boolean` | `true` or `false` whether the click happened on an all-day cell. |
| date | `string` | a date for the clicked day/time in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |
| view | [`View`](#ViewApi) | The current view. |
| resource | [`Resource`](#ResourceApi) | If the current view is a resource-view, the resource that owns this date. |
#### `eventClick`
Triggered when the user clicks an event.
Source: [https://fullcalendar.io/docs/eventClick](https://fullcalendar.io/docs/eventClick)
| Property | Type | Description |
| -------- | :------------------: | --------------------- |
| event | [`Event`](#EventApi) | The associated event. |
| view | [`View`](#ViewApi) | The current view. |
#### `eventChange`
Called after an event has been modified in some way.
Source: [https://fullcalendar.io/docs/eventChange](https://fullcalendar.io/docs/eventChange)
| Property | Type | Description |
| ------------- | :--------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| oldEvent | [`Event`](#EventApi) | An event with data prior to the change. |
| event | [`Event`](#EventApi) | An Event Object with the updated changed data. |
| relatedEvents | [`Event[]`](#EventApi) | An array of other related events that were also affected. An event might have other recurring event instances or might be linked to other events with the same `groupId`. |
#### `eventsSet`
Called after event data is initialized **OR** changed in any way.
Source: [https://fullcalendar.io/docs/eventsSet](https://fullcalendar.io/docs/eventsSet)
| Property | Type | Description |
| -------- | :--------------------: | ------------------------------------------------------ |
| events | [`Event[]`](#EventApi) | An array of events. It contains every event in memory. |
#### `select`
Triggered when a date/time selection is made.
Source: [https://fullcalendar.io/docs/select-callback](https://fullcalendar.io/docs/select-callback)
| Property | Type | Description |
| -------- | :------------------------: | -------------------------------------------------------------------------------------------------------------------- |
| allDay | `boolean` | `true` or `false` whether the selection happened on all-day cells. |
| start | `string` | a date indicating the beginning of the selection in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |
| end. | `string` | a date indicating the end of the selection in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |
| view | [`View`](#ViewApi) | The current view. |
| resource | [`Resource`](#ResourceApi) | If the current view is a resource-view, the resource that owns this selection. |
### Types
#### <a name="EventApi"></a>`Event`
Source: [https://fullcalendar.io/docs/event-object](https://fullcalendar.io/docs/event-object)
| Property | Type | Description |
| --------------- | :----------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| id | `string` | A unique identifier of an event. |
| groupId | `string` | Events that share a `groupId` will be dragged and resized together automatically. |
| allDay | `boolean` | Determines if the event is shown in the “all-day” section of relevant views. In addition, if `true` the time text is not displayed with the event. |
| start | `string` | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) representation of the start date. If the event is all-day, there will not be a time part. |
| end | `string` | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) representation of the end date. If the event is all-day, there will not be a time part. |
| title | `string` | The text that will appear on an event. |
| url | `string` | A URL that will be visited when this event is clicked by the user. |
| classNames | `string[]` | An array of strings like `[ 'myclass1', myclass2' ]`. Determines which HTML classNames will be attached to the rendered event. |
| display | `string` | The rendering type of this event. Can be `'auto'`, `'block'`, `'list-item'`, `'background'`, `'inverse-background'`, or `'none'`. |
| backgroundColor | `string` | The `eventBackgroundColor` override for this specific event. |
| borderColor | `string` | The `eventBorderColor` override for this specific event. |
| textColor | `string` | The `eventTextColor` override for this specific event. |
| extendedProps | `Dictionary` | A plain object holding miscellaneous other properties specified during parsing. Receives properties in the explicitly given `extendedProps` hash as well as other non-standard properties. |
| resourceId | `string` | The unique string identifier for the resource of the event (if any). |
#### <a name="ResourceApi"></a>`Resource`
Source: [https://fullcalendar.io/docs/resource-object](https://fullcalendar.io/docs/resource-object)
| Property | Type | Description |
| -------------------- | :----------: | --------------------------------------------------------------- |
| id | `string` | The unique string identifier for this resource. |
| title | `string` | The title of this resource. |
| eventBackgroundColor | `string` | Same as `Event.backgroundColor`. |
| eventBorderColor | `string` | Same as `Event.borderColor`. |
| eventTextColor | `string` | Same as `Event.textColor`. |
| eventClassNames | `string[]` | Same as `Event.ClassNames`. |
| extendedProps | `Dictionary` | A hash of non-standard props that were specified during parsing |
#### <a name="ViewApi"></a>`View`
Source: [https://fullcalendar.io/docs/view-object](https://fullcalendar.io/docs/view-object)
| Property | Type | Description |
| ------------ | :----: | ------------------------------------------------------------------------------------------------------------------------------ |
| type | string | Name of one of the available views. |
| title | string | Title text that is displayed at the top of the `headerToolbar`. |
| activeStart | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the first visible day. |
| activeEnd | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the last visible day. |
| currentStart | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the start of the interval the view is trying to represent. |
| currentEnd | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the end of the interval the view is trying to represent. |
## 🛠️Development
Note: you only need to run these steps if you want to change this component or
contribute to its development!
### Setup
First, clone the repository:
```bash
git clone https://github.com/im-perativa/streamlit-calendar.git
cd streamlit-calendar
```
Install the Python dependencies:
```bash
poetry install
```
And install the frontend dependencies:
```bash
cd streamlit_calendar/frontend
npm install
```
### Making changes
To make changes, first go to `streamlit_calendar/__init__.py` and make sure the
variable `_RELEASE` is set to `False`. This will make the component use the local
version of the frontend code, and not the built project.
Then, start one terminal and run:
```bash
cd streamlit_calendar/frontend
npm start
```
This starts the frontend code on port 3001.
Open another terminal and run:
```bash
cd streamlit_calendar
poetry shell
streamlit run __init__.py
```
This runs the development version on local Streamlit server. Now you can make changes to the Python or Javascript
code in `streamlit_calendar` and the demo app should update automatically!
If nothing updates, make sure the variable `_RELEASE` in `streamlit_calendar/__init__.py` is set to `False`.
Raw data
{
"_id": null,
"home_page": "https://github.com/im-perativa/streamlit-calendar",
"name": "streamlit-calendar",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.8",
"maintainer_email": null,
"keywords": "streamlit, streamlit-component",
"author": "Muhammad Luqman",
"author_email": "im.imperativa@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/2e/1d/5ded5661352042a9b23d7ba5d6e92683a828da2950ffbcc5f4ef6e6b0968/streamlit_calendar-1.2.1.tar.gz",
"platform": null,
"description": "# streamlit-calendar \ud83d\udcc6\n\n[![PyPI](https://img.shields.io/pypi/v/streamlit-calendar)](https://pypi.org/project/streamlit-calendar/)\n[![Supported Python versions](https://img.shields.io/pypi/pyversions/pypistats.svg?logo=python&logoColor=FFE873)](https://pypi.org/project/streamlit-calendar/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/streamlit-calendar.svg)](https://pypistats.org/packages/streamlit-calendar)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/im-perativa/streamlit-calendar/ci.yml)](https://github.com/im-perativa/streamlit-calendar/actions)\n[![Code style: Black](https://img.shields.io/badge/code%20style-Black-000000.svg)](https://github.com/psf/black)\n\n**A Streamlit component to show calendar view using [FullCalendar](https://fullcalendar.io/) with support for Streamlit light/dark theme, callbacks, and custom CSS**\n\n<a href=\"https://www.buymeacoffee.com/imperativa\" target=\"_blank\"><img src=\"https://cdn.buymeacoffee.com/buttons/v2/arial-orange.png\" alt=\"Buy Me A Coffee\" height=\"28\" width=\"105\"></a>\n\n## \ud83c\udf0fDemo [![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://calendar-component.streamlit.app/)\n\n![](https://github.com/im-perativa/streamlit-calendar-demo/blob/main/demo.gif)\n\n## \u2699\ufe0fInstallation\n\n```bash\npip install streamlit-calendar\n```\n\n## \ud83d\udcbbUsage\n\n```python\nimport streamlit as st\nfrom streamlit_calendar import calendar\n\ncalendar_options = {\n \"editable\": True,\n \"selectable\": True,\n \"headerToolbar\": {\n \"left\": \"today prev,next\",\n \"center\": \"title\",\n \"right\": \"resourceTimelineDay,resourceTimelineWeek,resourceTimelineMonth\",\n },\n \"slotMinTime\": \"06:00:00\",\n \"slotMaxTime\": \"18:00:00\",\n \"initialView\": \"resourceTimelineDay\",\n \"resourceGroupField\": \"building\",\n \"resources\": [\n {\"id\": \"a\", \"building\": \"Building A\", \"title\": \"Building A\"},\n {\"id\": \"b\", \"building\": \"Building A\", \"title\": \"Building B\"},\n {\"id\": \"c\", \"building\": \"Building B\", \"title\": \"Building C\"},\n {\"id\": \"d\", \"building\": \"Building B\", \"title\": \"Building D\"},\n {\"id\": \"e\", \"building\": \"Building C\", \"title\": \"Building E\"},\n {\"id\": \"f\", \"building\": \"Building C\", \"title\": \"Building F\"},\n ],\n}\ncalendar_events = [\n {\n \"title\": \"Event 1\",\n \"start\": \"2023-07-31T08:30:00\",\n \"end\": \"2023-07-31T10:30:00\",\n \"resourceId\": \"a\",\n },\n {\n \"title\": \"Event 2\",\n \"start\": \"2023-07-31T07:30:00\",\n \"end\": \"2023-07-31T10:30:00\",\n \"resourceId\": \"b\",\n },\n {\n \"title\": \"Event 3\",\n \"start\": \"2023-07-31T10:40:00\",\n \"end\": \"2023-07-31T12:30:00\",\n \"resourceId\": \"a\",\n }\n]\ncustom_css=\"\"\"\n .fc-event-past {\n opacity: 0.8;\n }\n .fc-event-time {\n font-style: italic;\n }\n .fc-event-title {\n font-weight: 700;\n }\n .fc-toolbar-title {\n font-size: 2rem;\n }\n\"\"\"\n\ncalendar = calendar(events=calendar_events, options=calendar_options, custom_css=custom_css)\nst.write(calendar)\n```\n\n## \ud83d\udcddAPI References\n\n### Initialization Args\n\nFor complete `event` object properties, check out: [https://fullcalendar.io/docs/event-object](https://fullcalendar.io/docs/event-object) \nFor complete `options` object properties, check out: [https://fullcalendar.io/docs](https://fullcalendar.io/docs) \nFor complete `custom_css` options, check out: [https://fullcalendar.io/docs/css-customization](https://fullcalendar.io/docs/css-customization)\n\n### Component Values\n\nThe component value, i.e. the return value of the `calendar(...)` instance, is a dict which properties depends on the current called callback.\n\nFor example, when the user clicked on an event, the component value would be:\n\n```python\nst.write(calendar)\n# {\n# \"callback\": \"eventClick\",\n# \"eventClick\": {\n# \"event\": {\n# \"allDay\": true,\n# \"title\": \"Event 1\",\n# \"start\": \"2023-07-03\",\n# \"end\": \"2023-07-05\",\n# \"backgroundColor\": \"#FF6C6C\",\n# \"borderColor\": \"#FF6C6C\"\n# },\n# \"view\": {\n# \"type\": \"dayGridMonth\",\n# \"title\": \"July 2023\",\n# \"activeStart\": \"2023-06-24T17:00:00.000Z\",\n# \"activeEnd\": \"2023-08-05T17:00:00.000Z\",\n# \"currentStart\": \"2023-06-30T17:00:00.000Z\",\n# \"currentEnd\": \"2023-07-31T17:00:00.000Z\"\n# }\n# },\n# }\n```\n\nThe properties of each callback is explained as follows:\n\n#### `dateClick`\n\nTriggered when the user clicks on a date or a time.\n\nSource: [https://fullcalendar.io/docs/dateClick](https://fullcalendar.io/docs/dateClick)\n\n| Property | Type | Description |\n| -------- | :------------------------: | --------------------------------------------------------------------------------------------------- |\n| allDay | `boolean` | `true` or `false` whether the click happened on an all-day cell. |\n| date | `string` | a date for the clicked day/time in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |\n| view | [`View`](#ViewApi) | The current view. |\n| resource | [`Resource`](#ResourceApi) | If the current view is a resource-view, the resource that owns this date. |\n\n#### `eventClick`\n\nTriggered when the user clicks an event.\n\nSource: [https://fullcalendar.io/docs/eventClick](https://fullcalendar.io/docs/eventClick)\n\n| Property | Type | Description |\n| -------- | :------------------: | --------------------- |\n| event | [`Event`](#EventApi) | The associated event. |\n| view | [`View`](#ViewApi) | The current view. |\n\n#### `eventChange`\n\nCalled after an event has been modified in some way.\n\nSource: [https://fullcalendar.io/docs/eventChange](https://fullcalendar.io/docs/eventChange)\n\n| Property | Type | Description |\n| ------------- | :--------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| oldEvent | [`Event`](#EventApi) | An event with data prior to the change. |\n| event | [`Event`](#EventApi) | An Event Object with the updated changed data. |\n| relatedEvents | [`Event[]`](#EventApi) | An array of other related events that were also affected. An event might have other recurring event instances or might be linked to other events with the same `groupId`. |\n\n#### `eventsSet`\n\nCalled after event data is initialized **OR** changed in any way.\n\nSource: [https://fullcalendar.io/docs/eventsSet](https://fullcalendar.io/docs/eventsSet)\n\n| Property | Type | Description |\n| -------- | :--------------------: | ------------------------------------------------------ |\n| events | [`Event[]`](#EventApi) | An array of events. It contains every event in memory. |\n\n#### `select`\n\nTriggered when a date/time selection is made.\n\nSource: [https://fullcalendar.io/docs/select-callback](https://fullcalendar.io/docs/select-callback)\n\n| Property | Type | Description |\n| -------- | :------------------------: | -------------------------------------------------------------------------------------------------------------------- |\n| allDay | `boolean` | `true` or `false` whether the selection happened on all-day cells. |\n| start | `string` | a date indicating the beginning of the selection in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |\n| end. | `string` | a date indicating the end of the selection in [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) format. |\n| view | [`View`](#ViewApi) | The current view. |\n| resource | [`Resource`](#ResourceApi) | If the current view is a resource-view, the resource that owns this selection. |\n\n### Types\n\n#### <a name=\"EventApi\"></a>`Event`\n\nSource: [https://fullcalendar.io/docs/event-object](https://fullcalendar.io/docs/event-object)\n\n| Property | Type | Description |\n| --------------- | :----------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| id | `string` | A unique identifier of an event. |\n| groupId | `string` | Events that share a `groupId` will be dragged and resized together automatically. |\n| allDay | `boolean` | Determines if the event is shown in the \u201call-day\u201d section of relevant views. In addition, if `true` the time text is not displayed with the event. |\n| start | `string` | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) representation of the start date. If the event is all-day, there will not be a time part. |\n| end | `string` | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) representation of the end date. If the event is all-day, there will not be a time part. |\n| title | `string` | The text that will appear on an event. |\n| url | `string` | A URL that will be visited when this event is clicked by the user. |\n| classNames | `string[]` | An array of strings like `[ 'myclass1', myclass2' ]`. Determines which HTML classNames will be attached to the rendered event. |\n| display | `string` | The rendering type of this event. Can be `'auto'`, `'block'`, `'list-item'`, `'background'`, `'inverse-background'`, or `'none'`. |\n| backgroundColor | `string` | The `eventBackgroundColor` override for this specific event. |\n| borderColor | `string` | The `eventBorderColor` override for this specific event. |\n| textColor | `string` | The `eventTextColor` override for this specific event. |\n| extendedProps | `Dictionary` | A plain object holding miscellaneous other properties specified during parsing. Receives properties in the explicitly given `extendedProps` hash as well as other non-standard properties. |\n| resourceId | `string` | The unique string identifier for the resource of the event (if any). |\n\n#### <a name=\"ResourceApi\"></a>`Resource`\n\nSource: [https://fullcalendar.io/docs/resource-object](https://fullcalendar.io/docs/resource-object)\n\n| Property | Type | Description |\n| -------------------- | :----------: | --------------------------------------------------------------- |\n| id | `string` | The unique string identifier for this resource. |\n| title | `string` | The title of this resource. |\n| eventBackgroundColor | `string` | Same as `Event.backgroundColor`. |\n| eventBorderColor | `string` | Same as `Event.borderColor`. |\n| eventTextColor | `string` | Same as `Event.textColor`. |\n| eventClassNames | `string[]` | Same as `Event.ClassNames`. |\n| extendedProps | `Dictionary` | A hash of non-standard props that were specified during parsing |\n\n#### <a name=\"ViewApi\"></a>`View`\n\nSource: [https://fullcalendar.io/docs/view-object](https://fullcalendar.io/docs/view-object)\n\n| Property | Type | Description |\n| ------------ | :----: | ------------------------------------------------------------------------------------------------------------------------------ |\n| type | string | Name of one of the available views. |\n| title | string | Title text that is displayed at the top of the `headerToolbar`. |\n| activeStart | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the first visible day. |\n| activeEnd | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the last visible day. |\n| currentStart | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the start of the interval the view is trying to represent. |\n| currentEnd | string | An [ISO8601 string](https://en.wikipedia.org/wiki/ISO_8601) that is the end of the interval the view is trying to represent. |\n\n## \ud83d\udee0\ufe0fDevelopment\n\nNote: you only need to run these steps if you want to change this component or\ncontribute to its development!\n\n### Setup\n\nFirst, clone the repository:\n\n```bash\ngit clone https://github.com/im-perativa/streamlit-calendar.git\ncd streamlit-calendar\n```\n\nInstall the Python dependencies:\n\n```bash\npoetry install\n```\n\nAnd install the frontend dependencies:\n\n```bash\ncd streamlit_calendar/frontend\nnpm install\n```\n\n### Making changes\n\nTo make changes, first go to `streamlit_calendar/__init__.py` and make sure the\nvariable `_RELEASE` is set to `False`. This will make the component use the local\nversion of the frontend code, and not the built project.\n\nThen, start one terminal and run:\n\n```bash\ncd streamlit_calendar/frontend\nnpm start\n```\n\nThis starts the frontend code on port 3001.\n\nOpen another terminal and run:\n\n```bash\ncd streamlit_calendar\npoetry shell\nstreamlit run __init__.py\n```\n\nThis runs the development version on local Streamlit server. Now you can make changes to the Python or Javascript\ncode in `streamlit_calendar` and the demo app should update automatically!\n\nIf nothing updates, make sure the variable `_RELEASE` in `streamlit_calendar/__init__.py` is set to `False`.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "\ud83d\udcc6 A Streamlit component to show callendar using FullCalendar (https://fullcalendar.io)",
"version": "1.2.1",
"project_urls": {
"Homepage": "https://github.com/im-perativa/streamlit-calendar",
"Repository": "https://github.com/im-perativa/streamlit-calendar"
},
"split_keywords": [
"streamlit",
" streamlit-component"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "99142aa71e5b3ec870eda05c06a8aa6056eee2d04722cd2fee2751220a7a2504",
"md5": "e4f2d6cb8adec03c07ba9329aba6fb23",
"sha256": "6a76799412872766ffb51c1a8e3ed58326593331caf373d8536d75560fdf1cd6"
},
"downloads": -1,
"filename": "streamlit_calendar-1.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e4f2d6cb8adec03c07ba9329aba6fb23",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.8",
"size": 1274475,
"upload_time": "2024-12-14T03:51:56",
"upload_time_iso_8601": "2024-12-14T03:51:56.132845Z",
"url": "https://files.pythonhosted.org/packages/99/14/2aa71e5b3ec870eda05c06a8aa6056eee2d04722cd2fee2751220a7a2504/streamlit_calendar-1.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2e1d5ded5661352042a9b23d7ba5d6e92683a828da2950ffbcc5f4ef6e6b0968",
"md5": "66859b93c1693318a28936b51377a9b9",
"sha256": "3e23cf701ce49f95ac9846ce624d26dec0a5759f6e9992932579c4a433ea200d"
},
"downloads": -1,
"filename": "streamlit_calendar-1.2.1.tar.gz",
"has_sig": false,
"md5_digest": "66859b93c1693318a28936b51377a9b9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.8",
"size": 1262038,
"upload_time": "2024-12-14T03:51:59",
"upload_time_iso_8601": "2024-12-14T03:51:59.105366Z",
"url": "https://files.pythonhosted.org/packages/2e/1d/5ded5661352042a9b23d7ba5d6e92683a828da2950ffbcc5f4ef6e6b0968/streamlit_calendar-1.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-14 03:51:59",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "im-perativa",
"github_project": "streamlit-calendar",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "streamlit-calendar"
}