altinselimi / Kalendar
Licence: gpl-3.0
Full featured, responsive, lightweight calendar in the browser.
Stars: ✭ 213
Projects that are alternatives of or similar to Kalendar
Eventscalendar
Events Calendar is a user-friendly library that helps you achieve a cool Calendar UI with events mapping. You can customise every pixel of the calendar as per your wish and still achieve in implementing all the functionalities of the native android calendar in addition with adding dots to the calendar which represents the presence of an event on the respective dates. It can be done easily, you are just a few steps away from implementing your own badass looking Calendar for your very own project!
Stars: ✭ 188 (-11.74%)
Mutual labels: calendar
Vue Mobile Calendar
a vue component of calendar for mobile移动端vue日期选择组件
Stars: ✭ 194 (-8.92%)
Mutual labels: calendar
Recal
A minimal, accessible React/Preact calendar component using modern CSS.
Stars: ✭ 191 (-10.33%)
Mutual labels: calendar
Ember Power Calendar
Powerful and customizable calendar component for Ember
Stars: ✭ 200 (-6.1%)
Mutual labels: calendar
Cornercal
A simple, clean calendar and clock app for macOS.
Stars: ✭ 213 (+0%)
Mutual labels: calendar
Icalendar Generator
Generate calendars in the iCalendar format
Stars: ✭ 193 (-9.39%)
Mutual labels: calendar
Jbcalendardatepicker
A replacement for UIDatePicker made for Catalyst.
Stars: ✭ 203 (-4.69%)
Mutual labels: calendar
Add Event To Calendar Docs
📅 Docs how to generate links to add events to online calendar services
Stars: ✭ 193 (-9.39%)
Mutual labels: calendar
Angular Calendar
A calendar component for Angular 12.0+ that can display events on a month, week or day view. The successor of angular-bootstrap-calendar.
Stars: ✭ 2,312 (+985.45%)
Mutual labels: calendar
Mxlcalendarmanager
A set of classes used to parse and handle iCalendar (.ICS) files
Stars: ✭ 198 (-7.04%)
Mutual labels: calendar
Customizablecalendar
CustomizableCalendar is a library that allows you to create your calendar, customizing UI and behaviour
Stars: ✭ 214 (+0.47%)
Mutual labels: calendar
Datepicker
Get a date with JavaScript! A datepicker with no dependencies.
Stars: ✭ 212 (-0.47%)
Mutual labels: calendar
Rdvcalendarview
Highly customizable calendarView and calendarViewController for iOS
Stars: ✭ 203 (-4.69%)
Mutual labels: calendar
🗓 Kalendar
Your best friend when it comes to events management in Vue.
🕹 Live Demo
Running the Demo Locally
You can run the demo locally :
- git clone https://github.com/altinselimi/kalendar.git
- cd kalendar
- npm install
- npm run serve
The code for the demo app is in src/serve-dev.vue
- a small but complete calendar app.
This is a good place to learn how thing work and a good starting point for your own implementation.
🏁Getting Started
- Install plugin and its dependencies from npm
npm install kalendar-vue portal-vue -S
- The easiest option is to copy the demo app from
src/serve-dev.vue
into your project and start from that.
Step by Step:
- Import plugin and its dependencies in your component
import Vue from "vue";
import PortalVue from "portal-vue";
Vue.use(PortalVue);
import { Kalendar } from 'kalendar-vue';
...
components: {
Kalendar,
...
},
- Provide Appointments array. This array will be the source of the appointments which are rendered in the calendar.
Specify the start and end times of each appointment as ISO format strings.
You must use the
sync
modifier when passing theconfiguration
prop to the component or else switching weeks will break.
<template>
<kalendar :configuration="calendar_settings" :events.sync="events" />
</template>
<script>
...
data: () => ({
calendar_settings: {
style: 'material_design',
view_type: 'week',
cell_height: 20,
scrollToNow: true,
start_day: new Date().toISOString(),
read_only: false,
day_starts_at: 0,
day_ends_at: 24,
overlap: true,
hide_dates: ['2019-10-31'], // Spooky
hide_days: [6],
past_event_creation: true
},
events: [
{
from: '2020-03-18T18:00:00Z',
to: '2020-03-18T19:00:00Z',
data: 'Event 1',
},
{
from: '2020-03-18T19:00:00Z',
to: '2020-03-18T21:00:00Z',
data: 'Olive & Friends',
},
...
],
...
})
</script>
🎛 Kalendar Options
Option | Default Value | Type | Description |
---|---|---|---|
view_type | 'week' | string | Determines the mode of kalendar. You can pick either 'week' or 'day'. Day is recommended for mobile devices. |
cell_height | 10 | string | Determines the height in pixels of a cell |
start_day | new Date().toISOString() | string | Determines the week or day which is shown in the kalendar on first load |
style | 'material_design' | string | You can pick either 'material_design' or 'flat_design' (iOS) |
read_only | false | boolean | Enabled, viewers won't be able to interact with kalendar |
day_starts_at | 0 | integer | Determines what hour the kalendar starts from (0 to 24) |
day_ends_at | 24 | integer | Determines what hour the kalendar ends at (0 to 24) |
overlap | true | boolean | Enables ability to create multiple events (overlapping) at the same timeframe |
hide_dates | [] | Array | Hides the provided dates from kalendar. Array of strings each being a valid date in YYYY-MM-DD format. |
hide_days | [6] | Array | Hides the provided days from kalendar. Monday = 0 ... Sunday = 6 |
past_event_creation | true | boolean | Determines the ability of creating events that have happened in the past |
scrollToNow | true | boolean | Scroll kalendar to current time on render |
formatLeftHours | (date) => { return format(date, 'HH') } | function | A function which accepts an ISO date and determines how the hours on the left side are shown |
formatDayTitle | (date) => { return format(date, 'DDD dd') } | function | A function which accepts an ISO date and determines what the day column title shows |
formatWeekNavigator | (date) => { return ${startDate(date)} - ${endDate(date)} } |
function | A function which accepts an ISO date and determines what the week view navigator (at the top) shows |
formatDayNavigator | (date) => { return new Date(date).toUTCString().slice(5, 11) } | function | A function which accepts an ISO date and determines what the day view navigator (at the top) shows |
Using Slots
The plugin can turn incredibly useful using scoped slots. You can customize all the essential parts of it.
Slots summary
Slot name | Slot scope | Slot description |
---|---|---|
created-card | event_information | Display information about an existing event |
creating-card | event_information | Display information about an event which is being created (mouse is being dragged) |
popup-form | popup_information | Display information about a temporary event (after user finishes dragging the mouse) |
event_information definition
Field | Type | Description | ||
---|---|---|---|---|
start_time | String | Start time as ISO Date String of the event | ||
end_time | String | End time as ISO Date String of the event | ||
kalendar_id | String | Unique ID used for operations internally by kalendar | ||
key | String | Key of the event used internally by kalendar | ||
data | Object | Data object which can hold any type of information which may prove useful for you |
🛣 Roadmap
⚠️ Refactor so code is readable/understandable and others can help--Add Read-Only modeRemove date-fns dependency-
Improve performance_ Hard-code split value to 5mins, and use split-value-prop to only mark current_min%split-value-prop === 0 _ Using upmentioned technique, day hours can be hardcoded into JSON, while the date part would come in fromfor in
loop * Use event delegation and remove listeners from every cell. Use event target instead, to manipulate the cell DOM object. - Add month view
- Write docs
- Write unit-tests
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].