|
18 | 18 | 'dateMonthTitle': '@', |
19 | 19 | 'dateYearTitle': '@', |
20 | 20 | 'buttonNextTitle': '@', |
21 | | - 'buttonPrevTitle': '@' |
| 21 | + 'buttonPrevTitle': '@', |
| 22 | + 'dateDisabledDates': '@' |
22 | 23 | }, |
23 | 24 | 'link': function linkingFunction($scope, element, attr) { |
24 | 25 | //get child input |
|
37 | 38 | , dateFormat = attr.dateFormat |
38 | 39 | , dateMinLimit |
39 | 40 | , dateMaxLimit |
| 41 | + , dateDisabledDates = $scope.$eval(attr.dateDisabledDates) |
40 | 42 | , date = new Date() |
41 | 43 | , currentDay = $filter('date')(date, 'd') |
42 | 44 | , currentMonthNumber = $filter('date')(date, 'M') |
|
90 | 92 | //days |
91 | 93 | '<div class="_720kb-datepicker-calendar-body">' + |
92 | 94 | '<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>' + |
94 | 96 | '<a href="javascript:void(0)" ng-repeat="nx in nextMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">{{nx}}</a>' + |
95 | 97 | '</div>' + |
96 | 98 | '</div>' + |
|
129 | 131 | } |
130 | 132 | }); |
131 | 133 |
|
| 134 | + |
132 | 135 | $scope.month = $filter('date')(date, 'MMMM');//December-November like |
133 | 136 | $scope.monthNumber = Number($filter('date')(date, 'MM')); // 01-12 like |
134 | 137 | $scope.day = Number($filter('date')(date, 'dd')); //01-31 like |
|
504 | 507 | $scope.paginationYears = theNewYears; |
505 | 508 | }; |
506 | 509 |
|
| 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 | + |
507 | 525 | $scope.isSelectableMinDate = function isSelectableMinDate (aDate) { |
508 | 526 | //if current date |
509 | 527 | if (!!dateMinLimit && |
|
0 commit comments