Commit dc179692 by Sam Padgett Committed by GitHub

Merge pull request #203 from juanvallejo/jvallejo/add-osc-unique-disabled-attr

add ability to "disable" form validity
parents f73a9fb4 844fb58c
...@@ -978,11 +978,13 @@ angular.module('openshiftCommonUI') ...@@ -978,11 +978,13 @@ angular.module('openshiftCommonUI')
return { return {
restrict: 'A', restrict: 'A',
scope: { scope: {
oscUnique: '=' oscUnique: '=',
oscUniqueDisabled: '='
}, },
require: 'ngModel', require: 'ngModel',
link: function($scope, $elem, $attrs, ctrl) { link: function($scope, $elem, $attrs, ctrl) {
var list = []; var list = [];
var isUnique = true;
$scope.$watchCollection('oscUnique', function(newVal) { $scope.$watchCollection('oscUnique', function(newVal) {
list = _.isArray(newVal) ? list = _.isArray(newVal) ?
...@@ -990,9 +992,15 @@ angular.module('openshiftCommonUI') ...@@ -990,9 +992,15 @@ angular.module('openshiftCommonUI')
_.keys(newVal); _.keys(newVal);
}); });
var updateValidity = function() {
ctrl.$setValidity('oscUnique', $scope.oscUniqueDisabled || isUnique);
};
$scope.$watch('oscUniqueDisabled', updateValidity);
ctrl.$parsers.unshift(function(value) { ctrl.$parsers.unshift(function(value) {
// is valid so long as it doesn't already exist isUnique = !_.includes(list, value);
ctrl.$setValidity('oscUnique', !_.includes(list, value)); updateValidity();
return value; return value;
}); });
} }
......
...@@ -1149,11 +1149,13 @@ angular.module('openshiftCommonUI') ...@@ -1149,11 +1149,13 @@ angular.module('openshiftCommonUI')
return { return {
restrict: 'A', restrict: 'A',
scope: { scope: {
oscUnique: '=' oscUnique: '=',
oscUniqueDisabled: '='
}, },
require: 'ngModel', require: 'ngModel',
link: function($scope, $elem, $attrs, ctrl) { link: function($scope, $elem, $attrs, ctrl) {
var list = []; var list = [];
var isUnique = true;
$scope.$watchCollection('oscUnique', function(newVal) { $scope.$watchCollection('oscUnique', function(newVal) {
list = _.isArray(newVal) ? list = _.isArray(newVal) ?
...@@ -1161,9 +1163,15 @@ angular.module('openshiftCommonUI') ...@@ -1161,9 +1163,15 @@ angular.module('openshiftCommonUI')
_.keys(newVal); _.keys(newVal);
}); });
var updateValidity = function() {
ctrl.$setValidity('oscUnique', $scope.oscUniqueDisabled || isUnique);
};
$scope.$watch('oscUniqueDisabled', updateValidity);
ctrl.$parsers.unshift(function(value) { ctrl.$parsers.unshift(function(value) {
// is valid so long as it doesn't already exist isUnique = !_.includes(list, value);
ctrl.$setValidity('oscUnique', !_.includes(list, value)); updateValidity();
return value; return value;
}); });
} }
......
...@@ -345,15 +345,20 @@ ctrl.shown && onHide(); ...@@ -345,15 +345,20 @@ ctrl.shown && onHide();
return { return {
restrict:"A", restrict:"A",
scope:{ scope:{
oscUnique:"=" oscUnique:"=",
oscUniqueDisabled:"="
}, },
require:"ngModel", require:"ngModel",
link:function($scope, $elem, $attrs, ctrl) { link:function($scope, $elem, $attrs, ctrl) {
var list = []; var list = [], isUnique = !0;
$scope.$watchCollection("oscUnique", function(newVal) { $scope.$watchCollection("oscUnique", function(newVal) {
list = _.isArray(newVal) ? newVal :_.keys(newVal); list = _.isArray(newVal) ? newVal :_.keys(newVal);
}), ctrl.$parsers.unshift(function(value) { });
return ctrl.$setValidity("oscUnique", !_.includes(list, value)), value; var updateValidity = function() {
ctrl.$setValidity("oscUnique", $scope.oscUniqueDisabled || isUnique);
};
$scope.$watch("oscUniqueDisabled", updateValidity), ctrl.$parsers.unshift(function(value) {
return isUnique = !_.includes(list, value), updateValidity(), value;
}); });
} }
}; };
......
...@@ -31,11 +31,13 @@ angular.module('openshiftCommonUI') ...@@ -31,11 +31,13 @@ angular.module('openshiftCommonUI')
return { return {
restrict: 'A', restrict: 'A',
scope: { scope: {
oscUnique: '=' oscUnique: '=',
oscUniqueDisabled: '='
}, },
require: 'ngModel', require: 'ngModel',
link: function($scope, $elem, $attrs, ctrl) { link: function($scope, $elem, $attrs, ctrl) {
var list = []; var list = [];
var isUnique = true;
$scope.$watchCollection('oscUnique', function(newVal) { $scope.$watchCollection('oscUnique', function(newVal) {
list = _.isArray(newVal) ? list = _.isArray(newVal) ?
...@@ -43,9 +45,15 @@ angular.module('openshiftCommonUI') ...@@ -43,9 +45,15 @@ angular.module('openshiftCommonUI')
_.keys(newVal); _.keys(newVal);
}); });
var updateValidity = function() {
ctrl.$setValidity('oscUnique', $scope.oscUniqueDisabled || isUnique);
};
$scope.$watch('oscUniqueDisabled', updateValidity);
ctrl.$parsers.unshift(function(value) { ctrl.$parsers.unshift(function(value) {
// is valid so long as it doesn't already exist isUnique = !_.includes(list, value);
ctrl.$setValidity('oscUnique', !_.includes(list, value)); updateValidity();
return value; return value;
}); });
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment