|
46 | 46 | return [ |
47 | 47 | '<div class="_720kb-datepicker-calendar-header">', |
48 | 48 | '<div class="_720kb-datepicker-calendar-header-left">', |
49 | | - '<a href="javascript:void(0)" ng-click="prevMonth()" title="{{ buttonPrevTitle }}">', |
| 49 | + '<a class="_720kb-datepicker-calendar-month-button" href="javascript:void(0)" ng-class="{\'_720kb-datepicker-item-hidden\': !willPrevMonthBeSelectable()}" ng-click="prevMonth()" title="{{ buttonPrevTitle }}">', |
50 | 50 | prevButton, |
51 | 51 | '</a>', |
52 | 52 | '</div>', |
|
60 | 60 | '</a>', |
61 | 61 | '</div>', |
62 | 62 | '<div class="_720kb-datepicker-calendar-header-right">', |
63 | | - '<a class="_720kb-datepicker-calendar-month-button" href="javascript:void(0)" ng-click="nextMonth()" title="{{ buttonNextTitle }}">', |
| 63 | + '<a class="_720kb-datepicker-calendar-month-button" ng-class="{\'_720kb-datepicker-item-hidden\': !willNextMonthBeSelectable()}" href="javascript:void(0)" ng-click="nextMonth()" title="{{ buttonNextTitle }}">', |
64 | 64 | nextButton, |
65 | 65 | '</a>', |
66 | 66 | '</div>', |
|
156 | 156 | , isMouseOnInput = false |
157 | 157 | , datetime = $locale.DATETIME_FORMATS |
158 | 158 | , pageDatepickers |
| 159 | + , hours24h = 86400000 |
159 | 160 | , htmlTemplate = generateHtmlTemplate(prevButton, nextButton) |
160 | 161 | , resetToMinDate = function resetToMinDate() { |
161 | 162 |
|
|
365 | 366 | $scope.day = undefined; |
366 | 367 | }; |
367 | 368 |
|
| 369 | + $scope.willPrevMonthBeSelectable = function willPrevMonthBeSelectable() { |
| 370 | + var monthNumber = $scope.monthNumber |
| 371 | + , year = $scope.year |
| 372 | + , prevDay = $filter('date')(new Date(new Date(year + '/' + monthNumber + '/01').getTime() - hours24h), 'dd'); //get last day in previous month |
| 373 | + |
| 374 | + if (monthNumber === 1) { |
| 375 | + |
| 376 | + monthNumber = 12; |
| 377 | + year = year - 1; |
| 378 | + } else { |
| 379 | + |
| 380 | + monthNumber -= 1; |
| 381 | + } |
| 382 | + |
| 383 | + if ($scope.dateMinLimit) { |
| 384 | + if (!$scope.isSelectableMinDate(year + '/' + monthNumber + '/' + prevDay)) { |
| 385 | + |
| 386 | + return false; |
| 387 | + } |
| 388 | + } |
| 389 | + |
| 390 | + return true; |
| 391 | + }; |
| 392 | + |
| 393 | + $scope.willNextMonthBeSelectable = function willNextMonthBeSelectable() { |
| 394 | + var monthNumber = $scope.monthNumber |
| 395 | + , year = $scope.year; |
| 396 | + |
| 397 | + if (monthNumber === 12) { |
| 398 | + |
| 399 | + monthNumber = 1; |
| 400 | + year += 1; |
| 401 | + } else { |
| 402 | + |
| 403 | + monthNumber += 1; |
| 404 | + } |
| 405 | + |
| 406 | + if ($scope.dateMaxLimit) { |
| 407 | + if (!$scope.isSelectableMaxDate(year + '/' + monthNumber + '/01')) { |
| 408 | + |
| 409 | + return false; |
| 410 | + } |
| 411 | + } |
| 412 | + |
| 413 | + return true; |
| 414 | + }; |
| 415 | + |
368 | 416 | $scope.prevMonth = function managePrevMonth() { |
369 | 417 |
|
370 | 418 | if ($scope.monthNumber === 1) { |
|
0 commit comments