index-36e50274.js 8.1 KB

1
  1. import{aN as ye,aO as Ie,aP as Se,aQ as xe,ai as Ce,J as Ve,ab as ke,a6 as z,R as T,at as Ee,d as we,r as Me,c as A,af as Te,C as x,av as K,Q as Le,aR as Pe,aS as Re,M as Ae,o as Be,V as M,an as _e,g as d,a7 as Ne,aL as ze,ay as C,aT as J,aU as Oe,az as De,U as B,l as _,ah as Q,j as We,aV as Fe,q as je}from"./index-b3d5c748.js";import{c as qe,C as $e}from"./index-d5acb7e5.js";import{u as Ue}from"./use-id-d2a65d0a.js";function X(t){return Array.isArray(t)?!t.length:t===0?!1:!t}function He(t,n){if(X(t)){if(n.required)return!1;if(n.validateEmpty===!1)return!0}return!(n.pattern&&!n.pattern.test(String(t)))}function Ke(t,n){return new Promise(r=>{const f=n.validator(t,n);if(Se(f)){f.then(r);return}r(f)})}function Y(t,n){const{message:r}=n;return xe(r)?r(t,n):r||""}function Je({target:t}){t.composing=!0}function G({target:t}){t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}function Qe(t,n){const r=ye();t.style.height="auto";let f=t.scrollHeight;if(Ce(n)){const{maxHeight:l,minHeight:s}=n;l!==void 0&&(f=Math.min(f,l)),s!==void 0&&(f=Math.max(f,s))}f&&(t.style.height=`${f}px`,Ie(r))}function Ye(t,n){return t==="number"&&(t="text",n??(n="decimal")),t==="digit"&&(t="tel",n??(n="numeric")),{type:t,inputmode:n}}function v(t){return[...t].length}function N(t,n){return[...t].slice(0,n).join("")}const[Ge,g]=Ve("field"),Xe={id:String,name:String,leftIcon:String,rightIcon:String,autofocus:Boolean,clearable:Boolean,maxlength:z,max:Number,min:Number,formatter:Function,clearIcon:T("clear"),modelValue:Ne(""),inputAlign:String,placeholder:String,autocomplete:String,autocapitalize:String,autocorrect:String,errorMessage:String,enterkeyhint:String,clearTrigger:T("focus"),formatTrigger:T("onChange"),spellcheck:{type:Boolean,default:null},error:{type:Boolean,default:null},disabled:{type:Boolean,default:null},readonly:{type:Boolean,default:null},inputmode:String},Ze=ke({},qe,Xe,{rows:z,type:T("text"),rules:Array,autosize:[Boolean,Object],labelWidth:z,labelClass:Ee,labelAlign:String,showWordLimit:Boolean,errorMessageAlign:String,colon:{type:Boolean,default:null}});var pe=we({name:Ge,props:Ze,emits:["blur","focus","clear","keypress","clickInput","endValidate","startValidate","clickLeftIcon","clickRightIcon","update:modelValue"],setup(t,{emit:n,slots:r}){const f=Ue(),l=Me({status:"unvalidated",focused:!1,validateMessage:""}),s=A(),O=A(),L=A(),{parent:m}=Te(ze),S=()=>{var e;return String((e=t.modelValue)!=null?e:"")},u=e=>{if(C(t[e]))return t[e];if(m&&C(m.props[e]))return m.props[e]},Z=x(()=>{const e=u("readonly");if(t.clearable&&!e){const a=S()!=="",i=t.clearTrigger==="always"||t.clearTrigger==="focus"&&l.focused;return a&&i}return!1}),D=x(()=>L.value&&r.input?L.value():t.modelValue),p=x(()=>{var e;const a=u("required");return a==="auto"?(e=t.rules)==null?void 0:e.some(i=>i.required):a}),ee=e=>e.reduce((a,i)=>a.then(()=>{if(l.status==="failed")return;let{value:o}=D;if(i.formatter&&(o=i.formatter(o,i)),!He(o,i)){l.status="failed",l.validateMessage=Y(o,i);return}if(i.validator)return X(o)&&i.validateEmpty===!1?void 0:Ke(o,i).then(c=>{c&&typeof c=="string"?(l.status="failed",l.validateMessage=c):c===!1&&(l.status="failed",l.validateMessage=Y(o,i))})}),Promise.resolve()),V=()=>{l.status="unvalidated",l.validateMessage=""},W=()=>n("endValidate",{status:l.status,message:l.validateMessage}),F=(e=t.rules)=>new Promise(a=>{V(),e?(n("startValidate"),ee(e).then(()=>{l.status==="failed"?(a({name:t.name,message:l.validateMessage}),W()):(l.status="passed",a(),W())})):a()}),P=e=>{if(m&&t.rules){const{validateTrigger:a}=m.props,i=J(a).includes(e),o=t.rules.filter(c=>c.trigger?J(c.trigger).includes(e):i);o.length&&F(o)}},te=e=>{var a;const{maxlength:i}=t;if(C(i)&&v(e)>+i){const o=S();if(o&&v(o)===+i)return o;const c=(a=s.value)==null?void 0:a.selectionEnd;if(l.focused&&c){const y=[...e],I=y.length-+i;return y.splice(c-I,I),y.join("")}return N(e,+i)}return e},k=(e,a="onChange")=>{var i,o;const c=e;e=te(e);const y=v(c)-v(e);if(t.type==="number"||t.type==="digit"){const b=t.type==="number";if(e=Oe(e,b,b),a==="onBlur"&&e!==""&&(t.min!==void 0||t.max!==void 0)){const h=De(+e,(i=t.min)!=null?i:-1/0,(o=t.max)!=null?o:1/0);+e!==h&&(e=h.toString())}}let I=0;if(t.formatter&&a===t.formatTrigger){const{formatter:b,maxlength:h}=t;if(e=b(e),C(h)&&v(e)>+h&&(e=N(e,+h)),s.value&&l.focused){const{selectionEnd:w}=s.value,H=N(c,w);I=v(b(H))-v(H)}}if(s.value&&s.value.value!==e)if(l.focused){let{selectionStart:b,selectionEnd:h}=s.value;if(s.value.value=e,C(b)&&C(h)){const w=v(e);y?(b-=y,h-=y):I&&(b+=I,h+=I),s.value.setSelectionRange(Math.min(b,w),Math.min(h,w))}}else s.value.value=e;e!==t.modelValue&&n("update:modelValue",e)},ne=e=>{e.target.composing||k(e.target.value)},R=()=>{var e;return(e=s.value)==null?void 0:e.blur()},j=()=>{var e;return(e=s.value)==null?void 0:e.focus()},E=()=>{const e=s.value;t.type==="textarea"&&t.autosize&&e&&Qe(e,t.autosize)},ae=e=>{l.focused=!0,n("focus",e),M(E),u("readonly")&&R()},ie=e=>{l.focused=!1,k(S(),"onBlur"),n("blur",e),!u("readonly")&&(P("onBlur"),M(E),Fe())},q=e=>n("clickInput",e),le=e=>n("clickLeftIcon",e),re=e=>n("clickRightIcon",e),oe=e=>{B(e),n("update:modelValue",""),n("clear",e)},$=x(()=>{if(typeof t.error=="boolean")return t.error;if(m&&m.props.showError&&l.status==="failed")return!0}),se=x(()=>{const e=u("labelWidth"),a=u("labelAlign");if(e&&a!=="top")return{width:K(e)}}),ce=e=>{e.keyCode===13&&(!(m&&m.props.submitOnEnter)&&t.type!=="textarea"&&B(e),t.type==="search"&&R()),n("keypress",e)},U=()=>t.id||`${f}-input`,ue=()=>l.status,de=()=>{const e=g("control",[u("inputAlign"),{error:$.value,custom:!!r.input,"min-height":t.type==="textarea"&&!t.autosize}]);if(r.input)return d("div",{class:e,onClick:q},[r.input()]);const a={id:U(),ref:s,name:t.name,rows:t.rows!==void 0?+t.rows:void 0,class:e,disabled:u("disabled"),readonly:u("readonly"),autofocus:t.autofocus,placeholder:t.placeholder,autocomplete:t.autocomplete,autocapitalize:t.autocapitalize,autocorrect:t.autocorrect,enterkeyhint:t.enterkeyhint,spellcheck:t.spellcheck,"aria-labelledby":t.label?`${f}-label`:void 0,"data-allow-mismatch":"attribute",onBlur:ie,onFocus:ae,onInput:ne,onClick:q,onChange:G,onKeypress:ce,onCompositionend:G,onCompositionstart:Je};return t.type==="textarea"?d("textarea",Q(a,{inputmode:t.inputmode}),null):d("input",Q(Ye(t.type,t.inputmode),a),null)},fe=()=>{const e=r["left-icon"];if(t.leftIcon||e)return d("div",{class:g("left-icon"),onClick:le},[e?e():d(_,{name:t.leftIcon,classPrefix:t.iconPrefix},null)])},ge=()=>{const e=r["right-icon"];if(t.rightIcon||e)return d("div",{class:g("right-icon"),onClick:re},[e?e():d(_,{name:t.rightIcon,classPrefix:t.iconPrefix},null)])},me=()=>{if(t.showWordLimit&&t.maxlength){const e=v(S());return d("div",{class:g("word-limit")},[d("span",{class:g("word-num")},[e]),We("/"),t.maxlength])}},he=()=>{if(m&&m.props.showErrorMessage===!1)return;const e=t.errorMessage||l.validateMessage;if(e){const a=r["error-message"],i=u("errorMessageAlign");return d("div",{class:g("error-message",i)},[a?a({message:e}):e])}},be=()=>{const e=u("labelWidth"),a=u("labelAlign"),i=u("colon")?":":"";if(r.label)return[r.label(),i];if(t.label)return d("label",{id:`${f}-label`,for:r.input?void 0:U(),"data-allow-mismatch":"attribute",onClick:o=>{B(o),j()},style:a==="top"&&e?{width:K(e)}:void 0},[t.label+i])},ve=()=>[d("div",{class:g("body")},[de(),Z.value&&d(_,{ref:O,name:t.clearIcon,class:g("clear")},null),ge(),r.button&&d("div",{class:g("button")},[r.button()])]),me(),he()];return Le({blur:R,focus:j,validate:F,formValue:D,resetValidation:V,getValidationStatus:ue}),Pe(Re,{customValue:L,resetValidation:V,validateWithTrigger:P}),Ae(()=>t.modelValue,()=>{k(S()),V(),P("onChange"),M(E)}),Be(()=>{k(S(),t.formatTrigger),M(E)}),_e("touchstart",oe,{target:x(()=>{var e;return(e=O.value)==null?void 0:e.$el})}),()=>{const e=u("disabled"),a=u("labelAlign"),i=fe(),o=()=>{const c=be();return a==="top"?[i,c].filter(Boolean):c||[]};return d($e,{size:t.size,class:g({error:$.value,disabled:e,[`label-${a}`]:a}),center:t.center,border:t.border,isLink:t.isLink,clickable:t.clickable,titleStyle:se.value,valueClass:g("value"),titleClass:[g("label",[a,{required:p.value}]),t.labelClass],arrowDirection:t.arrowDirection},{icon:i&&a!=="top"?()=>i:null,title:o,value:ve,extra:r.extra})}}});const at=je(pe);export{at as F};