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