@volverjs/ui-vue 0.0.10-beta.71 → 0.0.10-beta.73

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.
Files changed (37) hide show
  1. package/dist/components/VvAlert/VvAlert.es.js +4 -4
  2. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  3. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +4 -4
  4. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  5. package/dist/components/VvButton/VvButton.es.js +4 -4
  6. package/dist/components/VvButton/VvButton.umd.js +1 -1
  7. package/dist/components/VvCombobox/VvCombobox.es.js +141 -71
  8. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  9. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +10 -3
  10. package/dist/components/VvCombobox/index.d.ts +35 -19
  11. package/dist/components/VvDropdown/VvDropdown.es.js +41 -22
  12. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  13. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +4 -0
  14. package/dist/components/VvInputFile/VvInputFile.es.js +9 -9
  15. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -1
  16. package/dist/components/VvInputText/VvInputText.es.js +54 -35
  17. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  18. package/dist/components/VvNav/VvNav.es.js +3 -1
  19. package/dist/components/VvNav/VvNav.umd.js +1 -1
  20. package/dist/components/VvNav/VvNavItem.vue.d.ts +4 -0
  21. package/dist/components/VvNavItem/VvNavItem.es.js +3 -1
  22. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
  23. package/dist/components/VvSelect/VvSelect.es.js +34 -24
  24. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  25. package/dist/components/VvSelect/VvSelect.vue.d.ts +3 -1
  26. package/dist/components/VvSelect/index.d.ts +12 -19
  27. package/dist/components/VvTab/VvTab.es.js +3 -1
  28. package/dist/components/VvTab/VvTab.umd.js +1 -1
  29. package/dist/components/VvTextarea/VvTextarea.es.js +48 -29
  30. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  31. package/dist/components/index.es.js +153 -81
  32. package/dist/components/index.umd.js +1 -1
  33. package/dist/icons.es.js +3 -3
  34. package/dist/icons.umd.js +1 -1
  35. package/dist/props/index.d.ts +24 -0
  36. package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
  37. package/package.json +11 -11
