calendar-set

Framework agnostic calendar components (demo)

Components

The components are implemented with Svelte, so they can be used with Svelte component API. The following is a simple example how you can use DateCalendar component.

import { en, DateCalendar } from 'calendar-set'

// Set the locale object to the component
DateCalendar.setLocale(en)

// Instantiate the calendar component
const calendar = new DateCalendar({
  // Pass a DOM element which the component mount to
  target: document.querySelector('#calendar'),

  // Pass initial data of the component
  data: {
    selected: new Date()
  }
})

// Observe calendar events
calendar.on('select', selected => {
  console.log(selected)
})

// Set calendar data
calendar.set({
  selected: new Date(2018, 0, 1)
})

// Destroy the component
calendar.destroy()

All components have a static method setLocale to specify localized string shown in the calendar. You need to call the method before instantiating components. calendar-set provides built in locales en and ja.

If you want to use with Vue.js, you may interested in vue-svelte-adapter.

DateCalendar

Data

{
  current: {
    year: number
    month: number
  }
  selected: Date | Date[] | undefined
  isHighlighted: (target: Date, selected: Date | Date[] | undefined) => boolean
  getClass: (target: Date) => string
  locale: Locale
}

Events

  • fire('select', selectedDate)
  • fire('hover', hoveredDate)

DateRangeCalendar

Similar to DateCalendar but can be selected range of two dates.

Data

{
  current: {
    year: number
    month: number
  }
  selected: Date | Date[] | undefined
  hovered: Date | undefined
  getClass: (target: Date) => string
  second: boolean // `true` if it is going to select the second date
  locale: Locale
}

Events

  • fire('select', selectedDate): selectedDate is an array and always sorted with ASC order by date.
  • fire('hover', hoveredDate)

MonthCalendar

Data

{
  currentYear: number
  selected: Date | Date[] | undefined
  isHighlighted: (target: Date, selected: Date | Date[] | undefined) => boolean
  getClass: (target: Date) => string
  locale: Locale
}

Events

  • fire('select', selectedMonth)
  • fire('hover', hoveredMonth)

MonthRangeCalendar

Similar to MonthCalendar but can be selected range of two months.

Data

{
  currentYear: number
  selected: Date | Date[] | undefined
  hovered: Date | undefined
  getClass: (target: Date) => string
  second: boolean // `true` if it is going to select the second month
  locale: Locale
}

Events

  • fire('select', selectedMonth): selectedMonth is an array and always sorted with ASC order by month.
  • fire('hover', hoveredMonth)

Styles

There is a default style at calendar-set/dist/calendar-set.css. If you want to use it, import it by appropriate way of your project setup.

Example of webpack:

// Import calendar default style
import 'calendar-set/dist/calendar-set.css'

// Import calendar component
import { DateCalendar, en } from 'calendar-set'

DateCalendar.setLocale(en)

Example loading from CDN:

<!-- Import calendar default style -->
<link rel="stylesheet" href="https://unpkg.com/calendar-set/dist/calendar-set.css">

<!-- Import calendar script -->
<script src="https://unpkg.com/calendar-set"></script>

License

MIT

Top categories

Loading Svelte Themes