maz-ui
Version:
A standalone components library for Vue.Js 3 & Nuxt.Js 3
1 lines • 5.02 kB
JavaScript
import{t as _plugin_vue_export_helper_default}from"./_plugin-vue_export-helper.ChmETRGw.js";import{useInstanceUniqId}from"../composables/useInstanceUniqId.js";import{t as onAutofillSync}from"./autofillSync.ClCtzXjh.js";import{computed,createCommentVNode,createElementBlock,createElementVNode,createTextVNode,defineComponent,mergeProps,normalizeClass,normalizeStyle,onBeforeUnmount,onMounted,openBlock,ref,renderSlot,toDisplayString,toHandlers,unref,useSlots,vModelText,withDirectives}from"vue";import '../assets/MazTextarea.CvWx9Z_2.css';var _hoisted_1=[`for`];var _hoisted_2=[`for`];var _hoisted_3=[`for`];var _hoisted_4={key:1};var _hoisted_5={key:2};var _hoisted_6=[`id`,`placeholder`,`name`,`disabled`,`readonly`,`required`];var _hoisted_7={key:1,class:`m-textarea__append`};var MazTextarea_default=_plugin_vue_export_helper_default(defineComponent({inheritAttrs:!1,__name:`MazTextarea`,props:{style:{type:[Boolean,null,String,Object,Array],default:void 0},class:{type:[Boolean,null,String,Object,Array],default:void 0},modelValue:{default:void 0},id:{default:void 0},name:{default:`MazTextarea`},label:{default:void 0},placeholder:{default:void 0},required:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},error:{type:Boolean,default:!1},success:{type:Boolean,default:!1},warning:{type:Boolean,default:!1},hint:{default:void 0},color:{default:`primary`},roundedSize:{},padding:{type:Boolean,default:!0},transparent:{type:Boolean,default:!1},border:{type:Boolean,default:!0},autogrow:{type:Boolean,default:!0},appendJustify:{default:`end`},topLabel:{default:void 0}},emits:[`update:model-value`,`input`,`focus`,`blur`,`change`],setup(__props,{emit:__emit}){let props=__props;let emits=__emit;let instanceId=useInstanceUniqId({componentName:`MazTextarea`,providedId:props.id});let textarea=ref();let inputValue=computed({get:()=>props.modelValue,set:value=>{emits(`update:model-value`,value),emits(`input`,value)}});function focus(event){emits(`focus`,event)}function blur(event){emits(`blur`,event)}function change(event){emits(`change`,event)}let slots=useSlots();let hasLabelOrHint=computed(()=>props.label||props.hint||!!slots.label);let hasAppend=computed(()=>!!slots.append);let borderStyle=computed(()=>props.error?`maz-border-destructive`:props.success?`maz-border-success`:props.warning?`maz-border-warning`:`--default-border`);let hasBorderStyle=computed(()=>borderStyle.value!==`--default-border`);let autofillCleanup;onMounted(()=>{textarea.value&&(autofillCleanup=onAutofillSync(textarea.value,value=>{value!==props.modelValue&&emits(`update:model-value`,value)}))}),onBeforeUnmount(()=>{autofillCleanup?.()});let stateLabelColor=computed(()=>[{"maz-text-destructive-600":props.error,"maz-text-success-600":props.success,"maz-text-warning-600":props.warning}]);return(_ctx,_cache)=>(openBlock(),createElementBlock(`div`,{class:normalizeClass([`m-textarea-wrapper m-reset-css`,props.class]),style:normalizeStyle(__props.style)},[__props.topLabel?(openBlock(),createElementBlock(`label`,{key:0,for:unref(instanceId),class:normalizeClass([`m-textarea__top-label`,stateLabelColor.value])},toDisplayString(__props.topLabel),11,_hoisted_1)):createCommentVNode(``,!0),createElementVNode(`label`,{class:normalizeClass([`m-textarea`,[{"--is-disabled":__props.disabled,"--has-label":hasLabelOrHint.value,"--background-transparent":__props.transparent,"--padding":__props.padding,"--border":__props.border,"--has-border-style":hasBorderStyle.value,"--has-placeholder":!!__props.placeholder,"--autogrow":__props.autogrow},borderStyle.value,__props.roundedSize?`--rounded-${__props.roundedSize}`:`--rounded`,`--${__props.color}`]]),for:unref(instanceId),style:normalizeStyle([`--append-justify: ${__props.appendJustify}`])},[hasLabelOrHint.value?(openBlock(),createElementBlock(`label`,{key:0,for:unref(instanceId),class:normalizeClass([`m-textarea__label`,[...stateLabelColor.value,{"--has-state":__props.error||__props.warning||__props.success}]])},[__props.hint?(openBlock(),createElementBlock(`span`,_hoisted_4,toDisplayString(__props.hint),1)):renderSlot(_ctx.$slots,`label`,{key:0},()=>[createTextVNode(toDisplayString(__props.label),1)],!0),__props.required?(openBlock(),createElementBlock(`sup`,_hoisted_5,`*`)):createCommentVNode(``,!0)],10,_hoisted_3)):createCommentVNode(``,!0),withDirectives(createElementVNode(`textarea`,mergeProps({id:unref(instanceId),ref_key:`textarea`,ref:textarea},_ctx.$attrs,{"onUpdate:modelValue":_cache[0]||=$event=>inputValue.value=$event,placeholder:__props.placeholder||` `,name:__props.name,disabled:__props.disabled,readonly:__props.readonly,required:__props.required,class:{"--has-append":hasAppend.value}},toHandlers({blur,focus,change},!0)),null,16,_hoisted_6),[[vModelText,inputValue.value]]),hasAppend.value?(openBlock(),createElementBlock(`div`,_hoisted_7,[renderSlot(_ctx.$slots,`append`,{},void 0,!0)])):createCommentVNode(``,!0)],14,_hoisted_2)],6))}}),[[`__scopeId`,`data-v-a2cece87`]]);export{MazTextarea_default as t};