@@ -2,6 +2,13 @@ import { computed, isRef, defineComponent, h, inject, unref, mergeDefaults, ref,
2
2
  import { iconLoaded, Icon, addIcon } from "@iconify/vue";
3
3
  import { useFocus, useElementVisibility } from "@vueuse/core";
4
4
  import { get } from "ts-dot-prop";
5
+ const ACTION_ICONS = {
6
+ clear: "close"
7
+ };
8
+ const VvIconPropsDefaults = {
9
+ prefix: "normal"
10
+ /* normal */
11
+ };
5
12
  var StorageType = /* @__PURE__ */ ((StorageType2) => {
6
13
  StorageType2["local"] = "local";
7
14
  StorageType2["session"] = "session";
@@ -81,6 +88,30 @@ const DisabledProps = {
81
88
  default: false
82
89
  }
83
90
  };
91
+ const ClearProps = {
92
+ /**
93
+ * If true, the clear button will be shown
94
+ */
95
+ showClearAction: {
96
+ type: Boolean,
97
+ default: false
98
+ },
99
+ /**
100
+ * VvIcon name for clear button
101
+ * @see VvIcon
102
+ */
103
+ iconClear: {
104
+ type: [String, Object],
105
+ default: ACTION_ICONS.clear
106
+ },
107
+ /**
108
+ * Label for clear button
109
+ */
110
+ labelClear: {
111
+ type: String,
112
+ default: "Clear"
113
+ }
114
+ };
84
115
  const LabelProps = {
85
116
  /**
86
117
  * The item label
@@ -232,13 +263,6 @@ const AutocompleteProps = {
232
263
  default: StorageType.local
233
264
  }
234
265
  });
235
- const ACTION_ICONS = {
236
- clear: "close"
237
- };
238
- const VvIconPropsDefaults = {
239
- prefix: "normal"
240
- /* normal */
241
- };
242
266
  const VvSelectProps = {
243
267
  ...IdNameProps,
244
268
  ...AutofocusProps,
@@ -256,6 +280,7 @@ const VvSelectProps = {
256
280
  ...FloatingLabelProps,
257
281
  ...UnselectableProps,
258
282
  ...LabelProps,
283
+ ...ClearProps,
259
284
  /**
260
285
  * This Boolean attribute indicates that multiple options can be selected in the list.
261
286
  * If it is not specified, then only one option can be selected at a time.
@@ -292,22 +317,7 @@ const VvSelectProps = {
292
317
  /**
293
318
  * Select placeholder
294
319
  */
295
- placeholder: String,
296
- /**
297
- * VvIcon name for clear button
298
- * @see VvIcon
299
- */
300
- iconClear: {
301
- type: [String, Object],
302
- default: ACTION_ICONS.clear
303
- },
304
- /**
305
- * Label for clear button
306
- */
307
- labelClear: {
308
- type: String,
309
- default: "Clear"
310
- }
320
+ placeholder: String
311
321
  };
312
322
  function useVvSelectProps() {
313
323
  return {
@@ -1036,7 +1046,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
1036
1046
  /* FULL_PROPS */
1037
1047
  )) : createCommentVNode("v-if", true)
1038
1048
  ]),
1039
- unref(isUnselectable) ? (openBlock(), createBlock(unref(VvInputClearAction), {
1049
+ unref(isUnselectable) && unref(propsDefaults).showClearAction ? (openBlock(), createBlock(unref(VvInputClearAction), {
1040
1050
  key: 1,
1041
1051
  "input-type": "select",
1042
1052
  label: _ctx.labelClear,
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("@iconify/vue"),require("@vueuse/core"),require("ts-dot-prop")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue","@vueuse/core","ts-dot-prop"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvSelect=t(e.vue,e.vue$1,e.core,e.tsDotProp)}(this,(function(e,t,l,o){"use strict";var a=(e=>(e.local="local",e.session="session",e))(a||{}),n=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(n||{}),i=(e=>(e.before="before",e.after="after",e))(i||{}),r=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(r||{}),u=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(u||{});const d=Symbol.for("volver"),s={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},c={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},v={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},p={disabled:{type:Boolean,default:!1}},f={label:{type:[String,Number],default:void 0}},m={readonly:{type:Boolean,default:!1}},b={modifiers:{type:[String,Array],default:void 0}},h={hintLabel:{type:String,default:""}},y={options:{type:Array,default:()=>[]},labelKey:{type:[String,Function],default:"label"},valueKey:{type:[String,Function],default:"value"},disabledKey:{type:[String,Function],default:"disabled"}},g={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:i.before,validation:e=>Object.values(i).includes(e)}},S={tabindex:{type:[String,Number],default:0}},k={floating:{type:Boolean,default:!1}},B={unselectable:{type:Boolean,default:!0}},L={id:[String,Number]};n.bottom;const $={...L,name:{type:String,required:!0}},V={autofocus:{type:Boolean,default:!1}},O={autocomplete:{type:String,default:"off"}};r.button,u.button,a.local;const C={prefix:"normal"},w={...$,...V,...O,...S,...s,...c,...h,...v,...p,...m,...b,...y,...g,...k,...B,...f,multiple:Boolean,required:Boolean,size:[String,Number],modelValue:{type:[String,Number,Boolean,Object,Array],default:void 0},autoselectFirst:{type:Boolean,default:!1},placeholder:String,iconClear:{type:[String,Object],default:"close"},labelClear:{type:String,default:"Clear"}};function I(){return{...w,options:{...w.options,type:Array,default:()=>[]}}}function P(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).join(" "):e}function x(){return e.inject(d,void 0)}function _(t,l,o){return e.computed((()=>{const a={[t]:!0},n="string"==typeof(null==l?void 0:l.value)?l.value.split(" "):null==l?void 0:l.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(a[`${t}--${e}`]=!0)})),o&&Object.keys(o.value).forEach((l=>{a[`${t}--${l}`]=e.unref(o.value[l])})),a}))}const A=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:{}},C),setup(l){const o=l,a=e.computed((()=>"string"==typeof o.rotate?Number.parseFloat(o.rotate):o.rotate)),n=e.ref(!0),i=x(),{modifiers:r}=e.toRefs(o),u=_("vv-icon",r),d=e.computed((()=>o.provider||(null==i?void 0:i.iconsProvider))),s=e.computed((()=>{const e=o.name??"",l=`@${d.value}:${o.prefix}:${e}`;if(t.iconLoaded(l))return l;const a=null==i?void 0:i.iconsCollections.find((l=>{const o=`@${d.value}:${l.prefix}:${e}`;return t.iconLoaded(o)}));return a?`@${d.value}:${a.prefix}:${e}`:e}));function c(e){const l=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=(null==l?void 0:l.innerHTML.trim())||"";l&&a&&t.addIcon(`@${d.value}:${o.prefix}:${o.name}`,{body:a,height:l.viewBox.baseVal.height,width:l.viewBox.baseVal.width})}return i&&o.src&&!t.iconLoaded(`@${d.value}:${o.prefix}:${o.name}`)&&(n.value=!1,i.fetchIcon(o.src).then((e=>{e&&(c(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),o.svg&&c(o.svg),(l,o)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(t.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:l.inline,width:l.width,height:l.height,horizontalFlip:l.horizontalFlip,verticalFlip:l.verticalFlip,flip:l.flip,rotate:e.unref(a),color:l.color,icon:e.unref(s)},{onLoad:l.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function E(t,l){const o=e.computed((()=>"string"==typeof(null==t?void 0:t.value)?{name:null==t?void 0:t.value}:null==t?void 0:t.value)),a=e.computed((()=>(null==l?void 0:l.value)===i.before?o.value:void 0)),r=e.computed((()=>(null==l?void 0:l.value)===i.after?o.value:void 0)),u=e.computed((()=>(null==l?void 0:l.value)===n.left?o.value:void 0)),d=e.computed((()=>(null==l?void 0:l.value)===n.right?o.value:void 0)),s=e.computed((()=>(null==l?void 0:l.value)===n.top?o.value:void 0)),c=e.computed((()=>(null==l?void 0:l.value)===n.bottom?o.value:void 0));return{hasIcon:o,hasIconLeft:u,hasIconRight:d,hasIconTop:s,hasIconBottom:c,hasIconBefore:a,hasIconAfter:r}}const N=e.defineComponent({components:{VvIcon:A},props:{inputType:{type:String,default:"input-text"},disabled:{type:Boolean,default:!1},label:{type:String,default:"Clear"},icon:{type:[String,Object],default:"close"}},emits:["clear"],setup(t,{emit:l}){const{hasIcon:o}=E(e.computed((()=>t.icon)));return{hasIcon:o,onClick:function(e){null==e||e.stopPropagation(),t.disabled||l("clear")}}},render(){const t=this.hasIcon?e.h(A,{...this.hasIcon,class:`vv-${this.inputType}__icon`}):void 0;return e.h("button",{disabled:this.disabled,class:`vv-${this.inputType}__action`,ariaLabel:this.label,type:"button",onClick:this.onClick},t)}});const F=["for"],j={class:"vv-select__wrapper"},z={key:0,class:"vv-select__input-before"},D={class:"vv-select__inner"},R=["id"],q=["disabled","hidden"],H=["disabled","value"],T=["disabled","label"],K=["disabled","value"],M={key:2,class:"vv-select__input-after"};return e.defineComponent({name:"VvSelect",props:I(),emits:["update:modelValue","focus","blur","clear"],setup(t,{emit:a}){const n=t,i=a,r=e.useSlots(),u=function(t,l,o){const a=x(),n=e.computed((()=>{var e;if(a&&(null==(e=a.defaults.value)?void 0:e[t]))return a.defaults.value[t]}));return e.computed((()=>{if(void 0===n.value)return o;const e=n.value,t=l,a=o;return Object.keys(t).reduce(((l,o)=>{const n=a[o];if(l[o]=n,o in e){if(Array.isArray(t[o])){const a=t[o];a.length&&a[0]===n&&(l[o]=e[o])}if("function"==typeof t[o]&&(0,t[o])()===n&&(l[o]=e[o]),"object"==typeof t[o]){let a=t[o].default;"function"==typeof a&&(a=a()),"object"==typeof a?JSON.stringify(a)===JSON.stringify(n)&&(l[o]=e[o]):a===n&&(l[o]=e[o])}}return l}),{})}))}("VvSelect",I(),n),d=e.ref(),{HintSlot:s,hasHintLabelOrSlot:c,hasInvalidLabelOrSlot:v,hintSlotScope:p}=function(t,l){const o=e.computed((()=>e.isRef(t)?t.value:t)),a=e.computed((()=>P(o.value.invalidLabel))),n=e.computed((()=>P(o.value.validLabel))),i=e.computed((()=>o.value.loadingLabel)),r=e.computed((()=>o.value.hintLabel)),u=e.computed((()=>Boolean(o.value.loading&&(l.loading||i.value)))),d=e.computed((()=>!u.value&&Boolean(o.value.invalid&&(l.invalid||a.value)))),s=e.computed((()=>!u.value&&!d.value&&Boolean(o.value.valid&&(l.valid||n.value)))),c=e.computed((()=>!u.value&&!d.value&&!s.value&&Boolean(l.hint||r.value))),v=e.computed((()=>d.value||s.value||u.value||c.value)),p=e.computed((()=>({modelValue:o.value.modelValue,valid:o.value.valid,invalid:o.value.invalid,loading:o.value.loading}))),f=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:v,invalidLabel:a,validLabel:n,loadingLabel:i,hintLabel:r,hasInvalidLabelOrSlot:d,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){var t,l,o,a,n,i,r,u;if(this.isVisible){let d;return this.hasInvalidLabelOrSlot&&(d="alert"),this.hasValidLabelOrSlot&&(d="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:d},(null==(l=(t=this.$slots).loading)?void 0:l.call(t))??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:d},(null==(a=(o=this.$slots).invalid)?void 0:a.call(o))??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:d},(null==(i=(n=this.$slots).valid)?void 0:i.call(n))??this.validLabel):e.h(this.tag,{role:d},(null==(u=(r=this.$slots).hint)?void 0:u.call(r))??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:d,hasHintLabelOrSlot:c,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hintSlotScope:p,HintSlot:f}}(u,r),{focused:f}=function(t,o){const{focused:a}=l.useFocus(t);return e.watch(a,(l=>{o(l?"focus":"blur",e.unref(t))})),{focused:a}}(d,i);function m(e){var t;return"string"!=typeof e&&(null==(t=e.options)?void 0:t.length)}const{id:b,modifiers:h,disabled:y,readonly:g,loading:S,icon:k,iconPosition:B,invalid:L,valid:$,floating:V,multiple:O}=e.toRefs(n),C=function(t){return e.computed((()=>String((null==t?void 0:t.value)||e.useId())))}(b),w=e.computed((()=>`${C.value}-hint`)),J=e.computed((()=>n.disabled||n.readonly)),G=e.computed((()=>J.value?-1:n.tabindex)),U=e.computed({get:()=>n.modelValue,set:e=>{Array.isArray(e)&&0===(e=e.filter((e=>void 0!==e))).length&&!n.unselectable&&d.value?d.value.value=String(n.modelValue):i("update:modelValue",e)}}),Q=e.computed((()=>Array.isArray(U.value)?U.value.length>0:void 0!==U.value&&null!==U.value)),W=e.computed((()=>!J.value&&n.unselectable)),X=l.useElementVisibility(d);e.watch(X,(e=>{e&&n.autofocus&&(f.value=!0)}));const{hasIconBefore:Y,hasIconAfter:Z}=E(k,B),ee=e.computed((()=>!0===n.invalid||!0!==n.valid&&void 0)),te=_("vv-select",h,e.computed((()=>({valid:$.value,invalid:L.value,loading:S.value,disabled:y.value,readonly:g.value,"icon-before":void 0!==Y.value,"icon-after":void 0!==Z.value,dirty:Q.value,focus:f.value&&!J.value,floating:V.value,multiple:O.value})))),{getOptionLabel:le,getOptionValue:oe,isOptionDisabled:ae,getOptionGrouped:ne}=function(t){const{options:l,labelKey:a,valueKey:n,disabledKey:i}=e.toRefs(t);return{options:l,getOptionLabel:e=>"string"==typeof e?e:"function"==typeof a.value?a.value(e):String(a.value?o.get(e,a.value):e),getOptionValue:e=>"string"==typeof e?e:"function"==typeof n.value?n.value(e):n.value?o.get(e,n.value):e,isOptionDisabled:e=>"string"!=typeof e&&("function"==typeof i.value?i.value(e):!!i.value&&o.get(e,i.value)),getOptionGrouped:e=>"string"==typeof e?[]:"object"==typeof e&&e&&"options"in e?e.options:[]}}(n);function ie(){Array.isArray(U.value)?U.value=[]:U.value=void 0,i("clear")}e.watch((()=>n.options),(e=>{if((null==e?void 0:e.length)&&n.autoselectFirst&&!Q.value){const t=oe(e[0]);U.value=n.multiple?[t]:t}}),{immediate:!0});const re=e.computed((()=>({name:n.name,tabindex:G.value,disabled:J.value,required:n.required,size:n.size,autocomplete:n.autocomplete,multiple:n.multiple,"aria-invalid":ee.value,"aria-describedby":c.value?w.value:void 0,"aria-errormessage":v.value?w.value:void 0}))),ue=e.computed((()=>({valid:n.valid,invalid:n.invalid,modelValue:n.modelValue})));return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(te))},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(C)},e.toDisplayString(t.label),9,F)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",j,[t.$slots.before?(e.openBlock(),e.createElementBlock("div",z,[e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps(e.unref(ue))))])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",D,[e.unref(Y)?(e.openBlock(),e.createBlock(A,e.mergeProps({key:0},e.unref(Y),{class:"vv-select__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("select",e.mergeProps({id:e.unref(C),ref_key:"selectEl",ref:d},e.unref(re),{"onUpdate:modelValue":l[0]||(l[0]=t=>e.isRef(U)?U.value=t:null)}),[t.placeholder?(e.openBlock(),e.createElementBlock("option",{key:0,value:void 0,disabled:!e.unref(W),hidden:!e.unref(W)},e.toDisplayString(t.placeholder),9,q)):e.createCommentVNode("v-if",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,((t,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m(t)?(e.openBlock(),e.createElementBlock("optgroup",{key:`group-${l}`,disabled:e.unref(ae)(t),label:e.unref(le)(t)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ne)(t),((t,o)=>(e.openBlock(),e.createElementBlock("option",{key:`group-${l}-item-${o}`,disabled:e.unref(ae)(t),value:e.unref(oe)(t)},e.toDisplayString(e.unref(le)(t)),9,K)))),128))],8,T)):(e.openBlock(),e.createElementBlock("option",{key:l,disabled:e.unref(ae)(t),value:e.unref(oe)(t)},e.toDisplayString(e.unref(le)(t)),9,H))],64)))),256))],16,R),[[e.vModelSelect,e.unref(U)]]),e.unref(Z)?(e.openBlock(),e.createBlock(A,e.mergeProps({key:1},e.unref(Z),{class:"vv-select__icon vv-select__icon-after"}),null,16)):e.createCommentVNode("v-if",!0)]),e.unref(W)?(e.openBlock(),e.createBlock(e.unref(N),{key:1,"input-type":"select",label:t.labelClear,icon:t.iconClear,disabled:!e.unref(Q),onClear:ie},null,8,["label","icon","disabled"])):e.createCommentVNode("v-if",!0),t.$slots.after?(e.openBlock(),e.createElementBlock("div",M,[e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps(e.unref(ue))))])):e.createCommentVNode("v-if",!0)]),e.createVNode(e.unref(s),{id:e.unref(w),class:"vv-select__hint"},e.createSlots({_:2},[t.$slots.hint?{name:"hint",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"0"}:void 0,t.$slots.loading?{name:"loading",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"loading",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"1"}:void 0,t.$slots.valid?{name:"valid",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"valid",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"2"}:void 0,t.$slots.invalid?{name:"invalid",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"invalid",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"3"}:void 0]),1032,["id"])],2))}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("@iconify/vue"),require("@vueuse/core"),require("ts-dot-prop")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue","@vueuse/core","ts-dot-prop"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvSelect=t(e.vue,e.vue$1,e.core,e.tsDotProp)}(this,(function(e,t,l,o){"use strict";const a={prefix:"normal"};var n=(e=>(e.local="local",e.session="session",e))(n||{}),i=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(i||{}),r=(e=>(e.before="before",e.after="after",e))(r||{}),u=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(u||{}),d=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(d||{});const s=Symbol.for("volver"),c={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},v={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},p={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},f={disabled:{type:Boolean,default:!1}},m={showClearAction:{type:Boolean,default:!1},iconClear:{type:[String,Object],default:"close"},labelClear:{type:String,default:"Clear"}},b={label:{type:[String,Number],default:void 0}},h={readonly:{type:Boolean,default:!1}},y={modifiers:{type:[String,Array],default:void 0}},g={hintLabel:{type:String,default:""}},S={options:{type:Array,default:()=>[]},labelKey:{type:[String,Function],default:"label"},valueKey:{type:[String,Function],default:"value"},disabledKey:{type:[String,Function],default:"disabled"}},B={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:r.before,validation:e=>Object.values(r).includes(e)}},k={tabindex:{type:[String,Number],default:0}},L={floating:{type:Boolean,default:!1}},$={unselectable:{type:Boolean,default:!0}},V={id:[String,Number]};i.bottom;const O={...V,name:{type:String,required:!0}},C={autofocus:{type:Boolean,default:!1}},w={autocomplete:{type:String,default:"off"}};u.button,d.button,n.local;const I={...O,...C,...w,...k,...c,...v,...g,...p,...f,...h,...y,...S,...B,...L,...$,...b,...m,multiple:Boolean,required:Boolean,size:[String,Number],modelValue:{type:[String,Number,Boolean,Object,Array],default:void 0},autoselectFirst:{type:Boolean,default:!1},placeholder:String};function P(){return{...I,options:{...I.options,type:Array,default:()=>[]}}}function x(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).join(" "):e}function A(){return e.inject(s,void 0)}function _(t,l,o){return e.computed((()=>{const a={[t]:!0},n="string"==typeof(null==l?void 0:l.value)?l.value.split(" "):null==l?void 0:l.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(a[`${t}--${e}`]=!0)})),o&&Object.keys(o.value).forEach((l=>{a[`${t}--${l}`]=e.unref(o.value[l])})),a}))}const E=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:{}},a),setup(l){const o=l,a=e.computed((()=>"string"==typeof o.rotate?Number.parseFloat(o.rotate):o.rotate)),n=e.ref(!0),i=A(),{modifiers:r}=e.toRefs(o),u=_("vv-icon",r),d=e.computed((()=>o.provider||(null==i?void 0:i.iconsProvider))),s=e.computed((()=>{const e=o.name??"",l=`@${d.value}:${o.prefix}:${e}`;if(t.iconLoaded(l))return l;const a=null==i?void 0:i.iconsCollections.find((l=>{const o=`@${d.value}:${l.prefix}:${e}`;return t.iconLoaded(o)}));return a?`@${d.value}:${a.prefix}:${e}`:e}));function c(e){const l=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=(null==l?void 0:l.innerHTML.trim())||"";l&&a&&t.addIcon(`@${d.value}:${o.prefix}:${o.name}`,{body:a,height:l.viewBox.baseVal.height,width:l.viewBox.baseVal.width})}return i&&o.src&&!t.iconLoaded(`@${d.value}:${o.prefix}:${o.name}`)&&(n.value=!1,i.fetchIcon(o.src).then((e=>{e&&(c(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),o.svg&&c(o.svg),(l,o)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(t.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:l.inline,width:l.width,height:l.height,horizontalFlip:l.horizontalFlip,verticalFlip:l.verticalFlip,flip:l.flip,rotate:e.unref(a),color:l.color,icon:e.unref(s)},{onLoad:l.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function N(t,l){const o=e.computed((()=>"string"==typeof(null==t?void 0:t.value)?{name:null==t?void 0:t.value}:null==t?void 0:t.value)),a=e.computed((()=>(null==l?void 0:l.value)===r.before?o.value:void 0)),n=e.computed((()=>(null==l?void 0:l.value)===r.after?o.value:void 0)),u=e.computed((()=>(null==l?void 0:l.value)===i.left?o.value:void 0)),d=e.computed((()=>(null==l?void 0:l.value)===i.right?o.value:void 0)),s=e.computed((()=>(null==l?void 0:l.value)===i.top?o.value:void 0)),c=e.computed((()=>(null==l?void 0:l.value)===i.bottom?o.value:void 0));return{hasIcon:o,hasIconLeft:u,hasIconRight:d,hasIconTop:s,hasIconBottom:c,hasIconBefore:a,hasIconAfter:n}}const F=e.defineComponent({components:{VvIcon:E},props:{inputType:{type:String,default:"input-text"},disabled:{type:Boolean,default:!1},label:{type:String,default:"Clear"},icon:{type:[String,Object],default:"close"}},emits:["clear"],setup(t,{emit:l}){const{hasIcon:o}=N(e.computed((()=>t.icon)));return{hasIcon:o,onClick:function(e){null==e||e.stopPropagation(),t.disabled||l("clear")}}},render(){const t=this.hasIcon?e.h(E,{...this.hasIcon,class:`vv-${this.inputType}__icon`}):void 0;return e.h("button",{disabled:this.disabled,class:`vv-${this.inputType}__action`,ariaLabel:this.label,type:"button",onClick:this.onClick},t)}});const j=["for"],z={class:"vv-select__wrapper"},D={key:0,class:"vv-select__input-before"},R={class:"vv-select__inner"},q=["id"],H=["disabled","hidden"],T=["disabled","value"],K=["disabled","label"],M=["disabled","value"],J={key:2,class:"vv-select__input-after"};return e.defineComponent({name:"VvSelect",props:P(),emits:["update:modelValue","focus","blur","clear"],setup(t,{emit:a}){const n=t,i=a,r=e.useSlots(),u=function(t,l,o){const a=A(),n=e.computed((()=>{var e;if(a&&(null==(e=a.defaults.value)?void 0:e[t]))return a.defaults.value[t]}));return e.computed((()=>{if(void 0===n.value)return o;const e=n.value,t=l,a=o;return Object.keys(t).reduce(((l,o)=>{const n=a[o];if(l[o]=n,o in e){if(Array.isArray(t[o])){const a=t[o];a.length&&a[0]===n&&(l[o]=e[o])}if("function"==typeof t[o]&&(0,t[o])()===n&&(l[o]=e[o]),"object"==typeof t[o]){let a=t[o].default;"function"==typeof a&&(a=a()),"object"==typeof a?JSON.stringify(a)===JSON.stringify(n)&&(l[o]=e[o]):a===n&&(l[o]=e[o])}}return l}),{})}))}("VvSelect",P(),n),d=e.ref(),{HintSlot:s,hasHintLabelOrSlot:c,hasInvalidLabelOrSlot:v,hintSlotScope:p}=function(t,l){const o=e.computed((()=>e.isRef(t)?t.value:t)),a=e.computed((()=>x(o.value.invalidLabel))),n=e.computed((()=>x(o.value.validLabel))),i=e.computed((()=>o.value.loadingLabel)),r=e.computed((()=>o.value.hintLabel)),u=e.computed((()=>Boolean(o.value.loading&&(l.loading||i.value)))),d=e.computed((()=>!u.value&&Boolean(o.value.invalid&&(l.invalid||a.value)))),s=e.computed((()=>!u.value&&!d.value&&Boolean(o.value.valid&&(l.valid||n.value)))),c=e.computed((()=>!u.value&&!d.value&&!s.value&&Boolean(l.hint||r.value))),v=e.computed((()=>d.value||s.value||u.value||c.value)),p=e.computed((()=>({modelValue:o.value.modelValue,valid:o.value.valid,invalid:o.value.invalid,loading:o.value.loading}))),f=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:v,invalidLabel:a,validLabel:n,loadingLabel:i,hintLabel:r,hasInvalidLabelOrSlot:d,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){var t,l,o,a,n,i,r,u;if(this.isVisible){let d;return this.hasInvalidLabelOrSlot&&(d="alert"),this.hasValidLabelOrSlot&&(d="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:d},(null==(l=(t=this.$slots).loading)?void 0:l.call(t))??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:d},(null==(a=(o=this.$slots).invalid)?void 0:a.call(o))??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:d},(null==(i=(n=this.$slots).valid)?void 0:i.call(n))??this.validLabel):e.h(this.tag,{role:d},(null==(u=(r=this.$slots).hint)?void 0:u.call(r))??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:d,hasHintLabelOrSlot:c,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hintSlotScope:p,HintSlot:f}}(u,r),{focused:f}=function(t,o){const{focused:a}=l.useFocus(t);return e.watch(a,(l=>{o(l?"focus":"blur",e.unref(t))})),{focused:a}}(d,i);function m(e){var t;return"string"!=typeof e&&(null==(t=e.options)?void 0:t.length)}const{id:b,modifiers:h,disabled:y,readonly:g,loading:S,icon:B,iconPosition:k,invalid:L,valid:$,floating:V,multiple:O}=e.toRefs(n),C=function(t){return e.computed((()=>String((null==t?void 0:t.value)||e.useId())))}(b),w=e.computed((()=>`${C.value}-hint`)),I=e.computed((()=>n.disabled||n.readonly)),G=e.computed((()=>I.value?-1:n.tabindex)),U=e.computed({get:()=>n.modelValue,set:e=>{Array.isArray(e)&&0===(e=e.filter((e=>void 0!==e))).length&&!n.unselectable&&d.value?d.value.value=String(n.modelValue):i("update:modelValue",e)}}),Q=e.computed((()=>Array.isArray(U.value)?U.value.length>0:void 0!==U.value&&null!==U.value)),W=e.computed((()=>!I.value&&n.unselectable)),X=l.useElementVisibility(d);e.watch(X,(e=>{e&&n.autofocus&&(f.value=!0)}));const{hasIconBefore:Y,hasIconAfter:Z}=N(B,k),ee=e.computed((()=>!0===n.invalid||!0!==n.valid&&void 0)),te=_("vv-select",h,e.computed((()=>({valid:$.value,invalid:L.value,loading:S.value,disabled:y.value,readonly:g.value,"icon-before":void 0!==Y.value,"icon-after":void 0!==Z.value,dirty:Q.value,focus:f.value&&!I.value,floating:V.value,multiple:O.value})))),{getOptionLabel:le,getOptionValue:oe,isOptionDisabled:ae,getOptionGrouped:ne}=function(t){const{options:l,labelKey:a,valueKey:n,disabledKey:i}=e.toRefs(t);return{options:l,getOptionLabel:e=>"string"==typeof e?e:"function"==typeof a.value?a.value(e):String(a.value?o.get(e,a.value):e),getOptionValue:e=>"string"==typeof e?e:"function"==typeof n.value?n.value(e):n.value?o.get(e,n.value):e,isOptionDisabled:e=>"string"!=typeof e&&("function"==typeof i.value?i.value(e):!!i.value&&o.get(e,i.value)),getOptionGrouped:e=>"string"==typeof e?[]:"object"==typeof e&&e&&"options"in e?e.options:[]}}(n);function ie(){Array.isArray(U.value)?U.value=[]:U.value=void 0,i("clear")}e.watch((()=>n.options),(e=>{if((null==e?void 0:e.length)&&n.autoselectFirst&&!Q.value){const t=oe(e[0]);U.value=n.multiple?[t]:t}}),{immediate:!0});const re=e.computed((()=>({name:n.name,tabindex:G.value,disabled:I.value,required:n.required,size:n.size,autocomplete:n.autocomplete,multiple:n.multiple,"aria-invalid":ee.value,"aria-describedby":c.value?w.value:void 0,"aria-errormessage":v.value?w.value:void 0}))),ue=e.computed((()=>({valid:n.valid,invalid:n.invalid,modelValue:n.modelValue})));return(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(te))},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(C)},e.toDisplayString(t.label),9,j)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",z,[t.$slots.before?(e.openBlock(),e.createElementBlock("div",D,[e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps(e.unref(ue))))])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",R,[e.unref(Y)?(e.openBlock(),e.createBlock(E,e.mergeProps({key:0},e.unref(Y),{class:"vv-select__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.withDirectives(e.createElementVNode("select",e.mergeProps({id:e.unref(C),ref_key:"selectEl",ref:d},e.unref(re),{"onUpdate:modelValue":l[0]||(l[0]=t=>e.isRef(U)?U.value=t:null)}),[t.placeholder?(e.openBlock(),e.createElementBlock("option",{key:0,value:void 0,disabled:!e.unref(W),hidden:!e.unref(W)},e.toDisplayString(t.placeholder),9,H)):e.createCommentVNode("v-if",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,((t,l)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[m(t)?(e.openBlock(),e.createElementBlock("optgroup",{key:`group-${l}`,disabled:e.unref(ae)(t),label:e.unref(le)(t)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ne)(t),((t,o)=>(e.openBlock(),e.createElementBlock("option",{key:`group-${l}-item-${o}`,disabled:e.unref(ae)(t),value:e.unref(oe)(t)},e.toDisplayString(e.unref(le)(t)),9,M)))),128))],8,K)):(e.openBlock(),e.createElementBlock("option",{key:l,disabled:e.unref(ae)(t),value:e.unref(oe)(t)},e.toDisplayString(e.unref(le)(t)),9,T))],64)))),256))],16,q),[[e.vModelSelect,e.unref(U)]]),e.unref(Z)?(e.openBlock(),e.createBlock(E,e.mergeProps({key:1},e.unref(Z),{class:"vv-select__icon vv-select__icon-after"}),null,16)):e.createCommentVNode("v-if",!0)]),e.unref(W)&&e.unref(u).showClearAction?(e.openBlock(),e.createBlock(e.unref(F),{key:1,"input-type":"select",label:t.labelClear,icon:t.iconClear,disabled:!e.unref(Q),onClear:ie},null,8,["label","icon","disabled"])):e.createCommentVNode("v-if",!0),t.$slots.after?(e.openBlock(),e.createElementBlock("div",J,[e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps(e.unref(ue))))])):e.createCommentVNode("v-if",!0)]),e.createVNode(e.unref(s),{id:e.unref(w),class:"vv-select__hint"},e.createSlots({_:2},[t.$slots.hint?{name:"hint",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"0"}:void 0,t.$slots.loading?{name:"loading",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"loading",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"1"}:void 0,t.$slots.valid?{name:"valid",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"valid",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"2"}:void 0,t.$slots.invalid?{name:"invalid",fn:e.withCtx((()=>[e.renderSlot(t.$slots,"invalid",e.normalizeProps(e.guardReactiveProps(e.unref(p))))])),key:"3"}:void 0]),1032,["id"])],2))}})}));
@@ -25,6 +25,7 @@ declare const _default: <T extends string | Option>(__VLS_props: NonNullable<Awa
25
25
  valueKey: string | Function;
26
26
  disabledKey: string | Function;
27
27
  autoselectFirst: boolean;
28
+ showClearAction: boolean;
28
29
  iconClear: string | import("../VvIcon").VvIconProps;
29
30
  labelClear: string;
30
31
  autocomplete: string;
@@ -48,6 +49,7 @@ declare const _default: <T extends string | Option>(__VLS_props: NonNullable<Awa
48
49
  readonly valueKey: string | Function;
49
50
  readonly disabledKey: string | Function;
50
51
  readonly autoselectFirst: boolean;
52
+ readonly showClearAction: boolean;
51
53
  readonly iconClear: string | import("../VvIcon").VvIconProps;
52
54
  readonly labelClear: string;
53
55
  readonly autocomplete: string;
@@ -66,7 +68,7 @@ declare const _default: <T extends string | Option>(__VLS_props: NonNullable<Awa
66
68
  readonly "onUpdate:modelValue"?: ((args_0: any) => any) | undefined;
67
69
  readonly onBlur?: ((args_0: import("@vueuse/core").MaybeElement) => any) | undefined;
68
70
  readonly onFocus?: ((args_0: import("@vueuse/core").MaybeElement) => any) | undefined;
69
- } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "floating" | "label" | "disabled" | "modelValue" | "modifiers" | "icon" | "iconPosition" | "required" | "loading" | "loadingLabel" | "unselectable" | "multiple" | "readonly" | "hintLabel" | "invalid" | "invalidLabel" | "valid" | "validLabel" | "tabindex" | "options" | "labelKey" | "valueKey" | "disabledKey" | "autoselectFirst" | "iconClear" | "labelClear" | "autocomplete" | "autofocus">, "size" | "name" | "id" | "onFocus" | "onBlur" | "onClear" | "onUpdate:modelValue" | "placeholder" | ("floating" | "label" | "disabled" | "modelValue" | "modifiers" | "icon" | "iconPosition" | "required" | "loading" | "loadingLabel" | "unselectable" | "multiple" | "readonly" | "hintLabel" | "invalid" | "invalidLabel" | "valid" | "validLabel" | "tabindex" | "options" | "labelKey" | "valueKey" | "disabledKey" | "autoselectFirst" | "iconClear" | "labelClear" | "autocomplete" | "autofocus")> & {} & Partial<{}>> & import("vue").PublicProps;
71
+ } & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, "floating" | "label" | "disabled" | "modelValue" | "modifiers" | "icon" | "iconPosition" | "required" | "loading" | "loadingLabel" | "unselectable" | "multiple" | "readonly" | "hintLabel" | "invalid" | "invalidLabel" | "valid" | "validLabel" | "tabindex" | "options" | "labelKey" | "valueKey" | "disabledKey" | "autoselectFirst" | "showClearAction" | "iconClear" | "labelClear" | "autocomplete" | "autofocus">, "size" | "name" | "id" | "onFocus" | "onBlur" | "onClear" | "onUpdate:modelValue" | "placeholder" | ("floating" | "label" | "disabled" | "modelValue" | "modifiers" | "icon" | "iconPosition" | "required" | "loading" | "loadingLabel" | "unselectable" | "multiple" | "readonly" | "hintLabel" | "invalid" | "invalidLabel" | "valid" | "validLabel" | "tabindex" | "options" | "labelKey" | "valueKey" | "disabledKey" | "autoselectFirst" | "showClearAction" | "iconClear" | "labelClear" | "autocomplete" | "autofocus")> & {} & Partial<{}>> & import("vue").PublicProps;
70
72
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
71
73
  attrs: any;
72
74
  slots: {
@@ -1,6 +1,5 @@
1
1
  import type { MaybeElement } from '@vueuse/core';
2
2
  import type { Option } from '../../types/generic';
3
- import type { VvIconProps } from '../VvIcon';
4
3
  export type VvSelectEmits = {
5
4
  'update:modelValue': [any];
6
5
  'focus': [MaybeElement];
@@ -45,17 +44,14 @@ export declare const VvSelectProps: {
45
44
  * Select placeholder
46
45
  */
47
46
  placeholder: StringConstructor;
48
- /**
49
- * VvIcon name for clear button
50
- * @see VvIcon
51
- */
47
+ showClearAction: {
48
+ type: BooleanConstructor;
49
+ default: boolean;
50
+ };
52
51
  iconClear: {
53
- type: PropType<string | VvIconProps>;
52
+ type: PropType<string | import("../VvIcon").VvIconProps>;
54
53
  default: "close";
55
54
  };
56
- /**
57
- * Label for clear button
58
- */
59
55
  labelClear: {
60
56
  type: StringConstructor;
61
57
  default: string;
@@ -73,7 +69,7 @@ export declare const VvSelectProps: {
73
69
  default: boolean;
74
70
  };
75
71
  icon: {
76
- type: PropType<string | VvIconProps>;
72
+ type: PropType<string | import("../VvIcon").VvIconProps>;
77
73
  default: undefined;
78
74
  };
79
75
  iconPosition: {
@@ -197,17 +193,14 @@ export declare function useVvSelectProps<T extends Option | string>(): {
197
193
  * Select placeholder
198
194
  */
199
195
  placeholder: StringConstructor;
200
- /**
201
- * VvIcon name for clear button
202
- * @see VvIcon
203
- */
196
+ showClearAction: {
197
+ type: BooleanConstructor;
198
+ default: boolean;
199
+ };
204
200
  iconClear: {
205
- type: PropType<string | VvIconProps>;
201
+ type: PropType<string | import("../VvIcon").VvIconProps>;
206
202
  default: "close";
207
203
  };
208
- /**
209
- * Label for clear button
210
- */
211
204
  labelClear: {
212
205
  type: StringConstructor;
213
206
  default: string;
@@ -225,7 +218,7 @@ export declare function useVvSelectProps<T extends Option | string>(): {
225
218
  default: boolean;
226
219
  };
227
220
  icon: {
228
- type: PropType<string | VvIconProps>;
221
+ type: PropType<string | import("../VvIcon").VvIconProps>;
229
222
  default: undefined;
230
223
  };
231
224
  iconPosition: {
@@ -333,6 +333,7 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
333
333
  setup(__props) {
334
334
  return (_ctx, _cache) => {
335
335
  return openBlock(), createElementBlock("li", _hoisted_1, [
336
+ renderSlot(_ctx.$slots, "before"),
336
337
  createVNode(
337
338
  _sfc_main$3,
338
339
  mergeProps(_ctx.$attrs, {
@@ -348,7 +349,8 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
348
349
  },
349
350
  16
350
351
  /* FULL_PROPS */
351
- )
352
+ ),
353
+ renderSlot(_ctx.$slots, "after")
352
354
  ]);
353
355
  };
354
356
  }
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvTab=t(e.vue)}(this,(function(e){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),o=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(o||{}),r=(e=>(e.before="before",e.after="after",e))(r||{}),n=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(n||{}),l=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(l||{});const a=Symbol.for("volver"),i=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),u={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},d={disabled:{type:Boolean,default:!1}},c={active:{type:Boolean,default:!1}},v={current:{type:Boolean,default:!1}},m={pressed:{type:Boolean,default:!1}},f={label:{type:[String,Number],default:void 0}},p={modifiers:{type:[String,Array],default:void 0}};r.before,o.bottom;const b={...d,...f,...m,...c,...v,...u,type:{type:String,default:n.button,validator:e=>Object.values(n).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:l.button}},y={items:{type:Array,default:()=>[]}};t.local;const g={...p,...y},k=b;const B=e.defineComponent({name:"VvAction",props:k,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:r}){const n=t,u=r,d=e.getCurrentInstance(),c=e.inject(a,void 0),v=e.ref(null);o({$el:v});const{reference:m,bus:f,aria:p,expanded:b}=e.inject(i,{});e.watch((()=>v.value),(e=>{m&&(m.value=e)}));const y=e.computed((()=>n.pressed||(null==b?void 0:b.value))),{role:g}=e.inject(s,{}),k=e.computed((()=>{switch(!0){case n.disabled:return l.button;case void 0!==n.to:return(null==c?void 0:c.nuxt)?e.resolveComponent(l.nuxtLink):l.routerLink;case void 0!==n.href:return l.a;default:return n.defaultTag}})),B=e.computed((()=>{const e={...null==p?void 0:p.value,ariaPressed:!!y.value||void 0,ariaLabel:n.ariaLabel,role:null==g?void 0:g.value};switch(k.value){case l.a:return{...e,href:n.href,target:n.target,rel:n.rel};case l.routerLink:case l.nuxtLink:return{...e,to:n.to,target:n.target};case l.button:return{...e,type:n.type,disabled:n.disabled};default:return e}}));function x(e){var t;n.disabled?e.preventDefault():(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onClick)?u("click",e):null==f||f.emit("click",e)}function S(e){var t;(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onMouseover)?u("mouseover",e):null==f||f.emit("mouseover",e)}function h(e){var t;(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onMouseleave)?u("mouseleave",e):null==f||f.emit("mouseleave",e)}return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(k)),e.mergeProps(e.unref(B),{ref_key:"element",ref:v,class:{active:t.active,pressed:e.unref(y),disabled:t.disabled,current:t.current},onClickPassive:x,onMouseoverPassive:S,onMouseleavePassive:h}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}}),x={class:"vv-nav__item",role:"presentation"},S=e.defineComponent({name:"VvNavItem",inheritAttrs:!1,setup:t=>(t,o)=>(e.openBlock(),e.createElementBlock("li",x,[e.createVNode(B,e.mergeProps(t.$attrs,{class:"vv-nav__item-label",role:"menuitem"}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16)]))});function h(t,o,r){return e.computed((()=>{const e={[t]:!0},r="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return r&&Array.isArray(r)&&r.forEach((o=>{o&&(e[`${t}--${o}`]=!0)})),e}))}const C=e.defineComponent({name:"VvNav",props:g,emits:["click"],setup(t,{emit:o}){const r=t,n=o,{modifiers:l}=e.toRefs(r);function a(e){var t;const o=e.target;if(null==o?void 0:o.dataset.index){const e=Number.parseInt(o.dataset.index),l=null==(t=r.items)?void 0:t[e];if(!l||(null==l?void 0:l.disabled))return;n("click",l)}}const i=h("vv-nav",l);return(t,o)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(e.unref(i))},[e.createElementVNode("ul",{class:"vv-nav__menu",role:"menu",onClick:e.withModifiers(a,["stop"])},[e.renderSlot(t.$slots,"default",{},(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(({on:o={},data:r,...n},l)=>(e.openBlock(),e.createBlock(S,e.mergeProps({key:l,"data-index":l,ref_for:!0},n,e.toHandlers(o)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item",e.mergeProps({ref_for:!0},{item:n,data:r,index:l}))])),_:2},1040,["data-index"])))),128))]))])],2))}}),_={...p,navModifiers:{type:[String,Array]},modelValue:{type:String,default:""},items:{type:Array,default:()=>[]}};return e.defineComponent({name:"VvTab",props:_,emits:["update:modelValue"],setup(t,{emit:o}){const r=t,n=o,{modifiers:l,items:a}=e.toRefs(r),i=e.computed((()=>a.value.reduce(((e,t)=>(t.tab&&e.push(t.tab),e)),[]))),s=e.ref(),u=e.computed({get:()=>{var e;return r.modelValue||s.value||(null==(e=i.value)?void 0:e[0])},set:e=>{s.value=e,n("update:modelValue",e)}}),d=e.computed((()=>{var e;return["tabs",...Array.isArray(r.navModifiers)?r.navModifiers:(null==(e=r.navModifiers)?void 0:e.split(" "))??[]]}));function c(e){e.tab&&(u.value=e.tab)}const v=e.computed((()=>r.items.map((e=>({current:e.tab===u.value,...e}))))),m=h("vv-tab",l);return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(m))},[e.createVNode(C,e.mergeProps({items:e.unref(v),modifiers:e.unref(d)},{onClick:c}),{item:e.withCtx((({item:o,data:r,index:n})=>[e.renderSlot(t.$slots,"nav-item",e.normalizeProps(e.guardReactiveProps({item:o,data:r,index:n})))])),_:3},16),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),((o,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:r},[o.tab?(e.openBlock(),e.createElementBlock("article",{key:0,class:e.normalizeClass([{target:e.unref(u)===o.tab},"vv-tab__panel"])},[e.renderSlot(t.$slots,`panel::${o.tab}`)],2)):e.createCommentVNode("v-if",!0)],64)))),128))],2))}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvTab=t(e.vue)}(this,(function(e){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),o=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(o||{}),r=(e=>(e.before="before",e.after="after",e))(r||{}),n=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(n||{}),l=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(l||{});const a=Symbol.for("volver"),i=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),u={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},d={disabled:{type:Boolean,default:!1}},c={active:{type:Boolean,default:!1}},v={current:{type:Boolean,default:!1}},m={pressed:{type:Boolean,default:!1}},f={label:{type:[String,Number],default:void 0}},p={modifiers:{type:[String,Array],default:void 0}};r.before,o.bottom;const b={...d,...f,...m,...c,...v,...u,type:{type:String,default:n.button,validator:e=>Object.values(n).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:l.button}},y={items:{type:Array,default:()=>[]}};t.local;const g={...p,...y},k=b;const S=e.defineComponent({name:"VvAction",props:k,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:r}){const n=t,u=r,d=e.getCurrentInstance(),c=e.inject(a,void 0),v=e.ref(null);o({$el:v});const{reference:m,bus:f,aria:p,expanded:b}=e.inject(i,{});e.watch((()=>v.value),(e=>{m&&(m.value=e)}));const y=e.computed((()=>n.pressed||(null==b?void 0:b.value))),{role:g}=e.inject(s,{}),k=e.computed((()=>{switch(!0){case n.disabled:return l.button;case void 0!==n.to:return(null==c?void 0:c.nuxt)?e.resolveComponent(l.nuxtLink):l.routerLink;case void 0!==n.href:return l.a;default:return n.defaultTag}})),S=e.computed((()=>{const e={...null==p?void 0:p.value,ariaPressed:!!y.value||void 0,ariaLabel:n.ariaLabel,role:null==g?void 0:g.value};switch(k.value){case l.a:return{...e,href:n.href,target:n.target,rel:n.rel};case l.routerLink:case l.nuxtLink:return{...e,to:n.to,target:n.target};case l.button:return{...e,type:n.type,disabled:n.disabled};default:return e}}));function B(e){var t;n.disabled?e.preventDefault():(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onClick)?u("click",e):null==f||f.emit("click",e)}function x(e){var t;(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onMouseover)?u("mouseover",e):null==f||f.emit("mouseover",e)}function h(e){var t;(null==(t=null==d?void 0:d.vnode.props)?void 0:t.onMouseleave)?u("mouseleave",e):null==f||f.emit("mouseleave",e)}return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(k)),e.mergeProps(e.unref(S),{ref_key:"element",ref:v,class:{active:t.active,pressed:e.unref(y),disabled:t.disabled,current:t.current},onClickPassive:B,onMouseoverPassive:x,onMouseleavePassive:h}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}}),B={class:"vv-nav__item",role:"presentation"},x=e.defineComponent({name:"VvNavItem",inheritAttrs:!1,setup:t=>(t,o)=>(e.openBlock(),e.createElementBlock("li",B,[e.renderSlot(t.$slots,"before"),e.createVNode(S,e.mergeProps(t.$attrs,{class:"vv-nav__item-label",role:"menuitem"}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default")])),_:3},16),e.renderSlot(t.$slots,"after")]))});function h(t,o,r){return e.computed((()=>{const e={[t]:!0},r="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return r&&Array.isArray(r)&&r.forEach((o=>{o&&(e[`${t}--${o}`]=!0)})),e}))}const C=e.defineComponent({name:"VvNav",props:g,emits:["click"],setup(t,{emit:o}){const r=t,n=o,{modifiers:l}=e.toRefs(r);function a(e){var t;const o=e.target;if(null==o?void 0:o.dataset.index){const e=Number.parseInt(o.dataset.index),l=null==(t=r.items)?void 0:t[e];if(!l||(null==l?void 0:l.disabled))return;n("click",l)}}const i=h("vv-nav",l);return(t,o)=>(e.openBlock(),e.createElementBlock("nav",{class:e.normalizeClass(e.unref(i))},[e.createElementVNode("ul",{class:"vv-nav__menu",role:"menu",onClick:e.withModifiers(a,["stop"])},[e.renderSlot(t.$slots,"default",{},(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(({on:o={},data:r,...n},l)=>(e.openBlock(),e.createBlock(x,e.mergeProps({key:l,"data-index":l,ref_for:!0},n,e.toHandlers(o)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"item",e.mergeProps({ref_for:!0},{item:n,data:r,index:l}))])),_:2},1040,["data-index"])))),128))]))])],2))}}),_={...p,navModifiers:{type:[String,Array]},modelValue:{type:String,default:""},items:{type:Array,default:()=>[]}};return e.defineComponent({name:"VvTab",props:_,emits:["update:modelValue"],setup(t,{emit:o}){const r=t,n=o,{modifiers:l,items:a}=e.toRefs(r),i=e.computed((()=>a.value.reduce(((e,t)=>(t.tab&&e.push(t.tab),e)),[]))),s=e.ref(),u=e.computed({get:()=>{var e;return r.modelValue||s.value||(null==(e=i.value)?void 0:e[0])},set:e=>{s.value=e,n("update:modelValue",e)}}),d=e.computed((()=>{var e;return["tabs",...Array.isArray(r.navModifiers)?r.navModifiers:(null==(e=r.navModifiers)?void 0:e.split(" "))??[]]}));function c(e){e.tab&&(u.value=e.tab)}const v=e.computed((()=>r.items.map((e=>({current:e.tab===u.value,...e}))))),m=h("vv-tab",l);return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(m))},[e.createVNode(C,e.mergeProps({items:e.unref(v),modifiers:e.unref(d)},{onClick:c}),{item:e.withCtx((({item:o,data:r,index:n})=>[e.renderSlot(t.$slots,"nav-item",e.normalizeProps(e.guardReactiveProps({item:o,data:r,index:n})))])),_:3},16),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(a),((o,r)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:r},[o.tab?(e.openBlock(),e.createElementBlock("article",{key:0,class:e.normalizeClass([{target:e.unref(u)===o.tab},"vv-tab__panel"])},[e.renderSlot(t.$slots,`panel::${o.tab}`)],2)):e.createCommentVNode("v-if",!0)],64)))),128))],2))}})}));
@@ -1,8 +1,15 @@
1
- import { unref, computed, isRef, defineComponent, h, useId, Fragment, provide, ref, toRefs, useAttrs, onMounted, watch, nextTick, createElementBlock, openBlock, createVNode, withCtx, renderSlot, normalizeProps, guardReactiveProps, Transition, mergeProps, toHandlers, withDirectives, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, vShow, inject, createBlock, createTextVNode, toDisplayString, mergeDefaults, useSlots, vModelText, createSlots, renderList, withModifiers } from "vue";
1
+ import { unref, computed, isRef, defineComponent, h, useId, Fragment, provide, ref, toRefs, useAttrs, onMounted, watch, createElementBlock, openBlock, createVNode, withCtx, renderSlot, normalizeProps, guardReactiveProps, Transition, mergeProps, toHandlers, withDirectives, createElementVNode, normalizeClass, normalizeStyle, createCommentVNode, vShow, nextTick, inject, createBlock, createTextVNode, toDisplayString, mergeDefaults, useSlots, vModelText, createSlots, renderList, withModifiers } from "vue";
2
2
  import { autoPlacement, flip, shift, size, offset, arrow, useFloating, autoUpdate } from "@floating-ui/vue";
