From 2a0e4af4ec3415fdd6448f254de0a341f4e98621 Mon Sep 17 00:00:00 2001 From: Aether Date: Thu, 8 Feb 2018 00:58:03 +0800 Subject: [PATCH 1/2] FIX: Identify and display weekend in calendar properly --- src/js/calendar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/calendar.js b/src/js/calendar.js index 264d1eb..55f61f0 100644 --- a/src/js/calendar.js +++ b/src/js/calendar.js @@ -348,7 +348,7 @@ // Selected if (currentValues.indexOf(dayDate) >= 0) addClass += ' picker-calendar-day-selected'; // Weekend - if (p.params.weekendDays.indexOf(col - 1) >= 0) { + if (col>5) { addClass += ' picker-calendar-day-weekend'; } // Disabled From b4e53830246f893b8041e5547a2c789ec65daa1c Mon Sep 17 00:00:00 2001 From: Aether Date: Thu, 8 Feb 2018 01:55:05 +0800 Subject: [PATCH 2/2] ADD: allow date disable in range --- src/js/calendar.js | 60 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/src/js/calendar.js b/src/js/calendar.js index 55f61f0..2281fe6 100644 --- a/src/js/calendar.js +++ b/src/js/calendar.js @@ -311,7 +311,8 @@ dayIndex = 0 + (p.params.firstDay - 1), today = new Date().setHours(0,0,0,0), minDate = p.params.minDate ? new Date(p.params.minDate).getTime() : null, - maxDate = p.params.maxDate ? new Date(p.params.maxDate).getTime() : null; + maxDate = p.params.maxDate ? new Date(p.params.maxDate).getTime() : null, + disabled; if (p.value && p.value.length) { for (i = 0; i < p.value.length; i++) { @@ -355,6 +356,11 @@ if ((minDate && dayDate < minDate) || (maxDate && dayDate > maxDate)) { addClass += ' picker-calendar-day-disabled'; } + if (p.params.disabled) { + if (p.dateInRange(dayDate, p.params.disabled)) { + addClass += ' picker-calendar-day-disabled'; + } + } dayDate = new Date(dayDate); var dayYear = dayDate.getFullYear(); @@ -584,6 +590,57 @@ p.prevYear = function () { p.setYearMonth(p.currentYear - 1); }; + + // Scan Dates Range + p.dateInRange = function (dayDate, range) { + var match = false; + var i; + if (!range) return false; + if ($.isArray(range)) { + for (i = 0; i < range.length; i ++) { + if (range[i].from || range[i].to) { + if (range[i].from && range[i].to) { + if ((dayDate <= new Date(range[i].to).getTime()) && (dayDate >= new Date(range[i].from).getTime())) { + match = true; + } + } + else if (range[i].from) { + if (dayDate >= new Date(range[i].from).getTime()) { + match = true; + } + } + else if (range[i].to) { + if (dayDate <= new Date(range[i].to).getTime()) { + match = true; + } + } + } else if (dayDate === new Date(range[i]).getTime()) { + match = true; + } + } + } + else if (range.from || range.to) { + if (range.from && range.to) { + if ((dayDate <= new Date(range.to).getTime()) && (dayDate >= new Date(range.from).getTime())) { + match = true; + } + } + else if (range.from) { + if (dayDate >= new Date(range.from).getTime()) { + match = true; + } + } + else if (range.to) { + if (dayDate <= new Date(range.to).getTime()) { + match = true; + } + } + } + else if (typeof range === 'function') { + match = range(new Date(dayDate)); + } + return match; + }; // HTML Layout @@ -852,6 +909,7 @@ direction: 'horizontal', // or 'vertical' minDate: null, maxDate: null, + disabled: null, touchMove: true, animate: true, closeOnSelect: true,