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

Commit 1f32d26

Browse files
committed
date-disabled-dates attribute, now is possible to disable specific dates
1 parent 403e48d commit 1f32d26

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

src/js/angular-datepicker.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
'dateMonthTitle': '@',
1919
'dateYearTitle': '@',
2020
'buttonNextTitle': '@',
21-
'buttonPrevTitle': '@'
21+
'buttonPrevTitle': '@',
22+
'dateDisabledDates': '@'
2223
},
2324
'link': function linkingFunction($scope, element, attr) {
2425
//get child input
@@ -37,6 +38,7 @@
3738
, dateFormat = attr.dateFormat
3839
, dateMinLimit
3940
, dateMaxLimit
41+
, dateDisabledDates = $scope.$eval(attr.dateDisabledDates)
4042
, date = new Date()
4143
, currentDay = $filter('date')(date, 'd')
4244
, currentMonthNumber = $filter('date')(date, 'M')
@@ -90,7 +92,7 @@
9092
//days
9193
'<div class="_720kb-datepicker-calendar-body">' +
9294
'<a href="javascript:void(0)" ng-repeat="px in prevMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">{{px}}</a>' +
93-
'<a href="javascript:void(0)" ng-repeat="item in days" ng-click="setDatepickerDay(item)" ng-class="{\'_720kb-datepicker-active\': day === item, \'_720kb-datepicker-disabled\': !isSelectableMinDate(year + \'/\' + monthNumber + \'/\' + item ) || !isSelectableMaxDate(year + \'/\' + monthNumber + \'/\' + item)}" class="_720kb-datepicker-calendar-day">{{item}}</a>' +
95+
'<a href="javascript:void(0)" ng-repeat="item in days" ng-click="setDatepickerDay(item)" ng-class="{\'_720kb-datepicker-active\': day === item, \'_720kb-datepicker-disabled\': !isSelectableMinDate(year + \'/\' + monthNumber + \'/\' + item ) || !isSelectableMaxDate(year + \'/\' + monthNumber + \'/\' + item) || !isSelectableDate(monthNumber, year, item)}" class="_720kb-datepicker-calendar-day">{{item}}</a>' +
9496
'<a href="javascript:void(0)" ng-repeat="nx in nextMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">{{nx}}</a>' +
9597
'</div>' +
9698
'</div>' +
@@ -129,6 +131,7 @@
129131
}
130132
});
131133

134+
132135
$scope.month = $filter('date')(date, 'MMMM');//December-November like
133136
$scope.monthNumber = Number($filter('date')(date, 'MM')); // 01-12 like
134137
$scope.day = Number($filter('date')(date, 'dd')); //01-31 like
@@ -504,6 +507,21 @@
504507
$scope.paginationYears = theNewYears;
505508
};
506509

510+
$scope.isSelectableDate = function isSelectableDate(monthNumber, year, day) {
511+
512+
if (dateDisabledDates
513+
&& dateDisabledDates.length > 0) {
514+
var i = 0;
515+
for (i; i <= dateDisabledDates.length; i += 1 ) {
516+
if (new Date(dateDisabledDates[i]).getTime() === new Date(monthNumber + '/' + day + '/' + year).getTime()) {
517+
518+
return false;
519+
}
520+
}
521+
}
522+
return true;
523+
};
524+
507525
$scope.isSelectableMinDate = function isSelectableMinDate (aDate) {
508526
//if current date
509527
if (!!dateMinLimit &&

0 commit comments

Comments
 (0)