You can make simple calendar for jalali and able to choose years and months and a event emiter when user click on a day on the calander. It is free and opensource and please improve this library. You can use demo.
First you should call calendar-js script file.
Browsers:
<script src="https://raw.githubusercontent.com/jaypy-code/calendar-js/master/dist/bundle.js"></script>
In your codes you must make a variable and equils with new calendar class and say which element (Like calling in css).
...
const calender = new Calendar('YOUR-ELEMENT');
let options = { };
calander.make(options).then(function(result){
// Do some things with result.
});
...
You have many options and features to make a calendar; this is what is options:
{
year: number,
month: number, // 1-12
on: {
day: function(day=''){
// On a day clicked and do some things with day.
},
label: function(label){
// On a label clicked and do some things with label.
}
},
labels: {
'DAY-NUMBER': 'EVENT-TEXT',
'1': 'First day of month',
'DAY-NUMBER': { text: 'EVENT-TEXT', class: 'ELEMENT-CSS-CLASS', VALUE: 'ELEMENT-ATTRABUTE-VALUE' },
'2': { text: 'Second day of month', class: 'red', 'value': '_fj439ug1f1f3h183hr081h3' },
'DAY-NUMBER': [ARRAY OF EVENTS],
'3': ['Third day of month', { text: 'New event', class: 'blue' }]
}
}
You can use returned values in .then function; this is what is returned:
{
for: {
year: number,
month: number,
Month: string,
index: {
first: number, // First day of a month in a week is sunday or monday or ..
last: number // Last day of a month in a week is sunday or monday or ..
},
weeks: number, // 4 or 5 or 6 weeks are in a month
length: number // 29 or 30 or 31 days in a month
},
today: {
year: number,
month: number,
Month: string,
day: number
},
martix: {
array: array[], // 2D array
dom: [Object HTMLElements],
},
labels: {}, // Object of labels in options
}
[6 Nov 2019] Set labels for days.
[5 Nov 2019] Make simple calendar-js for jalali.
[10 Dec 2020] Bug fixed
moment-jalaali^0.9.1
webpack^4.41.2
typescript^3.6.4