Skip to content
This repository was archived by the owner on Feb 18, 2022. It is now read-only.

Commit 5d7573e

Browse files
committed
PR number #264, new option disable-weekdays thanks to @fabianoroberto
1 parent 33fb171 commit 5d7573e

File tree

5 files changed

+39
-9
lines changed

5 files changed

+39
-9
lines changed

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angularjs-datepicker",
3-
"version": "2.1.18",
3+
"version": "2.1.19",
44
"description": "A datepicker directive for angularjs.",
55
"authors": [
66
"Filippo Oretti <filippo.oretti@gmail.com",

dist/angular-datepicker.js

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
'<div class="_720kb-datepicker-calendar-header">',
3232
'<div class="_720kb-datepicker-calendar-header-middle _720kb-datepicker-mobile-item _720kb-datepicker-calendar-month">',
3333
'<select ng-model="month" title="{{ dateMonthTitle }}" ng-change="selectedMonthHandle(month)">',
34-
'<option ng-repeat="item in months" ng-selected="item === month" ng-disabled=\'!isSelectableMaxDate($index + 1 + " " + day + ", " + year) || !isSelectableMinDate($index + 1 + " " + day + ", " + year)\' ng-value="$index + 1" value="$index + 1">',
34+
'<option ng-repeat="item in months" ng-selected="item === month" ng-disabled=\'!isSelectableMaxDate(item + " " + day + ", " + year) || !isSelectableMinDate(item + " " + day + ", " + year)\' ng-value="$index + 1" value="$index + 1">',
3535
'{{ item }}',
3636
'</option>',
3737
'</select>',
@@ -110,7 +110,7 @@
110110
'<a href="javascript:void(0)" ng-repeat="px in prevMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">',
111111
'{{px}}',
112112
'</a>',
113-
'<a href="javascript:void(0)" ng-repeat="item in days" ng-click="setDatepickerDay(item)" ng-class="{\'_720kb-datepicker-active\': selectedDay === item && selectedMonth === monthNumber && selectedYear === year, \'_720kb-datepicker-disabled\': !isSelectableMinDate(year + \'/\' + monthNumber + \'/\' + item ) || !isSelectableMaxDate(year + \'/\' + monthNumber + \'/\' + item) || !isSelectableDate(monthNumber, year, item),\'_720kb-datepicker-today\': item === today.getDate() && monthNumber === (today.getMonth() + 1) && year === today.getFullYear() && !selectedDay}" class="_720kb-datepicker-calendar-day">',
113+
'<a href="javascript:void(0)" ng-repeat="item in days" ng-click="setDatepickerDay(item)" ng-class="{\'_720kb-datepicker-active\': selectedDay === item && selectedMonth === monthNumber && selectedYear === year, \'_720kb-datepicker-disabled\': !isSelectableMinDate(year + \'/\' + monthNumber + \'/\' + item ) || !isSelectableMaxDate(year + \'/\' + monthNumber + \'/\' + item) || !isSelectableDate(monthNumber, year, item) || !isSelectableDay(monthNumber, year, item),\'_720kb-datepicker-today\': item === today.getDate() && monthNumber === (today.getMonth() + 1) && year === today.getFullYear() && !selectedDay}" class="_720kb-datepicker-calendar-day">',
114114
'{{item}}',
115115
'</a>',
116116
'<a href="javascript:void(0)" ng-repeat="nx in nextMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">',
@@ -157,6 +157,7 @@
157157
//, dateMinLimit
158158
//, dateMaxLimit
159159
, dateDisabledDates = $scope.$eval($scope.dateDisabledDates)
160+
, dateDisabledWeekdays = $scope.$eval($scope.dateDisabledWeekdays)
160161
, date = new Date()
161162
, isMouseOn = false
162163
, isMouseOnInput = false
@@ -477,6 +478,17 @@
477478
if (newValue) {
478479
setInputValue();
479480
}
481+
})
482+
, unregisterDateDisabledDatesWatcher = $scope.$watch('dateDisabledDates', function dateDisabledDatesWatcher(newValue) {
483+
if (newValue) {
484+
dateDisabledDates = $scope.$eval(newValue);
485+
486+
if (!$scope.isSelectableDate($scope.monthNumber, $scope.year, $scope.day)) {
487+
thisInput.val('');
488+
thisInput.triggerHandler('input');
489+
thisInput.triggerHandler('change');//just to be sure;
490+
}
491+
}
480492
});
481493

482494
$scope.nextMonth = function nextMonth() {
@@ -631,7 +643,8 @@
631643

632644
$scope.setDatepickerDay = function setDatepickerDay(day) {
633645

634-
if ($scope.isSelectableDate($scope.monthNumber, $scope.year, day) &&
646+
if ($scope.isSelectableDay($scope.monthNumber, $scope.year, day) &&
647+
$scope.isSelectableDate($scope.monthNumber, $scope.year, day) &&
635648
$scope.isSelectableMaxDate($scope.year + '/' + $scope.monthNumber + '/' + day) &&
636649
$scope.isSelectableMinDate($scope.year + '/' + $scope.monthNumber + '/' + day)) {
637650

@@ -697,7 +710,8 @@
697710
if (date.getFullYear() &&
698711
!isNaN(date.getDay()) &&
699712
!isNaN(date.getMonth()) &&
700-
$scope.isSelectableDate(date) &&
713+
$scope.isSelectableDay(date.getMonth(), date.getFullYear(), date.getDay()) &&
714+
$scope.isSelectableDate(date.getMonth(), date.getFullYear(), date.getDay()) &&
701715
$scope.isSelectableMaxDate(date) &&
702716
$scope.isSelectableMinDate(date)) {
703717

@@ -746,6 +760,20 @@
746760
$scope.paginationYears = theNewYears;
747761
};
748762

763+
$scope.isSelectableDay = function isSelectableDay(monthNumber, year, day) {
764+
var i = 0;
765+
766+
if (dateDisabledWeekdays && dateDisabledWeekdays.length > 0) {
767+
for (i; i <= dateDisabledWeekdays.length; i += 1) {
768+
if (dateDisabledWeekdays[i] === new Date(monthNumber + '/' + day + '/' + year).getDay()) {
769+
return false;
770+
}
771+
}
772+
}
773+
774+
return true;
775+
};
776+
749777
$scope.isSelectableDate = function isSelectableDate(monthNumber, year, day) {
750778
var i = 0;
751779

@@ -944,6 +972,7 @@
944972
unregisterDateMinLimitWatcher();
945973
unregisterDateMaxLimitWatcher();
946974
unregisterDateFormatWatcher();
975+
unregisterDateDisabledDatesWatcher();
947976
thisInput.off('focus click focusout blur');
948977
angular.element(theCalendar).off('mouseenter mouseleave focusin');
949978
angular.element($window).off('click focus focusin', onClickOnWindow);
@@ -961,6 +990,7 @@
961990
'buttonNextTitle': '@',
962991
'buttonPrevTitle': '@',
963992
'dateDisabledDates': '@',
993+
'dateDisabledWeekdays': '@',
964994
'dateSetHidden': '@',
965995
'dateTyper': '@',
966996
'dateWeekStartDay': '@',

0 commit comments

Comments
 (0)