Skip to content

Commit f2c1906

Browse files
committed
fix(datepicker): min-date: timezone fix for literals
fixes angular-ui#3437
1 parent ee7ab9f commit f2c1906

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/datepicker/datepicker.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,16 @@ function(scope, element, attrs, $compile, $parse, $document, $rootScope, $positi
629629
scope.$parent.$watch(getAttribute, function(value) {
630630
scope.watchData[key] = value;
631631
if (key === 'minDate' || key === 'maxDate') {
632-
cache[key] = new Date(value);
632+
var date = parseDate(value);
633+
if(!date) {
634+
var tryDate = new Date(value);
635+
if(angular.isDate(tryDate) && !isNaN(tryDate)) {
636+
dateArray = tryDate.toISOString().split('T')[0].split('-');
637+
date = new Date(+dateArray[0], +dateArray[1] - 1, +dateArray[2]);
638+
}
639+
}
640+
scope.watchData[key] = date;
641+
cache[key] = date;
633642
}
634643
});
635644
datepickerEl.attr(cameltoDash(key), 'watchData.' + key);

src/datepicker/test/datepicker.spec.js

+11
Original file line numberDiff line numberDiff line change
@@ -1948,6 +1948,17 @@ describe('datepicker directive', function() {
19481948
expect(buttons.eq(0).prop('disabled')).toBe(true);
19491949
});
19501950

1951+
it('should disable today button if before min date, literal case', function() {
1952+
var minDate = new Date(new Date().setDate(new Date().getDate() + 1));
1953+
var literalMinDate = minDate.toISOString().split('T')[0];
1954+
var wrapElement = $compile('<div><input ng-model="date" uib-datepicker-popup min-date="\'' + literalMinDate + '\'" is-open="true"><div>')($rootScope);
1955+
$rootScope.$digest();
1956+
assignElements(wrapElement);
1957+
assignButtonBar();
1958+
1959+
expect(buttons.eq(0).prop('disabled')).toBe(true);
1960+
});
1961+
19511962
it('should disable today button if after max date', function() {
19521963
$rootScope.maxDate = new Date().setDate(new Date().getDate() - 2);
19531964
var wrapElement = $compile('<div><input ng-model="date" uib-datepicker-popup max-date="maxDate" is-open="true"><div>')($rootScope);

0 commit comments

Comments
 (0)