import{aC as e,bu as t,o as r,h as i,w as s,X as a,i as l,A as o,W as n,j as u,N as h,t as d,y as f,z as m,bF as c,bG as b}from"./index-DXvjTqMr.js";import{S as g}from"./uni-forms.vue_vue_type_style_index_0_scoped_a2a9907e_lang.DijPs27m.js";import{_ as p}from"./_plugin-vue_export-helper.BCo6x5W8.js";const _=p({name:"uniFormsItem",options:{virtualHost:!0},provide(){return{uniFormItem:this}},inject:{form:{from:"uniForm",default:null}},props:{rules:{type:Array,default:()=>null},name:{type:[String,Array],default:""},required:{type:Boolean,default:!1},label:{type:String,default:""},labelWidth:{type:[String,Number],default:""},labelAlign:{type:String,default:""},errorMessage:{type:[String,Boolean],default:""},leftIcon:String,iconColor:{type:String,default:"#606266"}},data:()=>({errMsg:"",userRules:null,localLabelAlign:"left",localLabelWidth:"70px",localLabelPos:"left",border:!1,isFirstBorder:!1}),computed:{msg(){return this.errorMessage||this.errMsg}},watch:{"form.formRules"(e){this.init()},"form.labelWidth"(e){this.localLabelWidth=this._labelWidthUnit(e)},"form.labelPosition"(e){this.localLabelPos=this._labelPosition()},"form.labelAlign"(e){}},created(){this.init(!0),this.name&&this.form&&this.$watch((()=>this.form._getDataValue(this.name,this.form.localData)),((e,t)=>{if(!this.form._isEqual(e,t)){const t=this.itemSetValue(e);this.onFieldChange(t,!1)}}),{immediate:!1})},unmounted(){this.__isUnmounted=!0,this.unInit()},methods:{setRules(e=null){this.userRules=e,this.init(!1)},setValue(){},async onFieldChange(r,i=!0){const{formData:s,localData:a,errShowType:l,validateCheck:o,validateTrigger:n,_isRequiredField:u,_realName:h}=this.form,d=h(this.name);r||(r=this.form.formData[d]);const f=this.itemRules.rules&&this.itemRules.rules.length;if(!this.validator||!f||0===f)return;const m=u(this.itemRules.rules||[]);let c=null;return"bind"===n||i?(c=await this.validator.validateUpdate({[d]:r},s),m||void 0!==r&&""!==r||(c=null),c&&c.errorMessage?("undertext"===l&&(this.errMsg=c?c.errorMessage:""),"toast"===l&&e({title:c.errorMessage||"校验错误",icon:"none"}),"modal"===l&&t({title:"提示",content:c.errorMessage||"校验错误"})):this.errMsg="",o(c||null)):this.errMsg="",c||null},init(e=!1){const{validator:t,formRules:r,childrens:i,formData:s,localData:a,_realName:l,labelWidth:o,_getDataValue:n,_setDataValue:u}=this.form||{};if(this.localLabelAlign=this._justifyContent(),this.localLabelWidth=this._labelWidthUnit(o),this.localLabelPos=this._labelPosition(),this.form&&e&&i.push(this),!t||!r)return;this.form.isFirstBorder||(this.form.isFirstBorder=!0,this.isFirstBorder=!0),this.group&&(this.group.isFirstBorder||(this.group.isFirstBorder=!0,this.isFirstBorder=!0)),this.border=this.form.border;const h=l(this.name),d=this.userRules||this.rules;"object"==typeof r&&d&&(r[h]={rules:d},t.updateSchema(r));const f=r[h]||{};this.itemRules=f,this.validator=t,this.itemSetValue(n(this.name,a))},unInit(){if(this.form){const{childrens:e,formData:t,_realName:r}=this.form;e.forEach(((e,i)=>{e===this&&(this.form.childrens.splice(i,1),delete t[r(e.name)])}))}},itemSetValue(e){const t=this.form._realName(this.name),r=this.itemRules.rules||[],i=this.form._getValue(t,e,r);return this.form._setDataValue(t,this.form.formData,i),i},clearValidate(){this.errMsg=""},_isRequired(){return this.required},_justifyContent(){if(this.form){const{labelAlign:e}=this.form;let t=this.labelAlign?this.labelAlign:e;if("left"===t)return"flex-start";if("center"===t)return"center";if("right"===t)return"flex-end"}return"flex-start"},_labelWidthUnit(e){return this.num2px(this.labelWidth?this.labelWidth:e||(this.label?70:"auto"))},_labelPosition(){return this.form&&this.form.labelPosition||"left"},isTrigger:(e,t,r)=>"submit"!==e&&e?"bind":void 0===e?"bind"!==t?t?"submit":""===r?"bind":"submit":"bind":"submit",num2px:e=>"number"==typeof e?`${e}px`:e}},[["render",function(e,t,c,b,g,p){const _=f,y=m;return r(),i(y,{class:o(["uni-forms-item",["is-direction-"+g.localLabelPos,g.border?"uni-forms-item--border":"",g.border&&g.isFirstBorder?"is-first-border":""]])},{default:s((()=>[a(e.$slots,"label",{},(()=>[l(y,{class:o(["uni-forms-item__label",{"no-label":!c.label&&!c.required}]),style:n({width:g.localLabelWidth,justifyContent:g.localLabelAlign})},{default:s((()=>[c.required?(r(),i(_,{key:0,class:"is-required"},{default:s((()=>[u("*")])),_:1})):h("",!0),l(_,null,{default:s((()=>[u(d(c.label),1)])),_:1})])),_:1},8,["class","style"])]),!0),l(y,{class:"uni-forms-item__content"},{default:s((()=>[a(e.$slots,"default",{},void 0,!0),l(y,{class:o(["uni-forms-item__error",{"msg--active":p.msg}])},{default:s((()=>[l(_,null,{default:s((()=>[u(d(p.msg),1)])),_:1})])),_:1},8,["class"])])),_:3})])),_:3},8,["class"])}],["__scopeId","data-v-ab882ba0"]]),y=(e,t,r)=>{const i=r.find((e=>{return e.format&&("int"===(t=e.format)||"double"===t||"number"===t||"timestamp"===t);var t})),s=r.find((e=>e.format&&"boolean"===e.format||"bool"===e.format));return i&&(t=t||0===t?R(Number(t))?Number(t):t:null),s&&(t=!!F(t)&&t),t},v=(e,t)=>N(t,e),S=(e,t={})=>{const r=D(e);if("object"==typeof r&&Array.isArray(r)&&r.length>1){return r.reduce(((e,t)=>e+`#${t}`),"_formdata_")}return r[0]||e},j=e=>{let t=e.replace("_formdata_#","");return t=t.split("#").map((e=>R(e)?Number(e):e)),t},A=(e,t,r)=>("object"!=typeof e||D(t).reduce(((e,t,i,s)=>i===s.length-1?(e[t]=r,null):(t in e||(e[t]=/^[0-9]{1,}$/.test(s[i+1])?[]:{}),e[t])),e),e);function D(e){return Array.isArray(e)?e:e.replace(/\[/g,".").replace(/\]/g,"").split(".")}const N=(e,t,r="undefined")=>{let i=D(t).reduce(((e,t)=>(e||{})[t]),e);return i&&void 0===i?r:i},R=e=>!isNaN(Number(e)),F=e=>"boolean"==typeof e;const V=p({name:"uniForms",emits:["validate","submit"],options:{virtualHost:!0},props:{value:{type:Object,default:()=>null},modelValue:{type:Object,default:()=>null},model:{type:Object,default:()=>null},rules:{type:Object,default:()=>({})},errShowType:{type:String,default:"undertext"},validateTrigger:{type:String,default:"submit"},labelPosition:{type:String,default:"left"},labelWidth:{type:[String,Number],default:""},labelAlign:{type:String,default:"left"},border:{type:Boolean,default:!1}},provide(){return{uniForm:this}},data:()=>({formData:{},formRules:{}}),computed:{localData(){const e=this.model||this.modelValue||this.value;return e?(t=e,JSON.parse(JSON.stringify(t))):{};var t}},watch:{rules:{handler:function(e,t){this.setRules(e)},deep:!0,immediate:!0}},created(){c().$vm.$.appContext.config.globalProperties.binddata||(c().$vm.$.appContext.config.globalProperties.binddata=function(e,t,r){if(r)this.$refs[r].setValue(e,t);else{let r;for(let e in this.$refs){const t=this.$refs[e];if(t&&t.$options&&"uniForms"===t.$options.name){r=t;break}}if(!r)return;r.setValue(e,t)}}),this.childrens=[],this.inputChildrens=[],this.setRules(this.rules)},methods:{setRules(e){this.formRules=Object.assign({},this.formRules,e),this.validator=new g(e)},setValue(e,t){let r=this.childrens.find((t=>t.name===e));return r?(this.formData[e]=y(0,t,this.formRules[e]&&this.formRules[e].rules||[]),r.onFieldChange(this.formData[e])):null},validate(e,t){return this.checkAll(this.formData,e,t)},validateField(e=[],t){e=[].concat(e);let r={};return this.childrens.forEach((t=>{const i=S(t.name);-1!==e.indexOf(i)&&(r=Object.assign({},r,{[i]:this.formData[i]}))})),this.checkAll(r,[],t)},clearValidate(e=[]){e=[].concat(e),this.childrens.forEach((t=>{if(0===e.length)t.errMsg="";else{const r=S(t.name);-1!==e.indexOf(r)&&(t.errMsg="")}}))},submit(e,t,r){for(let i in this.dataValue){this.childrens.find((e=>e.name===i))&&void 0===this.formData[i]&&(this.formData[i]=this._getValue(i,this.dataValue[i]))}return this.checkAll(this.formData,e,t,"submit")},async checkAll(e,t,r,i){if(!this.validator)return;let s,a=[];for(let u in e){const e=this.childrens.find((e=>S(e.name)===u));e&&a.push(e)}r||"function"!=typeof t||(r=t),!r&&"function"!=typeof r&&Promise&&(s=new Promise(((e,t)=>{r=function(r,i){r?t(r):e(i)}})));let l=[],o=JSON.parse(JSON.stringify(e));for(let u in a){const e=a[u];let t=S(e.name);const r=await e.onFieldChange(o[t]);if(r&&(l.push(r),"toast"===this.errShowType||"modal"===this.errShowType))break}Array.isArray(l)&&0===l.length&&(l=null),Array.isArray(t)&&t.forEach((e=>{let t=S(e),r=v(e,this.localData);void 0!==r&&(o[t]=r)})),"submit"===i?this.$emit("submit",{detail:{value:o,errors:l}}):this.$emit("validate",l);let n={};return n=((e={})=>{let t=JSON.parse(JSON.stringify(e)),r={};for(let i in t){let e=j(i);A(r,e,t[i])}return r})(o,this.name),r&&"function"==typeof r&&r(l,n),s&&r?s:null},validateCheck(e){this.$emit("validate",e)},_getValue:y,_isRequiredField:e=>{let t=!1;for(let r=0;r(t[e]=r,r||""),_getDataValue:v,_realName:S,_isRealName:e=>/^_formdata_#*/.test(e),_isEqual:(e,t)=>{if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return e===t;var r=toString.call(e);if(r!==toString.call(t))return!1;switch(r){case"[object RegExp]":case"[object String]":return""+e==""+t;case"[object Number]":return+e!=+e?+t!=+t:0==+e?1/+e==1/t:+e==+t;case"[object Date]":case"[object Boolean]":return+e==+t}if("[object Object]"==r){var i=Object.getOwnPropertyNames(e),s=Object.getOwnPropertyNames(t);if(i.length!=s.length)return!1;for(var a=0;a[l(d,null,{default:s((()=>[a(e.$slots,"default",{},void 0,!0)])),_:3})])),_:3})}],["__scopeId","data-v-a2a9907e"]]);export{_,V as a};