diff --git a/src/widgetfideuram/components/nbp-fid-calendar-generic/nbp-fid-calendar-generic-page.html b/src/widgetfideuram/components/nbp-fid-calendar-generic/nbp-fid-calendar-generic-page.html index 4a6050a..edee716 100644 --- a/src/widgetfideuram/components/nbp-fid-calendar-generic/nbp-fid-calendar-generic-page.html +++ b/src/widgetfideuram/components/nbp-fid-calendar-generic/nbp-fid-calendar-generic-page.html @@ -3,21 +3,27 @@ + Datepicker Multi-Livello
@@ -253,8 +289,10 @@ monthYearEl.onclick = changeView; } - // --- LOGICA ORIGINALE (INVARIATA) --- + // --- LOGICA MODIFICATA: disabilita tutte le date inferiori al 9/05/2025 --- function isDateDisabled(date) { + const minDate = new Date(2025, 4, 9, 0, 0, 0, 0); // 9 maggio 2025 + if (date < minDate) return true; // Disabilita per giorno della settimana if (disabledWeekdays.includes(date.getDay())) return true; // Disabilita per range @@ -266,8 +304,7 @@ function renderDays() { calendarEl.classList.add('calendar-grid-7'); - const months = ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', - 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre']; + const months = ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']; const daysOfWeek = ['lun', 'mar', 'mer', 'gio', 'ven', 'sab', 'dom']; monthYearEl.textContent = `${months[currentDate.getMonth()]} ${currentDate.getFullYear()}`; @@ -275,7 +312,6 @@ for (let day of daysOfWeek) { const div = document.createElement("div"); div.classList.add("day"); - div.classList.add("calendar-cell"); div.textContent = day; calendarEl.appendChild(div); } @@ -318,6 +354,7 @@ div.classList.add("calendar-cell"); const thisDate = new Date(year, month, i); if (selectedDate && sameDate(selectedDate, thisDate)) div.classList.add("selected"); + if (sameDate(new Date(), thisDate)) div.classList.add("today"); if (isDateDisabled(thisDate)) { div.classList.add("disabled"); } else { @@ -355,17 +392,34 @@ } function renderMonths() { - const months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']; + const months = ['gennaio', 'febbraio', 'marzo', 'aprile', 'maggio', 'giugno', 'luglio', 'agosto', 'settembre', 'ottobre', 'novembre', 'dicembre']; monthYearEl.textContent = currentDate.getFullYear(); months.forEach((m, idx) => { const div = document.createElement("div"); div.textContent = m; div.classList.add("calendar-cell"); - div.onclick = () => { - currentDate.setMonth(idx); - view = 'days'; - renderCalendar(); - }; + const now = new Date(); + if (currentDate.getFullYear() === now.getFullYear() && idx === now.getMonth()) { + div.classList.add("today"); + } + // Aggiungi la classe 'selected' se il mese corrisponde a selectedDate + if (selectedDate && currentDate.getFullYear() === selectedDate.getFullYear() && idx === selectedDate.getMonth()) { + div.classList.add("selected"); + } + // Disabilita mese se tutto il mese è inferiore alla data minima + const minDate = new Date(2025, 4, 9, 0, 0, 0, 0); + const firstDay = new Date(currentDate.getFullYear(), idx, 1); + const lastDay = new Date(currentDate.getFullYear(), idx + 1, 0, 23, 59, 59, 999); + let disableMonth = lastDay < minDate; + if (disableMonth) { + div.classList.add("disabled"); + } else { + div.onclick = () => { + currentDate.setMonth(idx); + view = 'days'; + renderCalendar(); + }; + } calendarEl.appendChild(div); }); } @@ -380,12 +434,21 @@ const div = document.createElement("div"); div.textContent = y; div.classList.add("calendar-cell"); - if (y === currentDate.getFullYear()) div.classList.add("selected"); - div.onclick = () => { - currentDate.setFullYear(y); - view = 'months'; - renderCalendar(); - }; + if (y === new Date().getFullYear()) div.classList.add("today"); + if (selectedDate && y === selectedDate.getFullYear()) div.classList.add("selected"); + // Disabilita anno se tutto l'anno è inferiore alla data minima + const minDate = new Date(2025, 4, 9, 0, 0, 0, 0); + const lastDayOfYear = new Date(y, 11, 31, 23, 59, 59, 999); + let disableYear = lastDayOfYear < minDate; + if (disableYear) { + div.classList.add("disabled"); + } else { + div.onclick = () => { + currentDate.setFullYear(y); + view = 'months'; + renderCalendar(); + }; + } calendarEl.appendChild(div); } } @@ -399,14 +462,14 @@ function prev() { if (view === 'days') currentDate.setMonth(currentDate.getMonth() - 1); else if (view === 'months') currentDate.setFullYear(currentDate.getFullYear() - 1); - else currentDate.setFullYear(currentDate.getFullYear() - 10); + else currentDate.setFullYear(currentDate.getFullYear() - 20); renderCalendar(); } function next() { if (view === 'days') currentDate.setMonth(currentDate.getMonth() + 1); else if (view === 'months') currentDate.setFullYear(currentDate.getFullYear() + 1); - else currentDate.setFullYear(currentDate.getFullYear() + 10); + else currentDate.setFullYear(currentDate.getFullYear() + 20); renderCalendar(); }