forked from Simnation/Main
1 line
2.1 KiB
JavaScript
1 line
2.1 KiB
JavaScript
import{b as S,k as A,aG as E,aH as I,e as B,x as R,A as V,h as q,aI as Q,ap as F,z as j,aJ as k,t as D,aK as K}from"./app-014d9ed9.js";const G=S({name:"QForm",props:{autofocus:Boolean,noErrorFocus:Boolean,noResetFocus:Boolean,greedy:Boolean,onSubmit:Function},emits:["reset","validation-success","validation-error"],setup(a,{slots:C,emit:f}){const P=q(),u=A(null);let i=0;const s=[];function d(e){const r=typeof e=="boolean"?e:a.noErrorFocus!==!0,l=++i,y=(t,o)=>{f("validation-"+(t===!0?"success":"error"),o)},g=t=>{const o=t.validate();return typeof o.then=="function"?o.then(n=>({valid:n,comp:t}),n=>({valid:!1,comp:t,err:n})):Promise.resolve({valid:o,comp:t})};return(a.greedy===!0?Promise.all(s.map(g)).then(t=>t.filter(o=>o.valid!==!0)):s.reduce((t,o)=>t.then(()=>g(o).then(n=>{if(n.valid===!1)return Promise.reject(n)})),Promise.resolve()).catch(t=>[t])).then(t=>{if(t===void 0||t.length===0)return l===i&&y(!0),!0;if(l===i){const{comp:o,err:n}=t[0];if(n!==void 0&&console.error(n),y(!1,o),r===!0){const p=t.find(({comp:x})=>typeof x.focus=="function"&&Q(x.$)===!1);p!==void 0&&p.comp.focus()}}return!1})}function v(){i++,s.forEach(e=>{typeof e.resetValidation=="function"&&e.resetValidation()})}function m(e){e!==void 0&&F(e);const r=i+1;d().then(l=>{r===i&&l===!0&&(a.onSubmit!==void 0?f("submit",e):e!==void 0&&e.target!==void 0&&typeof e.target.submit=="function"&&e.target.submit())})}function b(e){e!==void 0&&F(e),f("reset"),j(()=>{v(),a.autofocus===!0&&a.noResetFocus!==!0&&c()})}function c(){k(()=>{if(u.value===null)return;const e=u.value.querySelector("[autofocus], [data-autofocus]")||Array.prototype.find.call(u.value.querySelectorAll("[tabindex]"),r=>r.tabIndex>-1);e!=null&&e.focus({preventScroll:!0})})}D(K,{bindComponent(e){s.push(e)},unbindComponent(e){const r=s.indexOf(e);r>-1&&s.splice(r,1)}});let h=!1;return E(()=>{h=!0}),I(()=>{h===!0&&a.autofocus===!0&&c()}),B(()=>{a.autofocus===!0&&c()}),Object.assign(P.proxy,{validate:d,resetValidation:v,submit:m,reset:b,focus:c,getValidationComponents:()=>s}),()=>R("form",{class:"q-form",ref:u,onSubmit:m,onReset:b},V(C.default))}});export{G as Q};
|