2 lines
2.0 KiB
JavaScript
2 lines
2.0 KiB
JavaScript
import{p as V,d as B,o as E,E as j,C as k,r as x,bD as C,b as F,j as P,k as q,m as A}from"./index-7b3f5fdc.js";const M=V(B({name:"LayForm",__name:"index",props:{model:{default:function(){return{}}},required:{type:Boolean},rules:{},size:{},mode:{},pane:{type:Boolean,default:!1},initValidate:{type:Boolean,default:!1},useCN:{type:Boolean,default:!0},labelPosition:{default:"right"},labelWidth:{},inlineWidth:{},requiredIcons:{default:""},requiredErrorMessage:{},validateMessage:{},isLabelTooltip:{type:Boolean,default:!1},tooltipProps:{}},emits:["submit"],setup(m,{expose:y,emit:h}){const n=m,a=[],r={},v=h;E(()=>{var t;n.initValidate&&((t=c())==null||t.catch(e=>{}))});const g=function(t){t.preventDefault();let e=!1;return c((l,o,s)=>{e=l,v("submit",l,o,s)}),e},c=async function(t,e){let l=a;typeof t=="function"?e=t:(typeof t=="string"||Array.isArray(t)&&t.length>0)&&(l=[],(t?[].concat(t):[]).forEach(i=>r[i]&&l.push(r[i])));let o=[];for(const i of l){const u=await i.validate();o=o.concat(u==null?void 0:u.errors).filter(Boolean)}const s=o.length===0;return typeof e=="function"?(s?e(!0,n.model,null):e(!1,n.model,o),null):new Promise((i,u)=>{const p={isValidate:s,model:n.model,errors:s?null:o};p.isValidate?i(p):u(p)})},d=function(t){const e=t?[].concat(t):[];e.length===0?a.forEach(l=>l.clearValidate()):e.forEach(l=>r[l]&&r[l].clearValidate())};function f(t,e){const l=t.replace(/\[(\d+)\]/g,".$1").split("."),o=l.shift();if(o!==void 0)return e==null||typeof e!="object"?null:l.length===0?(e[o]instanceof Array?e[o]=[]:e[o]=null,e):(e[o]=f(l.join("."),e[o]),e)}const b=t=>{for(var e=0;e<a.length;e++)a[e].prop!=null&&f(a[e].prop,t)};return y({validate:c,clearValidate:d,reset:function(){b(n.model),j(()=>d())}}),k("LayForm",x({formItems:a,addField:function(t){a.push(t),r[t.prop]=t},removeField:function(t){for(var e=0;e<a.length;e++)a[e].prop==t.prop&&a.splice(e,1);t.prop!=null&&Reflect.deleteProperty(r,t.prop)},clearValidate:d,validate:c,...C(n)})),(t,e)=>(F(),P("form",{class:A(["layui-form",{"layui-form-pane":t.pane}]),onsubmit:g},[q(t.$slots,"default")],2))}}));export{M as j};
|