diff --git a/src/timepicker/test/timepicker.spec.js b/src/timepicker/test/timepicker.spec.js
index 87a84da260..eec0627f79 100644
--- a/src/timepicker/test/timepicker.spec.js
+++ b/src/timepicker/test/timepicker.spec.js
@@ -2015,4 +2015,107 @@ describe('timepicker directive', function() {
expect(element.html()).toBe('
foo
');
});
});
+
+ describe('ngDisabled', function() {
+ it('prevents modifying date via controls when true', function() {
+ $rootScope.disabled = false;
+ element = $compile(' max ||
+ return disabled || incrementedSelected > max ||
(incrementedSelected < selected && incrementedSelected < min);
};
$scope.noDecrementHours = function() {
var decrementedSelected = addMinutes(selected, -hourStep * 60);
- return decrementedSelected < min ||
+ return disabled || decrementedSelected < min ||
(decrementedSelected > selected && decrementedSelected > max);
};
$scope.noIncrementMinutes = function() {
var incrementedSelected = addMinutes(selected, minuteStep);
- return incrementedSelected > max ||
+ return disabled || incrementedSelected > max ||
(incrementedSelected < selected && incrementedSelected < min);
};
$scope.noDecrementMinutes = function() {
var decrementedSelected = addMinutes(selected, -minuteStep);
- return decrementedSelected < min ||
+ return disabled || decrementedSelected < min ||
(decrementedSelected > selected && decrementedSelected > max);
};
$scope.noIncrementSeconds = function() {
var incrementedSelected = addSeconds(selected, secondStep);
- return incrementedSelected > max ||
+ return disabled || incrementedSelected > max ||
(incrementedSelected < selected && incrementedSelected < min);
};
$scope.noDecrementSeconds = function() {
var decrementedSelected = addSeconds(selected, -secondStep);
- return decrementedSelected < min ||
+ return disabled || decrementedSelected < min ||
(decrementedSelected > selected && decrementedSelected > max);
};
$scope.noToggleMeridian = function() {
if (selected.getHours() < 12) {
- return addMinutes(selected, 12 * 60) > max;
+ return disabled || addMinutes(selected, 12 * 60) > max;
} else {
- return addMinutes(selected, -12 * 60) < min;
+ return disabled || addMinutes(selected, -12 * 60) < min;
}
};
@@ -200,17 +207,23 @@ angular.module('ui.bootstrap.timepicker', [])
};
hoursInputEl.bind('mousewheel wheel', function(e) {
- $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());
+ if (!disabled) {
+ $scope.$apply(isScrollingUp(e) ? $scope.incrementHours() : $scope.decrementHours());
+ }
e.preventDefault();
});
minutesInputEl.bind('mousewheel wheel', function(e) {
- $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());
+ if (!disabled) {
+ $scope.$apply(isScrollingUp(e) ? $scope.incrementMinutes() : $scope.decrementMinutes());
+ }
e.preventDefault();
});
secondsInputEl.bind('mousewheel wheel', function(e) {
- $scope.$apply((isScrollingUp(e)) ? $scope.incrementSeconds() : $scope.decrementSeconds());
+ if (!disabled) {
+ $scope.$apply((isScrollingUp(e)) ? $scope.incrementSeconds() : $scope.decrementSeconds());
+ }
e.preventDefault();
});
};
@@ -218,38 +231,44 @@ angular.module('ui.bootstrap.timepicker', [])
// Respond on up/down arrowkeys
this.setupArrowkeyEvents = function(hoursInputEl, minutesInputEl, secondsInputEl) {
hoursInputEl.bind('keydown', function(e) {
- if (e.which === 38) { // up
- e.preventDefault();
- $scope.incrementHours();
- $scope.$apply();
- } else if (e.which === 40) { // down
- e.preventDefault();
- $scope.decrementHours();
- $scope.$apply();
+ if (!disabled) {
+ if (e.which === 38) { // up
+ e.preventDefault();
+ $scope.incrementHours();
+ $scope.$apply();
+ } else if (e.which === 40) { // down
+ e.preventDefault();
+ $scope.decrementHours();
+ $scope.$apply();
+ }
}
});
minutesInputEl.bind('keydown', function(e) {
- if (e.which === 38) { // up
- e.preventDefault();
- $scope.incrementMinutes();
- $scope.$apply();
- } else if (e.which === 40) { // down
- e.preventDefault();
- $scope.decrementMinutes();
- $scope.$apply();
+ if (!disabled) {
+ if (e.which === 38) { // up
+ e.preventDefault();
+ $scope.incrementMinutes();
+ $scope.$apply();
+ } else if (e.which === 40) { // down
+ e.preventDefault();
+ $scope.decrementMinutes();
+ $scope.$apply();
+ }
}
});
secondsInputEl.bind('keydown', function(e) {
- if (e.which === 38) { // up
- e.preventDefault();
- $scope.incrementSeconds();
- $scope.$apply();
- } else if (e.which === 40) { // down
- e.preventDefault();
- $scope.decrementSeconds();
- $scope.$apply();
+ if (!disabled) {
+ if (e.which === 38) { // up
+ e.preventDefault();
+ $scope.incrementSeconds();
+ $scope.$apply();
+ } else if (e.which === 40) { // down
+ e.preventDefault();
+ $scope.decrementSeconds();
+ $scope.$apply();
+ }
}
});
};
diff --git a/template/timepicker/timepicker.html b/template/timepicker/timepicker.html
index a4db776537..c415b936ba 100644
--- a/template/timepicker/timepicker.html
+++ b/template/timepicker/timepicker.html
@@ -10,15 +10,15 @@
-
+
|
: |
-
+
|
: |
-
+
|
|