initial commit
This commit is contained in:
77
resources/js/Validation/useFormValidation.js
vendored
Normal file
77
resources/js/Validation/useFormValidation.js
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
import { reactive } from "@vue/reactivity";
|
||||
import useValidators from './validators'
|
||||
|
||||
|
||||
const errors = reactive({});
|
||||
const errorMessage = reactive({});
|
||||
|
||||
|
||||
export default function useFormValidation() {
|
||||
|
||||
|
||||
const { isEmpty, minLength, isEmail, isNum,isInt,maxLength } = useValidators();
|
||||
|
||||
const validateNameField = (fieldName, fieldValue) => {
|
||||
errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue, 4)
|
||||
}
|
||||
|
||||
const validateEmailField = (fieldName, fieldValue) => {
|
||||
errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : isEmail(fieldName, fieldValue)
|
||||
}
|
||||
|
||||
const validatePhoneField = (fieldName, fieldValue) => {
|
||||
errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : isNum(fieldName, fieldValue)
|
||||
}
|
||||
|
||||
const validatePasswordField = (fieldName, fieldValue) => {
|
||||
errors[fieldName] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue, 8)
|
||||
}
|
||||
|
||||
const validate = (rules,messages,fieldName, fieldValue) => {
|
||||
let container = {}
|
||||
container["required"] = isEmpty(fieldName,fieldValue)
|
||||
container["email"] = !fieldValue ? isEmpty(fieldName, fieldValue) : isEmail(fieldName, fieldValue)
|
||||
container["password"] = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue,6)
|
||||
container["integer"] = !fieldValue ? isEmpty(fieldName, fieldValue) : isInt(fieldName, fieldValue)
|
||||
|
||||
for (let i in rules){
|
||||
errors[fieldName] = "";
|
||||
let value = rules[i];
|
||||
if(container[value]){
|
||||
errors[fieldName] = container[value];
|
||||
break;
|
||||
}else {
|
||||
|
||||
let splited = value.split(':')
|
||||
if (splited.length == 2) {
|
||||
container[value] = dyanamicValidation(splited, fieldValue, fieldName)
|
||||
if(container[value]){
|
||||
errors[fieldName] = container[value];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const dyanamicValidation = (splited,fieldValue,fieldName) => {
|
||||
let result = "";
|
||||
switch (splited[0]){
|
||||
case "min":
|
||||
result = !fieldValue ? isEmpty(fieldName, fieldValue) : minLength(fieldName, fieldValue,splited[1])
|
||||
break;
|
||||
case "max":
|
||||
result = !fieldValue ? isEmpty(fieldName, fieldValue) : maxLength(fieldName, fieldValue,splited[1])
|
||||
break;
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
return { errors,validate}
|
||||
}
|
||||
Reference in New Issue
Block a user