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