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