| 1 |
- import{a2 as me,a3 as he,i as be,a0 as ve,q as ye,c as Ie,n as z,l as w,m as Ce,e as Se,k as ke,b as xe,f as K,a4 as Ve,K as Ee,a1 as we,A as I,a5 as H,z as Me,D as A,I as P,C as Te,w as Le}from"./index-c1f44820.js";import{c as Ae,C as Pe}from"./index-b8adef18.js";import{g as Re,d as Be,n as ze,r as R,a as C,J as _e,y as De,z as E,o as Ne,c as u,m as Oe,l as We}from"./index-ebd06049.js";import{u as Fe}from"./use-expose-cd5a8a20.js";let $e=0;function je(){const e=Re(),{name:i="unknown"}=(e==null?void 0:e.type)||{};return`${i}-${++$e}`}function Y(e){return Array.isArray(e)?!e.length:e===0?!1:!e}function qe(e,i){if(Y(e)){if(i.required)return!1;if(i.validateEmpty===!1)return!0}return!(i.pattern&&!i.pattern.test(String(e)))}function Ke(e,i){return new Promise(l=>{const d=i.validator(e,i);if(ve(d)){d.then(l);return}l(d)})}function J(e,i){const{message:l}=i;return ye(l)?l(e,i):l||""}function He({target:e}){e.composing=!0}function U({target:e}){e.composing&&(e.composing=!1,e.dispatchEvent(new Event("input")))}function Je(e,i){const l=me();e.style.height="auto";let d=e.scrollHeight;if(be(i)){const{maxHeight:r,minHeight:c}=i;r!==void 0&&(d=Math.min(d,r)),c!==void 0&&(d=Math.max(d,c))}d&&(e.style.height=`${d}px`,he(l))}function Ue(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,i){return[...e].slice(0,i).join("")}const[Ye,m]=Ie("field"),Ge={id:String,name:String,leftIcon:String,rightIcon:String,autofocus:Boolean,clearable:Boolean,maxlength:z,formatter:Function,clearIcon:w("clear"),modelValue:Ce(""),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=Se({},Ae,Ge,{rows:z,type:w("text"),rules:Array,autosize:[Boolean,Object],labelWidth:z,labelClass:ke,labelAlign:String,showWordLimit:Boolean,errorMessageAlign:String,colon:{type:Boolean,default:null}});var Xe=Be({name:Ye,props:Qe,emits:["blur","focus","clear","keypress","clickInput","endValidate","startValidate","clickLeftIcon","clickRightIcon","update:modelValue"],setup(e,{emit:i,slots:l}){const d=je(),r=ze({status:"unvalidated",focused:!1,validateMessage:""}),c=R(),_=R(),M=R(),{parent:h}=xe(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=C(()=>{const t=f("readonly");if(e.clearable&&!t){const a=y()!=="",n=e.clearTrigger==="always"||e.clearTrigger==="focus"&&r.focused;return a&&n}return!1}),D=C(()=>M.value&&l.input?M.value():e.modelValue),Q=t=>t.reduce((a,n)=>a.then(()=>{if(r.status==="failed")return;let{value:o}=D;if(n.formatter&&(o=n.formatter(o,n)),!qe(o,n)){r.status="failed",r.validateMessage=J(o,n);return}if(n.validator)return Y(o)&&n.validateEmpty===!1?void 0:Ke(o,n).then(s=>{s&&typeof s=="string"?(r.status="failed",r.validateMessage=s):s===!1&&(r.status="failed",r.validateMessage=J(o,n))})}),Promise.resolve()),S=()=>{r.status="unvalidated",r.validateMessage=""},N=()=>i("endValidate",{status:r.status,message:r.validateMessage}),O=(t=e.rules)=>new Promise(a=>{S(),t?(i("startValidate"),Q(t).then(()=>{r.status==="failed"?(a({name:e.name,message:r.validateMessage}),N()):(r.status="passed",a(),N())})):a()}),T=t=>{if(h&&e.rules){const{validateTrigger:a}=h.props,n=H(a).includes(t),o=e.rules.filter(s=>s.trigger?H(s.trigger).includes(t):n);o.length&&O(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(r.focused&&s){const g=[...t],b=g.length-+n;return g.splice(s-b,b),g.join("")}return B(t,+n)}return t},k=(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=Me(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&&r.focused){const{selectionEnd:V}=c.value,q=B(n,V);s=v(g(q))-v(q)}}if(c.value&&c.value.value!==t)if(r.focused){let{selectionStart:g,selectionEnd:b}=c.value;if(c.value.value=t,I(g)&&I(b)){const V=v(t);o?(g-=o,b-=o):s&&(g+=s,b+=s),c.value.setSelectionRange(Math.min(g,V),Math.min(b,V))}}else c.value.value=t;t!==e.modelValue&&i("update:modelValue",t)},Z=t=>{t.target.composing||k(t.target.value)},L=()=>{var t;return(t=c.value)==null?void 0:t.blur()},W=()=>{var t;return(t=c.value)==null?void 0:t.focus()},x=()=>{const t=c.value;e.type==="textarea"&&e.autosize&&t&&Je(t,e.autosize)},p=t=>{r.focused=!0,i("focus",t),E(x),f("readonly")&&L()},ee=t=>{r.focused=!1,k(y(),"onBlur"),i("blur",t),!f("readonly")&&(T("onBlur"),E(x),Te())},F=t=>i("clickInput",t),te=t=>i("clickLeftIcon",t),ne=t=>i("clickRightIcon",t),ae=t=>{A(t),i("update:modelValue",""),i("clear",t)},$=C(()=>{if(typeof e.error=="boolean")return e.error;if(h&&h.props.showError&&r.status==="failed")return!0}),ie=C(()=>{const t=f("labelWidth"),a=f("labelAlign");if(t&&a!=="top")return{width:K(t)}}),re=t=>{t.keyCode===13&&(!(h&&h.props.submitOnEnter)&&e.type!=="textarea"&&A(t),e.type==="search"&&L()),i("keypress",t)},j=()=>e.id||`${d}-input`,le=()=>r.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:F},[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:F,onChange:U,onKeypress:re,onCompositionend:U,onCompositionstart:He};return e.type==="textarea"?u("textarea",a,null):u("input",Oe(Ue(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]),We("/"),e.maxlength])}},de=()=>{if(h&&h.props.showErrorMessage===!1)return;const t=e.errorMessage||r.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),W()},style:a==="top"&&t?{width:K(t)}:void 0},[e.label+n])},ge=()=>[u("div",{class:m("body")},[oe(),G.value&&u(P,{ref:_,name:e.clearIcon,class:m("clear")},null),ce(),l.button&&u("div",{class:m("button")},[l.button()])]),ue(),de()];return Fe({blur:L,focus:W,validate:O,formValue:D,resetValidation:S,getValidationStatus:le}),_e(Ve,{customValue:M,resetValidation:S,validateWithTrigger:T}),De(()=>e.modelValue,()=>{k(y()),S(),T("onChange"),E(x)}),Ne(()=>{k(y(),e.formatTrigger),E(x)}),Ee("touchstart",ae,{target:C(()=>{var t;return(t=_.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(Pe,{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:ie.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 nt=Le(Xe);export{nt as F,je as u};
|