camper/web/static/booking-dates.js

49 lines
1.5 KiB
JavaScript

(function () {
'use strict';
function updateDepartureDate(arrivalDateField) {
const arrivalDate = new Date(arrivalDateField.value);
if (isNaN(arrivalDate)) {
return;
}
const departureDateField = document.querySelector('[name="departure_date"]');
if (!departureDateField) {
return;
}
arrivalDate.setUTCDate(arrivalDate.getUTCDate() + 1);
const minDate = formatDate(arrivalDate);
departureDateField.setAttribute('min', minDate);
const departureDate = new Date(departureDateField.value);
if (isNaN(departureDate) || departureDate < arrivalDate) {
departureDateField.value = minDate;
}
arrivalDate.setUTCDate(arrivalDate.getUTCDate() + 6);
const maxDate = formatDate(arrivalDate);
departureDateField.setAttribute('max', maxDate);
if (!isNaN(departureDate) && departureDate >= arrivalDate) {
departureDateField.value = maxDate;
}
}
function formatDate(date) {
return `${date.getFullYear()}-${zeroPad(date.getMonth() + 1)}-${zeroPad(date.getDate())}`;
}
function zeroPad(num) {
return `${num < 10 ? '0' : ''}${num}`
}
const arrivalDateField = document.querySelector('[name="arrival_date"]');
if (!arrivalDateField) {
return;
}
arrivalDateField.addEventListener('change', function (event) {
updateDepartureDate(event.target);
});
updateDepartureDate(arrivalDateField);
})();