diff --git a/src/datepicker/datepicker.js b/src/datepicker/datepicker.js index 85f7fee665..fdfd63e8c6 100644 --- a/src/datepicker/datepicker.js +++ b/src/datepicker/datepicker.js @@ -47,13 +47,13 @@ angular.module('ui.bootstrap.datepicker', []) if (attrs.min) { scope.$parent.$watch($parse(attrs.min), function(value) { - minDate = new Date(value); + minDate = value ? new Date(value) : null; refill(); }); } if (attrs.max) { scope.$parent.$watch($parse(attrs.max), function(value) { - maxDate = new Date(value); + maxDate = value ? new Date(value) : null; refill(); }); } @@ -161,7 +161,7 @@ angular.module('ui.bootstrap.datepicker', []) scope.$watch('model', function ( dt, olddt ) { if ( angular.isDate(dt) ) { - selected = angular.copy(dt); + selected = new Date(dt); } if ( ! angular.equals(dt, olddt) ) { diff --git a/src/datepicker/test/datepicker.spec.js b/src/datepicker/test/datepicker.spec.js index 71b9ff059d..7e1a77f680 100644 --- a/src/datepicker/test/datepicker.spec.js +++ b/src/datepicker/test/datepicker.spec.js @@ -507,6 +507,20 @@ describe('datepicker directive', function () { } } }); + + it('enables everything before if it is cleared', function() { + $rootScope.mindate = null; + $rootScope.date = new Date("December 20, 1949"); + $rootScope.$digest(); + + clickTitleButton(); + for (var i = 0; i < 4; i ++) { + for (var j = 0; j < 3; j ++) { + expect(getOptionsEl(i, j).find('button').prop('disabled')).toBe( false ); + } + } + }); + }); describe('max attribute', function () { @@ -580,6 +594,16 @@ describe('datepicker directive', function () { } } }); + + it('enables everything after if it is cleared', function() { + $rootScope.maxdate = null; + $rootScope.$digest(); + for (var i = 0; i < 5; i ++) { + for (var j = 0; j < 7; j ++) { + expect(getOptionsEl(i, j).find('button').prop('disabled')).toBe( false ); + } + } + }); }); describe('date-disabled expression', function () {