3
3
  import { useMutationObserver, useVModel, onClickOutside, useFocusWithin, useElementHover, onKeyStroke, useFocus, useStorage, useElementVisibility } from "@vueuse/core";
4
4
  import mitt from "mitt";
5
5
  import { iconLoaded, Icon, addIcon } from "@iconify/vue";
6
+ const ACTION_ICONS = {
7
+ remove: "trash"
8
+ };
9
+ const VvIconPropsDefaults = {
10
+ prefix: "normal"
11
+ /* normal */
12
+ };
6
13
  var StorageType = /* @__PURE__ */ ((StorageType2) => {
7
14
  StorageType2["local"] = "local";
8
15
  StorageType2["session"] = "session";
@@ -428,13 +435,6 @@ const StorageProps = {
428
435
  },
429
436
  storageKey: String
430
437
  };
431
- const ACTION_ICONS = {
432
- remove: "trash"
433
- };
434
- const VvIconPropsDefaults = {
435
- prefix: "normal"
436
- /* normal */
437
- };
438
438
  const WRAP = {
439
439
  soft: "soft"
440
440
  };
@@ -949,27 +949,6 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
949
949
  function init(el) {
950
950
  referenceEl.value = el;
951
951
  }
952
- __expose({
953
- toggle,
954
- show,
955
- hide,
956
- init,
957
- customPosition: hasCustomPosition
958
- });
959
- watch(expanded, (newValue) => {
960
- if (newValue && props.autofocusFirst) {
961
- nextTick(() => {
962
- const focusableElements = getKeyboardFocusableElements(
963
- floatingEl.value
964
- );
965
- if (focusableElements.length > 0) {
966
- focusableElements[0].focus({
967
- preventScroll: true
968
- });
969
- }
970
- });
971
- }
972
- });
973
952
  onClickOutside(
974
953
  floatingEl,
975
954
  () => {
@@ -1016,6 +995,30 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1016
995
  (el) => !el.hasAttribute("disabled") && !el.getAttribute("aria-hidden")
1017
996
  );
1018
997
  }
998
+ function focusFirst() {
999
+ nextTick(() => {
1000
+ const focusableElements = getKeyboardFocusableElements(
1001
+ floatingEl.value
1002
+ );
1003
+ if (focusableElements.length > 0) {
1004
+ focusableElements[0].focus({
1005
+ preventScroll: true
1006
+ });
1007
+ }
1008
+ });
1009
+ }
1010
+ function focusFirstListElement() {
1011
+ nextTick(() => {
1012
+ const focusableElements = getKeyboardFocusableElements(
1013
+ listEl.value
1014
+ );
1015
+ if (focusableElements.length > 0) {
1016
+ focusableElements[0].focus({
1017
+ preventScroll: true
1018
+ });
1019
+ }
1020
+ });
1021
+ }
1019
1022
  function focusNext() {
1020
1023
  nextTick(() => {
1021
1024
  if (focused.value) {
@@ -1064,6 +1067,22 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1064
1067
  }
1065
1068
  });
1066
1069
  }
1070
+ watch(expanded, (newValue) => {
1071
+ if (newValue && props.autofocusFirst) {
1072
+ focusFirst();
1073
+ }
1074
+ });
1075
+ __expose({
1076
+ toggle,
1077
+ show,
1078
+ hide,
1079
+ init,
1080
+ focusFirst,
1081
+ focusFirstListElement,
1082
+ focusNext,
1083
+ focusPrev,
1084
+ customPosition: hasCustomPosition
1085
+ });
1067
1086
  const hovered = useElementHover(floatingEl);
1068
1087
  const { itemRole } = useDropdownProvideItem({
1069
1088
  role,
@@ -1 +1 @@
1
- !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,l,a){"use strict";var n=(e=>(e.local="local",e.session="session",e))(n||{}),r=(e=>(e.absolute="absolute",e.fixed="fixed",e))(r||{}),i=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(i||{}),u=(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))(u||{}),d=(e=>(e.before="before",e.after="after",e))(d||{}),s=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(s||{}),c=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(c||{}),v=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(v||{}),f=(e=>(e.listbox="listbox",e.menu="menu",e))(f||{}),p=(e=>(e.option="option",e.presentation="presentation",e))(p||{});const m=Symbol.for("volver"),g=Symbol.for("dropdownTrigger"),b=Symbol.for("dropdownItem"),h=Symbol.for("dropdownAction"),y={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},S={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},x={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},w={disabled:{type:Boolean,default:!1}},k={required:{type:Boolean,default:!1}},L={selected:{type:Boolean,default:!1}},B={label:{type:[String,Number],default:void 0}},$={readonly:{type:Boolean,default:!1}},V={modifiers:{type:[String,Array],default:void 0}},O={hintLabel:{type:String,default:""}},E={count:{type:[Boolean,String],default:!1,validator:e=>[!0,!1,"limit","countdown"].includes(e)}},P={debounce:{type:[Number,String],default:void 0}},C={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:d.before,validation:e=>Object.values(d).includes(e)}},N={tabindex:{type:[String,Number],default:0}},_={floating:{type:Boolean,default:!1}},z={unselectable:{type:Boolean,default:!0}},R={id:[String,Number]},I={placement:{type:String,default:i.bottom,validator:e=>Object.values(i).includes(e)||Object.values(u).includes(e)},strategy:{type:String,default:void 0,validator:e=>Object.values(r).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={...{...R,name:{type:String,required:!0}},...{autofocus:{type:Boolean,default:!1}},...{autocomplete:{type:String,default:"off"}},...N,...w,...$,...y,...S,...O,...x,...V,...E,...P,...C,..._,...B,minlength:{type:[String,Number],default:void 0},maxlength:{type:[String,Number],default:void 0},placeholder:{type:String,default:void 0},...k};s.button,c.button;const F={prefix:"normal"},A={...j,...{storageType:{type:String,default:n.local,validator:e=>Object.values(n).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 D(e){return Array.isArray(e)?e.filter((e=>"string"==typeof e)).join(" "):e}const T={...R,...I,...V,modelValue:{type:Boolean,default:void 0},reference:{type:Object,default:null},role:{type:String,default:f.menu,validator:e=>Object.values(f).includes(e)}},q={focusOnHover:{type:Boolean,default:!1}},M={...w,...L,...z,...V,deselectHintLabel:{type:String},selectHintLabel:{type:String},selectedHintLabel:{type:String},focusOnHover:{type:Boolean,default:!1}};function W(t){return e.computed((()=>String((null==t?void 0:t.value)||e.useId())))}function K(t,o,l){return e.computed((()=>{const a={[t]:!0},n="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(a[`${t}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((o=>{a[`${t}--${o}`]=e.unref(l.value[o])})),a}))}const J=["id","tabindex","role","aria-labelledby"],U=e.defineComponent({name:"VvDropdown",inheritAttrs:!1,props:T,emits:["update:modelValue","beforeEnter","afterLeave","beforeExpand","beforeCollapse","afterExpand","afterCollapse","before-enter","after-leave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(a,{expose:n,emit:u}){const d=a,s=u,{id:c}=e.toRefs(d),v=W(c),m=e.useAttrs(),h=e.ref("auto"),y=e.ref("auto"),S=e.ref(),x=e.ref(),w=e.ref(),k=e.ref(),L=e.computed({get:()=>d.reference??S.value,set:e=>{S.value=e}}),B=e.ref(!1);e.onMounted((()=>{o.useMutationObserver(x.value,(()=>{var e;B.value="true"===(null==(e=window.getComputedStyle(x.value).getPropertyValue("--dropdown-custom-position"))?void 0:e.trim())}),{attributeFilter:["style"],window:window})}));const $=e.computed((()=>{const e=[];if(d.autoPlacement?"boolean"==typeof d.autoPlacement?e.push(t.autoPlacement()):e.push(t.autoPlacement(d.autoPlacement)):d.flip&&("boolean"==typeof d.flip?e.push(t.flip({fallbackStrategy:"initialPlacement"})):e.push(t.flip(d.flip))),d.shift&&("boolean"==typeof d.shift?e.push(t.shift()):e.push(t.shift(d.shift))),d.size){const o=({availableWidth:e,availableHeight:t})=>{h.value=`${e}px`,y.value=`${t}px`};"boolean"==typeof d.size?e.push(t.size({apply:o})):e.push(t.size({...d.size,apply:o}))}return d.offset&&(e.push(t.offset(Number(d.offset))),["string","number"].includes(typeof d.offset)?e.push(t.offset(Number(d.offset))):e.push(t.offset(d.offset))),d.arrow&&e.push(t.arrow({element:w})),e})),{x:V,y:O,middlewareData:E,placement:P,strategy:C}=t.useFloating(L,x,{whileElementsMounted:(...e)=>t.autoUpdate(...e,{animationFrame:d.strategy===r.fixed}),placement:e.computed((()=>d.placement)),strategy:e.computed((()=>d.strategy)),middleware:$}),N=e.computed((()=>{var e;if(B.value)return;const t=d.triggerWidth&&L.value?`${null==(e=L.value)?void 0:e.offsetWidth}px`:void 0;return{position:C.value,top:`${O.value??0}px`,left:`${V.value??0}px`,maxWidth:t?void 0:h.value,maxHeight:y.value,width:t}})),_=e.computed((()=>P.value.split("-")[0])),z=e.computed((()=>{var e,t,o,l,a;if(B.value)return;const n={[i.top]:i.bottom,[i.right]:i.left,[i.bottom]:i.top,[i.left]:i.right}[_.value];return{left:void 0!==(null==(e=E.value.arrow)?void 0:e.x)?`${null==(t=E.value.arrow)?void 0:t.x}px`:void 0,top:void 0!==(null==(o=E.value.arrow)?void 0:o.y)?`${null==(l=E.value.arrow)?void 0:l.y}px`:void 0,[n]:-((null==(a=w.value)?void 0:a.offsetWidth)??0)/2+"px"}})),R=o.useVModel(d,"modelValue",s),I=e.ref(!1),j=e.computed({get:()=>R.value??I.value,set:e=>{void 0!==R.value?R.value=e:I.value=e}});function F(){j.value=!0}function A(){j.value=!1}function H(){j.value=!j.value}function D(e){L.value=e}n({toggle:H,show:F,hide:A,init:D,customPosition:B}),e.watch(j,(t=>{t&&d.autofocusFirst&&e.nextTick((()=>{const e=Z(x.value);e.length>0&&e[0].focus({preventScroll:!0})}))})),o.onClickOutside(x,(()=>{!d.keepOpen&&j.value&&(j.value=!1)}),{ignore:[L]});const T=e.computed((()=>{var e,t;return(null==(t=null==(e=L.value)?void 0:e.getAttribute)?void 0:t.call(e,"id"))??void 0})),q=e.computed((()=>({"aria-controls":v.value,"aria-haspopup":!0,"aria-expanded":j.value}))),{component:M,bus:U}=function({reference:t,id:o,expanded:a,aria:n}){const r=l(),i=e.defineComponent({name:"VvDropdownTriggerProvider",setup(){e.provide(g,{reference:t,id:o,expanded:a,aria:n,bus:r})},render(){var t,o;return e.h(e.Fragment,{},null==(o=(t=this.$slots).default)?void 0:o.call(t))}});return{bus:r,component:i}}({reference:L,id:v,expanded:j,aria:q});U.on("click",H);const{role:G,modifiers:Q}=e.toRefs(d),X=K("vv-dropdown",Q,e.computed((()=>({arrow:d.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"))):[]}const ee=o.useElementHover(x),{itemRole:te}=function({role:t,...o}){const l=e.computed((()=>t.value===f.listbox?p.option:p.presentation));return e.provide(b,{role:l,...o}),{itemRole:l}}({role:G,expanded:j,focused:Y,hovered:ee});o.onKeyStroke("Escape",(e=>{j.value&&(e.preventDefault(),A())})),o.onKeyStroke("ArrowDown",(t=>{j.value&&Y.value&&(t.preventDefault(),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})}})))})),o.onKeyStroke("ArrowUp",(t=>{j.value&&Y.value&&(t.preventDefault(),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})}})))})),o.onKeyStroke([" ","Enter"],(e=>{const t=e.target;j.value&&Y.value&&t&&(null==t||t.click())}));const oe={"before-enter":()=>{s(j.value?"beforeExpand":"beforeCollapse"),s("beforeEnter")},"after-leave":()=>{s(j.value?"afterExpand":"afterCollapse"),s("afterLeave")},enter:()=>{s("enter")},"after-enter":()=>{s("afterEnter")},"enter-cancelled":()=>{s("enterCancelled")},"before-leave":()=>{s("beforeLeave")},leave:()=>{s("leave")},"leave-cancelled":()=>{s("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:D,show:F,hide:A,toggle:H,expanded:e.unref(j),aria:e.unref(q)})))])),_:3}),e.createVNode(e.Transition,e.mergeProps({name:t.transitionName},e.toHandlers(oe),{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))},[d.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(j)}))),e.createElementVNode("div",e.mergeProps(e.unref(m),{id:e.unref(v),ref_key:"listEl",ref:k,tabindex:e.unref(j)?void 0:-1,role:e.unref(G),"aria-labelledby":e.unref(T),class:"vv-dropdown__list"}),[e.renderSlot(t.$slots,"items",e.normalizeProps(e.guardReactiveProps({role:e.unref(te)})))],16,J),e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps({expanded:e.unref(j)})))],6),[[e.vShow,e.unref(j)]])])),_:3},16,["name"])],64))}});const G=e.defineComponent({name:"VvDropdownItem",props:q,setup(t){const l=t,{role:a,expanded:n}=e.inject(b,{}),r=e.ref(null);!function({expanded:t}){e.provide(h,{role:e.ref(v.menuitem),expanded:t})}({expanded:n});const i=o.useElementHover(r),{focused:u}=o.useFocus(r),{focused:d}=o.useFocusWithin(r);return e.watch(i,(e=>{e&&l.focusOnHover&&(u.value=!0)})),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(a)},{ref_key:"element",ref:r,class:["vv-dropdown__item",{"focus-visible":e.unref(u)||e.unref(d)}]}),[e.renderSlot(t.$slots,"default")],16))}}),Q=["title"],X=e.defineComponent({name:"VvDropdownOption",props:M,setup(t){const o=t,{modifiers:l}=e.toRefs(o),a=K("vv-dropdown-option",l,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(a)),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(m,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:{}},F),setup(t){const o=t,l=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),d=e.computed((()=>o.provider||(null==r?void 0:r.iconsProvider))),s=e.computed((()=>{const e=o.name??"",t=`@${d.value}:${o.prefix}:${e}`;if(a.iconLoaded(t))return t;const l=null==r?void 0:r.iconsCollections.find((t=>{const o=`@${d.value}:${t.prefix}:${e}`;return a.iconLoaded(o)}));return l?`@${d.value}:${l.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),l=(null==t?void 0:t.innerHTML.trim())||"";t&&l&&a.addIcon(`@${d.value}:${o.prefix}:${o.name}`,{body:l,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return r&&o.src&&!a.iconLoaded(`@${d.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: ${null==e?void 0:e.message}`)}))),o.svg&&c(o.svg),(t,o)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(a.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(l),color:t.color,icon:e.unref(s)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function ee(t,o){const l=e.computed((()=>"string"==typeof(null==t?void 0:t.value)?{name:null==t?void 0:t.value}:null==t?void 0:t.value)),a=e.computed((()=>(null==o?void 0:o.value)===d.before?l.value:void 0)),n=e.computed((()=>(null==o?void 0:o.value)===d.after?l.value:void 0)),r=e.computed((()=>(null==o?void 0:o.value)===i.left?l.value:void 0)),u=e.computed((()=>(null==o?void 0:o.value)===i.right?l.value:void 0)),s=e.computed((()=>(null==o?void 0:o.value)===i.top?l.value:void 0)),c=e.computed((()=>(null==o?void 0:o.value)===i.bottom?l.value:void 0));return{hasIcon:l,hasIconLeft:r,hasIconRight:u,hasIconTop:s,hasIconBottom:c,hasIconBefore:a,hasIconAfter:n}}const te=["for"],oe={key:0,class:"vv-textarea__input-before"},le={class:"vv-textarea__inner"},ae=["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:l}){const a=t,r=l,i=e.useSlots(),u=Y(),d=function(t,o,l){const a=Y(),n=e.computed((()=>{var e;if(a&&(null==(e=a.defaults.value)?void 0:e[t]))return a.defaults.value[t]}));return e.computed((()=>{if(void 0===n.value)return l;const e=n.value,t=o,a=l;return Object.keys(t).reduce(((o,l)=>{const n=a[l];if(o[l]=n,l in e){if(Array.isArray(t[l])){const a=t[l];a.length&&a[0]===n&&(o[l]=e[l])}if("function"==typeof t[l]&&(0,t[l])()===n&&(o[l]=e[l]),"object"==typeof t[l]){let a=t[l].default;"function"==typeof a&&(a=a()),"object"==typeof a?JSON.stringify(a)===JSON.stringify(n)&&(o[l]=e[l]):a===n&&(o[l]=e[l])}}return o}),{})}))}("VvTextarea",A,a),s=e.ref(),c=e.ref(),v=e.ref(),{id:f,icon:p,iconPosition:m,iconRemoveSuggestion:g,labelRemoveSuggestion:b,label:h,modelValue:y,count:S,valid:x,invalid:w,loading:k,modifiers:L,debounce:B,minlength:$,maxlength:V,storageType:O}=e.toRefs(a),E=W(f),P=e.computed((()=>`${E.value}-hint`)),C=e.computed((()=>a.floating&&H(a.placeholder)?" ":a.placeholder)),N=function(t,o,l=0,{getter:a=e=>e,setter:n=e=>e}={}){let r;return"string"==typeof l&&(l=Number.parseInt(l)),e.computed({get:()=>a(null==t?void 0:t.value),set:e=>{r&&clearTimeout(r),r=setTimeout((()=>{o("update:modelValue",n(e))}),l)}})}(y,r,null==B?void 0:B.value),{hasIconBefore:_,hasIconAfter:z}=ee(p,m),{hasIcon:R}=ee(g),{focused:I}=function(t,l){const{focused:a}=o.useFocus(t);return e.watch(a,(o=>{l(o?"focus":"blur",e.unref(t))})),{focused:a}}(s,r),j=e.computed((()=>I.value&&!a.disabled&&!a.readonly));e.watch(j,(e=>{var t,o;if(e&&d.value.selectOnFocus&&s.value&&s.value.select(),e&&(null==(t=de.value)?void 0:t.size))null==(o=v.value)||o.show();else if(J.value&&de.value){const e=a.maxSuggestions;de.value.size>=e&&!de.value.has(N.value)&&(de.value=new Set([...de.value].slice(de.value.size-e+1))),de.value.add(N.value)}}));const F=o.useElementVisibility(s);e.watch(F,(e=>{e&&a.autofocus&&(I.value=!0)}));const{formatted:T}=function(t,o){const l=e.computed((()=>(e.unref(t)??"").length)),a=e.computed((()=>void 0!==(null==o?void 0:o.lowerLimit)&&l.value<(null==o?void 0:o.lowerLimit)?l.value-o.lowerLimit:void 0!==(null==o?void 0:o.upperLimit)&&l.value<(null==o?void 0:o.upperLimit)?o.upperLimit-l.value:0)),n=e.computed((()=>{if(!1===(null==o?void 0:o.mode))return"";if("limit"===(null==o?void 0:o.mode)&&(null==o?void 0:o.upperLimit))return`${l.value} / ${o.lowerLimit?`${o.lowerLimit}-`:""}${o.upperLimit}`;if("countdown"===(null==o?void 0:o.mode)){if(0===a.value)return;return a}return l.value}));return{length:l,gap:a,formatted:n}}(N,{mode:null==S?void 0:S.value,upperLimit:Number(null==V?void 0:V.value),lowerLimit:Number(null==$?void 0:$.value)}),q=e.computed((()=>!a.disabled&&!a.readonly)),M=e.computed((()=>q.value?a.tabindex:-1)),J=e.computed((()=>!H(y))),G=e.computed((()=>!0===a.invalid||!0!==a.valid&&void 0)),Q=e.computed((()=>a.storageKey??((null==u?void 0:u.experimentalFeatures.forceInputSuggestions)?a.name:void 0))),de=function(t,l=n.local,a){const r=e.ref();let i;return a&&(r.value=a),e.onMounted((()=>{t&&e.watch(t,((t,a)=>{const u=e.unref(l)===n.session?sessionStorage:localStorage;if(a&&a!==t&&u.removeItem(a),t)return i=o.useStorage(t,(null==i?void 0:i.value)??r.value,u),void(i.value&&(r.value=i.value));i=void 0}),{immediate:!0}),e.isRef(l)&&e.watch(l,((e,l)=>{if(null==t?void 0:t.value){if(e){const l=e===n.session?sessionStorage:localStorage;i=o.useStorage(t.value,(null==i?void 0:i.value)??r.value,l)}l&&l!==e&&(l===n.session?sessionStorage:localStorage).removeItem(t.value)}}))})),e.watch(r,(e=>{i&&(i.value=e)}),{deep:!0,immediate:!0}),r}(Q,O,new Set),se=e.computed((()=>de.value?[...de.value].filter((e=>H(N.value)||`${e}`.toLowerCase().includes(`${N.value}`.toLowerCase())&&e!==N.value)).reverse():[])),ce=e.computed((()=>(null==Q?void 0:Q.value)&&de.value&&de.value.size>0));const{HintSlot:ve,hasHintLabelOrSlot:fe,hasInvalidLabelOrSlot:pe,hintSlotScope:me}=function(t,o){const l=e.computed((()=>e.isRef(t)?t.value:t)),a=e.computed((()=>D(l.value.invalidLabel))),n=e.computed((()=>D(l.value.validLabel))),r=e.computed((()=>l.value.loadingLabel)),i=e.computed((()=>l.value.hintLabel)),u=e.computed((()=>Boolean(l.value.loading&&(o.loading||r.value)))),d=e.computed((()=>!u.value&&Boolean(l.value.invalid&&(o.invalid||a.value)))),s=e.computed((()=>!u.value&&!d.value&&Boolean(l.value.valid&&(o.valid||n.value)))),c=e.computed((()=>!u.value&&!d.value&&!s.value&&Boolean(o.hint||i.value))),v=e.computed((()=>d.value||s.value||u.value||c.value)),f=e.computed((()=>({modelValue:l.value.modelValue,valid:l.value.valid,invalid:l.value.invalid,loading:l.value.loading}))),p=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:v,invalidLabel:a,validLabel:n,loadingLabel:r,hintLabel:i,hasInvalidLabelOrSlot:d,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){var t,o,l,a,n,r,i,u;if(this.isVisible){let d;return this.hasInvalidLabelOrSlot&&(d="alert"),this.hasValidLabelOrSlot&&(d="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:d},(null==(o=(t=this.$slots).loading)?void 0:o.call(t))??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:d},(null==(a=(l=this.$slots).invalid)?void 0:a.call(l))??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:d},(null==(r=(n=this.$slots).valid)?void 0:r.call(n))??this.validLabel):e.h(this.tag,{role:d},(null==(u=(i=this.$slots).hint)?void 0:u.call(i))??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:d,hasHintLabelOrSlot:c,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hintSlotScope:f,HintSlot:p}}(d,i),ge=K("vv-textarea",L,e.computed((()=>({valid:x.value,invalid:w.value,loading:k.value,disabled:a.disabled,readonly:a.readonly,required:a.required,"icon-before":void 0!==_.value,"icon-after":void 0!==z.value,floating:a.floating&&!H(a.label),dirty:J.value,focus:I.value,resizable:a.resizable})))),be=e.computed((()=>({name:a.name,placeholder:C.value,tabindex:M.value,disabled:a.disabled,readonly:a.readonly,required:a.required,autocomplete:a.autocomplete,minlength:a.minlength,maxlength:a.maxlength,cols:a.cols,rows:a.rows,wrap:a.wrap,spellcheck:a.spellcheck,"aria-invalid":G.value,"aria-describedby":fe.value?P.value:void 0,"aria-errormessage":pe.value?P.value:void 0}))),he=e.computed((()=>({valid:a.valid,invalid:a.invalid,modelValue:a.modelValue,hintLabel:a.hintLabel,maxlength:a.maxlength,minlength:a.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(h)?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(E),class:"vv-textarea__label"},e.toDisplayString(e.unref(h)),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(he))))])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",le,[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(E),ref_key:"textareaEl",ref:s,"onUpdate:modelValue":o[0]||(o[0]=t=>e.isRef(N)?N.value=t:null)},e.unref(be),{onKeyup:o[1]||(o[1]=e=>r("keyup",e))}),null,16,ae),[[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(he))))])):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(he))),(()=>[e.createTextVNode(e.toDisplayString(e.unref(T)),1)]))])):e.createCommentVNode("v-if",!0)],512),e.createVNode(e.unref(ve),{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:v,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(se),(o=>(e.openBlock(),e.createBlock(X,{key:o,onClick:e.withModifiers((e=>{return t=o,N.value=t,null==(l=v.value)||l.hide(),void r("suggestion:selected",t);var t,l}),["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(de)&&e.unref(R)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",tabindex:"-1",class:"cursor-pointer",title:e.unref(b),onClick:e.withModifiers((e=>{return t=o,null==(l=de.value)||l.delete(t),void r("suggestion:removed",t);var t,l}),["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))}})}));
1
+ !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,l,a){"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||{}),d=(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))(d||{}),s=(e=>(e.before="before",e.after="after",e))(s||{}),c=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(c||{}),v=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(v||{}),f=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(f||{}),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:s.before,validation:e=>Object.values(s).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(d).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,v.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((null==t?void 0:t.value)||e.useId())))}function K(t,o,l){return e.computed((()=>{const a={[t]:!0},n="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(a[`${t}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((o=>{a[`${t}--${o}`]=e.unref(l.value[o])})),a}))}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(a,{expose:n,emit:r}){const d=a,s=r,{id:c}=e.toRefs(d),v=W(c),f=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:()=>d.reference??S.value,set:e=>{S.value=e}}),B=e.ref(!1);e.onMounted((()=>{o.useMutationObserver(x.value,(()=>{var e;B.value="true"===(null==(e=window.getComputedStyle(x.value).getPropertyValue("--dropdown-custom-position"))?void 0:e.trim())}),{attributeFilter:["style"],window:window})}));const $=e.computed((()=>{const e=[];if(d.autoPlacement?"boolean"==typeof d.autoPlacement?e.push(t.autoPlacement()):e.push(t.autoPlacement(d.autoPlacement)):d.flip&&("boolean"==typeof d.flip?e.push(t.flip({fallbackStrategy:"initialPlacement"})):e.push(t.flip(d.flip))),d.shift&&("boolean"==typeof d.shift?e.push(t.shift()):e.push(t.shift(d.shift))),d.size){const o=({availableWidth:e,availableHeight:t})=>{g.value=`${e}px`,y.value=`${t}px`};"boolean"==typeof d.size?e.push(t.size({apply:o})):e.push(t.size({...d.size,apply:o}))}return d.offset&&(e.push(t.offset(Number(d.offset))),["string","number"].includes(typeof d.offset)?e.push(t.offset(Number(d.offset))):e.push(t.offset(d.offset))),d.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:d.strategy===i.fixed}),placement:e.computed((()=>d.placement)),strategy:e.computed((()=>d.strategy)),middleware:$}),N=e.computed((()=>{var e;if(B.value)return;const t=d.triggerWidth&&L.value?`${null==(e=L.value)?void 0:e.offsetWidth}px`:void 0;return{position:C.value,top:`${E.value??0}px`,left:`${V.value??0}px`,maxWidth:t?void 0:g.value,maxHeight:y.value,width:t}})),_=e.computed((()=>P.value.split("-")[0])),z=e.computed((()=>{var e,t,o,l,a;if(B.value)return;const n={[u.top]:u.bottom,[u.right]:u.left,[u.bottom]:u.top,[u.left]:u.right}[_.value];return{left:void 0!==(null==(e=O.value.arrow)?void 0:e.x)?`${null==(t=O.value.arrow)?void 0:t.x}px`:void 0,top:void 0!==(null==(o=O.value.arrow)?void 0:o.y)?`${null==(l=O.value.arrow)?void 0:l.y}px`:void 0,[n]:-((null==(a=w.value)?void 0:a.offsetWidth)??0)/2+"px"}})),R=o.useVModel(d,"modelValue",s),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,(()=>{!d.keepOpen&&I.value&&(I.value=!1)}),{ignore:[L]});const D=e.computed((()=>{var e,t;return(null==(t=null==(e=L.value)?void 0:e.getAttribute)?void 0:t.call(e,"id"))??void 0})),q=e.computed((()=>({"aria-controls":v.value,"aria-haspopup":!0,"aria-expanded":I.value}))),{component:M,bus:U}=function({reference:t,id:o,expanded:a,aria:n}){const r=l(),i=e.defineComponent({name:"VvDropdownTriggerProvider",setup(){e.provide(h,{reference:t,id:o,expanded:a,aria:n,bus:r})},render(){var t,o;return e.h(e.Fragment,{},null==(o=(t=this.$slots).default)?void 0:o.call(t))}});return{bus:r,component:i}}({reference:L,id:v,expanded:I,aria:q});U.on("click",H);const{role:G,modifiers:Q}=e.toRefs(d),X=K("vv-dropdown",Q,e.computed((()=>({arrow:d.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&&d.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 le=o.useElementHover(x),{itemRole:ae}=function({role:t,...o}){const l=e.computed((()=>t.value===p.listbox?m.option:m.presentation));return e.provide(b,{role:l,...o}),{itemRole:l}}({role:G,expanded:I,focused:Y,hovered:le});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&&(null==t||t.click())}));const ne={"before-enter":()=>{s(I.value?"beforeExpand":"beforeCollapse"),s("beforeEnter")},"after-leave":()=>{s(I.value?"afterExpand":"afterCollapse"),s("afterLeave")},enter:()=>{s("enter")},"after-enter":()=>{s("afterEnter")},"enter-cancelled":()=>{s("enterCancelled")},"before-leave":()=>{s("beforeLeave")},leave:()=>{s("leave")},"leave-cancelled":()=>{s("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))},[d.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(f),{id:e.unref(v),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(ae)})))],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 l=t,{role:a,expanded:n}=e.inject(b,{}),r=e.ref(null);!function({expanded:t}){e.provide(y,{role:e.ref(f.menuitem),expanded:t})}({expanded:n});const i=o.useElementHover(r),{focused:u}=o.useFocus(r),{focused:d}=o.useFocusWithin(r);return e.watch(i,(e=>{e&&l.focusOnHover&&(u.value=!0)})),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(a)},{ref_key:"element",ref:r,class:["vv-dropdown__item",{"focus-visible":e.unref(u)||e.unref(d)}]}),[e.renderSlot(t.$slots,"default")],16))}}),Q=["title"],X=e.defineComponent({name:"VvDropdownOption",props:M,setup(t){const o=t,{modifiers:l}=e.toRefs(o),a=K("vv-dropdown-option",l,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(a)),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,l=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),d=e.computed((()=>o.provider||(null==r?void 0:r.iconsProvider))),s=e.computed((()=>{const e=o.name??"",t=`@${d.value}:${o.prefix}:${e}`;if(a.iconLoaded(t))return t;const l=null==r?void 0:r.iconsCollections.find((t=>{const o=`@${d.value}:${t.prefix}:${e}`;return a.iconLoaded(o)}));return l?`@${d.value}:${l.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),l=(null==t?void 0:t.innerHTML.trim())||"";t&&l&&a.addIcon(`@${d.value}:${o.prefix}:${o.name}`,{body:l,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return r&&o.src&&!a.iconLoaded(`@${d.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: ${null==e?void 0:e.message}`)}))),o.svg&&c(o.svg),(t,o)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(a.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(l),color:t.color,icon:e.unref(s)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}});function ee(t,o){const l=e.computed((()=>"string"==typeof(null==t?void 0:t.value)?{name:null==t?void 0:t.value}:null==t?void 0:t.value)),a=e.computed((()=>(null==o?void 0:o.value)===s.before?l.value:void 0)),n=e.computed((()=>(null==o?void 0:o.value)===s.after?l.value:void 0)),r=e.computed((()=>(null==o?void 0:o.value)===u.left?l.value:void 0)),i=e.computed((()=>(null==o?void 0:o.value)===u.right?l.value:void 0)),d=e.computed((()=>(null==o?void 0:o.value)===u.top?l.value:void 0)),c=e.computed((()=>(null==o?void 0:o.value)===u.bottom?l.value:void 0));return{hasIcon:l,hasIconLeft:r,hasIconRight:i,hasIconTop:d,hasIconBottom:c,hasIconBefore:a,hasIconAfter:n}}const te=["for"],oe={key:0,class:"vv-textarea__input-before"},le={class:"vv-textarea__inner"},ae=["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:l}){const a=t,n=l,i=e.useSlots(),u=Y(),d=function(t,o,l){const a=Y(),n=e.computed((()=>{var e;if(a&&(null==(e=a.defaults.value)?void 0:e[t]))return a.defaults.value[t]}));return e.computed((()=>{if(void 0===n.value)return l;const e=n.value,t=o,a=l;return Object.keys(t).reduce(((o,l)=>{const n=a[l];if(o[l]=n,l in e){if(Array.isArray(t[l])){const a=t[l];a.length&&a[0]===n&&(o[l]=e[l])}if("function"==typeof t[l]&&(0,t[l])()===n&&(o[l]=e[l]),"object"==typeof t[l]){let a=t[l].default;"function"==typeof a&&(a=a()),"object"==typeof a?JSON.stringify(a)===JSON.stringify(n)&&(o[l]=e[l]):a===n&&(o[l]=e[l])}}return o}),{})}))}("VvTextarea",A,a),s=e.ref(),c=e.ref(),v=e.ref(),{id:f,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(a),O=W(f),P=e.computed((()=>`${O.value}-hint`)),C=e.computed((()=>a.floating&&H(a.placeholder)?" ":a.placeholder)),N=function(t,o,l=0,{getter:a=e=>e,setter:n=e=>e}={}){let r;return"string"==typeof l&&(l=Number.parseInt(l)),e.computed({get:()=>a(null==t?void 0:t.value),set:e=>{r&&clearTimeout(r),r=setTimeout((()=>{o("update:modelValue",n(e))}),l)}})}(y,n,null==B?void 0:B.value),{hasIconBefore:_,hasIconAfter:z}=ee(p,m),{hasIcon:R}=ee(g),{focused:F}=function(t,l){const{focused:a}=o.useFocus(t);return e.watch(a,(o=>{l(o?"focus":"blur",e.unref(t))})),{focused:a}}(s,n),I=e.computed((()=>F.value&&!a.disabled&&!a.readonly));e.watch(I,(e=>{var t,o;if(e&&d.value.selectOnFocus&&s.value&&s.value.select(),e&&(null==(t=de.value)?void 0:t.size))null==(o=v.value)||o.show();else if(J.value&&de.value){const e=a.maxSuggestions;de.value.size>=e&&!de.value.has(N.value)&&(de.value=new Set([...de.value].slice(de.value.size-e+1))),de.value.add(N.value)}}));const j=o.useElementVisibility(s);e.watch(j,(e=>{e&&a.autofocus&&(F.value=!0)}));const{formatted:D}=function(t,o){const l=e.computed((()=>(e.unref(t)??"").length)),a=e.computed((()=>void 0!==(null==o?void 0:o.lowerLimit)&&l.value<(null==o?void 0:o.lowerLimit)?l.value-o.lowerLimit:void 0!==(null==o?void 0:o.upperLimit)&&l.value<(null==o?void 0:o.upperLimit)?o.upperLimit-l.value:0)),n=e.computed((()=>{if(!1===(null==o?void 0:o.mode))return"";if("limit"===(null==o?void 0:o.mode)&&(null==o?void 0:o.upperLimit))return`${l.value} / ${o.lowerLimit?`${o.lowerLimit}-`:""}${o.upperLimit}`;if("countdown"===(null==o?void 0:o.mode)){if(0===a.value)return;return a}return l.value}));return{length:l,gap:a,formatted:n}}(N,{mode:null==S?void 0:S.value,upperLimit:Number(null==V?void 0:V.value),lowerLimit:Number(null==$?void 0:$.value)}),q=e.computed((()=>!a.disabled&&!a.readonly)),M=e.computed((()=>q.value?a.tabindex:-1)),J=e.computed((()=>!H(y))),G=e.computed((()=>!0===a.invalid||!0!==a.valid&&void 0)),Q=e.computed((()=>a.storageKey??((null==u?void 0:u.experimentalFeatures.forceInputSuggestions)?a.name:void 0))),de=function(t,l=r.local,a){const n=e.ref();let i;return a&&(n.value=a),e.onMounted((()=>{t&&e.watch(t,((t,a)=>{const u=e.unref(l)===r.session?sessionStorage:localStorage;if(a&&a!==t&&u.removeItem(a),t)return i=o.useStorage(t,(null==i?void 0:i.value)??n.value,u),void(i.value&&(n.value=i.value));i=void 0}),{immediate:!0}),e.isRef(l)&&e.watch(l,((e,l)=>{if(null==t?void 0:t.value){if(e){const l=e===r.session?sessionStorage:localStorage;i=o.useStorage(t.value,(null==i?void 0:i.value)??n.value,l)}l&&l!==e&&(l===r.session?sessionStorage:localStorage).removeItem(t.value)}}))})),e.watch(n,(e=>{i&&(i.value=e)}),{deep:!0,immediate:!0}),n}(Q,E,new Set),se=e.computed((()=>de.value?[...de.value].filter((e=>H(N.value)||`${e}`.toLowerCase().includes(`${N.value}`.toLowerCase())&&e!==N.value)).reverse():[])),ce=e.computed((()=>(null==Q?void 0:Q.value)&&de.value&&de.value.size>0));const{HintSlot:ve,hasHintLabelOrSlot:fe,hasInvalidLabelOrSlot:pe,hintSlotScope:me}=function(t,o){const l=e.computed((()=>e.isRef(t)?t.value:t)),a=e.computed((()=>T(l.value.invalidLabel))),n=e.computed((()=>T(l.value.validLabel))),r=e.computed((()=>l.value.loadingLabel)),i=e.computed((()=>l.value.hintLabel)),u=e.computed((()=>Boolean(l.value.loading&&(o.loading||r.value)))),d=e.computed((()=>!u.value&&Boolean(l.value.invalid&&(o.invalid||a.value)))),s=e.computed((()=>!u.value&&!d.value&&Boolean(l.value.valid&&(o.valid||n.value)))),c=e.computed((()=>!u.value&&!d.value&&!s.value&&Boolean(o.hint||i.value))),v=e.computed((()=>d.value||s.value||u.value||c.value)),f=e.computed((()=>({modelValue:l.value.modelValue,valid:l.value.valid,invalid:l.value.invalid,loading:l.value.loading}))),p=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:v,invalidLabel:a,validLabel:n,loadingLabel:r,hintLabel:i,hasInvalidLabelOrSlot:d,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:c}),render(){var t,o,l,a,n,r,i,u;if(this.isVisible){let d;return this.hasInvalidLabelOrSlot&&(d="alert"),this.hasValidLabelOrSlot&&(d="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:d},(null==(o=(t=this.$slots).loading)?void 0:o.call(t))??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:d},(null==(a=(l=this.$slots).invalid)?void 0:a.call(l))??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:d},(null==(r=(n=this.$slots).valid)?void 0:r.call(n))??this.validLabel):e.h(this.tag,{role:d},(null==(u=(i=this.$slots).hint)?void 0:u.call(i))??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:d,hasHintLabelOrSlot:c,hasValidLabelOrSlot:s,hasLoadingLabelOrSlot:u,hintSlotScope:f,HintSlot:p}}(d,i),ge=K("vv-textarea",L,e.computed((()=>({valid:x.value,invalid:w.value,loading:k.value,disabled:a.disabled,readonly:a.readonly,required:a.required,"icon-before":void 0!==_.value,"icon-after":void 0!==z.value,floating:a.floating&&!H(a.label),dirty:J.value,focus:F.value,resizable:a.resizable})))),he=e.computed((()=>({name:a.name,placeholder:C.value,tabindex:M.value,disabled:a.disabled,readonly:a.readonly,required:a.required,autocomplete:a.autocomplete,minlength:a.minlength,maxlength:a.maxlength,cols:a.cols,rows:a.rows,wrap:a.wrap,spellcheck:a.spellcheck,"aria-invalid":G.value,"aria-describedby":fe.value?P.value:void 0,"aria-errormessage":pe.value?P.value:void 0}))),be=e.computed((()=>({valid:a.valid,invalid:a.invalid,modelValue:a.modelValue,hintLabel:a.hintLabel,maxlength:a.maxlength,minlength:a.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",le,[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:s,"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,ae),[[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(ve),{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:v,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(se),(o=>(e.openBlock(),e.createBlock(X,{key:o,onClick:e.withModifiers((e=>{return t=o,N.value=t,null==(l=v.value)||l.hide(),void n("suggestion:selected",t);var t,l}),["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(de)&&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,null==(l=de.value)||l.delete(t),void n("suggestion:removed",t);var t,l}),["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))}})}));