@jecloud/ui
Version:
JECloud UI库,基于ant-design-vue封装
1 lines • 4.07 kB
JavaScript
var e=this&&this.__assign||function(){return e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},e.apply(this,arguments)},t=this&&this.__spreadArrays||function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var a=Array(e),r=0;for(t=0;t<n;t++)for(var u=arguments[t],o=0,l=u.length;o<l;o++,r++)a[r]=u[o];return a};import{createVNode as n,mergeProps as a}from"vue";import{computed as r,defineComponent as u,getCurrentInstance as o,nextTick as l,onMounted as i,ref as v,watchEffect as s}from"vue";import p from"ant-design-vue/es/input/ClearableLabeledInput";import d from"ant-design-vue/es/input/ResizableTextArea";import{textAreaProps as f}from"ant-design-vue/es/input/inputProps";import{fixControlledValue as c,resolveOnChange as m,triggerFocus as g}from"ant-design-vue/es/input/Input";import h from"ant-design-vue/es/_util/classNames";import{useInjectFormItemContext as x}from"ant-design-vue/es/form/FormItemContext";import y from"ant-design-vue/es/_util/hooks/useConfigInject";import b from"ant-design-vue/es/_util/omit";import{useProvideInput as C}from"./context";import{useModelValue as w,useStyle4Size as A}from"../../hooks";import{addonProps as _}from"../../hooks/use-addon";function I(e,n){return t(e||"").slice(0,n).join("")}export default u({name:"JeInputTextarea",inheritAttrs:!1,props:e(e(e({},f()),{allowClear:{type:Boolean,default:!0},height:Number,width:Number}),_),emits:["reset","update:value"],setup:function(u,f){var _=f.attrs,N=f.expose,T=f.emit,j=f.slots,k=x(),z=w({props:u,context:f,changeEvent:!0}),B=v(),E=v(""),O=y("input",u),F=O.prefixCls,P=O.size,R=O.direction,V=r((function(){return""===u.showCount||u.showCount||!1})),D=r((function(){return Number(u.maxlength)>0})),J=v(!1),K=o();C({type:"textarea",instance:K,props:u,context:f});var L=function(e){var t;g(null===(t=B.value)||void 0===t?void 0:t.textArea,e)},M=function(e,t){z.value!==e&&(void 0===u.value?z.value=e:l((function(){var e,t,n;B.value.textArea.value!==E.value&&(null===(n=null===(e=B.value)||void 0===e?void 0:(t=e.instance).update)||void 0===n||n.call(t))})),l((function(){t&&t()})))},q=function(e){13===e.keyCode&&T("pressEnter",e),T("keydown",e)},G=function(e){var t=u.onBlur;null==t||t(e),k.onFieldBlur()},H=function(e){z.value=e.target.value,T("input",e),k.onFieldChange()},Q=function(e){m(B.value.textArea,e,H),M("",(function(){L()}))},S=function(e){var t=e.target,n=t.value,a=t.composing;if(J.value=e.isComposing||a,!(J.value&&u.lazy||z.value===n)){var r=e.currentTarget.value;D.value&&(r=I(r,u.maxlength)),m(e.currentTarget,e,H,r),M(r)}},U=function(){var t,r,o,l=_.style,i=_.class,v=u.bordered,s=void 0===v||v,p=e(e(e({},b(u,["allowClear"])),_),{style:V.value?{}:l,class:(t={},t[F.value+"-borderless"]=!s,t[""+i]=i&&!V.value,t[F.value+"-sm"]="small"===P.value,t[F.value+"-lg"]="large"===P.value,t),showCount:null,prefixCls:F.value,onInput:S,onChange:S,onBlur:G,onKeydown:q});return(null===(r=u.valueModifiers)||void 0===r?void 0:r.lazy)&&delete p.onInput,n(d,a(p,{id:null!==(o=p.id)&&void 0!==o?o:k.id.value,ref:B,maxlength:u.maxlength}),null)};return i((function(){"test"===process.env.NODE_ENV&&u.autofocus&&L()})),N({focus:L,blur:function(){var e,t;null===(t=null===(e=B.value)||void 0===e?void 0:e.textArea)||void 0===t||t.blur()},resizableTextArea:B}),s((function(){var e=c(z.value);J.value||!D.value||null!==u.value&&void 0!==u.value||(e=I(e,u.maxlength)),E.value=e})),function(){var r,o=u.maxlength,l=u.bordered,i=void 0===l||l,v=_.style,s=_.class,d=e(e(e({},u),_),{prefixCls:F.value,inputType:"text",handleReset:Q,direction:R.value,bordered:i,style:V.value?void 0:v}),f=n(p,a(d,{value:E.value,style:A({props:u})}),e(e({},j),{element:U}));if(V.value){var c=t(E.value).length,m="";m="object"==typeof V.value?V.value.formatter({count:c,maxlength:o}):c+(D.value?" / "+o:"");f=n("div",{class:h(F.value+"-textarea",(r={},r[F.value+"-textarea-rtl"]="rtl"===R.value,r),F.value+"-textarea-show-count",s),style:v,"data-count":m},[f])}return f}}});