Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings
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-_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)

AltStyle によって変換されたページ (->オリジナル) /