@aplus-frontend/ui
Version:
2 lines (1 loc) • 4.56 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("vue"),X=require("@aplus-frontend/antdv"),Y=require("./context.js"),a=require("lodash-unified"),Z=require("@vueuse/core"),b=require("./constant.js"),p=require("../utils/index.js"),z=require("./utils/set.js"),T=require("./utils/params.js"),ee=require("./provider/context.js"),O=require("./utils/get.js"),te=require("../utils/warning.js"),re=i.defineComponent({name:"ApForm",__name:"ap-form",props:{layout:{default:"horizontal"},labelCol:{},wrapperCol:{},colon:{type:Boolean,default:!0},labelAlign:{default:"right"},labelWrap:{type:Boolean},prefixCls:{},requiredMark:{},hideRequiredMark:{type:Boolean,default:!1},rules:{},validateMessages:{},validateOnRuleChange:{type:Boolean,default:!0},scrollToFirstError:{},onSubmit:{},name:{},validateTrigger:{default:"change"},size:{},disabled:{type:Boolean},onFieldsChange:{},onFinish:{},onFinishFailed:{},onValidate:{},variant:{},initialValues:{},onValuesChange:{},syncToUrl:{type:[Boolean,Function],default:!1},syncToUrlPriority:{type:Boolean}},setup(w,{expose:j}){const s=w;function v(e,t,r=!0,n){if(a.isArray(e)){let o=l;for(let f=0;f<e.length-1;f++)e[f]in o||(o[e[f]]={}),o=o[e[f]];n?n(o,e[e.length-1]):o[e[e.length-1]]=t}else n?n(l,e):l[e]=t;let c=a.isArray(e)?e[0]:e;if(r){const o={[c]:l[c]};m.triggerFormChange(s.name,o),s.onValuesChange?.(o,l,e)}V()}const u=i.ref(),C=Z.useUrlSearchParams(p.getRouteType()),m=ee.useInjectFormProvider(),B=te.useDevWarning("ApForm"),P=i.ref(s.syncToUrl?T.genParams(s.syncToUrl,C,"get"):{});let g=a.cloneDeep(q()),F={};const l=i.reactive(q());let h=[];function q(){const e=s.initialValues||{};return s.syncToUrlPriority?{...e,...i.unref(P)}:{...i.unref(P),...e}}function E(e){const t=y(e,F);m.triggerFormFinish(s.name,e),s.syncToUrl&&T.setToParams(C,T.genParams(s.syncToUrl,t,"set")),s.onFinish?.(t)}const N=async()=>{u.value?.resetFields(),await i.nextTick(()=>{Object.keys(l).forEach(e=>delete l[e]),Object.assign(l,g),V(),s.syncToUrl&&T.setToParams(C,T.genParams(s.syncToUrl,y(g,F),"set"))})},x=e=>{u.value?.clearValidate(e)},S=(e,t)=>u.value?.validateFields(e,t),D=async(e,t)=>{const r=await u.value?.validateFields(e,t);return y(r,F)},M=e=>e===!0?i.toRaw(l):u.value?.getFieldsValue(e),W=e=>{const t=M(e);return y(t,F)},$=(e,t)=>u.value?.validate(e,t),K=(e,t={})=>{u.value?.scrollToField(e,t)},L=e=>{Object.assign(l,e),V()},I=(e,t,r=!0,n)=>{v(e,t,r,n),V()};function A(e){return e(i.toRaw(l)),h.push(e),()=>{h=h.filter(t=>t!==e)}}function k(e,t){if(a.isArray(e)){let r=g;for(let n=0;n<e.length-1;n++)p.isDef(r[e[n]])||(r[e[n]]={}),r=r[e[n]];r[e[e.length-1]]=t}else g[e]=t}function G(e,t){if(!p.isDef(e)||!p.isDef(t))return;const r=O.getModelValue(g,t);if(a.isEqual(r,e))return;const n=O.getModelValue(i.unref(P),t);p.isDef(n)&&s.syncToUrlPriority||(v(t,e,!1),k(t,e))}function H(e,t){t&&(F=z.default(F,[e].flat(1),t,!0))}function R({initialValue:e,name:t,transform:r}){G(e,t),H(t,r)}function U(){return g}function J(e){if(B(e===b.INTERNAL_FORM_INSTANCE_MARK,"usage","getInternalInstance should only used at internal"),e===b.INTERNAL_FORM_INSTANCE_MARK)return{registerField:R,registerWatch:A,setFieldValue:I,getInitialValues:U}}function V(){if(h.length){const e=i.toRaw(l);h.forEach(t=>{t(e)})}}function y(e,t){if(e==null)return;let r=a.isArray(e)?[]:{};return Object.keys(e).forEach(n=>{const c=e[n],o=t?.[n],f=a.isFunction(o)?o:o?.transformer,Q=a.isFunction(o)?!0:o?.flat;if(a.isFunction(f)){const d=f(c);Q?a.isArray(d)&&a.isArray(r)?r=[...r,...d]:a.isPlainObject(d)&&a.isPlainObject(r)?r={...r,...d}:r[n]=d:r[n]=d}else if(a.isPlainObject(c)||a.isArray(c)){const d=y(c,o);r[n]=d}else r[n]=c}),r}const _={resetFields:N,clearValidate:x,validateFields:S,getFieldsValue:M,validate:$,scrollToField:K,setFieldsValue:L,setFieldValue:I,registerWatch:A,validateFieldsReturnTransformed:D,getFieldsValueTransformed:W,getInternalInstance:J};return i.watch(()=>s.name,e=>{e&&(m.registerForm(e,_),i.onWatcherCleanup(()=>{m.unregisterForm(s.name)}))},{immediate:!0}),Y.useProvideForm({model:i.computed(()=>l),updateModel:v,internalInstance:{registerWatch:A,registerField:R,setFieldValue:I,getInitialValues:U}}),j(_),(e,t)=>(i.openBlock(),i.createBlock(i.unref(X.Form),i.mergeProps({ref_key:"formRef",ref:u},i.unref(a.omit)(s,["initialValues","onValuesChange","onFinish","syncToUrl","syncToUrlPriority"]),{model:l,"data-form-name":e.name,onFinish:E}),{default:i.withCtx(()=>[i.renderSlot(e.$slots,"default")]),_:3},16,["model","data-form-name"]))}});exports.default=re;