UNPKG

vxe-table

Version:

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

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