forked from GUMGA/components
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDate.js
executable file
·44 lines (38 loc) · 1.34 KB
/
Date.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
37
38
39
40
41
42
43
44
(function(){
'use strict';
MinDate.$inject = ['$filter'];
function MinDate($filter) {
return {
restrict: 'A',
require: ['ngModel','?^gumgaForm'],
link: (scope, elm, attrs, controllers) => {
if (attrs.type != 'date') throw 'Esta diretiva suporta apenas inputs do tipo date';
if (!attrs.gumgaMinDate) throw "O valor da diretiva gumga-min-date não foi informado.";
let ngModelController = controllers[0],
gumgaFormController = controllers[1],
error = 'mindate',
format = 'yyyy-MM-dd',
name = attrs.name,
field = attrs.field,
limitValue = attrs.gumgaMinDate;
function validateMinDate(inputValue) {
if(inputValue){
let input = $filter('date')(inputValue, format),
min = $filter('date')(limitValue, format),
isValid = (input >= min);
ngModelController.$setValidity(error, isValid);
gumgaFormController.changeStateOfInput(name, error, isValid, limitValue,field);
}
return inputValue;
};
ngModelController.$parsers.unshift(validateMinDate);
ngModelController.$formatters.push(validateMinDate);
attrs.$observe('gumgaMinDate', function () {
validateMinDate(ngModelController.$viewValue);
});
}
}
}
angular.module('gumga.directives.form.min.date',[])
.directive('gumgaMinDate',MinDate);
})();