@volverjs/ui-vue
Version:
@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.
2 lines (1 loc) • 24.6 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("@floating-ui/vue"),require("@vueuse/core"),require("mitt"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@floating-ui/vue","@vueuse/core","mitt","@iconify/vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvTextarea=t(e.vue,e.vue$1,e.core,e.mitt,e.vue$2)}(this,function(e,t,o,a,l){"use strict";const n={prefix:"normal"};var r=(e=>(e.local="local",e.session="session",e))(r||{}),i=(e=>(e.absolute="absolute",e.fixed="fixed",e))(i||{}),u=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(u||{}),s=(e=>(e.topStart="top-start",e.topEnd="top-end",e.bottomStart="bottom-start",e.bottomEnd="bottom-end",e.leftStart="left-start",e.leftEnd="left-end",e.rightStart="right-start",e.rightEnd="right-end",e))(s||{}),d=(e=>(e.before="before",e.after="after",e))(d||{}),c=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(c||{}),f=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(f||{}),v=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(v||{}),p=(e=>(e.listbox="listbox",e.menu="menu",e))(p||{}),m=(e=>(e.option="option",e.presentation="presentation",e))(m||{});const g=Symbol.for("volver"),h=Symbol.for("dropdownTrigger"),b=Symbol.for("dropdownItem"),y=Symbol.for("dropdownAction"),S={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},x={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},w={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},k={disabled:{type:Boolean,default:!1}},L={required:{type:Boolean,default:!1}},B={selected:{type:Boolean,default:!1}},$={label:{type:[String,Number],default:void 0}},V={readonly:{type:Boolean,default:!1}},E={modifiers:{type:[String,Array],default:void 0}},O={hintLabel:{type:String,default:""}},P={count:{type:[Boolean,String],default:!1,validator:e=>[!0,!1,"limit","countdown"].includes(e)}},C={debounce:{type:[Number,String],default:void 0}},N={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:d.before,validation:e=>Object.values(d).includes(e)}},_={tabindex:{type:[String,Number],default:0}},z={floating:{type:Boolean,default:!1}},R={unselectable:{type:Boolean,default:!0}},F={id:[String,Number]},I={placement:{type:String,default:u.bottom,validator:e=>Object.values(u).includes(e)||Object.values(s).includes(e)},strategy:{type:String,default:void 0,validator:e=>Object.values(i).includes(e)},transitionName:{type:String,default:void 0},offset:{type:[Number,String,Object],default:0},shift:{type:[Boolean,Object],default:!1},flip:{type:[Boolean,Object],default:!0},size:{type:[Boolean,Object],default:()=>({padding:10})},autoPlacement:{type:[Boolean,Object],default:!1},arrow:{type:Boolean,default:!1},keepOpen:{type:Boolean,default:!1},autofocusFirst:{type:Boolean,default:!0},triggerWidth:{type:Boolean,default:!1}},j={...{...F,name:{type:String,required:!0}},...{autofocus:{type:Boolean,default:!1}},...{autocomplete:{type:String,default:"off"}},..._,...k,...V,...S,...x,...O,...w,...E,...P,...C,...N,...z,...$,minlength:{type:[String,Number],default:void 0},maxlength:{type:[String,Number],default:void 0},placeholder:{type:String,default:void 0},...L};c.button,f.button;const A={...j,...{storageType:{type:String,default:r.local,validator:e=>Object.values(r).includes(e)},storageKey:String},modelValue:String,cols:{type:[String,Number],default:20},rows:{type:[String,Number],default:2},wrap:{type:String,default:"soft"},spellcheck:{type:[Boolean,String],default:"default"},iconRemoveSuggestion:{type:[String,Object],default:"trash"},labelRemoveSuggestion:{type:String,default:"Remove suggestion"},maxSuggestions:{type:Number,default:5},selectOnFocus:{type:Boolean,default:!1},resizable:Boolean};function H(t){return null==(o=e.unref(t))||""===o||Array.isArray(o)&&0===o.length||!(o instanceof Date)&&"object"==typeof o&&0===Object.keys(o).length;var o}function T(e){return Array.isArray(e)?e.filter(e=>"string"==typeof e).join(" "):e}const D={...F,...I,...E,modelValue:{type:Boolean,default:void 0},reference:{type:Object,default:null},role:{type:String,default:p.menu,validator:e=>Object.values(p).includes(e)}},q={focusOnHover:{type:Boolean,default:!1}},M={...k,...B,...R,...E,deselectHintLabel:{type:String},selectHintLabel:{type:String},selectedHintLabel:{type:String},focusOnHover:{type:Boolean,default:!1}};function W(t){return e.computed(()=>String(t?.value||e.useId()))}function K(t,o,a){return e.computed(()=>{const l={[t]:!0},n="string"==typeof o?.value?o.value.split(" "):o?.value;return n&&Array.isArray(n)&&n.forEach(e=>{e&&(l[`${t}--${e}`]=!0)}),a&&Object.keys(a.value).forEach(o=>{l[`${t}--${o}`]=e.unref(a.value[o])}),l})}const J=["id","tabindex","role","aria-labelledby"],U=e.defineComponent({name:"VvDropdown",inheritAttrs:!1,props:D,emits:["update:modelValue","beforeEnter","afterLeave","beforeExpand","beforeCollapse","afterExpand","afterCollapse","before-enter","after-leave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(l,{expose:n,emit:r}){const s=l,d=r,{id:c}=e.toRefs(s),f=W(c),v=e.useAttrs(),g=e.ref("auto"),y=e.ref("auto"),S=e.ref(),x=e.ref(),w=e.ref(),k=e.ref(),L=e.computed({get:()=>s.reference??S.value,set:e=>{S.value=e}}),B=e.ref(!1);e.onMounted(()=>{o.useMutationObserver(x.value,()=>{B.value="true"===window.getComputedStyle(x.value).getPropertyValue("--dropdown-custom-position")?.trim()},{attributeFilter:["style"],window:window})});const $=e.computed(()=>{const e=[];if(s.autoPlacement?"boolean"==typeof s.autoPlacement?e.push(t.autoPlacement()):e.push(t.autoPlacement(s.autoPlacement)):s.flip&&("boolean"==typeof s.flip?e.push(t.flip({fallbackStrategy:"initialPlacement"})):e.push(t.flip(s.flip))),s.shift&&("boolean"==typeof s.shift?e.push(t.shift()):e.push(t.shift(s.shift))),s.size){const o=({availableWidth:e,availableHeight:t})=>{g.value=`${e}px`,y.value=`${t}px`};"boolean"==typeof s.size?e.push(t.size({apply:o})):e.push(t.size({...s.size,apply:o}))}return s.offset&&(e.push(t.offset(Number(s.offset))),["string","number"].includes(typeof s.offset)?e.push(t.offset(Number(s.offset))):e.push(t.offset(s.offset))),s.arrow&&e.push(t.arrow({element:w})),e}),{x:V,y:E,middlewareData:O,placement:P,strategy:C}=t.useFloating(L,x,{whileElementsMounted:(...e)=>t.autoUpdate(...e,{animationFrame:s.strategy===i.fixed}),placement:e.computed(()=>s.placement),strategy:e.computed(()=>s.strategy),middleware:$}),N=e.computed(()=>{if(B.value)return;const e=s.triggerWidth&&L.value?`${L.value?.offsetWidth}px`:void 0;return{position:C.value,top:`${E.value??0}px`,left:`${V.value??0}px`,maxWidth:e?void 0:g.value,maxHeight:y.value,width:e}}),_=e.computed(()=>P.value.split("-")[0]),z=e.computed(()=>{if(B.value)return;const e={[u.top]:u.bottom,[u.right]:u.left,[u.bottom]:u.top,[u.left]:u.right}[_.value];return{left:void 0!==O.value.arrow?.x?`${O.value.arrow?.x}px`:void 0,top:void 0!==O.value.arrow?.y?`${O.value.arrow?.y}px`:void 0,[e]:-(w.value?.offsetWidth??0)/2+"px"}}),R=o.useVModel(s,"modelValue",d),F=e.ref(!1),I=e.computed({get:()=>R.value??F.value,set:e=>{void 0!==R.value?R.value=e:F.value=e}});function j(){I.value=!0}function A(){I.value=!1}function H(){I.value=!I.value}function T(e){L.value=e}o.onClickOutside(x,()=>{!s.keepOpen&&I.value&&(I.value=!1)},{ignore:[L]});const D=e.computed(()=>L.value?.getAttribute?.("id")??void 0),q=e.computed(()=>({"aria-controls":f.value,"aria-haspopup":!0,"aria-expanded":I.value})),{component:M,bus:U}=function({reference:t,id:o,expanded:l,aria:n}){const r=a(),i=e.defineComponent({name:"VvDropdownTriggerProvider",setup(){e.provide(h,{reference:t,id:o,expanded:l,aria:n,bus:r})},render(){return e.h(e.Fragment,{},this.$slots.default?.())}});return{bus:r,component:i}}({reference:L,id:f,expanded:I,aria:q});U.on("click",H);const{role:G,modifiers:Q}=e.toRefs(s),X=K("vv-dropdown",Q,e.computed(()=>({arrow:s.arrow}))),{focused:Y}=o.useFocusWithin(x);function Z(e){return e?[...e.querySelectorAll('a[href], button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])')].filter(e=>!e.hasAttribute("disabled")&&!e.getAttribute("aria-hidden")):[]}function ee(){e.nextTick(()=>{const e=Z(x.value);e.length>0&&e[0].focus({preventScroll:!0})})}function te(){e.nextTick(()=>{if(Y.value){const e=Z(x.value);if(0===e.length||!document.activeElement)return;const t=e.indexOf(document.activeElement);t<e.length-1?e[t+1].focus({preventScroll:!0}):e[0].focus({preventScroll:!0})}})}function oe(){e.nextTick(()=>{if(Y.value){const e=Z(x.value);if(0===e.length||!document.activeElement)return;const t=e.indexOf(document.activeElement);t>0?e[t-1].focus({preventScroll:!0}):e[e.length-1].focus({preventScroll:!0})}})}e.watch(I,e=>{e&&s.autofocusFirst&&ee()}),n({toggle:H,show:j,hide:A,init:T,focusFirst:ee,focusFirstListElement:function(){e.nextTick(()=>{const e=Z(k.value);e.length>0&&e[0].focus({preventScroll:!0})})},focusNext:te,focusPrev:oe,customPosition:B});const ae=o.useElementHover(x),{itemRole:le}=function({role:t,...o}){const a=e.computed(()=>t.value===p.listbox?m.option:m.presentation);return e.provide(b,{role:a,...o}),{itemRole:a}}({role:G,expanded:I,focused:Y,hovered:ae});o.onKeyStroke("Escape",e=>{I.value&&(e.preventDefault(),A())}),o.onKeyStroke("ArrowDown",e=>{I.value&&Y.value&&(e.preventDefault(),te())}),o.onKeyStroke("ArrowUp",e=>{I.value&&Y.value&&(e.preventDefault(),oe())}),o.onKeyStroke([" ","Enter"],e=>{const t=e.target;I.value&&Y.value&&t&&t?.click()});const ne={"before-enter":()=>{d(I.value?"beforeExpand":"beforeCollapse"),d("beforeEnter")},"after-leave":()=>{d(I.value?"afterExpand":"afterCollapse"),d("afterLeave")},enter:()=>{d("enter")},"after-enter":()=>{d("afterEnter")},"enter-cancelled":()=>{d("enterCancelled")},"before-leave":()=>{d("beforeLeave")},leave:()=>{d("leave")},"leave-cancelled":()=>{d("leaveCancelled")}};return(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(M),null,{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps({init:T,show:j,hide:A,toggle:H,expanded:e.unref(I),aria:e.unref(q)})))]),_:3}),e.createVNode(e.Transition,e.mergeProps({name:t.transitionName},e.toHandlers(ne),{persisted:""}),{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",{ref_key:"floatingEl",ref:x,style:e.normalizeStyle(e.unref(N)),class:e.normalizeClass(e.unref(X))},[s.arrow?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"arrowEl",ref:w,style:e.normalizeStyle(e.unref(z)),class:"vv-dropdown__arrow"},null,4)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps({expanded:e.unref(I)}))),e.createElementVNode("div",e.mergeProps(e.unref(v),{id:e.unref(f),ref_key:"listEl",ref:k,tabindex:e.unref(I)?void 0:-1,role:e.unref(G),"aria-labelledby":e.unref(D),class:"vv-dropdown__list"}),[e.renderSlot(t.$slots,"items",e.normalizeProps(e.guardReactiveProps({role:e.unref(le)})))],16,J),e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps({expanded:e.unref(I)})))],6),[[e.vShow,e.unref(I)]])]),_:3},16,["name"])],64))}});const G=e.defineComponent({name:"VvDropdownItem",props:q,setup(t){const a=t,{role:l,expanded:n}=e.inject(b,{}),r=e.ref(null);!function({expanded:t}){e.provide(y,{role:e.ref(v.menuitem),expanded:t})}({expanded:n});const i=o.useElementHover(r),{focused:u}=o.useFocus(r),{focused:s}=o.useFocusWithin(r);return e.watch(i,e=>{e&&a.focusOnHover&&(u.value=!0)}),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(l)},{ref_key:"element",ref:r,class:["vv-dropdown__item",{"focus-visible":e.unref(u)||e.unref(s)}]}),[e.renderSlot(t.$slots,"default")],16))}}),Q=["title"],X=e.defineComponent({name:"VvDropdownOption",props:M,setup(t){const o=t,{modifiers:a}=e.toRefs(o),l=K("vv-dropdown-option",a,e.computed(()=>({disabled:o.disabled,selected:o.selected,unselectable:o.unselectable&&o.selected}))),n=e.computed(()=>o.selected?o.unselectable?o.deselectHintLabel:o.selectedHintLabel:o.disabled?"":o.selectHintLabel);return(t,o)=>(e.openBlock(),e.createBlock(G,{class:e.normalizeClass(e.unref(l)),tabindex:t.disabled?-1:0,"aria-selected":t.selected,"aria-disabled":t.disabled,"focus-on-hover":t.focusOnHover},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default"),e.createElementVNode("span",{class:"vv-dropdown-option__hint",title:e.unref(n)},[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps({disabled:t.disabled,selected:t.selected,unselectable:t.unselectable})),()=>[e.createTextVNode(e.toDisplayString(e.unref(n)),1)])],8,Q)]),_:3},8,["class","tabindex","aria-selected","aria-disabled","focus-on-hover"]))}});function Y(){return e.inject(g,void 0)}const Z=e.defineComponent({name:"VvIcon",props:e.mergeDefaults({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},n),setup(t){const o=t,a=e.computed(()=>"string"==typeof o.rotate?Number.parseFloat(o.rotate):o.rotate),n=e.ref(!0),r=Y(),{modifiers:i}=e.toRefs(o),u=K("vv-icon",i),s=e.computed(()=>o.provider||r?.iconsProvider),d=e.computed(()=>{const e=o.name??"",t=`@${s.value}:${o.prefix}:${e}`;if(l.iconLoaded(t))return t;const a=r?.iconsCollections.find(t=>{const o=`@${s.value}:${t.prefix}:${e}`;return l.iconLoaded(o)});return a?`@${s.value}:${a.prefix}:${e}`:e});function c(e){const t=function(e){let t;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");t=(new e).window}return(t?new t.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),a=t?.innerHTML.trim()||"";t&&a&&l.addIcon(`@${s.value}:${o.prefix}:${o.name}`,{body:a,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return r&&o.src&&!l.iconLoaded(`@${s.value}:${o.prefix}:${o.name}`)&&(n.value=!1,r.fetchIcon(o.src).then(e=>{e&&(c(e),n.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),o.svg&&c(o.svg),(o,r)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(l.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:e.unref(a),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function ee(t,o){const a=e.computed(()=>"string"==typeof t?.value?{name:t?.value}:t?.value),l=e.computed(()=>o?.value===d.before?a.value:void 0),n=e.computed(()=>o?.value===d.after?a.value:void 0),r=e.computed(()=>o?.value===u.left?a.value:void 0),i=e.computed(()=>o?.value===u.right?a.value:void 0),s=e.computed(()=>o?.value===u.top?a.value:void 0),c=e.computed(()=>o?.value===u.bottom?a.value:void 0);return{hasIcon:a,hasIconLeft:r,hasIconRight:i,hasIconTop:s,hasIconBottom:c,hasIconBefore:l,hasIconAfter:n}}const te=["for"],oe={key:0,class:"vv-textarea__input-before"},ae={class:"vv-textarea__inner"},le=["id"],ne={key:1,class:"vv-textarea__input-after"},re={key:2,class:"vv-textarea__limit"},ie={class:"flex-1"},ue=["title","onClick"];return e.defineComponent({name:"VvTextarea",props:A,emits:["update:modelValue","focus","blur","keyup","suggestion:selected","suggestion:removed"],setup(t,{emit:a}){const l=t,n=a,i=e.useSlots(),u=Y(),s=function(t,o,a){const l=Y(),n=e.computed(()=>{if(l&&l.defaults.value?.[t])return l.defaults.value[t]});return e.computed(()=>{if(void 0===n.value)return a;const e=n.value,t=o,l=a;return Object.keys(t).reduce((o,a)=>{const n=l[a];if(o[a]=n,a in e){if(Array.isArray(t[a])){const l=t[a];l.length&&l[0]===n&&(o[a]=e[a])}if("function"==typeof t[a]&&(0,t[a])()===n&&(o[a]=e[a]),"object"==typeof t[a]){let l=t[a].default;"function"==typeof l&&(l=l()),"object"==typeof l?JSON.stringify(l)===JSON.stringify(n)&&(o[a]=e[a]):l===n&&(o[a]=e[a])}}return o},{})})}("VvTextarea",A,l),d=e.ref(),c=e.ref(),f=e.ref(),{id:v,icon:p,iconPosition:m,iconRemoveSuggestion:g,labelRemoveSuggestion:h,label:b,modelValue:y,count:S,valid:x,invalid:w,loading:k,modifiers:L,debounce:B,minlength:$,maxlength:V,storageType:E}=e.toRefs(l),O=W(v),P=e.computed(()=>`${O.value}-hint`),C=e.computed(()=>l.floating&&H(l.placeholder)?" ":l.placeholder),N=function(t,o,a=0,{getter:l=e=>e,setter:n=e=>e}={}){let r;return"string"==typeof a&&(a=Number.parseInt(a)),e.computed({get:()=>l(t?.value),set:e=>{r&&clearTimeout(r),r=setTimeout(()=>{o("update:modelValue",n(e))},a)}})}(y,n,B?.value),{hasIconBefore:_,hasIconAfter:z}=ee(p,m),{hasIcon:R}=ee(g),{focused:F}=function(t,a){const{focused:l}=o.useFocus(t);return e.watch(l,o=>{a(o?"focus":"blur",e.unref(t))}),{focused:l}}(d,n),I=e.computed(()=>F.value&&!l.disabled&&!l.readonly);e.watch(I,e=>{if(e&&s.value.selectOnFocus&&d.value&&d.value.select(),e&&se.value?.size)f.value?.show();else if(J.value&&se.value){const e=l.maxSuggestions;se.value.size>=e&&!se.value.has(N.value)&&(se.value=new Set([...se.value].slice(se.value.size-e+1))),se.value.add(N.value)}});const j=o.useElementVisibility(d);e.watch(j,e=>{e&&l.autofocus&&(F.value=!0)});const{formatted:D}=function(t,o){const a=e.computed(()=>(e.unref(t)??"").length),l=e.computed(()=>void 0!==o?.lowerLimit&&a.value<o?.lowerLimit?a.value-o.lowerLimit:void 0!==o?.upperLimit&&a.value<o?.upperLimit?o.upperLimit-a.value:0),n=e.computed(()=>{if(!1===o?.mode)return"";if("limit"===o?.mode&&o?.upperLimit)return`${a.value} / ${o.lowerLimit?`${o.lowerLimit}-`:""}${o.upperLimit}`;if("countdown"===o?.mode){if(0===l.value)return;return l}return a.value});return{length:a,gap:l,formatted:n}}(N,{mode:S?.value,upperLimit:Number(V?.value),lowerLimit:Number($?.value)}),q=e.computed(()=>!l.disabled&&!l.readonly),M=e.computed(()=>q.value?l.tabindex:-1),J=e.computed(()=>!H(y)),G=e.computed(()=>!0===l.invalid||!0!==l.valid&&void 0),Q=e.computed(()=>l.storageKey??(u?.experimentalFeatures.forceInputSuggestions?l.name:void 0)),se=function(t,a=r.local,l){const n=e.ref();let i;return l&&(n.value=l),e.onMounted(()=>{t&&e.watch(t,(t,l)=>{const u=e.unref(a)===r.session?sessionStorage:localStorage;if(l&&l!==t&&u.removeItem(l),t)return i=o.useStorage(t,i?.value??n.value,u),void(i.value&&(n.value=i.value));i=void 0},{immediate:!0}),e.isRef(a)&&e.watch(a,(e,a)=>{if(t?.value){if(e){const a=e===r.session?sessionStorage:localStorage;i=o.useStorage(t.value,i?.value??n.value,a)}a&&a!==e&&(a===r.session?sessionStorage:localStorage).removeItem(t.value)}})}),e.watch(n,e=>{i&&(i.value=e)},{deep:!0,immediate:!0}),n}(Q,E,new Set),de=e.computed(()=>se.value?[...se.value].filter(e=>H(N.value)||`${e}`.toLowerCase().includes(`${N.value}`.toLowerCase())&&e!==N.value).reverse():[]),ce=e.computed(()=>Q?.value&&se.value&&se.value.size>0);const{HintSlot:fe,hasHintLabelOrSlot:ve,hasInvalidLabelOrSlot:pe,hintSlotScope:me}=function(t,o){const a=e.computed(()=>e.isRef(t)?t.value:t),l=e.computed(()=>T(a.value.invalidLabel)),n=e.computed(()=>T(a.value.validLabel)),r=e.computed(()=>a.value.loadingLabel),i=e.computed(()=>a.value.hintLabel),u=e.computed(()=>Boolean(a.value.loading&&(o.loading||r.value))),s=e.computed(()=>!u.value&&Boolean(a.value.invalid&&(o.invalid||l.value))),d=e.computed(()=>!u.value&&!s.value&&Boolean(a.value.valid&&(o.valid||n.value))),c=e.computed(()=>!u.value&&!s.value&&!d.value&&Boolean(o.hint||i.value)),f=e.computed(()=>s.value||d.value||u.value||c.value),v=e.computed(()=>({modelValue:a.value.modelValue,valid:a.value.valid,invalid:a.value.invalid,loading:a.value.loading})),p=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:f,invalidLabel:l,validLabel:n,loadingLabel:r,hintLabel:i,hasInvalidLabelOrSlot:s,hasValidLabelOrSlot:d,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){if(this.isVisible){let t;return this.hasInvalidLabelOrSlot&&(t="alert"),this.hasValidLabelOrSlot&&(t="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:t},this.$slots.loading?.()??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.invalid?.()??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.valid?.()??this.validLabel):e.h(this.tag,{role:t},this.$slots.hint?.()??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:s,hasHintLabelOrSlot:c,hasValidLabelOrSlot:d,hasLoadingLabelOrSlot:u,hintSlotScope:v,HintSlot:p}}(s,i),ge=K("vv-textarea",L,e.computed(()=>({valid:x.value,invalid:w.value,loading:k.value,disabled:l.disabled,readonly:l.readonly,required:l.required,"icon-before":void 0!==_.value,"icon-after":void 0!==z.value,floating:l.floating&&!H(l.label),dirty:J.value,focus:F.value,resizable:l.resizable}))),he=e.computed(()=>({name:l.name,placeholder:C.value,tabindex:M.value,disabled:l.disabled,readonly:l.readonly,required:l.required,autocomplete:l.autocomplete,minlength:l.minlength,maxlength:l.maxlength,cols:l.cols,rows:l.rows,wrap:l.wrap,spellcheck:l.spellcheck,"aria-invalid":G.value,"aria-describedby":ve.value?P.value:void 0,"aria-errormessage":pe.value?P.value:void 0})),be=e.computed(()=>({valid:l.valid,invalid:l.invalid,modelValue:l.modelValue,hintLabel:l.hintLabel,maxlength:l.maxlength,minlength:l.minlength,clear:ye}));function ye(){N.value=void 0}return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(ge))},[e.unref(b)?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(O),class:"vv-textarea__label"},e.toDisplayString(e.unref(b)),9,te)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{ref_key:"wrapperEl",ref:c,class:"vv-textarea__wrapper"},[t.$slots.before?(e.openBlock(),e.createElementBlock("div",oe,[e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps(e.unref(be))))])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",ae,[e.unref(_)?(e.openBlock(),e.createBlock(Z,e.mergeProps({key:0},e.unref(_),{class:"vv-textarea__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("textarea",e.mergeProps({id:e.unref(O),ref_key:"textareaEl",ref:d,"onUpdate:modelValue":o[0]||(o[0]=t=>e.isRef(N)?N.value=t:null)},e.unref(he),{onKeyup:o[1]||(o[1]=e=>n("keyup",e))}),null,16,le),[[e.vModelText,e.unref(N)]]),e.unref(z)?(e.openBlock(),e.createBlock(Z,e.mergeProps({key:1},e.unref(z),{class:"vv-textarea__icon vv-textarea__icon-after"}),null,16)):e.createCommentVNode("v-if",!0)]),t.$slots.after?(e.openBlock(),e.createElementBlock("div",ne,[e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps(e.unref(be))))])):e.createCommentVNode("v-if",!0),e.unref(S)?(e.openBlock(),e.createElementBlock("span",re,[e.renderSlot(t.$slots,"count",e.normalizeProps(e.guardReactiveProps(e.unref(be))),()=>[e.createTextVNode(e.toDisplayString(e.unref(D)),1)])])):e.createCommentVNode("v-if",!0)],512),e.createVNode(e.unref(fe),{id:e.unref(P),class:"vv-textarea__hint"},e.createSlots({_:2},[t.$slots.hint?{name:"hint",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps(e.unref(me))))]),key:"0"}:void 0,t.$slots.loading?{name:"loading",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"loading",e.normalizeProps(e.guardReactiveProps(e.unref(me))))]),key:"1"}:void 0,t.$slots.valid?{name:"valid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"valid",e.normalizeProps(e.guardReactiveProps(e.unref(me))))]),key:"2"}:void 0,t.$slots.invalid?{name:"invalid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"invalid",e.normalizeProps(e.guardReactiveProps(e.unref(me))))]),key:"3"}:void 0]),1032,["id"]),e.unref(ce)?(e.openBlock(),e.createBlock(U,{key:1,ref_key:"suggestionsDropdownEl",ref:f,reference:e.unref(c),"autofocus-first":!1,"trigger-width":!0},{items:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(de),o=>(e.openBlock(),e.createBlock(X,{key:o,onClick:e.withModifiers(e=>{return t=o,N.value=t,f.value?.hide(),void n("suggestion:selected",t);var t},["stop"])},{default:e.withCtx(()=>[e.createElementVNode("div",ie,[e.renderSlot(t.$slots,"suggestion",e.mergeProps({ref_for:!0},{value:o}),()=>[e.createTextVNode(e.toDisplayString(o),1)])]),e.unref(se)&&e.unref(R)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",tabindex:"-1",class:"cursor-pointer",title:e.unref(h),onClick:e.withModifiers(e=>{return t=o,se.value?.delete(t),void n("suggestion:removed",t);var t},["stop"])},[e.createVNode(Z,e.mergeProps({ref_for:!0},e.unref(R)),null,16)],8,ue)):e.createCommentVNode("v-if",!0)]),_:2},1032,["onClick"]))),128))]),_:3},8,["reference"])):e.createCommentVNode("v-if",!0)],2))}})});