Skip to content

Commit

Permalink
added funcionality when there are minDate and MaxDate and it's necess…
Browse files Browse the repository at this point in the history
…ary block next and back buttons
  • Loading branch information
antoniovlx committed Jul 25, 2023
1 parent fec8234 commit aaa6a48
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 10 deletions.
77 changes: 68 additions & 9 deletions js/leaflet-calendar.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,35 +96,94 @@ L.Control.Calendar = L.Control.extend({
getCurrentDate: function () {
return L.DomUtil.get('input-control-date-picker').value;
},
getMaxDate: function () {
return new Date(this.options.maxDate);
},
getMinDate: function () {
return new Date(this.options.minDate);
},
setDate: function (date) {
L.DomUtil.get('input-control-date-picker').value = date;
},
_isWithinLimitMax: function(currentDate){
var maxDate = this.getMaxDate()
return this.options.maxDate !== '' && currentDate < maxDate.setDate(maxDate.getDate() + 1)
},
_isWithinLimitMin: function(currentDate){
var minDate = this.getMinDate()
return this.options.minDate !== '' && currentDate > minDate.setDate(minDate.getDate() - 1)
},
triggerOnSelectedDate() {
this.options.onSelectDate(this.getCurrentDate());
if(this.getCurrentDate() === ''){
if(this.options.minDate !== ''){
this.setDate(this.options.minDate);
}else{
this.setDate(new Date().toJSON().slice(0, 10));
}
}else{
const day = new Date(this.getCurrentDate()).getDate();

if(this.options.minDate !== '' && this.options.maxDate !== ''){
if(day < this.getMinDate().getDate() && day > this.getMaxDate().getDate()){
this.setDate(this.options.minDate);
}
}else if (this.options.minDate !== ''){
if(day < this.getMinDate().getDate()){
this.setDate(this.options.minDate);
}
}else if (this.options.maxDate !== ''){
if(day > this.getMaxDate().getDate()){
this.setDate(this.options.maxDate);
}
}
}

this.options.onSelectDate(this.getCurrentDate())
return this;
},
back: function () {
var fecha = new Date(this.getCurrentDate());

fecha.setDate(fecha.getDate() - 1);

var nextDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;
if (this.options.minDate !== '') {
var limitMinDate = new Date(this.options.minDate);
limitMinDate.setDate(limitMinDate.getDate() - 1);

if (limitMinDate.getTime() !== fecha.getTime()) {
var lastDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;

this.setDate(nextDate);
this.setDate(lastDate);
this.triggerOnSelectedDate();
}
} else {
var lastDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;

this.triggerOnSelectedDate();
this.setDate(lastDate);
this.triggerOnSelectedDate();
}
},
next: function () {
var fecha = new Date(this.getCurrentDate());

fecha.setDate(fecha.getDate() + 1);

var nextDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;
if (this.options.maxDate !== '') {
var limitMaxDate = new Date(this.options.maxDate);
limitMaxDate.setDate(limitMaxDate.getDate() + 1);

if (limitMaxDate.getTime() !== fecha.getTime()) {
var nextDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;

this.setDate(nextDate);
this.setDate(nextDate);

this.triggerOnSelectedDate();
this.triggerOnSelectedDate();
}
}else{
var nextDate = `${fecha.getFullYear()}-${(fecha.getMonth() + 1).toString().padStart(2, "0")}-${fecha.getDate().toString().padStart(2, "0")}`;

this.setDate(nextDate);

this.triggerOnSelectedDate();
}
},
show: function () {
L.DomUtil.setOpacity(this.container, 1);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "leaflet-calendar",
"version": "1.1.2",
"version": "1.1.3",
"description": "A calendar date picker control for Leaflet",
"main": "js/leaflet-calendar.js",
"types": "index.d.ts",
Expand Down

0 comments on commit aaa6a48

Please sign in to comment.