UNPKG

@farris/ui-vue

Version:

Farris Vue, a Farris Design based Vue3 component library.

3 lines (2 loc) 4.03 kB
(function(n,i){typeof exports=="object"&&typeof module<"u"?i(exports,require("../common/index.umd.js"),require("vue")):typeof define=="function"&&define.amd?define(["exports","../common/index.umd.js","vue"],i):(n=typeof globalThis<"u"?globalThis:n||self,i(n.textarea={},n.common,n.Vue))})(this,function(n,i,a){"use strict";const f={autoHeight:{type:Boolean,default:!1},autofocus:{type:Boolean,default:!1},autocomplete:{type:Boolean,default:!1},allowUnlimtedWhenEmpty:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},enableClear:{type:Boolean,default:!1},id:{type:String,default:""},minLength:{type:Number,default:0},maxLength:{type:Number},modelValue:{type:String,default:""},placeholder:{type:String,default:""},readonly:{type:Boolean,default:!1},editable:{type:Boolean,default:!0},rows:{type:Number},resizable:{type:Boolean,default:!1},showCount:{type:Boolean,default:!1},showBorder:{Type:Boolean,default:!0},tabIndex:{type:Number,default:-1},focusOnCreated:{type:Boolean,default:!1},selectOnCreated:{type:Boolean,default:!1},updateOn:{type:String,default:"blur"},lineBreak:{type:Boolean,default:"enter"}},c=a.defineComponent({name:"FTextarea",props:f,emits:["update:modelValue","valueChange","change","mousedownEvent","mouseupEvent"],setup(e,l){var g;const{isUndefined:C}=i.useCommonUtils(),m=a.ref(),o=a.ref(null),x=a.computed(()=>e.modelValue),y=a.computed(()=>{if(!(e.allowUnlimtedWhenEmpty&&e.maxLength===0||C(e.maxLength)))return typeof e.maxLength=="number"&&!isNaN(e.maxLength)?e.maxLength:e.modelValue?e.modelValue.length:0}),u=a.ref(((g=e.modelValue)==null?void 0:g.slice(0,y.value))||""),h=i.useTextBox(e,l,u,x,m),{inputGroupClass:b,onBlur:w,onFocus:V,onMousedown:p,onMouseup:T,onTextBoxValueChange:S,hasFocused:E}=h,M=i.useClear(e,l,h),{onMouseEnter:N,onMouseLeave:L,clearButtonClass:I,shouldShowClearButton:O,clearButtonStyle:P}=M,U=t=>{var d,s,r;t.stopPropagation(),l.emit("update:modelValue",(d=t.target)==null?void 0:d.value),l.emit("valueChange",(s=t.target)==null?void 0:s.value),l.emit("change",(r=t.target)==null?void 0:r.value)},k=t=>{t.stopPropagation(),o.value.value="",l.emit("update:modelValue",""),l.emit("valueChange",""),l.emit("change","")},F=t=>{if(e.readonly||!E)return;const{altKey:d,key:s}=t;if(s==="Enter"&&!d&&e.lineBreak==="alt enter"){t.preventDefault();return}if(d&&s==="Enter"&&e.lineBreak==="alt enter"){t.stopPropagation(),t.preventDefault();const{selectionStart:r,selectionEnd:R}=o.value;u.value=u.value.slice(0,r)+` `+u.value.slice(R),a.nextTick(()=>{var v;o.value.selectionStart=r+1,o.value.selectionEnd=r+1,(v=o.value)==null||v.focus()}),l.emit("update:modelValue",u.value),l.emit("valueChange",u.value),l.emit("change",u.value);return}},j=a.computed(()=>({"form-control":!0,"h-100":e.autoHeight})),z=a.computed(()=>{const t={};return e.resizable||(t.resize="none"),e.rows>2?{height:"auto",...t}:t}),A=a.computed(()=>e.disabled||e.readonly?"":e.placeholder);a.watch(()=>e.modelValue,(t,d)=>{t!==d&&(u.value=t)});const D=()=>o.value;l.expose({elementRef:o,getTextareaElement:D});function K(){var t,d;e.selectOnCreated&&((t=o.value)==null||t.select()),e.focusOnCreated&&((d=o.value)==null||d.focus({preventScroll:!0}))}return a.onMounted(()=>{K()}),()=>a.createVNode("div",{ref:m,class:b.value,onMouseenter:N,onMouseleave:L,style:"position:relative"},[a.withDirectives(a.createVNode("textarea",{ref:o,class:j.value,id:e.id,"onUpdate:modelValue":t=>u.value=t,minlength:e.minLength,maxlength:y.value,tabindex:e.tabIndex,disabled:e.disabled,readonly:e.readonly,autocomplete:e.autocomplete,placeholder:A.value,autofocus:e.autofocus,rows:e.rows,onInput:U,onFocus:V,onChange:S,onKeydown:F,onBlur:w,onMousedown:p,onMouseup:T,style:z.value},null),[[a.vModelText,u.value]]),O.value&&a.createVNode("span",{id:"clearIcon",class:I.value,style:P.value,onClick:t=>k(t)},[a.createVNode("i",{class:"f-icon modal_close"},null)])])}}),B=i.withInstall(c);n.FTextarea=c,n.default=B,n.textAreaProps=f,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});