Skip to content

Commit f1db42d

Browse files
committed
Moved global options under a namespace. Option to not add success msg and option to add prefix to all error message. Various cleanup #8 #9
1 parent 02dc3c8 commit f1db42d

File tree

4 files changed

+32
-34
lines changed

4 files changed

+32
-34
lines changed

src/app.provider.js

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,11 @@ angular.module('bootstrap.angular.validation').provider('bsValidationConfig', fu
1818
}
1919

2020
var _this = this;
21+
this.global = {};
22+
this.global.addSuccessClass = true;
23+
this.global.errorMessagePrefix = '';
2124

22-
// Values can be "simple" or "tooltip"
23-
_this.displayErrorsAs = 'simple';
24-
25-
_this.addSuccessClass = true;
26-
27-
_this.setValidateFieldsOn = function(event) {
25+
this.global.setValidateFieldsOn = function(event) {
2826
if (!event) {
2927
throw 'Please provide an string or list of events to validate fields on';
3028
}
@@ -36,22 +34,26 @@ angular.module('bootstrap.angular.validation').provider('bsValidationConfig', fu
3634
validateFieldsOn = event;
3735
};
3836

39-
_this.setDisplayErrorsAs = function(type) {
37+
this.global.setDisplayErrorsAs = function(type) {
4038
if (!type) {
4139
throw 'Please provide the way validation error should be displayed. In-built options are "simple" & "tooltip".';
4240
}
4341

4442
displayErrorsAs = type;
4543
};
4644

47-
_this.$get = [function() {
45+
this.$get = [function() {
4846
return {
4947
getDisplayErrorsAs: function() {
5048
return displayErrorsAs;
5149
},
5250

51+
getErrorMessagePrefix: function() {
52+
return _this.global.errorMessagePrefix || '';
53+
},
54+
5355
shouldAddSuccessClass: function() {
54-
return _this.addSuccessClass;
56+
return _this.global.addSuccessClass;
5557
},
5658

5759
shouldValidateOnBlur: function() {
Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
'use strict';
22

3-
angular.module('bootstrap.angular.validation').factory('simpleMessageService', ['BsValidationService', function(validationService) {
3+
angular.module('bootstrap.angular.validation').factory('simpleMessageService', ['BsValidationService', 'bsValidationConfig',
4+
function(validationService, validationConfig) {
45

56
var errorElementClass = '.bs-invalid-msg';
6-
var helpBlockClass = '.help-block';
77

8-
var errorClasses = [errorElementClass.substring(1), helpBlockClass.substring(1)];
9-
var markupClasses = errorClasses.join(' ');
10-
11-
var iconMarkup = '<i class="fa fa-exclamation-triangle fa-fw"></i>';
8+
function errorContainer($element, $formGroupElement) {
9+
var $errorElement = $formGroupElement.findOne(errorElementClass);
10+
if ($errorElement && $errorElement.length) {
11+
return $errorElement;
12+
}
1213

13-
function errorContainer($element, $formGroupElement, message) {
1414
var insertAfter;
1515

1616
// Check if the container have any Bootstrap input group then append the error after it
@@ -21,15 +21,14 @@ angular.module('bootstrap.angular.validation').factory('simpleMessageService', [
2121
insertAfter = $element;
2222
}
2323

24-
message = '<span class="' + markupClasses + '">' + iconMarkup + message + '</span>';
25-
26-
insertAfter.after(message);
24+
insertAfter.after('<span class="help-block ' + errorElementClass.substring(1) + '"></span>');
25+
return $formGroupElement.findOne(errorElementClass);
2726
}
2827

2928
return {
3029
hideErrorMessage: function($element, $formGroupElement) {
3130
validationService.removeErrorClass($formGroupElement);
32-
$formGroupElement.findAll('span.' + errorClasses.join('.')).addClass('ng-hide');
31+
$formGroupElement.findAll(errorElementClass).addClass('ng-hide');
3332
},
3433

3534
resolveMessage: function($element, $attr, key) {
@@ -38,14 +37,10 @@ angular.module('bootstrap.angular.validation').factory('simpleMessageService', [
3837

3938
showErrorMessage: function($element, $attr, ngModelController, $formGroupElement) {
4039
var firstErrorKey = Object.keys(ngModelController.$error)[0];
41-
var message = this.resolveMessage($element, $attr, firstErrorKey);
42-
43-
var errorElement = $formGroupElement.findOne(errorElementClass);
44-
if (errorElement.length === 0) {
45-
errorContainer($element, $formGroupElement, message);
46-
}
40+
var message = validationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);
4741

48-
errorElement.html(iconMarkup + message).removeClass('ng-hide');
42+
var $errorElement = errorContainer($element, $formGroupElement);
43+
$errorElement.html(message).removeClass('ng-hide');
4944
}
5045
};
5146
}]);

src/services/tooltip.message.service.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
'use strict';
44

55
angular.module('bootstrap.angular.validation').factory('tooltipMessageService', ['$injector', 'BsValidationService',
6-
function($injector, validationService) {
7-
8-
var iconMarkup = '<i class="fa fa-exclamation-triangle fa-fw"></i>';
6+
'bsValidationConfig', function($injector, validationService, validationConfig) {
97

108
function getElementID($element) {
119
var id = $element.attr('id');
@@ -40,7 +38,7 @@ function($injector, validationService) {
4038

4139
showErrorMessage: function($element, $attr, ngModelController) {
4240
var firstErrorKey = Object.keys(ngModelController.$error)[0];
43-
var message = this.resolveMessage($element, $attr, firstErrorKey);
41+
var message = validationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);
4442

4543
var tooltipID = getErrorTooltipID($element);
4644
var $errorTooltip = getErrorTooltip($element);

src/services/validation.service.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
* @description Core service of this module to provide various default validations.
77
*/
88
angular.module('bootstrap.angular.validation').factory('BsValidationService', ['$interpolate', 'bsValidationConfig',
9-
'$injector', function($interpolate, bsValidationConfig, $injector) {
9+
'$injector', function($interpolate, validationConfig, $injector) {
1010

1111
var displayErrorAsAttrName = 'bsDisplayErrorAs';
1212
var customFormGroup = '[bs-form-group]';
@@ -103,7 +103,10 @@ angular.module('bootstrap.angular.validation').factory('BsValidationService', ['
103103

104104
addSuccessClass: function($formGroupElement) {
105105
this.removeErrorClass($formGroupElement);
106-
$formGroupElement.addClass('has-success');
106+
107+
if (validationConfig.shouldAddSuccessClass()) {
108+
$formGroupElement.addClass('has-success');
109+
}
107110
},
108111

109112
addToNgIncludedURLs: function (url) {
@@ -147,7 +150,7 @@ angular.module('bootstrap.angular.validation').factory('BsValidationService', ['
147150
}
148151

149152
// Use the global preference
150-
return bsValidationConfig.getDisplayErrorsAs();
153+
return validationConfig.getDisplayErrorsAs();
151154
},
152155

153156
getDefaultMessage: function (key) {

0 commit comments

Comments
 (0)