UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

3 lines (2 loc) 2.75 kB
"use strict";const e=require("vue");require("../button/index.cjs");const a=require("./symbol.cjs"),n=require("@vexip-ui/config"),q=require("@vexip-ui/hooks"),C=require("@vexip-ui/utils"),I=require("./props.cjs"),x=require("../button/button.cjs"),B=e.defineComponent({name:"FormSubmit",__name:"form-submit",props:I.formSubmitProps,setup(b,{expose:g}){const h=b,t=n.useProps("form-submit",h,{size:null,locale:null,type:"primary",label:null,dashed:null,text:null,simple:null,ghost:null,disabled:null,circle:null,loadingIcon:n.createIconProp(),loadingEffect:null,icon:n.createIconProp(),color:null,buttonType:null,block:null,onBeforeSubmit:{default:null,isFunc:!0}}),f=e.useSlots(),d=e.inject(a.FIELD_OPTIONS,null),m=e.inject(a.FORM_PROPS,{}),s=e.inject(a.FORM_ACTIONS,null),y=n.useNameHelper("form"),v=n.useLocale("form",e.toRef(t,"locale")),{timer:S}=q.useSetTimeout(),r=e.ref(!1),u=e.ref(),c=e.computed(()=>m.method&&m.action),k=e.computed(()=>!!s||t.inherit),p=e.computed(()=>r.value||(d?d.loading.value:!1));g({submit:u,isNative:c,isLoading:p});async function P(){var l;if(t.disabled||r.value||!s)return;r.value=!0;const o=await s.validate();if(o.length)n.emitEvent(t.onError,o);else{let i=!0;typeof t.onBeforeSubmit=="function"&&(i=t.onBeforeSubmit(),C.isPromise(i)&&(i=await i)),i!==!1&&(n.emitEvent(t.onSubmit),c.value&&((l=u.value)==null||l.click()))}S.loading=setTimeout(()=>{r.value=!1},300)}return(o,l)=>(e.openBlock(),e.createBlock(e.unref(x),e.mergeProps(o.$attrs,{inherit:k.value,class:e.unref(y).be("submit"),size:e.unref(t).size,type:e.unref(t).type,simple:e.unref(t).simple,ghost:e.unref(t).ghost,dashed:e.unref(t).dashed,text:e.unref(t).text,disabled:e.unref(t).disabled,loading:p.value,circle:e.unref(t).circle,"loading-icon":e.unref(t).loadingIcon,"loading-effect":e.unref(t).loadingEffect,icon:e.unref(t).icon,color:e.unref(t).color,"button-type":e.unref(t).buttonType,block:e.unref(t).block,tag:e.unref(t).tag,onClick:P}),e.createSlots({default:e.withCtx(()=>[e.renderSlot(o.$slots,"default",{},()=>[e.createTextVNode(e.toDisplayString(e.unref(t).label||e.unref(v).submit),1)]),c.value?(e.openBlock(),e.createElementBlock("button",{key:0,ref_key:"submit",ref:u,type:"submit",style:{display:"none"},onClick:l[0]||(l[0]=e.withModifiers(()=>{},["stop"]))},null,512)):e.createCommentVNode("",!0)]),_:2},[f.icon?{name:"icon",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"icon")]),key:"0"}:void 0,f.loading?{name:"loading",fn:e.withCtx(()=>[e.renderSlot(o.$slots,"loading")]),key:"1"}:void 0]),1040,["inherit","class","size","type","simple","ghost","dashed","text","disabled","loading","circle","loading-icon","loading-effect","icon","color","button-type","block","tag"]))}});module.exports=B; //# sourceMappingURL=form-submit.vue2.cjs.map