UNPKG

vxe-table

Version:

一个基于 vue 的 PC 端表格组件,支持增删改查、虚拟滚动、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、虚拟列表、模态窗口、自定义模板、渲染器、贼灵活的配置项、扩展接口等...

1 lines 4.3 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var autoTxtElem,_xeUtils=_interopRequireDefault(require("xe-utils")),_conf=_interopRequireDefault(require("../../v-x-e-table/src/conf")),_size=_interopRequireDefault(require("../../mixins/size")),_tools=require("../../tools");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperty(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var _default2={name:"VxeTextarea",mixins:[_size.default],model:{prop:"value",event:"modelValue"},props:{value:[String,Number],immediate:{type:Boolean,default:!0},name:String,readonly:Boolean,disabled:Boolean,placeholder:String,maxlength:[String,Number],rows:{type:[String,Number],default:2},showWordCount:Boolean,autosize:[Boolean,Object],form:String,resize:{type:String,default:function(){return _conf.default.textarea.resize}},className:String,size:{type:String,default:function(){return _conf.default.textarea.size||_conf.default.size}}},data:function(){return{inputValue:this.value}},computed:{inputCount:function(){return _xeUtils.default.getSize(this.inputValue)},isCountError:function(){return this.maxlength&&this.inputCount>_xeUtils.default.toNumber(this.maxlength)},defaultEvents:function(){var i=this,n={};return _xeUtils.default.each(this.$listeners,function(e,t){-1===["input","change","blur"].indexOf(t)&&(n[t]=i.triggerEvent)}),n.input=this.inputEvent,n.change=this.changeEvent,n.blur=this.blurEvent,n},sizeOpts:function(){return Object.assign({minRows:1,maxRows:10},_conf.default.textarea.autosize,this.autosize)}},watch:{value:function(e){this.inputValue=e,this.updateAutoTxt()}},mounted:function(){this.autosize&&(this.updateAutoTxt(),this.handleResize())},render:function(e){var t=this.className,i=this.defaultEvents,n=this.inputValue,a=this.vSize,u=this.name,r=this.form,s=this.resize,o=this.placeholder,l=this.readonly,d=this.disabled,h=this.maxlength,c=this.autosize,f=this.showWordCount,l={name:u,form:r,placeholder:o,maxlength:h,readonly:l,disabled:d};return o&&(l.placeholder=_tools.UtilTools.getFuncText(o)),e("div",{class:["vxe-textarea",t,(_defineProperty(t={},"size--".concat(a),a),_defineProperty(t,"is--autosize",c),_defineProperty(t,"is--disabled",d),t)]},[e("textarea",{ref:"textarea",class:"vxe-textarea--inner",domProps:{value:n},attrs:l,style:s?{resize:s}:null,on:i}),f?e("span",{class:["vxe-textarea--count",{"is--error":this.isCountError}]},"".concat(this.inputCount).concat(h?"/".concat(h):"")):null])},methods:{focus:function(){return this.$refs.textarea.focus(),this.$nextTick()},blur:function(){return this.$refs.textarea.blur(),this.$nextTick()},triggerEvent:function(e){var t=this.inputValue;this.$emit(e.type,{value:t,$event:e})},emitUpdate:function(e,t){this.inputValue=e,this.$emit("modelValue",e),this.value!==e&&this.$emit("change",{value:e,$event:t})},inputEvent:function(e){var t=this.immediate,i=e.target.value;this.inputValue=i,t&&this.emitUpdate(i,e),this.handleResize(),this.triggerEvent(e)},changeEvent:function(e){this.immediate?this.triggerEvent(e):this.emitUpdate(this.inputValue,e)},blurEvent:function(e){var t=this.inputValue;this.immediate||this.emitUpdate(t,e),this.$emit("blur",{value:t,$event:e})},updateAutoTxt:function(){var e,t=this.$refs,i=this.inputValue,n=this.size;this.autosize&&((autoTxtElem=autoTxtElem||document.createElement("div")).parentNode||document.body.appendChild(autoTxtElem),e=t.textarea,t=getComputedStyle(e),autoTxtElem.className=["vxe-textarea--autosize",n?"size--".concat(n):""].join(" "),autoTxtElem.style.width="".concat(e.clientWidth,"px"),autoTxtElem.style.padding=t.padding,autoTxtElem.innerHTML=(""+(i||" ")).replace(/\n$/,"\n "))},handleResize:function(){var s=this;this.autosize&&this.$nextTick(function(){var e=s.$refs,t=s.sizeOpts,i=t.minRows,n=t.maxRows,a=e.textarea,u=autoTxtElem.clientHeight,r=getComputedStyle(a),t=_xeUtils.default.toNumber(r.lineHeight),e=_xeUtils.default.toNumber(r.paddingTop)+_xeUtils.default.toNumber(r.paddingBottom)+_xeUtils.default.toNumber(r.borderTopWidth)+_xeUtils.default.toNumber(r.borderBottomWidth),r=(u-e)/t,u=r&&/[0-9]/.test(r)?r:Math.floor(r)+1,r=u;u<i?r=i:n<u&&(r=n),a.style.height="".concat(r*t+e,"px")})}}};exports.default=_default2;