Skip to content

Commit 4d99175

Browse files
committed
Check if datetime is within optional range of minDate and maxDate.
1 parent d352a1b commit 4d99175

File tree

3 files changed

+40
-25
lines changed

3 files changed

+40
-25
lines changed

src/date-input.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Date directive (date input element)
55
*/
66
angular.module('g1b.datetime-inputs').
7-
directive('dateInput', ['$document', function ($document) {
7+
directive('dateInput', ['$document', '$timeout', function ($document, $timeout) {
88
return {
99
restrict: 'E',
1010
scope: {
@@ -46,19 +46,24 @@ directive('dateInput', ['$document', function ($document) {
4646
if ( scope.selected.isSame(datetime) && !!scope.date ) { return; }
4747
if ( !datetime ) {
4848
scope.selected = scope.date = undefined;
49-
} else {
49+
} else if ( ( !scope.minDate || datetime > scope.minDate ) && ( !scope.maxDate || datetime < scope.maxDate ) ) {
5050
scope.selected.year(datetime.year()).month(datetime.month()).date(datetime.date()).hours(datetime.hours()).minutes(datetime.minutes()).seconds(datetime.seconds());
5151
if ( scope.selected.clone().startOf('week').month() !== scope.calendar.month() || calendar_update ) {
5252
scope.calendar = scope.selected.clone();
5353
}
54+
if ( !scope.date ) {
55+
scope.date = scope.selected;
56+
}
57+
scope.$$postDigest(function () {
58+
scope.onChange();
59+
});
60+
scope.close();
61+
} else {
62+
scope.warning = true;
63+
$timeout(function () {
64+
scope.warning = false;
65+
}, 250);
5466
}
55-
if ( !scope.date ) {
56-
scope.date = scope.selected;
57-
}
58-
scope.$$postDigest(function () {
59-
scope.onChange();
60-
});
61-
scope.close();
6267
};
6368

6469
// Close edit popover

src/datetime-input.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Datetime directive (date and time input element)
55
*/
66
angular.module('g1b.datetime-inputs', []).
7-
directive('datetimeInput', ['$document', function ($document) {
7+
directive('datetimeInput', ['$document', '$timeout', function ($document, $timeout) {
88
return {
99
restrict: 'E',
1010
scope: {
@@ -46,18 +46,23 @@ directive('datetimeInput', ['$document', function ($document) {
4646
if ( scope.selected.isSame(datetime) && !!scope.datetime ) { return; }
4747
if ( !datetime ) {
4848
scope.selected = scope.datetime = undefined;
49-
} else {
49+
} else if ( ( !scope.minDate || datetime > scope.minDate ) && ( !scope.maxDate || datetime < scope.maxDate ) ) {
5050
scope.selected.year(datetime.year()).month(datetime.month()).date(datetime.date()).hours(datetime.hours()).minutes(datetime.minutes()).seconds(datetime.seconds());
5151
if ( (scope.selected.clone().startOf('week').month() !== scope.calendar.month() && scope.selected.clone().endOf('week').month() !== scope.calendar.month()) || calendar_update ) {
5252
scope.calendar = scope.selected.clone();
5353
}
54+
if ( !scope.datetime ) {
55+
scope.datetime = scope.selected;
56+
}
57+
scope.$$postDigest(function () {
58+
scope.onChange();
59+
});
60+
} else {
61+
scope.warning = true;
62+
$timeout(function () {
63+
scope.warning = false;
64+
}, 250);
5465
}
55-
if ( !scope.datetime ) {
56-
scope.datetime = scope.selected;
57-
}
58-
scope.$$postDigest(function () {
59-
scope.onChange();
60-
});
6166
};
6267

6368
// Close edit popover

src/time-input.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* Time directive (time input element)
55
*/
66
angular.module('g1b.datetime-inputs').
7-
directive('timeInput', ['$document', function ($document) {
7+
directive('timeInput', ['$document', '$timeout', function ($document, $timeout) {
88
return {
99
restrict: 'E',
1010
scope: {
@@ -42,15 +42,20 @@ directive('timeInput', ['$document', function ($document) {
4242
if ( scope.selected.isSame(datetime) && !!scope.time ) { return; }
4343
if ( !datetime ) {
4444
scope.selected = scope.time = undefined;
45-
} else {
45+
} else if ( ( !scope.minDate || datetime > scope.minDate ) && ( !scope.maxDate || datetime < scope.maxDate ) ) {
4646
scope.selected.year(datetime.year()).month(datetime.month()).date(datetime.date()).hours(datetime.hours()).minutes(datetime.minutes()).seconds(datetime.seconds());
47+
if ( !scope.time ) {
48+
scope.time = scope.selected;
49+
}
50+
scope.$$postDigest(function () {
51+
scope.onChange();
52+
});
53+
} else {
54+
scope.warning = true;
55+
$timeout(function () {
56+
scope.warning = false;
57+
}, 250);
4758
}
48-
if ( !scope.time ) {
49-
scope.time = scope.selected;
50-
}
51-
scope.$$postDigest(function () {
52-
scope.onChange();
53-
});
5459
};
5560

5661
// Close edit popover

0 commit comments

Comments
 (0)