index-7f0a9c49.js 8.9 KB

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