balm-ui
Version:
A modular and customizable UI library based on Material Design and Vue 3
1 lines • 3.59 kB
JavaScript
!function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("vue")):"function"===typeof define&&define.amd?define("$validator",["vue"],t):"object"===typeof exports?exports.$validator=t(require("vue")):e.$validator=t(e.Vue)}("undefined"!==typeof self?self:this,(function(e){return function(){"use strict";var t={154:function(t){t.exports=e}},i={};function s(e){var a=i[e];if(void 0!==a)return a.exports;var n=i[e]={exports:{}};return t[e](n,n.exports,s),n.exports}s.d=function(e,t){for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},s.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};s.r(a),s.d(a,{default:function(){return g},install:function(){return v},useValidator:function(){return f}});var n=s(154);const o=/(?:^\[object\s(.*?)\]$)/;var r=e=>Object.prototype.toString.call(e).replace(o,"$1").toLowerCase();const l={required:{validate(e){return e&&e.length>0},message:"%s is required"}};let d={};function c(e,t){console.warn("[$validator]",`The '${e}' has been deprecated. Use the '${t}' instead`)}class u{constructor(){const e=(0,n.getCurrentInstance)();this.instance=e,this.validations=[],this.customValidations=[]}validate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i={valid:!0,validFields:[],invalidFields:[],messages:[],message:"",validMsg:{}},s=[];if(this.instance){const{setupState:e,data:t}=this.instance;s=e.validations||t.validations||[]}if(this.validations=this.customValidations.length?this.customValidations:s,!Array.isArray(this.validations))throw new Error("[$validator]: validations must be an array in 10.7.0");for(let a=0,n=this.validations.length;a<n;a++){const s=this.validations[a],{key:n,label:o,validator:l}=s,c=n;if(!t.length||t.includes(c)){const t=o||c,a=l.split(",").map((e=>e.trim()));let n=!0;for(let o=0,l=a.length;o<l;o++){let l=a[o],u=s[l],v="object"===r(u)?u:d[l];if(v&&"function"===r(v.validate)){let s=[e[c],e];if(!v.validate(...s)){n=!1;let e="";switch(r(v.message)){case"string":e=v.message.replace("%s",t);break;case"function":e=v.message(...s);break;default:console.warn("[$validator]",`'${c}.message' must be a string or function`)}e&&i.messages.push(e);break}}else console.warn("[$validator]",`The field '${c}' is missing a validation rule: '${l}'`)}n?i.validFields.push(c):i.invalidFields.push(c)}}return i.messages.length&&(i.valid=!1,i.message=i.messages[0],i.invalidFields.forEach(((e,t)=>{i.validMsg[e]=i.messages[t]}))),i.validFields.forEach((e=>{i.validMsg[e]=""})),i}resetValidations(){c("resetValidations","clear")}setValidations(){c("setValidations","set")}clear(){this.customValidations=[]}get(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return e?this.customValidations.find((t=>{let{key:i}=t;return i===e})):this.customValidations}set(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Array.isArray(e))this.customValidations=e;else{const i=this.customValidations.findIndex((t=>{let{key:i}=t;return i===e}));~i?this.customValidations[i]=Object.assign({},t):this.customValidations=[Object.assign({key:e},t)]}}}function v(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d=Object.assign({},l,t);const i=new u;e.config.globalProperties.$validator=i,e.provide("validator",i)}const f=()=>new u;var g={install:v};return a}()}));