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