Add form-updating input validation for components

This commit is contained in:
gconsidine
2017-05-11 15:22:17 -04:00
parent 725fd15519
commit 29a325d52f
13 changed files with 191 additions and 88 deletions
@@ -1,5 +1,44 @@
function link (scope, el, attrs, form) {
form.use('input', scope, el);
scope.config.state = scope.config.state || {};
let state = scope.config.state;
let input = el.find('input')[0];
setDefaults();
scope.form = form.use('input', state, input);
function setDefaults () {
if (scope.tab === '1') {
input.focus();
}
state.isValid = state.isValid || false;
state.validate = state.validate ? validate.bind(null, state.validate) : validate;
state.check = state.check || check;
state.message = state.message || '';
state.required = state.required || false;
}
function validate (fn) {
let isValid = true;
if (state.required && !state.value) {
isValid = false;
} else if (fn && !fn(scope.config.input)) {
isValid = false;
}
return isValid;
}
function check () {
let isValid = state.validate();
if (isValid !== state.isValid) {
state.isValid = isValid;
form.check();
}
}
}
function atInputText (pathService) {
@@ -12,7 +51,8 @@ function atInputText (pathService) {
link,
scope: {
config: '=',
col: '@'
col: '@',
tab: '@'
}
};
}