Files
Automatisation-Reseau/PROJECT/fastprod_frontend/plugins/veeValidate.js
2023-05-30 08:32:18 +02:00

58 lines
1.4 KiB
JavaScript

// import * as VeeValidate from 'vee-validate'
import {
required,
confirmed,
email,
alpha,
digits,
numeric,
regex,
} from "vee-validate/dist/rules";
import {
ValidationProvider,
ValidationObserver,
extend,
localize,
} from "vee-validate";
// import attributesFr from 'vee-validate/dist/locale/fr'
import fr from "vee-validate/dist/locale/fr.json";
import Vue from "vue";
Vue.component("ValidationProvider", ValidationProvider);
Vue.component("ValidationObserver", ValidationObserver);
localize("fr", fr);
extend("required", required);
extend("confirmed", confirmed);
extend("alpha", alpha);
extend("digits", digits);
extend("regex", regex);
extend("numeric", numeric);
extend("decimal", {
validate: (value, { decimals = "*", separator = "." } = {}) => {
if (value === null || value === undefined || value === "") {
return {
valid: false,
};
}
if (Number(decimals) === 0) {
return {
valid: /^-?\d*$/.test(value),
};
}
const regexPart = decimals === "*" ? "+" : `{1,${decimals}}`;
// eslint-disable-next-line no-unused-vars
const regex = new RegExp(
`^[-+]?\\d*(\\${separator}\\d${regexPart})?([eE]{1}[-]?\\d+)?$`
);
value = Number(value);
return {
valid: regex.test(value),
};
},
message:
"Le champ {_field_} doit contenir seulement un chiffre décimal par exemple: 500 ou 500.50",
});