forked from GUMGA/components
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNumber.js
executable file
·36 lines (33 loc) · 1.23 KB
/
Number.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(function(){
'use strict';
MinNumber.$inject = [];
function MinNumber() {
return {
restrict: 'A',
require: ['ngModel','?^gumgaForm'],
link: function (scope, elm, attrs, controllers) {
if (attrs.type != 'number') throw 'Esta diretiva suporta apenas inputs do tipo number';
if (!attrs.gumgaMinNumber) throw "O valor da diretiva gumga-min-number não foi informado.";
let ngModelController = controllers[0],
gumgaFormController = controllers[1],
error = 'minnumber',
name = attrs.name,
field = attrs.field,
limitValue = parseInt(attrs.gumgaMinNumber);
function validateMinNumber(inputValue) {
if(inputValue){
let isValid = parseInt(inputValue) >= limitValue;
ngModelController.$setValidity(error, isValid);
gumgaFormController.changeStateOfInput(name, error, isValid, limitValue,field);
}
return inputValue;
}
ngModelController.$parsers.unshift(validateMinNumber);
ngModelController.$formatters.push(validateMinNumber);
attrs.$observe('gumgaMinNumber', x => validateMinNumber(ngModelController.$viewValue));
}
}
}
angular.module('gumga.directives.form.min.number',[])
.directive('gumgaMinNumber',MinNumber);
})();