@davincihealthcare/elty-design-system-vue 1.87.0 → 1.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/forms/ElInputTextarea.vue.d.ts +9 -0
- package/dist/src/forms/ElInputTextarea.vue.cjs2.js +1 -1
- package/dist/src/forms/ElInputTextarea.vue.cjs2.js.map +1 -1
- package/dist/src/forms/ElInputTextarea.vue.esm2.js +1 -1
- package/dist/src/forms/ElInputTextarea.vue.esm2.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,10 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
9
9
|
type: NumberConstructor;
|
|
10
10
|
default: number;
|
|
11
11
|
};
|
|
12
|
+
hideCharacterCounter: {
|
|
13
|
+
type: BooleanConstructor;
|
|
14
|
+
default: boolean;
|
|
15
|
+
};
|
|
12
16
|
textareaClass: {
|
|
13
17
|
type: StringConstructor;
|
|
14
18
|
default: string;
|
|
@@ -72,6 +76,10 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
72
76
|
type: NumberConstructor;
|
|
73
77
|
default: number;
|
|
74
78
|
};
|
|
79
|
+
hideCharacterCounter: {
|
|
80
|
+
type: BooleanConstructor;
|
|
81
|
+
default: boolean;
|
|
82
|
+
};
|
|
75
83
|
textareaClass: {
|
|
76
84
|
type: StringConstructor;
|
|
77
85
|
default: string;
|
|
@@ -138,6 +146,7 @@ declare const _default: import('vue').DefineComponent<{
|
|
|
138
146
|
validation: import('./validation-rules').InputValidation;
|
|
139
147
|
resizable: boolean;
|
|
140
148
|
maxCharacters: number;
|
|
149
|
+
hideCharacterCounter: boolean;
|
|
141
150
|
textareaClass: string;
|
|
142
151
|
focusOnMount: boolean;
|
|
143
152
|
}, {}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),M=require("./ElInputContainer.vue.cjs2.js"),o=require("./input.cjs.js"),k=["id","name","placeholder","disabled","data-cy"],E=e.defineComponent({__name:"ElInputTextarea",props:{...o.withTextualElInputProps(),resizable:{type:Boolean,default:!0},maxCharacters:{type:Number,default:-1},hideCharacterCounter:{type:Boolean,default:!1},textareaClass:{type:String,default:"min-h-20"},focusOnMount:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(r,{emit:c}){const l=e.ref(),t=r;e.onMounted(()=>{var a;t.focusOnMount&&((a=l.value)==null||a.focus())});const f=c,p=e.computed(()=>t.modelValue),h=e.computed(()=>[`max:${t.maxCharacters>0?t.maxCharacters:1e3}`,t.validation]),{value:u,errorMessage:i,uuid:d,fieldContext:v}=o.useInput(p,h,t.name,a=>f("update:modelValue",a)),n=e.computed(()=>{var a;return(a=u.value)==null?void 0:a.length}),C=e.computed(()=>t.maxCharacters<=0?!1:(n.value||0)>t.maxCharacters),g=e.computed(()=>t.errorMessage||i.value?t.errorMessage||i.value:C.value?`Limite caratteri superato (${n.value}/${t.maxCharacters})`:!1),x=a=>{a.stopPropagation()},y=()=>{l.value&&(l.value.scrollTop=l.value.scrollHeight)};return(a,s)=>(e.openBlock(),e.createBlock(M.default,e.mergeProps(a.$attrs,{class:"relative",name:e.unref(d),label:a.label,"error-message":g.value,"hidden-error-message":a.hiddenErrorMessage,"set-required-mark":e.unref(o.showRequiredMark)([a.validation])}),{default:e.withCtx(({error:b})=>[e.withDirectives(e.createElementVNode("textarea",{id:e.unref(d),ref_key:"textareaRef",ref:l,"onUpdate:modelValue":s[0]||(s[0]=m=>e.isRef(u)?u.value=m:null),name:t.name,placeholder:a.placeholder,disabled:a.disabled,class:e.normalizeClass(["el-input",[{error:b,"resize-none":!r.resizable},r.textareaClass]]),"data-cy":`${a.label.trim().replaceAll(" ","")}-textarea`,onBlur:s[1]||(s[1]=m=>e.unref(v).validate()),onInput:y,onKeydown:e.withKeys(x,["enter"])},null,42,k),[[e.vModelText,e.unref(u)]]),r.maxCharacters>0&&!r.hideCharacterCounter?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(["flex justify-end text-sm font-semibold",n.value&&n.value>r.maxCharacters?"text-red-500":"text-neutral-darker"])},e.toDisplayString(n.value)+"/"+e.toDisplayString(r.maxCharacters),3)):e.createCommentVNode("",!0)]),_:1},16,["name","label","error-message","hidden-error-message","set-required-mark"]))}});exports.default=E;
|
|
2
2
|
//# sourceMappingURL=ElInputTextarea.vue.cjs2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElInputTextarea.vue.cjs2.js","sources":["../../../src/forms/ElInputTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { useInput, TextualValueType, showRequiredMark, withTextualElInputProps } from '@/forms/input';\nimport { computed, onMounted, ref } from 'vue';\n\nconst textareaRef = ref<HTMLElement>();\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n resizable: {\n type: Boolean,\n default: true,\n },\n maxCharacters: {\n type: Number,\n default: -1,\n },\n textareaClass: {\n type: String,\n default: 'min-h-20',\n },\n focusOnMount: {\n type: Boolean,\n default: false,\n },\n});\n\nonMounted(() => {\n if (props.focusOnMount) {\n textareaRef.value?.focus();\n }\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [`max:${props.maxCharacters > 0 ? props.maxCharacters : 1000}`, props.validation]);\n\nconst { value, errorMessage, uuid, fieldContext } = useInput(computedModelValue, computedValidation, props.name, newValue =>\n emit('update:modelValue', newValue),\n);\n\nconst currentInsertedCharNumber = computed(() => value.value?.length);\n\nconst handleEnter = (event: KeyboardEvent) => {\n event.stopPropagation();\n};\n\nconst handleInput = () => {\n if (textareaRef.value) textareaRef.value.scrollTop = textareaRef.value.scrollHeight;\n};\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n class=\"relative\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"
|
|
1
|
+
{"version":3,"file":"ElInputTextarea.vue.cjs2.js","sources":["../../../src/forms/ElInputTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { useInput, TextualValueType, showRequiredMark, withTextualElInputProps } from '@/forms/input';\nimport { computed, onMounted, ref } from 'vue';\n\nconst textareaRef = ref<HTMLElement>();\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n resizable: {\n type: Boolean,\n default: true,\n },\n maxCharacters: {\n type: Number,\n default: -1,\n },\n hideCharacterCounter: {\n type: Boolean,\n default: false,\n },\n textareaClass: {\n type: String,\n default: 'min-h-20',\n },\n focusOnMount: {\n type: Boolean,\n default: false,\n },\n});\n\nonMounted(() => {\n if (props.focusOnMount) {\n textareaRef.value?.focus();\n }\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [`max:${props.maxCharacters > 0 ? props.maxCharacters : 1000}`, props.validation]);\n\nconst { value, errorMessage, uuid, fieldContext } = useInput(computedModelValue, computedValidation, props.name, newValue =>\n emit('update:modelValue', newValue),\n);\n\nconst currentInsertedCharNumber = computed(() => value.value?.length);\n\nconst isExceedingLimit = computed(() => {\n if (props.maxCharacters <= 0) return false;\n return (currentInsertedCharNumber.value || 0) > props.maxCharacters;\n});\n\nconst computedErrorMessage = computed(() => {\n // Priority: props.errorMessage or errorMessage.value\n if (props.errorMessage || errorMessage.value) {\n return props.errorMessage || errorMessage.value;\n }\n // Fallback: character limit exceeded message\n if (isExceedingLimit.value) {\n return `Limite caratteri superato (${currentInsertedCharNumber.value}/${props.maxCharacters})`;\n }\n return false;\n});\n\nconst handleEnter = (event: KeyboardEvent) => {\n event.stopPropagation();\n};\n\nconst handleInput = () => {\n if (textareaRef.value) textareaRef.value.scrollTop = textareaRef.value.scrollHeight;\n};\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n class=\"relative\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"computedErrorMessage\"\n :hidden-error-message=\"hiddenErrorMessage\"\n :set-required-mark=\"showRequiredMark([validation])\"\n >\n <template #default=\"{ error }\">\n <textarea\n :id=\"uuid\"\n ref=\"textareaRef\"\n v-model=\"value\"\n :name=\"props.name\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n class=\"el-input\"\n :class=\"[\n {\n error,\n 'resize-none': !resizable,\n },\n textareaClass,\n ]\"\n :data-cy=\"`${label.trim().replaceAll(' ', '')}-textarea`\"\n @blur=\"fieldContext.validate()\"\n @input=\"handleInput\"\n @keydown.enter=\"handleEnter\"\n ></textarea>\n <span\n v-if=\"maxCharacters > 0 && !hideCharacterCounter\"\n class=\"flex justify-end text-sm font-semibold\"\n :class=\"currentInsertedCharNumber && currentInsertedCharNumber > maxCharacters ? 'text-red-500' : 'text-neutral-darker'\"\n >\n {{ currentInsertedCharNumber }}/{{ maxCharacters }}\n </span>\n </template>\n </ElInputContainer>\n</template>\n"],"names":["textareaRef","ref","props","__props","onMounted","_a","emit","__emit","computedModelValue","computed","computedValidation","value","errorMessage","uuid","fieldContext","useInput","newValue","currentInsertedCharNumber","isExceedingLimit","computedErrorMessage","handleEnter","event","handleInput"],"mappings":"ilBAKA,MAAMA,EAAcC,EAAAA,MAEdC,EAAQC,EAwBdC,EAAAA,UAAU,IAAM,OACVF,EAAM,gBACRG,EAAAL,EAAY,QAAZ,MAAAK,EAAmB,QACrB,CACD,EAED,MAAMC,EAAOC,EAIPC,EAAqBC,EAAA,SAAS,IAAMP,EAAM,UAAU,EACpDQ,EAAqBD,EAAAA,SAAS,IAAM,CAAC,OAAOP,EAAM,cAAgB,EAAIA,EAAM,cAAgB,GAAI,GAAIA,EAAM,UAAU,CAAC,EAErH,CAAE,MAAAS,EAAO,aAAAC,EAAc,KAAAC,EAAM,aAAAC,CAAiB,EAAAC,EAAA,SAASP,EAAoBE,EAAoBR,EAAM,KAAMc,GAC/GV,EAAK,oBAAqBU,CAAQ,CAAA,EAG9BC,EAA4BR,EAAAA,SAAS,IAAA,OAAM,OAAAJ,EAAAM,EAAM,QAAN,YAAAN,EAAa,OAAM,EAE9Da,EAAmBT,EAAAA,SAAS,IAC5BP,EAAM,eAAiB,EAAU,IAC7Be,EAA0B,OAAS,GAAKf,EAAM,aACvD,EAEKiB,EAAuBV,EAAAA,SAAS,IAEhCP,EAAM,cAAgBU,EAAa,MAC9BV,EAAM,cAAgBU,EAAa,MAGxCM,EAAiB,MACZ,8BAA8BD,EAA0B,KAAK,IAAIf,EAAM,aAAa,IAEtF,EACR,EAEKkB,EAAeC,GAAyB,CAC5CA,EAAM,gBAAgB,CAAA,EAGlBC,EAAc,IAAM,CACpBtB,EAAY,QAAmBA,EAAA,MAAM,UAAYA,EAAY,MAAM,aAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{defineComponent as
|
|
1
|
+
import{defineComponent as V,ref as B,onMounted as $,computed as n,openBlock as c,createBlock as w,mergeProps as I,unref as s,withCtx as z,withDirectives as N,createElementVNode as R,isRef as T,normalizeClass as f,withKeys as q,vModelText as P,createElementBlock as D,toDisplayString as p,createCommentVNode as K}from"vue";import L from"./ElInputContainer.vue.esm2.js";import{withTextualElInputProps as O,useInput as S,showRequiredMark as j}from"./input.esm.js";const A=["id","name","placeholder","disabled","data-cy"],G=V({__name:"ElInputTextarea",props:{...O(),resizable:{type:Boolean,default:!0},maxCharacters:{type:Number,default:-1},hideCharacterCounter:{type:Boolean,default:!1},textareaClass:{type:String,default:"min-h-20"},focusOnMount:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(t,{emit:h}){const r=B(),a=t;$(()=>{var e;a.focusOnMount&&((e=r.value)==null||e.focus())});const v=h,x=n(()=>a.modelValue),C=n(()=>[`max:${a.maxCharacters>0?a.maxCharacters:1e3}`,a.validation]),{value:o,errorMessage:i,uuid:d,fieldContext:g}=S(x,C,a.name,e=>v("update:modelValue",e)),l=n(()=>{var e;return(e=o.value)==null?void 0:e.length}),y=n(()=>a.maxCharacters<=0?!1:(l.value||0)>a.maxCharacters),b=n(()=>a.errorMessage||i.value?a.errorMessage||i.value:y.value?`Limite caratteri superato (${l.value}/${a.maxCharacters})`:!1),M=e=>{e.stopPropagation()},k=()=>{r.value&&(r.value.scrollTop=r.value.scrollHeight)};return(e,u)=>(c(),w(L,I(e.$attrs,{class:"relative",name:s(d),label:e.label,"error-message":b.value,"hidden-error-message":e.hiddenErrorMessage,"set-required-mark":s(j)([e.validation])}),{default:z(({error:E})=>[N(R("textarea",{id:s(d),ref_key:"textareaRef",ref:r,"onUpdate:modelValue":u[0]||(u[0]=m=>T(o)?o.value=m:null),name:a.name,placeholder:e.placeholder,disabled:e.disabled,class:f(["el-input",[{error:E,"resize-none":!t.resizable},t.textareaClass]]),"data-cy":`${e.label.trim().replaceAll(" ","")}-textarea`,onBlur:u[1]||(u[1]=m=>s(g).validate()),onInput:k,onKeydown:q(M,["enter"])},null,42,A),[[P,s(o)]]),t.maxCharacters>0&&!t.hideCharacterCounter?(c(),D("span",{key:0,class:f(["flex justify-end text-sm font-semibold",l.value&&l.value>t.maxCharacters?"text-red-500":"text-neutral-darker"])},p(l.value)+"/"+p(t.maxCharacters),3)):K("",!0)]),_:1},16,["name","label","error-message","hidden-error-message","set-required-mark"]))}});export{G as default};
|
|
2
2
|
//# sourceMappingURL=ElInputTextarea.vue.esm2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ElInputTextarea.vue.esm2.js","sources":["../../../src/forms/ElInputTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { useInput, TextualValueType, showRequiredMark, withTextualElInputProps } from '@/forms/input';\nimport { computed, onMounted, ref } from 'vue';\n\nconst textareaRef = ref<HTMLElement>();\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n resizable: {\n type: Boolean,\n default: true,\n },\n maxCharacters: {\n type: Number,\n default: -1,\n },\n textareaClass: {\n type: String,\n default: 'min-h-20',\n },\n focusOnMount: {\n type: Boolean,\n default: false,\n },\n});\n\nonMounted(() => {\n if (props.focusOnMount) {\n textareaRef.value?.focus();\n }\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [`max:${props.maxCharacters > 0 ? props.maxCharacters : 1000}`, props.validation]);\n\nconst { value, errorMessage, uuid, fieldContext } = useInput(computedModelValue, computedValidation, props.name, newValue =>\n emit('update:modelValue', newValue),\n);\n\nconst currentInsertedCharNumber = computed(() => value.value?.length);\n\nconst handleEnter = (event: KeyboardEvent) => {\n event.stopPropagation();\n};\n\nconst handleInput = () => {\n if (textareaRef.value) textareaRef.value.scrollTop = textareaRef.value.scrollHeight;\n};\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n class=\"relative\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"
|
|
1
|
+
{"version":3,"file":"ElInputTextarea.vue.esm2.js","sources":["../../../src/forms/ElInputTextarea.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport ElInputContainer from '@/forms/ElInputContainer.vue';\nimport { useInput, TextualValueType, showRequiredMark, withTextualElInputProps } from '@/forms/input';\nimport { computed, onMounted, ref } from 'vue';\n\nconst textareaRef = ref<HTMLElement>();\n\nconst props = defineProps({\n ...withTextualElInputProps(),\n resizable: {\n type: Boolean,\n default: true,\n },\n maxCharacters: {\n type: Number,\n default: -1,\n },\n hideCharacterCounter: {\n type: Boolean,\n default: false,\n },\n textareaClass: {\n type: String,\n default: 'min-h-20',\n },\n focusOnMount: {\n type: Boolean,\n default: false,\n },\n});\n\nonMounted(() => {\n if (props.focusOnMount) {\n textareaRef.value?.focus();\n }\n});\n\nconst emit = defineEmits<{\n (event: 'update:modelValue', value: TextualValueType): void;\n}>();\n\nconst computedModelValue = computed(() => props.modelValue);\nconst computedValidation = computed(() => [`max:${props.maxCharacters > 0 ? props.maxCharacters : 1000}`, props.validation]);\n\nconst { value, errorMessage, uuid, fieldContext } = useInput(computedModelValue, computedValidation, props.name, newValue =>\n emit('update:modelValue', newValue),\n);\n\nconst currentInsertedCharNumber = computed(() => value.value?.length);\n\nconst isExceedingLimit = computed(() => {\n if (props.maxCharacters <= 0) return false;\n return (currentInsertedCharNumber.value || 0) > props.maxCharacters;\n});\n\nconst computedErrorMessage = computed(() => {\n // Priority: props.errorMessage or errorMessage.value\n if (props.errorMessage || errorMessage.value) {\n return props.errorMessage || errorMessage.value;\n }\n // Fallback: character limit exceeded message\n if (isExceedingLimit.value) {\n return `Limite caratteri superato (${currentInsertedCharNumber.value}/${props.maxCharacters})`;\n }\n return false;\n});\n\nconst handleEnter = (event: KeyboardEvent) => {\n event.stopPropagation();\n};\n\nconst handleInput = () => {\n if (textareaRef.value) textareaRef.value.scrollTop = textareaRef.value.scrollHeight;\n};\n</script>\n\n<template>\n <ElInputContainer\n v-bind=\"$attrs\"\n class=\"relative\"\n :name=\"uuid\"\n :label=\"label\"\n :error-message=\"computedErrorMessage\"\n :hidden-error-message=\"hiddenErrorMessage\"\n :set-required-mark=\"showRequiredMark([validation])\"\n >\n <template #default=\"{ error }\">\n <textarea\n :id=\"uuid\"\n ref=\"textareaRef\"\n v-model=\"value\"\n :name=\"props.name\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n class=\"el-input\"\n :class=\"[\n {\n error,\n 'resize-none': !resizable,\n },\n textareaClass,\n ]\"\n :data-cy=\"`${label.trim().replaceAll(' ', '')}-textarea`\"\n @blur=\"fieldContext.validate()\"\n @input=\"handleInput\"\n @keydown.enter=\"handleEnter\"\n ></textarea>\n <span\n v-if=\"maxCharacters > 0 && !hideCharacterCounter\"\n class=\"flex justify-end text-sm font-semibold\"\n :class=\"currentInsertedCharNumber && currentInsertedCharNumber > maxCharacters ? 'text-red-500' : 'text-neutral-darker'\"\n >\n {{ currentInsertedCharNumber }}/{{ maxCharacters }}\n </span>\n </template>\n </ElInputContainer>\n</template>\n"],"names":["textareaRef","ref","props","__props","onMounted","_a","emit","__emit","computedModelValue","computed","computedValidation","value","errorMessage","uuid","fieldContext","useInput","newValue","currentInsertedCharNumber","isExceedingLimit","computedErrorMessage","handleEnter","event","handleInput"],"mappings":"izBAKA,MAAMA,EAAcC,IAEdC,EAAQC,EAwBdC,EAAU,IAAM,OACVF,EAAM,gBACRG,EAAAL,EAAY,QAAZ,MAAAK,EAAmB,QACrB,CACD,EAED,MAAMC,EAAOC,EAIPC,EAAqBC,EAAS,IAAMP,EAAM,UAAU,EACpDQ,EAAqBD,EAAS,IAAM,CAAC,OAAOP,EAAM,cAAgB,EAAIA,EAAM,cAAgB,GAAI,GAAIA,EAAM,UAAU,CAAC,EAErH,CAAE,MAAAS,EAAO,aAAAC,EAAc,KAAAC,EAAM,aAAAC,CAAiB,EAAAC,EAASP,EAAoBE,EAAoBR,EAAM,KAAMc,GAC/GV,EAAK,oBAAqBU,CAAQ,CAAA,EAG9BC,EAA4BR,EAAS,IAAA,OAAM,OAAAJ,EAAAM,EAAM,QAAN,YAAAN,EAAa,OAAM,EAE9Da,EAAmBT,EAAS,IAC5BP,EAAM,eAAiB,EAAU,IAC7Be,EAA0B,OAAS,GAAKf,EAAM,aACvD,EAEKiB,EAAuBV,EAAS,IAEhCP,EAAM,cAAgBU,EAAa,MAC9BV,EAAM,cAAgBU,EAAa,MAGxCM,EAAiB,MACZ,8BAA8BD,EAA0B,KAAK,IAAIf,EAAM,aAAa,IAEtF,EACR,EAEKkB,EAAeC,GAAyB,CAC5CA,EAAM,gBAAgB,CAAA,EAGlBC,EAAc,IAAM,CACpBtB,EAAY,QAAmBA,EAAA,MAAM,UAAYA,EAAY,MAAM,aAAA"}
|