This is simple jQuery and Bootstrap 3&4 calendar. Hope some1 will like it.
Piotr Zatorski Website: allset.pl
Download jquery.bootstrap.year.calendar.min.css
and jquery.bootstrap.year.calendar.min.js
and include them in right places on your site.
<div id="calendar"></div>
<script> $('#calendar').calendar();</script>
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
Option name: addUniqueClassOnClick
Description: add class to day on click
Default: false
Accepts: integer
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
You need to choose option when initalizing calendar like this
<script>
$('#calendar').calendar({
showHeaders: false
});
</script>
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
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)
<div class="calendar"></div>
$('.calendar').calendar();
$('.calendar').calendar('appendText', '(3)', 2018, 3, 4);
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>
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
Event name: jqyc.rangeChoose
.
Tiggered: When valid range is choosen
<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>
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>
If You found any bug please report me on github, I will do my best to repeair it.