UNPKG

el-plus-powerful-form

Version:

## [DOCS](https://peng-xiao-shuai.github.io/vite-vue-admin-docs/zh-CN/component_directive/component/powerful-form-doc.html)

2 lines (1 loc) 5.83 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("element-plus"),D=require("../../locale/lang.js"),F=require("../../index.js"),o=require("vue"),E=require("../../hooks/useGetRefs.js"),y=require("../../utils/index.js"),A=require("../../locale/packages.js"),w=require("../index.js"),f={},j={formItems:{type:Array,default:()=>[]},extendTable:{type:[Boolean,String],default:!1},formDataDefault:{type:Object,default:()=>({})},disabled:{type:Boolean,default:!1},showType:{type:String,default:void 0},property:{type:Object,default:()=>({})},apis:{type:[Object,Function],default:void 0},showLabel:{type:Boolean,default:!0}},R=()=>({formItem:{type:Object,default:()=>({})},formData:{type:Object,default:()=>({})},index:{type:Number},inline:{type:Boolean,default:!1}}),$=(a,i)=>y.isTypeProtect(i,s=>typeof s!="function")?i:i(a),O=a=>{var u;const i=(u=o.getCurrentInstance())==null?void 0:u.proxy,s=o.reactive({formItems:[],rules:{},formData:{},watchCache:[]}),b=o.ref(null),{t:h}=D.useLocale();o.onMounted(()=>{a.showType==="query"&&setTimeout(()=>{var r;const e=(r=b.value)==null?void 0:r.$el,t=e==null?void 0:e.parentNode;t&&e&&(t.style.height=`${e.offsetHeight}px`)},100)});const n=(e,t)=>{var l,d,m;const r=Object.values(w.FormTypeEnum).includes(t.type),c=F.deepClone({text:t.text||e.label,prop:((l=t.formItem)==null?void 0:l.prop)||t.prop,render:r?t.render:void 0,type:r?t.type:void 0,slotName:t.slotName,...t.formItem||{},data:r&&!((d=t.formItem)!=null&&d.data)?t.data||{}:{...r?t.data:{},...(m=t.formItem)==null?void 0:m.data}});s.formItems.push(c),p(c,s.formData,t),g(c)},g=e=>{if(e.rule&&y.isTypeProtect(e.rule,r=>Array.isArray(r)&&typeof r[0]=="object"&&!Array.isArray(r[0]))){s.rules[e.prop]=e.rule;return}const t=[];e.rule&&(t.push({required:!0,message:`${y.clearSymbol(e.text)} ${h(A.LangKey.VerifyEmpty)}`,trigger:"blur"}),Array.isArray(e.rule)?t.push({min:e.rule[0],max:e.rule[1],message:`${h(A.LangKey.VerifyLength)}${e.rule[0]} ~ ${e.rule[1]}`,trigger:"blur"}):typeof e.rule=="string"&&(y.verifyFormItemRule[e.rule]?t.push({...y.verifyFormItemRule[e.rule],message:h(y.verifyFormItemRule[e.rule].message)}):console.warn(`${y.verifyFormItemRule[e.rule]?"在 verifyFormItemRule 中存在":"在 verifyFormItemRule 中不存在"} 支持 ${Object.keys(y.verifyFormItemRule).join("、")}`)),s.rules[e.prop]=t)},p=(e,t,r)=>{var c,l;switch(Object.assign(s.formData,a.formDataDefault||{}),s.formData[e.prop]=((c=a.formDataDefault)==null?void 0:c[e.prop])??e.defaultData??"",f[e.prop]=e.defaultData??"",e.type){case w.FormTypeEnum.Select:r&&!((l=e.data)!=null&&l.options)&&Array.isArray(r.filters)&&(e.data.options=r.filters.map(d=>({...d,label:d.value,value:d.key}))),t[e.prop]=t[e.prop]||void 0,f[e.prop]=e.defaultData??"";break;case w.FormTypeEnum.Rate:t[e.prop]=Number.isNaN(Number(t[e.prop]))?0:Number(t[e.prop]);break;case w.FormTypeEnum.Checkbox:t[e.prop]=typeof t[e.prop]=="string"?t[e.prop].split(",").filter(d=>d.length):Array.isArray(t[e.prop])?t[e.prop]:[],f[e.prop]=e.defaultData||[];break}},T=e=>{s.formItems=[],Object.keys(f).forEach(t=>delete f[t]),e.forEach(t=>{Array.isArray(t.props)?t.props.filter(r=>r.formItem).forEach(r=>{n(t,r)}):t.props.formItem&&n(t,t.props)})};s.watchCache.push(o.watch(()=>a.extendTable,e=>{if(e){let t=[];E.useAsyncGetRefs(typeof e=="boolean"?"PTable":e,i).then(r=>{t=r==null?void 0:r.props.header,T(t)})}},{immediate:!0}),o.watch(()=>a.formDataDefault,e=>{s.formData=F.deepClone(f),Object.assign(s.formData,e||{})},{immediate:!0,deep:!0}),o.watch(()=>a.formItems,e=>{e&&a.extendTable===!1&&(s.formItems=e,Object.keys(f).forEach(t=>delete f[t]),s.formItems.forEach(t=>{g(t),p(t,s.formData)}))},{immediate:!0,deep:!0}));const x=o.computed(()=>s.formItems.filter(e=>typeof e.visible>"u"?(Array.isArray(e.showType)?e.showType.includes(a.showType||""):e.showType===a.showType)||!a.showType||!e.showType:e.visible(s.formData,a.showType)));return o.onBeforeUnmount(()=>{s.watchCache.forEach(e=>e())}),{formViewData:s,formRenderItems:x,elFormRef:b,transformHeader:T}},k=(a,i,s,b)=>{const{proxy:h}=o.getCurrentInstance();let n=!0;return{submitForm:(u={},e)=>(s.value.validate().then(()=>{var t,r,c;a.apis&&(y.isTypeProtect(a.apis,l=>!!Object.keys(l).length)?a.showType?(t=a.apis)!=null&&t[a.showType]?(r=a.apis)==null||r[a.showType]({...u,...i.value}).then(l=>{e&&v.ElMessage.success(e.successMessage||"提交成功!"),e==null||e.cb("success",l)}).catch(l=>{e&&v.ElMessage.error(e.errorMessage||"提交失败!"),e==null||e.cb("error",l)}):console.error(`apis.${a.showType} 不存在`):console.error("showType 为空,但是 apis 为对象时需要 showType 作为键值。或者 apis 传递一个 Promise"):(c=a.apis)==null||c.call(a,{...u,...i.value}).then(l=>{e&&v.ElMessage.success(e.successMessage||"提交成功!"),e==null||e.cb("success",l)}).catch(l=>{e&&v.ElMessage.error(e.errorMessage||"提交失败!"),e==null||e.cb("error",l)}))}).catch(()=>!1),s.value.validate()),resetForm:()=>{i.value=F.deepClone(f)},refreshRender:(u=typeof a.extendTable=="boolean"?"PTable":a.extendTable,e)=>{var c,l;const t=e||h,r=E.useGetRefs(u,t);(c=r.value)!=null&&c.props.header&&b((l=r.value)==null?void 0:l.props.header)},visibleFormTrigger:()=>{var t;const u=(t=s.value)==null?void 0:t.$el,e=u==null?void 0:u.parentNode;if(e&&u){n=!n;const r=u.offsetHeight;e.style.height=n?`${r}px`:"0px"}return n},bindAttr(u,e,t){var r;return{formItem:u,formData:e,index:t,inline:((r=a.property)==null?void 0:r.inline)||!1}}}},q=a=>({event:(s,...b)=>{var h,n,g;y.isTypeProtect(a.formItem.data,p=>typeof(p==null?void 0:p.on)!=null)&&((g=(n=(h=a.formItem.data)==null?void 0:h.on)==null?void 0:n[s])==null||g.call(n,{...a},...b))}});exports.componentProps=R;exports.formViewProps=j;exports.isProperty=$;exports.useEvent=q;exports.useFormViewState=O;exports.useFunction=k;