jQuery and Bootstrap 3/4 Year Calendar
This is simple jQuery and Bootstrap 3&4 calendar. Hope some1 will like it.
DEMO
Author
Piotr Zatorski Website: allset.pl
Instalation
Download jquery.bootstrap.year.calendar.min.css
and jquery.bootstrap.year.calendar.min.js
and include them in right places on your site.
Basic Usage
<div id="calendar"></div> <script> $('#calendar').calendar();</script>
Options refenece
Option name: boostrapVersion
Description: choose boostrap compatibile Default: 4
Accepts: *integer * (3 or 4)
Option name: showHeaders
Description: determine if show months name
Default: true
Accepts: boolean
Option name: startYear
Description: start calendar from this year
Default: current year
Accepts: integer
Option name: maxYear
Description: max year to show
Default: null
Accepts: integer
Option name: maxDay
Description: max day able to choose
Default: null
Accepts: integer
Option name: maxMonth
Description: max month able to choose
Default: null
Accepts: integer
Option name: maxDayMessage
Description: Massage to alert when not max day is clicked
Default: You can not choose day from past
Accepts: string or false
Option name: minYear
Description: min year to show
Default: null
Accepts: integer
Option name: minDay
Description: min day able to choose
Default: null
Accepts: integer
Option name: minMonth
Description: min month able to choose
Default: null
Accepts: integer
Option name: minDayMessage
Description: Massage to alert when not min day is clicked
Default: You can not choose day from past
Accepts: string or false
Option name: cols
Description: add bootstrap cols-cols class to months view (IGNORE IT IN BOOTSTRAP 3)
Default: 12
Accepts: integer (1-12)
Option name: colsSm
Description: add bootstrap cols-sm-cols class to months view
Default: 6
Accepts: integer (1-12)
Option name: colMd
Description: add bootstrap cols-md-cols class to months view
Default: 4 Accepts: integer (1-12)
Option name: colsLg
Description: add bootstrap cols-lg-cols class to months view
Default: 3
Accepts: integer (1-12)
Option name: colsXl
Description: add bootstrap cols-xl-cols class to months view (IGNORE IT IN BOOTSTRAP 3)
Default: 3
Accepts: integer (1-12)
Option name: mode
Description: choose mode of using (check mode xxx options reference)
Default: classic
Accepts: string (accepts: classic, rangepicker)
Option name: startFromSunday
Description: choose to start calendar form sunday
Default: false
Accepts: boolean
Mode: classic function refenece
Option name: addUniqueClassOnClick
Description: add class to day on click
Default: false
Accepts: integer
Mode: rangepicker function refenece
Option name: maxDaysToChoose
Description: choose how many days user can choose;
Default: false
Accepts: integer
Option name: maxDaysToChooseMessage
Description: massage to alert when choosen more than maxDaysToChoose in range picker
Default: *Maximum days to choose is: * -here you got maxDaysToChoose integer.
Accepts: string or false
Options example
You need to choose option when initalizing calendar like this
<script> $('#calendar').calendar({ showHeaders: false }); </script>
Function refence
Function name: appendText
Description: Append text to specyfic day.
Parameters: (text(string (also accepts html)), year(integer), month(integer), day(integer), classes(string))
Function name: clearText
Description: Clear text to specyfic day.
Parameter: year(integer), month(integer), day(integer), classes(string))
Function name: clearTextFromAll
Description: Clear text from all days.
Parameter: none
Function name: recalcHeight
Description: Recalc tables height, in case of columns mismatch
Parameters: none
Mode: rangepicker functions reference
Function name: addRange
Description: Add range form rangepicker programmatically (eg. for reading from database)
Parameters: startYear(integer), startMonth(integer), startDay(integer), endYear(integer), endMonth(integer), endDay(integer)
Functions example
<div class="calendar"></div> $('.calendar').calendar(); $('.calendar').calendar('appendText', '(3)', 2018, 3, 4);
Protip for appendText function
If you want to use it with chaning year funcionality, you need to use event called changeYear
. See this example:
<div class="calendar"></div> <script> $('.calendar').calendar(); appendToCalendar(); $('.calendar').on('jqyc.changeYear', function (event) { appendToCalendar(); }); function appendToCalendar() { $('.calendar').calendar('appendText', '(3)', 2018, 3, 4); } </script>
Events reference
There are 7 events available at the moment. You can use is simply calling it, like in example.
Event name: jqyc.changeYearToPrevious
Tiggered: When year is changed to previous
Event name: jqyc.changeYearToNext
. Tiggered: When year is changed to next
Event name: jqyc.changeYear
. Tiggered: When year is changed to any
Event name: jqyc.dayChoose
. Tiggered: When day in range is choosen
Event name: jqyc.notMinDayChoose
. Tiggered: When day out of range is choosen
Event name: jqyc.notMaxDayChoose
. Tiggered: When day out of range is choosen
Event name: jqyc.outOfRangeDayChoose
. Tiggered: When day out of range is choosen
Mode: rangepicker events reference
Event name: jqyc.rangeChoose
. Tiggered: When valid range is choosen
Event example
<div class="container"> <div class="calendar"></div> </div> <script> $('.calendar').calendar(); //tiggered when year is chaned to previous $('.calendar').on('jqyc.changeYearToPrevious', function (event) { var currentYear = $(this).find('.jqyc-change-year').data('year'); console.log(currentYear); }); //tiggered when year is chaned to next $('.calendar').on('jqyc.changeYearToNext', function (event) { var currentYear = $(this).find('.jqyc-next-year').data('year'); console.log(currentYear); }); //tiggered when day is clicked $('.calendar').on('jqyc.dayChoose', function (event) { var choosenYear = $(this).data('year'); var choosenMonth = $(this).data('month'); var choosenDay = $(this).data('day-of-month'); var date = new Date(choosenYear, choosenMonth, choosenDay); console.log(date); }); //tiggered when range is choosen (ONLY FOR MODE: RANGEPICKER) $('.calendar').on('jqyc.rangeChoose', function (event) { var startChoosenYear = $(this).data('rangepicker-start-year'); var startChoosenMonth = $(this).data('rangepicker-start-month'); var startChoosenDay = $(this).data('rangepicker-start-day-of-month'); var startDate = new Date(startChoosenYear, startChoosenMonth, startChoosenDay); console.log(startDate); var endChoosenYear = $(this).data('rangepicker-end-year'); var endChoosenMonth = $(this).data('rangepicker-end-month'); var endChoosenDay = $(this).data('rangepicker-end-day-of-month'); var endDate = new Date(endChoosenYear, endChoosenMonth, endChoosenDay); console.log(endDate); }); </script>
l10n
Localization is very easy. You can simply localize Your calendar by passing options at the calendar declaration. See example above.
<div class="calendar"></div> <script> $('.calendar').calendar({ l10n:{ jan: "Styczeń", feb: "Luty", mar: "Marzec", apr: "Kwiecień", may: "Maj", jun: "Czerwiec", jul: "Lipiec", aug: "Sierpień", sep: "Wrzesień", oct: "Październik", nov: "Listopad", dec: "Grudzień", mn: "Pm", tu: "Wt", we: 'Śr', th: 'Cz', fr: 'Pt', sa: 'So', su: 'Nd' } }); </script>
Bug report
If You found any bug please report me on github, I will do my best to repeair it.