@volverjs/ui-vue 0.0.10-beta.70 → 0.0.10-beta.72

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 (30) 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 +10 -10
  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/VvSelect/VvSelect.es.js +34 -24
  19. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  20. package/dist/components/VvSelect/VvSelect.vue.d.ts +3 -1
  21. package/dist/components/VvSelect/index.d.ts +12 -19
  22. package/dist/components/VvTextarea/VvTextarea.es.js +48 -29
  23. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  24. package/dist/components/index.es.js +151 -81
  25. package/dist/components/index.umd.js +1 -1
  26. package/dist/icons.es.js +3 -3
  27. package/dist/icons.umd.js +1 -1
  28. package/dist/props/index.d.ts +24 -0
  29. package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
  30. package/package.json +5 -5
@@ -39,6 +39,10 @@ const INJECTION_KEY_VOLVER = Symbol.for("volver");
39
39
  const INJECTION_KEY_ALERT_GROUP = Symbol.for(
40
40
  "alertGroup"
41
41
  );
42
+ const VvIconPropsDefaults = {
43
+ prefix: "normal"
44
+ /* normal */
45
+ };
42
46
  const IconProps = {
43
47
  /**
44
48
  * VvIcon name or props
@@ -300,10 +304,6 @@ function useVvAlert(props, emit) {
300
304
  }))
301
305
  };
302
306
  }
303
- const VvIconPropsDefaults = {
304
- prefix: "normal"
305
- /* normal */
306
- };
307
307
  function useVolver() {
308
308
  return inject(INJECTION_KEY_VOLVER, void 0);
309
309
  }
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvAlert=o(e.vue,e.vue$1)}(this,(function(e,o){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),l=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(l||{}),r=(e=>(e.before="before",e.after="after",e))(r||{}),n=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(n||{}),i=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(i||{}),a=(e=>(e.alert="alert",e.alertdialog="alertdialog",e))(a||{});const s=Symbol.for("volver"),u=Symbol.for("alertGroup"),c={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:r.before,validation:e=>Object.values(r).includes(e)}},d={id:[String,Number]};function v(o,t,l){return e.computed((()=>{const r={[o]:!0},n="string"==typeof(null==t?void 0:t.value)?t.value.split(" "):null==t?void 0:t.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(r[`${o}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((t=>{r[`${o}--${t}`]=e.unref(l.value[t])})),r}))}l.bottom,n.button,i.button,t.local;const f={...d,...c,modifiers:{type:[String,Array],default:void 0},dismissable:{type:Boolean,default:!1},autoClose:{type:Number,default:0},closeLabel:{type:String,default:"Close"},title:{type:String,default:void 0},content:{type:String,default:void 0},footer:{type:String,default:void 0},role:{type:String,default:a.alert}};function p(o,t){const{bus:n}=e.inject(u,{}),i=(a=e.computed((()=>o.id)),e.computed((()=>String((null==a?void 0:a.value)||e.useId()))));var a;const s=e.computed((()=>`${i.value}-title`));let c;const d=()=>{c&&clearTimeout(c),t("close",i.value),null==n||n.emit("close",i.value)};e.watch((()=>o.autoClose),(e=>{e>0?c=setTimeout(d,e):c&&clearTimeout(c)}),{immediate:!0});const f=e.ref(!1),p=()=>{f.value=!0,c&&clearTimeout(c)},m=()=>{f.value=!1,o.autoClose>0&&(c=setTimeout(d,o.autoClose))},{hasIcon:h}=function(o,t){const n=e.computed((()=>"string"==typeof(null==o?void 0:o.value)?{name:null==o?void 0:o.value}:null==o?void 0:o.value)),i=e.computed((()=>(null==t?void 0:t.value)===r.before?n.value:void 0)),a=e.computed((()=>(null==t?void 0:t.value)===r.after?n.value:void 0)),s=e.computed((()=>(null==t?void 0:t.value)===l.left?n.value:void 0)),u=e.computed((()=>(null==t?void 0:t.value)===l.right?n.value:void 0)),c=e.computed((()=>(null==t?void 0:t.value)===l.top?n.value:void 0)),d=e.computed((()=>(null==t?void 0:t.value)===l.bottom?n.value:void 0));return{hasIcon:n,hasIconLeft:s,hasIconRight:u,hasIconTop:c,hasIconBottom:d,hasIconBefore:i,hasIconAfter:a}}(e.computed((()=>o.icon))),b=v("vv-alert",e.computed((()=>o.modifiers)),e.computed((()=>({dismissable:o.autoClose>0||o.dismissable,"auto-close":o.autoClose>0,hover:f.value})))),y=e.computed((()=>({"--alert-duration":`${o.autoClose}ms`})));return{close:d,hasIcon:h,hasTitleId:s,hasProps:e.computed((()=>({onMouseover:p,onMouseleave:m,class:b.value,style:y.value,role:o.role,"aria-labelledby":s.value})))}}const m={prefix:"normal"};const h=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:{}},m),setup(t){const l=t,r=e.computed((()=>"string"==typeof l.rotate?Number.parseFloat(l.rotate):l.rotate)),n=e.ref(!0),i=e.inject(s,void 0),{modifiers:a}=e.toRefs(l),u=v("vv-icon",a),c=e.computed((()=>l.provider||(null==i?void 0:i.iconsProvider))),d=e.computed((()=>{const e=l.name??"",t=`@${c.value}:${l.prefix}:${e}`;if(o.iconLoaded(t))return t;const r=null==i?void 0:i.iconsCollections.find((t=>{const l=`@${c.value}:${t.prefix}:${e}`;return o.iconLoaded(l)}));return r?`@${c.value}:${r.prefix}:${e}`:e}));function f(e){const t=function(e){let o;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");o=(new e).window}return(o?new o.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),r=(null==t?void 0:t.innerHTML.trim())||"";t&&r&&o.addIcon(`@${c.value}:${l.prefix}:${l.name}`,{body:r,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&l.src&&!o.iconLoaded(`@${c.value}:${l.prefix}:${l.name}`)&&(n.value=!1,i.fetchIcon(l.src).then((e=>{e&&(f(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),l.svg&&f(l.svg),(t,l)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(o.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(r),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}}),b={key:0,class:"vv-alert__header"},y=["id"],g=["aria-label"],$={key:1,class:"vv-alert__content"},k={key:2,class:"vv-alert__footer"};return e.defineComponent({name:"VvAlert",props:f,emits:["close"],setup(o,{expose:t,emit:l}){const r=o,n=l,{hasProps:i,hasTitleId:a,hasIcon:s,close:u}=p(r,n);return t({close:u}),(o,t)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(i))),[o.$slots.header||o.$slots.title||o.$slots.close||o.$slots["title::before"]||o.$slots["title::after"]||o.title||e.unref(s)||o.dismissable||o.autoClose?(e.openBlock(),e.createElementBlock("div",b,[e.unref(s)?(e.openBlock(),e.createBlock(h,e.mergeProps({key:0},e.unref(s),{class:"vv-alert__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"header",{},(()=>[e.renderSlot(o.$slots,"title::before"),o.$slots.title||o.title?(e.openBlock(),e.createElementBlock("strong",{key:0,id:e.unref(a),class:"vv-alert__title"},[e.renderSlot(o.$slots,"title",{},(()=>[e.createTextVNode(e.toDisplayString(o.title),1)]))],8,y)):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"title::after")])),e.renderSlot(o.$slots,"close",e.normalizeProps(e.guardReactiveProps({close:e.unref(u)})),(()=>[o.dismissable||o.autoClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"vv-alert__close",type:"button","aria-label":o.closeLabel,onClick:t[0]||(t[0]=e.withModifiers(((...o)=>e.unref(u)&&e.unref(u)(...o)),["stop"]))},t[1]||(t[1]=[e.createElementVNode("div",{class:"vv-alert__close-mask"},null,-1)]),8,g)):e.createCommentVNode("v-if",!0)]))])):e.createCommentVNode("v-if",!0),o.$slots.default||o.content?(e.openBlock(),e.createElementBlock("div",$,[e.renderSlot(o.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(o.content),1)]))])):e.createCommentVNode("v-if",!0),o.$slots.footer||o.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"footer",{},(()=>[e.createTextVNode(e.toDisplayString(o.footer),1)]))])):e.createCommentVNode("v-if",!0)],16))}})}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvAlert=o(e.vue,e.vue$1)}(this,(function(e,o){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),l=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(l||{}),r=(e=>(e.before="before",e.after="after",e))(r||{}),n=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(n||{}),i=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(i||{}),a=(e=>(e.alert="alert",e.alertdialog="alertdialog",e))(a||{});const s=Symbol.for("volver"),u=Symbol.for("alertGroup"),c={prefix:"normal"},d={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:r.before,validation:e=>Object.values(r).includes(e)}},v={id:[String,Number]};function f(o,t,l){return e.computed((()=>{const r={[o]:!0},n="string"==typeof(null==t?void 0:t.value)?t.value.split(" "):null==t?void 0:t.value;return n&&Array.isArray(n)&&n.forEach((e=>{e&&(r[`${o}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((t=>{r[`${o}--${t}`]=e.unref(l.value[t])})),r}))}l.bottom,n.button,i.button,t.local;const p={...v,...d,modifiers:{type:[String,Array],default:void 0},dismissable:{type:Boolean,default:!1},autoClose:{type:Number,default:0},closeLabel:{type:String,default:"Close"},title:{type:String,default:void 0},content:{type:String,default:void 0},footer:{type:String,default:void 0},role:{type:String,default:a.alert}};function m(o,t){const{bus:n}=e.inject(u,{}),i=(a=e.computed((()=>o.id)),e.computed((()=>String((null==a?void 0:a.value)||e.useId()))));var a;const s=e.computed((()=>`${i.value}-title`));let c;const d=()=>{c&&clearTimeout(c),t("close",i.value),null==n||n.emit("close",i.value)};e.watch((()=>o.autoClose),(e=>{e>0?c=setTimeout(d,e):c&&clearTimeout(c)}),{immediate:!0});const v=e.ref(!1),p=()=>{v.value=!0,c&&clearTimeout(c)},m=()=>{v.value=!1,o.autoClose>0&&(c=setTimeout(d,o.autoClose))},{hasIcon:h}=function(o,t){const n=e.computed((()=>"string"==typeof(null==o?void 0:o.value)?{name:null==o?void 0:o.value}:null==o?void 0:o.value)),i=e.computed((()=>(null==t?void 0:t.value)===r.before?n.value:void 0)),a=e.computed((()=>(null==t?void 0:t.value)===r.after?n.value:void 0)),s=e.computed((()=>(null==t?void 0:t.value)===l.left?n.value:void 0)),u=e.computed((()=>(null==t?void 0:t.value)===l.right?n.value:void 0)),c=e.computed((()=>(null==t?void 0:t.value)===l.top?n.value:void 0)),d=e.computed((()=>(null==t?void 0:t.value)===l.bottom?n.value:void 0));return{hasIcon:n,hasIconLeft:s,hasIconRight:u,hasIconTop:c,hasIconBottom:d,hasIconBefore:i,hasIconAfter:a}}(e.computed((()=>o.icon))),b=f("vv-alert",e.computed((()=>o.modifiers)),e.computed((()=>({dismissable:o.autoClose>0||o.dismissable,"auto-close":o.autoClose>0,hover:v.value})))),y=e.computed((()=>({"--alert-duration":`${o.autoClose}ms`})));return{close:d,hasIcon:h,hasTitleId:s,hasProps:e.computed((()=>({onMouseover:p,onMouseleave:m,class:b.value,style:y.value,role:o.role,"aria-labelledby":s.value})))}}const h=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(t){const l=t,r=e.computed((()=>"string"==typeof l.rotate?Number.parseFloat(l.rotate):l.rotate)),n=e.ref(!0),i=e.inject(s,void 0),{modifiers:a}=e.toRefs(l),u=f("vv-icon",a),c=e.computed((()=>l.provider||(null==i?void 0:i.iconsProvider))),d=e.computed((()=>{const e=l.name??"",t=`@${c.value}:${l.prefix}:${e}`;if(o.iconLoaded(t))return t;const r=null==i?void 0:i.iconsCollections.find((t=>{const l=`@${c.value}:${t.prefix}:${e}`;return o.iconLoaded(l)}));return r?`@${c.value}:${r.prefix}:${e}`:e}));function v(e){const t=function(e){let o;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");o=(new e).window}return(o?new o.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),r=(null==t?void 0:t.innerHTML.trim())||"";t&&r&&o.addIcon(`@${c.value}:${l.prefix}:${l.name}`,{body:r,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&l.src&&!o.iconLoaded(`@${c.value}:${l.prefix}:${l.name}`)&&(n.value=!1,i.fetchIcon(l.src).then((e=>{e&&(v(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),l.svg&&v(l.svg),(t,l)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(o.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(r),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}}),b={key:0,class:"vv-alert__header"},y=["id"],g=["aria-label"],$={key:1,class:"vv-alert__content"},k={key:2,class:"vv-alert__footer"};return e.defineComponent({name:"VvAlert",props:p,emits:["close"],setup(o,{expose:t,emit:l}){const r=o,n=l,{hasProps:i,hasTitleId:a,hasIcon:s,close:u}=m(r,n);return t({close:u}),(o,t)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(i))),[o.$slots.header||o.$slots.title||o.$slots.close||o.$slots["title::before"]||o.$slots["title::after"]||o.title||e.unref(s)||o.dismissable||o.autoClose?(e.openBlock(),e.createElementBlock("div",b,[e.unref(s)?(e.openBlock(),e.createBlock(h,e.mergeProps({key:0},e.unref(s),{class:"vv-alert__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"header",{},(()=>[e.renderSlot(o.$slots,"title::before"),o.$slots.title||o.title?(e.openBlock(),e.createElementBlock("strong",{key:0,id:e.unref(a),class:"vv-alert__title"},[e.renderSlot(o.$slots,"title",{},(()=>[e.createTextVNode(e.toDisplayString(o.title),1)]))],8,y)):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"title::after")])),e.renderSlot(o.$slots,"close",e.normalizeProps(e.guardReactiveProps({close:e.unref(u)})),(()=>[o.dismissable||o.autoClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"vv-alert__close",type:"button","aria-label":o.closeLabel,onClick:t[0]||(t[0]=e.withModifiers(((...o)=>e.unref(u)&&e.unref(u)(...o)),["stop"]))},t[1]||(t[1]=[e.createElementVNode("div",{class:"vv-alert__close-mask"},null,-1)]),8,g)):e.createCommentVNode("v-if",!0)]))])):e.createCommentVNode("v-if",!0),o.$slots.default||o.content?(e.openBlock(),e.createElementBlock("div",$,[e.renderSlot(o.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(o.content),1)]))])):e.createCommentVNode("v-if",!0),o.$slots.footer||o.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(o.$slots,"footer",{},(()=>[e.createTextVNode(e.toDisplayString(o.footer),1)]))])):e.createCommentVNode("v-if",!0)],16))}})}));
@@ -1,6 +1,10 @@
1
1
  import { provide, computed, unref, inject, useId, watch, ref, defineComponent, mergeDefaults, toRefs, createBlock, createCommentVNode, openBlock, mergeProps, createElementBlock, normalizeProps, guardReactiveProps, renderSlot, createTextVNode, toDisplayString, withModifiers, createElementVNode, createVNode, TransitionGroup, toHandlers, withCtx, Fragment, renderList } from "vue";
2
2
  import mitt from "mitt";
3
3
  import { iconLoaded, Icon, addIcon } from "@iconify/vue";
4
+ const VvIconPropsDefaults = {
5
+ prefix: "normal"
6
+ /* normal */
7
+ };
4
8
  var StorageType = /* @__PURE__ */ ((StorageType2) => {
5
9
  StorageType2["local"] = "local";
6
10
  StorageType2["session"] = "session";
@@ -422,10 +426,6 @@ function useVvAlert(props, emit) {
422
426
  }))
423
427
  };
424
428
  }
425
- const VvIconPropsDefaults = {
426
- prefix: "normal"
427
- /* normal */
428
- };
429
429
  function useVolver() {
430
430
  return inject(INJECTION_KEY_VOLVER, void 0);
431
431
  }
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("mitt"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","mitt","@iconify/vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvAlertGroup=t(e.vue,e.mitt,e.vue$1)}(this,(function(e,t,o){"use strict";var l=(e=>(e.local="local",e.session="session",e))(l||{}),r=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(r||{}),n=(e=>(e.before="before",e.after="after",e))(n||{}),a=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(a||{}),i=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(i||{}),s=(e=>(e.alert="alert",e.alertdialog="alertdialog",e))(s||{});const u=Symbol.for("volver"),c=Symbol.for("alertGroup"),d={modifiers:{type:[String,Array],default:void 0}},v={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:n.before,validation:e=>Object.values(n).includes(e)}},f={id:[String,Number]};function p(t,o,l){return e.computed((()=>{const r={[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&&(r[`${t}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((o=>{r[`${t}--${o}`]=e.unref(l.value[o])})),r}))}r.bottom,a.button,i.button,l.local;const m={...d,name:{type:String,required:!0},items:{type:Array,default:()=>[]},stack:{type:Boolean,default:!1},reverse:{type:Boolean,default:!1},inline:{type:String,default:void 0},block:{type:String,default:void 0},position:{type:String,default:void 0},transition:{type:String,default:void 0}};function b(o,l){const r=function({name:o}){const l=t();return e.provide(c,{name:o,bus:l}),l}({name:e.computed((()=>o.name))});(o.block&&!o.inline||!o.block&&o.inline)&&console.warn("[VvAlertGroup]: block and inline props must coexist at the same time.");const n=e.computed((()=>{const t=[p("vv-alert-group",e.computed((()=>o.modifiers)),e.computed((()=>({stack:o.stack,reverse:o.reverse,absolute:"absolute"===o.position,fixed:"fixed"===o.position})))).value];return o.inline&&o.block&&t.push(`vv-alert-group--${o.block}-${o.inline}`),t})),a=e.computed((()=>o.transition?o.transition:o.position?"start"===o.inline?"vv-alert--fade-inline-start":"end"===o.inline?"vv-alert--fade-inline-end":"top"===o.block?"vv-alert--fade-block-top":"bottom"===o.block?"vv-alert--fade-block-bottom":"vv-alert--fade":"vv-alert--fade"));return r.on("close",(e=>{l("close",e)})),{hasTransition:a,hasProps:e.computed((()=>({class:n.value})))}}const h={...f,...v,modifiers:{type:[String,Array],default:void 0},dismissable:{type:Boolean,default:!1},autoClose:{type:Number,default:0},closeLabel:{type:String,default:"Close"},title:{type:String,default:void 0},content:{type:String,default:void 0},footer:{type:String,default:void 0},role:{type:String,default:s.alert}};function g(t,o){const{bus:l}=e.inject(c,{}),a=(i=e.computed((()=>t.id)),e.computed((()=>String((null==i?void 0:i.value)||e.useId()))));var i;const s=e.computed((()=>`${a.value}-title`));let u;const d=()=>{u&&clearTimeout(u),o("close",a.value),null==l||l.emit("close",a.value)};e.watch((()=>t.autoClose),(e=>{e>0?u=setTimeout(d,e):u&&clearTimeout(u)}),{immediate:!0});const v=e.ref(!1),f=()=>{v.value=!0,u&&clearTimeout(u)},m=()=>{v.value=!1,t.autoClose>0&&(u=setTimeout(d,t.autoClose))},{hasIcon:b}=function(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)===n.before?l.value:void 0)),i=e.computed((()=>(null==o?void 0:o.value)===n.after?l.value:void 0)),s=e.computed((()=>(null==o?void 0:o.value)===r.left?l.value:void 0)),u=e.computed((()=>(null==o?void 0:o.value)===r.right?l.value:void 0)),c=e.computed((()=>(null==o?void 0:o.value)===r.top?l.value:void 0)),d=e.computed((()=>(null==o?void 0:o.value)===r.bottom?l.value:void 0));return{hasIcon:l,hasIconLeft:s,hasIconRight:u,hasIconTop:c,hasIconBottom:d,hasIconBefore:a,hasIconAfter:i}}(e.computed((()=>t.icon))),h=p("vv-alert",e.computed((()=>t.modifiers)),e.computed((()=>({dismissable:t.autoClose>0||t.dismissable,"auto-close":t.autoClose>0,hover:v.value})))),g=e.computed((()=>({"--alert-duration":`${t.autoClose}ms`})));return{close:d,hasIcon:b,hasTitleId:s,hasProps:e.computed((()=>({onMouseover:f,onMouseleave:m,class:h.value,style:g.value,role:t.role,"aria-labelledby":s.value})))}}const y={prefix:"normal"};const k=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:{}},y),setup(t){const l=t,r=e.computed((()=>"string"==typeof l.rotate?Number.parseFloat(l.rotate):l.rotate)),n=e.ref(!0),a=e.inject(u,void 0),{modifiers:i}=e.toRefs(l),s=p("vv-icon",i),c=e.computed((()=>l.provider||(null==a?void 0:a.iconsProvider))),d=e.computed((()=>{const e=l.name??"",t=`@${c.value}:${l.prefix}:${e}`;if(o.iconLoaded(t))return t;const r=null==a?void 0:a.iconsCollections.find((t=>{const l=`@${c.value}:${t.prefix}:${e}`;return o.iconLoaded(l)}));return r?`@${c.value}:${r.prefix}:${e}`:e}));function v(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),r=(null==t?void 0:t.innerHTML.trim())||"";t&&r&&o.addIcon(`@${c.value}:${l.prefix}:${l.name}`,{body:r,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return a&&l.src&&!o.iconLoaded(`@${c.value}:${l.prefix}:${l.name}`)&&(n.value=!1,a.fetchIcon(l.src).then((e=>{e&&(v(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),l.svg&&v(l.svg),(t,l)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(o.Icon),e.mergeProps({key:0,class:e.unref(s)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:e.unref(r),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}}),$={key:0,class:"vv-alert__header"},S=["id"],B=["aria-label"],C={key:1,class:"vv-alert__content"},w={key:2,class:"vv-alert__footer"},x=e.defineComponent({name:"VvAlert",props:h,emits:["close"],setup(t,{expose:o,emit:l}){const r=t,n=l,{hasProps:a,hasTitleId:i,hasIcon:s,close:u}=g(r,n);return o({close:u}),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(a))),[t.$slots.header||t.$slots.title||t.$slots.close||t.$slots["title::before"]||t.$slots["title::after"]||t.title||e.unref(s)||t.dismissable||t.autoClose?(e.openBlock(),e.createElementBlock("div",$,[e.unref(s)?(e.openBlock(),e.createBlock(k,e.mergeProps({key:0},e.unref(s),{class:"vv-alert__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"header",{},(()=>[e.renderSlot(t.$slots,"title::before"),t.$slots.title||t.title?(e.openBlock(),e.createElementBlock("strong",{key:0,id:e.unref(i),class:"vv-alert__title"},[e.renderSlot(t.$slots,"title",{},(()=>[e.createTextVNode(e.toDisplayString(t.title),1)]))],8,S)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"title::after")])),e.renderSlot(t.$slots,"close",e.normalizeProps(e.guardReactiveProps({close:e.unref(u)})),(()=>[t.dismissable||t.autoClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"vv-alert__close",type:"button","aria-label":t.closeLabel,onClick:o[0]||(o[0]=e.withModifiers(((...t)=>e.unref(u)&&e.unref(u)(...t)),["stop"]))},o[1]||(o[1]=[e.createElementVNode("div",{class:"vv-alert__close-mask"},null,-1)]),8,B)):e.createCommentVNode("v-if",!0)]))])):e.createCommentVNode("v-if",!0),t.$slots.default||t.content?(e.openBlock(),e.createElementBlock("div",C,[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.content),1)]))])):e.createCommentVNode("v-if",!0),t.$slots.footer||t.footer?(e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(t.$slots,"footer",{},(()=>[e.createTextVNode(e.toDisplayString(t.footer),1)]))])):e.createCommentVNode("v-if",!0)],16))}});return e.defineComponent({name:"VvAlertGroup",props:m,emits:["close","beforeEnter","afterLeave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(t,{emit:o}){const l=t,r=o,{hasProps:n,hasTransition:a}=b(l,r),i={"before-enter":()=>{r("beforeEnter")},"after-leave":()=>{r("afterLeave")},enter:()=>{r("enter")},"after-enter":()=>{r("afterEnter")},"enter-cancelled":()=>{r("enterCancelled")},"before-leave":()=>{r("beforeLeave")},leave:()=>{r("leave")},"leave-cancelled":()=>{r("leaveCancelled")}};return(t,o)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(n))),[e.renderSlot(t.$slots,"before"),e.createVNode(e.TransitionGroup,e.mergeProps({tag:"div",role:"group",name:e.unref(a),class:"vv-alert-group__list"},e.toHandlers(i)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(t=>(e.openBlock(),e.createBlock(x,e.mergeProps({ref_for:!0},t,{key:t.id}),null,16)))),128))]))])),_:3},16,["name"]),e.renderSlot(t.$slots,"after")],16))}})}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("mitt"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","mitt","@iconify/vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvAlertGroup=t(e.vue,e.mitt,e.vue$1)}(this,(function(e,t,o){"use strict";const l={prefix:"normal"};var r=(e=>(e.local="local",e.session="session",e))(r||{}),n=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(n||{}),a=(e=>(e.before="before",e.after="after",e))(a||{}),i=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(i||{}),s=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(s||{}),u=(e=>(e.alert="alert",e.alertdialog="alertdialog",e))(u||{});const c=Symbol.for("volver"),d=Symbol.for("alertGroup"),v={modifiers:{type:[String,Array],default:void 0}},f={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:a.before,validation:e=>Object.values(a).includes(e)}},p={id:[String,Number]};function m(t,o,l){return e.computed((()=>{const r={[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&&(r[`${t}--${e}`]=!0)})),l&&Object.keys(l.value).forEach((o=>{r[`${t}--${o}`]=e.unref(l.value[o])})),r}))}n.bottom,i.button,s.button,r.local;const b={...v,name:{type:String,required:!0},items:{type:Array,default:()=>[]},stack:{type:Boolean,default:!1},reverse:{type:Boolean,default:!1},inline:{type:String,default:void 0},block:{type:String,default:void 0},position:{type:String,default:void 0},transition:{type:String,default:void 0}};function h(o,l){const r=function({name:o}){const l=t();return e.provide(d,{name:o,bus:l}),l}({name:e.computed((()=>o.name))});(o.block&&!o.inline||!o.block&&o.inline)&&console.warn("[VvAlertGroup]: block and inline props must coexist at the same time.");const n=e.computed((()=>{const t=[m("vv-alert-group",e.computed((()=>o.modifiers)),e.computed((()=>({stack:o.stack,reverse:o.reverse,absolute:"absolute"===o.position,fixed:"fixed"===o.position})))).value];return o.inline&&o.block&&t.push(`vv-alert-group--${o.block}-${o.inline}`),t})),a=e.computed((()=>o.transition?o.transition:o.position?"start"===o.inline?"vv-alert--fade-inline-start":"end"===o.inline?"vv-alert--fade-inline-end":"top"===o.block?"vv-alert--fade-block-top":"bottom"===o.block?"vv-alert--fade-block-bottom":"vv-alert--fade":"vv-alert--fade"));return r.on("close",(e=>{l("close",e)})),{hasTransition:a,hasProps:e.computed((()=>({class:n.value})))}}const g={...p,...f,modifiers:{type:[String,Array],default:void 0},dismissable:{type:Boolean,default:!1},autoClose:{type:Number,default:0},closeLabel:{type:String,default:"Close"},title:{type:String,default:void 0},content:{type:String,default:void 0},footer:{type:String,default:void 0},role:{type:String,default:u.alert}};function y(t,o){const{bus:l}=e.inject(d,{}),r=(i=e.computed((()=>t.id)),e.computed((()=>String((null==i?void 0:i.value)||e.useId()))));var i;const s=e.computed((()=>`${r.value}-title`));let u;const c=()=>{u&&clearTimeout(u),o("close",r.value),null==l||l.emit("close",r.value)};e.watch((()=>t.autoClose),(e=>{e>0?u=setTimeout(c,e):u&&clearTimeout(u)}),{immediate:!0});const v=e.ref(!1),f=()=>{v.value=!0,u&&clearTimeout(u)},p=()=>{v.value=!1,t.autoClose>0&&(u=setTimeout(c,t.autoClose))},{hasIcon:b}=function(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)),r=e.computed((()=>(null==o?void 0:o.value)===a.before?l.value:void 0)),i=e.computed((()=>(null==o?void 0:o.value)===a.after?l.value:void 0)),s=e.computed((()=>(null==o?void 0:o.value)===n.left?l.value:void 0)),u=e.computed((()=>(null==o?void 0:o.value)===n.right?l.value:void 0)),c=e.computed((()=>(null==o?void 0:o.value)===n.top?l.value:void 0)),d=e.computed((()=>(null==o?void 0:o.value)===n.bottom?l.value:void 0));return{hasIcon:l,hasIconLeft:s,hasIconRight:u,hasIconTop:c,hasIconBottom:d,hasIconBefore:r,hasIconAfter:i}}(e.computed((()=>t.icon))),h=m("vv-alert",e.computed((()=>t.modifiers)),e.computed((()=>({dismissable:t.autoClose>0||t.dismissable,"auto-close":t.autoClose>0,hover:v.value})))),g=e.computed((()=>({"--alert-duration":`${t.autoClose}ms`})));return{close:c,hasIcon:b,hasTitleId:s,hasProps:e.computed((()=>({onMouseover:f,onMouseleave:p,class:h.value,style:g.value,role:t.role,"aria-labelledby":s.value})))}}const k=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:{}},l),setup(t){const l=t,r=e.computed((()=>"string"==typeof l.rotate?Number.parseFloat(l.rotate):l.rotate)),n=e.ref(!0),a=e.inject(c,void 0),{modifiers:i}=e.toRefs(l),s=m("vv-icon",i),u=e.computed((()=>l.provider||(null==a?void 0:a.iconsProvider))),d=e.computed((()=>{const e=l.name??"",t=`@${u.value}:${l.prefix}:${e}`;if(o.iconLoaded(t))return t;const r=null==a?void 0:a.iconsCollections.find((t=>{const l=`@${u.value}:${t.prefix}:${e}`;return o.iconLoaded(l)}));return r?`@${u.value}:${r.prefix}:${e}`:e}));function v(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),r=(null==t?void 0:t.innerHTML.trim())||"";t&&r&&o.addIcon(`@${u.value}:${l.prefix}:${l.name}`,{body:r,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return a&&l.src&&!o.iconLoaded(`@${u.value}:${l.prefix}:${l.name}`)&&(n.value=!1,a.fetchIcon(l.src).then((e=>{e&&(v(e),n.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),l.svg&&v(l.svg),(t,l)=>e.unref(n)?(e.openBlock(),e.createBlock(e.unref(o.Icon),e.mergeProps({key:0,class:e.unref(s)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:e.unref(r),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}}),$={key:0,class:"vv-alert__header"},S=["id"],B=["aria-label"],C={key:1,class:"vv-alert__content"},w={key:2,class:"vv-alert__footer"},x=e.defineComponent({name:"VvAlert",props:g,emits:["close"],setup(t,{expose:o,emit:l}){const r=t,n=l,{hasProps:a,hasTitleId:i,hasIcon:s,close:u}=y(r,n);return o({close:u}),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(a))),[t.$slots.header||t.$slots.title||t.$slots.close||t.$slots["title::before"]||t.$slots["title::after"]||t.title||e.unref(s)||t.dismissable||t.autoClose?(e.openBlock(),e.createElementBlock("div",$,[e.unref(s)?(e.openBlock(),e.createBlock(k,e.mergeProps({key:0},e.unref(s),{class:"vv-alert__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"header",{},(()=>[e.renderSlot(t.$slots,"title::before"),t.$slots.title||t.title?(e.openBlock(),e.createElementBlock("strong",{key:0,id:e.unref(i),class:"vv-alert__title"},[e.renderSlot(t.$slots,"title",{},(()=>[e.createTextVNode(e.toDisplayString(t.title),1)]))],8,S)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"title::after")])),e.renderSlot(t.$slots,"close",e.normalizeProps(e.guardReactiveProps({close:e.unref(u)})),(()=>[t.dismissable||t.autoClose?(e.openBlock(),e.createElementBlock("button",{key:0,class:"vv-alert__close",type:"button","aria-label":t.closeLabel,onClick:o[0]||(o[0]=e.withModifiers(((...t)=>e.unref(u)&&e.unref(u)(...t)),["stop"]))},o[1]||(o[1]=[e.createElementVNode("div",{class:"vv-alert__close-mask"},null,-1)]),8,B)):e.createCommentVNode("v-if",!0)]))])):e.createCommentVNode("v-if",!0),t.$slots.default||t.content?(e.openBlock(),e.createElementBlock("div",C,[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.content),1)]))])):e.createCommentVNode("v-if",!0),t.$slots.footer||t.footer?(e.openBlock(),e.createElementBlock("div",w,[e.renderSlot(t.$slots,"footer",{},(()=>[e.createTextVNode(e.toDisplayString(t.footer),1)]))])):e.createCommentVNode("v-if",!0)],16))}});return e.defineComponent({name:"VvAlertGroup",props:b,emits:["close","beforeEnter","afterLeave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(t,{emit:o}){const l=t,r=o,{hasProps:n,hasTransition:a}=h(l,r),i={"before-enter":()=>{r("beforeEnter")},"after-leave":()=>{r("afterLeave")},enter:()=>{r("enter")},"after-enter":()=>{r("afterEnter")},"enter-cancelled":()=>{r("enterCancelled")},"before-leave":()=>{r("beforeLeave")},leave:()=>{r("leave")},"leave-cancelled":()=>{r("leaveCancelled")}};return(t,o)=>(e.openBlock(),e.createElementBlock("div",e.normalizeProps(e.guardReactiveProps(e.unref(n))),[e.renderSlot(t.$slots,"before"),e.createVNode(e.TransitionGroup,e.mergeProps({tag:"div",role:"group",name:e.unref(a),class:"vv-alert-group__list"},e.toHandlers(i)),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,(t=>(e.openBlock(),e.createBlock(x,e.mergeProps({ref_for:!0},t,{key:t.id}),null,16)))),128))]))])),_:3},16,["name"]),e.renderSlot(t.$slots,"after")],16))}})}));
@@ -40,6 +40,10 @@ const INJECTION_KEY_DROPDOWN_TRIGGER = Symbol.for(
40
40
  const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for(
41
41
  "dropdownAction"
42
42
  );
43
+ const VvIconPropsDefaults = {
44
+ prefix: "normal"
45
+ /* normal */
46
+ };
43
47
  const LinkProps = {
44
48
  /**
45
49
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -480,10 +484,6 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
480
484
  };
481
485
  }
482
486
  });
483
- const VvIconPropsDefaults = {
484
- prefix: "normal"
485
- /* normal */
486
- };
487
487
  function useModifiers(prefix, modifiers, others) {
488
488
  return computed(() => {
489
489
  const toReturn = {
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvButton=o(e.vue,e.vue$1)}(this,(function(e,o){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),n=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(n||{}),l=(e=>(e.before="before",e.after="after",e))(l||{}),r=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(r||{}),i=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(i||{});const u=Symbol.for("volver"),a=Symbol.for("buttonGroup"),d=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),c={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},v={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},f={disabled:{type:Boolean,default:!1}},p={active:{type:Boolean,default:!1}},m={current:{type:Boolean,default:!1}},g={pressed:{type:Boolean,default:!1}},b={label:{type:[String,Number],default:void 0}},y={modifiers:{type:[String,Array],default:void 0}},h={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:l.before,validation:e=>Object.values(l).includes(e)}},k={unselectable:{type:Boolean,default:!0}},S={id:[String,Number]};n.bottom;const B={...f,...b,...g,...p,...m,...c,type:{type:String,default:r.button,validator:e=>Object.values(r).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:i.button}};t.local;const $={...B,...S,...y,...k,...v,...h,iconPosition:{type:String,default:n.left,validator:e=>Object.values(n).includes(e)},loadingIcon:{type:String,default:"eos-icons:bubble-loading"},toggle:{type:Boolean,default:!1},value:{type:[String,Number,Boolean],default:void 0},uncheckedValue:{type:[String,Number,Boolean],default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0}};function w(o,t){const{group:n,isInGroup:l,getGroupOrLocalRef:r}=function(o){const t=e.inject(o,void 0),n=e.computed((()=>void 0!==t));return{group:t,isInGroup:n,getGroupOrLocalRef:function(o,n,l){const r=null==t?void 0:t[o];if(r)return e.computed({get:()=>r.value,set(e){r.value=e}});const i=e.toRef(n,o);return e.computed({get:()=>i.value,set(e){l&&l(`update:${o}`,e)}})}}}(a),{id:i,iconPosition:u,icon:d,label:s,pressed:c}=e.toRefs(o),v=r("modelValue",o,t),f=r("toggle",o),p=r("unselectable",o),m=e.computed((()=>(null==n?void 0:n.multiple.value)??!1)),g=e.computed((()=>{let e=o.modifiers,t=null==n?void 0:n.modifiers.value;const l=new Set;return e&&(Array.isArray(e)||(e=e.split(" ")),e.forEach((e=>l.add(e)))),t&&(Array.isArray(t)||(t=t.split(" ")),t.forEach((e=>l.add(e)))),Array.from(l)})),b=e.computed((()=>Boolean(o.disabled||(null==n?void 0:n.disabled.value))));return{group:n,isInGroup:l,modelValue:v,toggle:f,unselectable:p,multiple:m,modifiers:g,disabled:b,id:i,pressed:c,iconPosition:u,icon:d,label:s}}const x=B;function L(){return e.inject(u,void 0)}const A=e.defineComponent({name:"VvAction",props:x,emits:["click","mouseover","mouseleave"],setup(o,{expose:t,emit:n}){const l=o,r=n,u=e.getCurrentInstance(),a=L(),c=e.ref(null);t({$el:c});const{reference:v,bus:f,aria:p,expanded:m}=e.inject(d,{});e.watch((()=>c.value),(e=>{v&&(v.value=e)}));const g=e.computed((()=>l.pressed||(null==m?void 0:m.value))),{role:b}=e.inject(s,{}),y=e.computed((()=>{switch(!0){case l.disabled:return i.button;case void 0!==l.to:return(null==a?void 0:a.nuxt)?e.resolveComponent(i.nuxtLink):i.routerLink;case void 0!==l.href:return i.a;default:return l.defaultTag}})),h=e.computed((()=>{const e={...null==p?void 0:p.value,ariaPressed:!!g.value||void 0,ariaLabel:l.ariaLabel,role:null==b?void 0:b.value};switch(y.value){case i.a:return{...e,href:l.href,target:l.target,rel:l.rel};case i.routerLink:case i.nuxtLink:return{...e,to:l.to,target:l.target};case i.button:return{...e,type:l.type,disabled:l.disabled};default:return e}}));function k(e){var o;l.disabled?e.preventDefault():(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onClick)?r("click",e):null==f||f.emit("click",e)}function S(e){var o;(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onMouseover)?r("mouseover",e):null==f||f.emit("mouseover",e)}function B(e){var o;(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onMouseleave)?r("mouseleave",e):null==f||f.emit("mouseleave",e)}return(o,t)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y)),e.mergeProps(e.unref(h),{ref_key:"element",ref:c,class:{active:o.active,pressed:e.unref(g),disabled:o.disabled,current:o.current},onClickPassive:k,onMouseoverPassive:S,onMouseleavePassive:B}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]))])),_:3},16,["class"]))}}),I={prefix:"normal"};function V(o,t,n){return e.computed((()=>{const l={[o]:!0},r="string"==typeof(null==t?void 0:t.value)?t.value.split(" "):null==t?void 0:t.value;return r&&Array.isArray(r)&&r.forEach((e=>{e&&(l[`${o}--${e}`]=!0)})),n&&Object.keys(n.value).forEach((t=>{l[`${o}--${t}`]=e.unref(n.value[t])})),l}))}const N=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:{}},I),setup(t){const n=t,l=e.computed((()=>"string"==typeof n.rotate?Number.parseFloat(n.rotate):n.rotate)),r=e.ref(!0),i=L(),{modifiers:u}=e.toRefs(n),a=V("vv-icon",u),d=e.computed((()=>n.provider||(null==i?void 0:i.iconsProvider))),s=e.computed((()=>{const e=n.name??"",t=`@${d.value}:${n.prefix}:${e}`;if(o.iconLoaded(t))return t;const l=null==i?void 0:i.iconsCollections.find((t=>{const n=`@${d.value}:${t.prefix}:${e}`;return o.iconLoaded(n)}));return l?`@${d.value}:${l.prefix}:${e}`:e}));function c(e){const t=function(e){let o;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");o=(new e).window}return(o?new o.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),l=(null==t?void 0:t.innerHTML.trim())||"";t&&l&&o.addIcon(`@${d.value}:${n.prefix}:${n.name}`,{body:l,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&n.src&&!o.iconLoaded(`@${d.value}:${n.prefix}:${n.name}`)&&(r.value=!1,i.fetchIcon(n.src).then((e=>{e&&(c(e),r.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),n.svg&&c(n.svg),(t,n)=>e.unref(r)?(e.openBlock(),e.createBlock(e.unref(o.Icon),e.mergeProps({key:0,class:e.unref(a)},{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 j(e,o,t){return C(e,o)}function C(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){const t=Array.isArray(e),n=Array.isArray(o);let l,r,i;if(t&&n){if(r=e.length,r!==o.length)return!1;for(l=r;0!==l--;)if(!C(e[l],o[l]))return!1;return!0}if(t!==n)return!1;const u=e instanceof Date,a=o instanceof Date;if(u!==a)return!1;if(u&&a)return e.getTime()===o.getTime();const d=e instanceof RegExp,s=o instanceof RegExp;if(d!==s)return!1;if(d&&s)return e.toString()===o.toString();const c=Object.keys(e);if(r=c.length,r!==Object.keys(o).length)return!1;for(l=r;0!==l--;)if(!Object.prototype.hasOwnProperty.call(o,c[l]))return!1;for(l=r;0!==l--;)if(i=c[l],!C(e[i],o[i]))return!1;return!0}return Number.isNaN(e)&&Number.isNaN(o)}function P(e,o){if(null!=e&&o&&o.length)for(const t of o)if(j(e,t))return!0;return!1}const O={key:1,class:"vv-button__label"},_={key:1,class:"vv-button__label"};return e.defineComponent({name:"VvButton",inheritAttrs:!1,props:$,emits:["update:modelValue"],setup(o,{expose:t,emit:r}){const i=o,u=r,a=e.useAttrs(),d=e.useSlots(),{id:s,modifiers:c,iconPosition:v,icon:f,label:p,modelValue:m,disabled:g,toggle:b,unselectable:y}=w(i,u),h=function(o){return e.computed((()=>String((null==o?void 0:o.value)||e.useId())))}(s),k=e.computed((()=>(null==a?void 0:a.name)||h.value)),S=e.ref(null);t({$el:e.computed((()=>{var e;return null==(e=S.value)?void 0:e.$el}))});const B=e.computed((()=>b.value?Array.isArray(m.value)?P(k.value,m.value):j(k.value,m.value):i.pressed)),$=V("vv-button",c,e.computed((()=>({reverse:[n.right,n.bottom].includes(v.value),column:[n.top,n.bottom].includes(v.value),"icon-only":Boolean((null==f?void 0:f.value)&&!(null==p?void 0:p.value)&&!d.default)})))),{hasIcon:x}=function(o,t){const r=e.computed((()=>"string"==typeof(null==o?void 0:o.value)?{name:null==o?void 0:o.value}:null==o?void 0:o.value)),i=e.computed((()=>(null==t?void 0:t.value)===l.before?r.value:void 0)),u=e.computed((()=>(null==t?void 0:t.value)===l.after?r.value:void 0)),a=e.computed((()=>(null==t?void 0:t.value)===n.left?r.value:void 0)),d=e.computed((()=>(null==t?void 0:t.value)===n.right?r.value:void 0)),s=e.computed((()=>(null==t?void 0:t.value)===n.top?r.value:void 0)),c=e.computed((()=>(null==t?void 0:t.value)===n.bottom?r.value:void 0));return{hasIcon:r,hasIconLeft:a,hasIconRight:d,hasIconTop:s,hasIconBottom:c,hasIconBefore:i,hasIconAfter:u}}(f),L=e.computed((()=>void 0!==i.value?i.value:k.value)),I=e.computed((()=>{if(b.value)return{onClick:C}}));function C(){if(b.value){if(Array.isArray(m.value))return P(L.value,m.value)?void(y.value&&(m.value=m.value.filter((e=>e!==L.value)))):void m.value.push(L.value);if(L.value===m.value&&y.value)return void(m.value=i.uncheckedValue);m.value=L.value}}return(o,t)=>(e.openBlock(),e.createBlock(A,e.mergeProps({...e.unref(a),...e.unref(I),disabled:e.unref(g),pressed:e.unref(B),active:o.active,type:o.type,to:o.to,href:o.href,target:o.target,rel:o.rel,ariaLabel:o.ariaLabel},{id:e.unref(h),ref_key:"element",ref:S,class:e.unref($)}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default",{},(()=>[o.loading?e.renderSlot(o.$slots,"loading",{key:0},(()=>[o.loadingIcon?(e.openBlock(),e.createBlock(N,{key:0,class:"vv-button__loading-icon",name:o.loadingIcon},null,8,["name"])):e.createCommentVNode("v-if",!0),o.loadingLabel?(e.openBlock(),e.createElementBlock("span",O,e.toDisplayString(o.loadingLabel),1)):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.renderSlot(o.$slots,"before"),e.unref(x)?(e.openBlock(),e.createBlock(N,e.mergeProps({key:0},e.unref(x),{class:"vv-button__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.unref(p)?(e.openBlock(),e.createElementBlock("span",_,[e.renderSlot(o.$slots,"label",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(p)),1)]))])):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"after")],64))]))])),_:3},16,["id","class"]))}})}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","@iconify/vue"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvButton=o(e.vue,e.vue$1)}(this,(function(e,o){"use strict";var t=(e=>(e.local="local",e.session="session",e))(t||{}),n=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(n||{}),l=(e=>(e.before="before",e.after="after",e))(l||{}),r=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(r||{}),i=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(i||{});const u=Symbol.for("volver"),a=Symbol.for("buttonGroup"),d=Symbol.for("dropdownTrigger"),s=Symbol.for("dropdownAction"),c={prefix:"normal"},v={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},f={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},p={disabled:{type:Boolean,default:!1}},m={active:{type:Boolean,default:!1}},g={current:{type:Boolean,default:!1}},b={pressed:{type:Boolean,default:!1}},y={label:{type:[String,Number],default:void 0}},h={modifiers:{type:[String,Array],default:void 0}},k={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:l.before,validation:e=>Object.values(l).includes(e)}},S={unselectable:{type:Boolean,default:!0}},B={id:[String,Number]};n.bottom;const $={...p,...y,...b,...m,...g,...v,type:{type:String,default:r.button,validator:e=>Object.values(r).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:i.button}};t.local;const w={...$,...B,...h,...S,...f,...k,iconPosition:{type:String,default:n.left,validator:e=>Object.values(n).includes(e)},loadingIcon:{type:String,default:"eos-icons:bubble-loading"},toggle:{type:Boolean,default:!1},value:{type:[String,Number,Boolean],default:void 0},uncheckedValue:{type:[String,Number,Boolean],default:void 0},modelValue:{type:[String,Number,Boolean],default:void 0}};function x(o,t){const{group:n,isInGroup:l,getGroupOrLocalRef:r}=function(o){const t=e.inject(o,void 0),n=e.computed((()=>void 0!==t));return{group:t,isInGroup:n,getGroupOrLocalRef:function(o,n,l){const r=null==t?void 0:t[o];if(r)return e.computed({get:()=>r.value,set(e){r.value=e}});const i=e.toRef(n,o);return e.computed({get:()=>i.value,set(e){l&&l(`update:${o}`,e)}})}}}(a),{id:i,iconPosition:u,icon:d,label:s,pressed:c}=e.toRefs(o),v=r("modelValue",o,t),f=r("toggle",o),p=r("unselectable",o),m=e.computed((()=>(null==n?void 0:n.multiple.value)??!1)),g=e.computed((()=>{let e=o.modifiers,t=null==n?void 0:n.modifiers.value;const l=new Set;return e&&(Array.isArray(e)||(e=e.split(" ")),e.forEach((e=>l.add(e)))),t&&(Array.isArray(t)||(t=t.split(" ")),t.forEach((e=>l.add(e)))),Array.from(l)})),b=e.computed((()=>Boolean(o.disabled||(null==n?void 0:n.disabled.value))));return{group:n,isInGroup:l,modelValue:v,toggle:f,unselectable:p,multiple:m,modifiers:g,disabled:b,id:i,pressed:c,iconPosition:u,icon:d,label:s}}const L=$;function A(){return e.inject(u,void 0)}const I=e.defineComponent({name:"VvAction",props:L,emits:["click","mouseover","mouseleave"],setup(o,{expose:t,emit:n}){const l=o,r=n,u=e.getCurrentInstance(),a=A(),c=e.ref(null);t({$el:c});const{reference:v,bus:f,aria:p,expanded:m}=e.inject(d,{});e.watch((()=>c.value),(e=>{v&&(v.value=e)}));const g=e.computed((()=>l.pressed||(null==m?void 0:m.value))),{role:b}=e.inject(s,{}),y=e.computed((()=>{switch(!0){case l.disabled:return i.button;case void 0!==l.to:return(null==a?void 0:a.nuxt)?e.resolveComponent(i.nuxtLink):i.routerLink;case void 0!==l.href:return i.a;default:return l.defaultTag}})),h=e.computed((()=>{const e={...null==p?void 0:p.value,ariaPressed:!!g.value||void 0,ariaLabel:l.ariaLabel,role:null==b?void 0:b.value};switch(y.value){case i.a:return{...e,href:l.href,target:l.target,rel:l.rel};case i.routerLink:case i.nuxtLink:return{...e,to:l.to,target:l.target};case i.button:return{...e,type:l.type,disabled:l.disabled};default:return e}}));function k(e){var o;l.disabled?e.preventDefault():(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onClick)?r("click",e):null==f||f.emit("click",e)}function S(e){var o;(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onMouseover)?r("mouseover",e):null==f||f.emit("mouseover",e)}function B(e){var o;(null==(o=null==u?void 0:u.vnode.props)?void 0:o.onMouseleave)?r("mouseleave",e):null==f||f.emit("mouseleave",e)}return(o,t)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y)),e.mergeProps(e.unref(h),{ref_key:"element",ref:c,class:{active:o.active,pressed:e.unref(g),disabled:o.disabled,current:o.current},onClickPassive:k,onMouseoverPassive:S,onMouseleavePassive:B}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(o.label),1)]))])),_:3},16,["class"]))}});function V(o,t,n){return e.computed((()=>{const l={[o]:!0},r="string"==typeof(null==t?void 0:t.value)?t.value.split(" "):null==t?void 0:t.value;return r&&Array.isArray(r)&&r.forEach((e=>{e&&(l[`${o}--${e}`]=!0)})),n&&Object.keys(n.value).forEach((t=>{l[`${o}--${t}`]=e.unref(n.value[t])})),l}))}const N=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(t){const n=t,l=e.computed((()=>"string"==typeof n.rotate?Number.parseFloat(n.rotate):n.rotate)),r=e.ref(!0),i=A(),{modifiers:u}=e.toRefs(n),a=V("vv-icon",u),d=e.computed((()=>n.provider||(null==i?void 0:i.iconsProvider))),s=e.computed((()=>{const e=n.name??"",t=`@${d.value}:${n.prefix}:${e}`;if(o.iconLoaded(t))return t;const l=null==i?void 0:i.iconsCollections.find((t=>{const n=`@${d.value}:${t.prefix}:${e}`;return o.iconLoaded(n)}));return l?`@${d.value}:${l.prefix}:${e}`:e}));function c(e){const t=function(e){let o;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");o=(new e).window}return(o?new o.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),l=(null==t?void 0:t.innerHTML.trim())||"";t&&l&&o.addIcon(`@${d.value}:${n.prefix}:${n.name}`,{body:l,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&n.src&&!o.iconLoaded(`@${d.value}:${n.prefix}:${n.name}`)&&(r.value=!1,i.fetchIcon(n.src).then((e=>{e&&(c(e),r.value=!0)})).catch((e=>{throw new Error(`Error during fetch icon: ${null==e?void 0:e.message}`)}))),n.svg&&c(n.svg),(t,n)=>e.unref(r)?(e.openBlock(),e.createBlock(e.unref(o.Icon),e.mergeProps({key:0,class:e.unref(a)},{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 j(e,o,t){return C(e,o)}function C(e,o){if(e===o)return!0;if(e&&o&&"object"==typeof e&&"object"==typeof o){const t=Array.isArray(e),n=Array.isArray(o);let l,r,i;if(t&&n){if(r=e.length,r!==o.length)return!1;for(l=r;0!==l--;)if(!C(e[l],o[l]))return!1;return!0}if(t!==n)return!1;const u=e instanceof Date,a=o instanceof Date;if(u!==a)return!1;if(u&&a)return e.getTime()===o.getTime();const d=e instanceof RegExp,s=o instanceof RegExp;if(d!==s)return!1;if(d&&s)return e.toString()===o.toString();const c=Object.keys(e);if(r=c.length,r!==Object.keys(o).length)return!1;for(l=r;0!==l--;)if(!Object.prototype.hasOwnProperty.call(o,c[l]))return!1;for(l=r;0!==l--;)if(i=c[l],!C(e[i],o[i]))return!1;return!0}return Number.isNaN(e)&&Number.isNaN(o)}function P(e,o){if(null!=e&&o&&o.length)for(const t of o)if(j(e,t))return!0;return!1}const O={key:1,class:"vv-button__label"},_={key:1,class:"vv-button__label"};return e.defineComponent({name:"VvButton",inheritAttrs:!1,props:w,emits:["update:modelValue"],setup(o,{expose:t,emit:r}){const i=o,u=r,a=e.useAttrs(),d=e.useSlots(),{id:s,modifiers:c,iconPosition:v,icon:f,label:p,modelValue:m,disabled:g,toggle:b,unselectable:y}=x(i,u),h=function(o){return e.computed((()=>String((null==o?void 0:o.value)||e.useId())))}(s),k=e.computed((()=>(null==a?void 0:a.name)||h.value)),S=e.ref(null);t({$el:e.computed((()=>{var e;return null==(e=S.value)?void 0:e.$el}))});const B=e.computed((()=>b.value?Array.isArray(m.value)?P(k.value,m.value):j(k.value,m.value):i.pressed)),$=V("vv-button",c,e.computed((()=>({reverse:[n.right,n.bottom].includes(v.value),column:[n.top,n.bottom].includes(v.value),"icon-only":Boolean((null==f?void 0:f.value)&&!(null==p?void 0:p.value)&&!d.default)})))),{hasIcon:w}=function(o,t){const r=e.computed((()=>"string"==typeof(null==o?void 0:o.value)?{name:null==o?void 0:o.value}:null==o?void 0:o.value)),i=e.computed((()=>(null==t?void 0:t.value)===l.before?r.value:void 0)),u=e.computed((()=>(null==t?void 0:t.value)===l.after?r.value:void 0)),a=e.computed((()=>(null==t?void 0:t.value)===n.left?r.value:void 0)),d=e.computed((()=>(null==t?void 0:t.value)===n.right?r.value:void 0)),s=e.computed((()=>(null==t?void 0:t.value)===n.top?r.value:void 0)),c=e.computed((()=>(null==t?void 0:t.value)===n.bottom?r.value:void 0));return{hasIcon:r,hasIconLeft:a,hasIconRight:d,hasIconTop:s,hasIconBottom:c,hasIconBefore:i,hasIconAfter:u}}(f),L=e.computed((()=>void 0!==i.value?i.value:k.value)),A=e.computed((()=>{if(b.value)return{onClick:C}}));function C(){if(b.value){if(Array.isArray(m.value))return P(L.value,m.value)?void(y.value&&(m.value=m.value.filter((e=>e!==L.value)))):void m.value.push(L.value);if(L.value===m.value&&y.value)return void(m.value=i.uncheckedValue);m.value=L.value}}return(o,t)=>(e.openBlock(),e.createBlock(I,e.mergeProps({...e.unref(a),...e.unref(A),disabled:e.unref(g),pressed:e.unref(B),active:o.active,type:o.type,to:o.to,href:o.href,target:o.target,rel:o.rel,ariaLabel:o.ariaLabel},{id:e.unref(h),ref_key:"element",ref:S,class:e.unref($)}),{default:e.withCtx((()=>[e.renderSlot(o.$slots,"default",{},(()=>[o.loading?e.renderSlot(o.$slots,"loading",{key:0},(()=>[o.loadingIcon?(e.openBlock(),e.createBlock(N,{key:0,class:"vv-button__loading-icon",name:o.loadingIcon},null,8,["name"])):e.createCommentVNode("v-if",!0),o.loadingLabel?(e.openBlock(),e.createElementBlock("span",O,e.toDisplayString(o.loadingLabel),1)):e.createCommentVNode("v-if",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.renderSlot(o.$slots,"before"),e.unref(w)?(e.openBlock(),e.createBlock(N,e.mergeProps({key:0},e.unref(w),{class:"vv-button__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.unref(p)?(e.openBlock(),e.createElementBlock("span",_,[e.renderSlot(o.$slots,"label",{},(()=>[e.createTextVNode(e.toDisplayString(e.unref(p)),1)]))])):e.createCommentVNode("v-if",!0),e.renderSlot(o.$slots,"after")],64))]))])),_:3},16,["id","class"]))}})}));
@@ -1,9 +1,16 @@
1
- import { computed, isRef, defineComponent, h, inject, unref, mergeDefaults, ref, toRefs, createBlock, createCommentVNode, openBlock, mergeProps, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString, toRef, getCurrentInstance, watch, resolveComponent, resolveDynamicComponent, withCtx, useId, useAttrs, useSlots, Fragment, provide, onMounted, nextTick, createVNode, normalizeProps, guardReactiveProps, Transition, toHandlers, withDirectives, createElementVNode, normalizeStyle, vShow, renderList, vModelSelect, createSlots, withModifiers, vModelText } from "vue";
1
+ import { computed, isRef, defineComponent, h, inject, unref, mergeDefaults, ref, toRefs, createBlock, createCommentVNode, openBlock, mergeProps, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString, toRef, getCurrentInstance, watch, resolveComponent, resolveDynamicComponent, withCtx, useId, useAttrs, useSlots, Fragment, provide, onMounted, createVNode, normalizeProps, guardReactiveProps, Transition, toHandlers, withDirectives, createElementVNode, normalizeStyle, vShow, nextTick, renderList, vModelSelect, createSlots, withModifiers, withKeys, vModelText } from "vue";
2
2
  import { iconLoaded, Icon, addIcon } from "@iconify/vue";
3
3
  import { autoPlacement, flip, shift, size, offset, arrow, useFloating, autoUpdate } from "@floating-ui/vue";
4
4
  import { useMutationObserver, useVModel, onClickOutside, useFocusWithin, useElementHover, onKeyStroke, useFocus, useElementVisibility, refDebounced, computedAsync } from "@vueuse/core";
5
5
  import mitt from "mitt";
6
6
  import { get } from "ts-dot-prop";
7
+ const ACTION_ICONS = {
8
+ clear: "close"
9
+ };
10
+ const VvIconPropsDefaults = {
11
+ prefix: "normal"
12
+ /* normal */
13
+ };
7
14
  var StorageType = /* @__PURE__ */ ((StorageType2) => {
8
15
  StorageType2["local"] = "local";
9
16
  StorageType2["session"] = "session";
@@ -187,6 +194,30 @@ const CurrentProps = {
187
194
  default: false
188
195
  }
189
196
  };
197
+ const ClearProps = {
198
+ /**
199
+ * If true, the clear button will be shown
200
+ */
201
+ showClearAction: {
202
+ type: Boolean,
203
+ default: false
204
+ },
205
+ /**
206
+ * VvIcon name for clear button
207
+ * @see VvIcon
208
+ */
209
+ iconClear: {
210
+ type: [String, Object],
211
+ default: ACTION_ICONS.clear
212
+ },
213
+ /**
214
+ * Label for clear button
215
+ */
216
+ labelClear: {
217
+ type: String,
218
+ default: "Clear"
219
+ }
220
+ };
190
221
  const PressedProps = {
191
222
  /**
192
223
  * Whether the item is pressed
@@ -449,13 +480,6 @@ const ActionProps = {
449
480
  default: StorageType.local
450
481
  }
451
482
  });
452
- const ACTION_ICONS = {
453
- clear: "close"
454
- };
455
- const VvIconPropsDefaults = {
456
- prefix: "normal"
457
- /* normal */
458
- };
459
483
  const VvComboboxProps = {
460
484
  ...IdNameProps,
461
485
  ...TabindexProps,
@@ -472,6 +496,7 @@ const VvComboboxProps = {
472
496
  ...DropdownProps,
473
497
  ...LabelProps,
474
498
  ...RequiredProps,
499
+ ...ClearProps,
475
500
  /**
476
501
  * Dropdown show / hide transition name
477
502
  */
@@ -510,6 +535,10 @@ const VvComboboxProps = {
510
535
  * Label for deselected option hint
511
536
  */
512
537
  deselectHintLabel: { type: String, default: "Press enter to remove" },
538
+ /**
539
+ * Label for add new option hint
540
+ */
541
+ addOptionHintLabel: { type: String, default: "Press enter to add" },
513
542
  /**
514
543
  * Label close button
515
544
  */
@@ -518,6 +547,10 @@ const VvComboboxProps = {
518
547
  * Select input placeholder
519
548
  */
520
549
  placeholder: String,
550
+ /**
551
+ * The options to add new options
552
+ */
553
+ addable: Boolean,
521
554
  /**
522
555
  * Use input text to search on options
523
556
  */
@@ -623,21 +656,6 @@ const VvComboboxProps = {
623
656
  focusOnHover: {
624
657
  type: Boolean,
625
658
  default: true
626
- },
627
- /**
628
- * VvIcon name for clear button
629
- * @see VvIcon
630
- */
631
- iconClear: {
632
- type: [String, Object],
633
- default: ACTION_ICONS.clear
634
- },
635
- /**
636
- * Label for clear button
637
- */
638
- labelClear: {
639
- type: String,
640
- default: "Clear"
641
659
  }
642
660
  };
643
661
  function useVvComboboxProps() {
@@ -1832,27 +1850,6 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1832
1850
  function init(el) {
1833
1851
  referenceEl.value = el;
1834
1852
  }
1835
- __expose({
1836
- toggle,
1837
- show,
1838
- hide,
1839
- init,
1840
- customPosition: hasCustomPosition
1841
- });
1842
- watch(expanded, (newValue) => {
1843
- if (newValue && props.autofocusFirst) {
1844
- nextTick(() => {
1845
- const focusableElements = getKeyboardFocusableElements(
1846
- floatingEl.value
1847
- );
1848
- if (focusableElements.length > 0) {
1849
- focusableElements[0].focus({
1850
- preventScroll: true
1851
- });
1852
- }
1853
- });
1854
- }
1855
- });
1856
1853
  onClickOutside(
1857
1854
  floatingEl,
1858
1855
  () => {
@@ -1899,6 +1896,30 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1899
1896
  (el) => !el.hasAttribute("disabled") && !el.getAttribute("aria-hidden")
1900
1897
  );
1901
1898
  }
1899
+ function focusFirst() {
1900
+ nextTick(() => {
1901
+ const focusableElements = getKeyboardFocusableElements(
1902
+ floatingEl.value
1903
+ );
1904
+ if (focusableElements.length > 0) {
1905
+ focusableElements[0].focus({
1906
+ preventScroll: true
1907
+ });
1908
+ }
1909
+ });
1910
+ }
1911
+ function focusFirstListElement() {
1912
+ nextTick(() => {
1913
+ const focusableElements = getKeyboardFocusableElements(
1914
+ listEl.value
1915
+ );
1916
+ if (focusableElements.length > 0) {
1917
+ focusableElements[0].focus({
1918
+ preventScroll: true
1919
+ });
1920
+ }
1921
+ });
1922
+ }
1902
1923
  function focusNext() {
1903
1924
  nextTick(() => {
1904
1925
  if (focused.value) {
@@ -1947,6 +1968,22 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
1947
1968
  }
1948
1969
  });
1949
1970
  }
1971
+ watch(expanded, (newValue) => {
1972
+ if (newValue && props.autofocusFirst) {
1973
+ focusFirst();
1974
+ }
1975
+ });
1976
+ __expose({
1977
+ toggle,
1978
+ show,
1979
+ hide,
1980
+ init,
1981
+ focusFirst,
1982
+ focusFirstListElement,
1983
+ focusNext,
1984
+ focusPrev,
1985
+ customPosition: hasCustomPosition
1986
+ });
1950
1987
  const hovered = useElementHover(floatingEl);
1951
1988
  const { itemRole } = useDropdownProvideItem({
1952
1989
  role,
@@ -2210,6 +2247,7 @@ const VvSelectProps = {
2210
2247
  ...FloatingLabelProps,
2211
2248
  ...UnselectableProps,
2212
2249
  ...LabelProps,
2250
+ ...ClearProps,
2213
2251
  /**
2214
2252
  * This Boolean attribute indicates that multiple options can be selected in the list.
2215
2253
  * If it is not specified, then only one option can be selected at a time.
@@ -2246,22 +2284,7 @@ const VvSelectProps = {
2246
2284
  /**
2247
2285
  * Select placeholder
2248
2286
  */
2249
- placeholder: String,
2250
- /**
2251
- * VvIcon name for clear button
2252
- * @see VvIcon
2253
- */
2254
- iconClear: {
2255
- type: [String, Object],
2256
- default: ACTION_ICONS.clear
2257
- },
2258
- /**
2259
- * Label for clear button
2260
- */
2261
- labelClear: {
2262
- type: String,
2263
- default: "Clear"
2264
- }
2287
+ placeholder: String
2265
2288
  };
2266
2289
  function useVvSelectProps() {
2267
2290
  return {
@@ -2639,7 +2662,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
2639
2662
  /* FULL_PROPS */
2640
2663
  )) : createCommentVNode("v-if", true)
2641
2664
  ]),
2642
- unref(isUnselectable) ? (openBlock(), createBlock(unref(VvInputClearAction), {
2665
+ unref(isUnselectable) && unref(propsDefaults).showClearAction ? (openBlock(), createBlock(unref(VvInputClearAction), {
2643
2666
  key: 1,
2644
2667
  "input-type": "select",
2645
2668
  label: _ctx.labelClear,
@@ -2724,7 +2747,7 @@ const __default__ = {
2724
2747
  const _sfc_main = /* @__PURE__ */ defineComponent({
2725
2748
  ...__default__,
2726
2749
  props: useVvComboboxProps(),
2727
- emits: ["update:modelValue", "update:search", "focus", "blur", "clear", "change:search"],
2750
+ emits: ["update:modelValue", "update:search", "update:options", "focus", "blur", "clear", "change:search"],
2728
2751
  setup(__props, { emit: __emit }) {
2729
2752
  const props = __props;
2730
2753
  const emit = __emit;
@@ -2893,12 +2916,33 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2893
2916
  "badges": props.badges
2894
2917
  }))
2895
2918
  );
2919
+ const addedOptions = ref(/* @__PURE__ */ new Set());
2896
2920
  const {
2897
2921
  getOptionLabel,
2898
2922
  getOptionValue,
2899
2923
  getOptionGrouped,
2900
2924
  isOptionDisabled
2901
2925
  } = useOptions(props);
2926
+ const hasOptions = computed(() => {
2927
+ const toReturn = [...props.options, ...addedOptions.value];
2928
+ for (const localModelValueItem of localModelValue.value) {
2929
+ if (!toReturn.some((option) => {
2930
+ const optionValue = getOptionValue(option);
2931
+ if (typeof optionValue === "object") {
2932
+ return JSON.stringify(optionValue) === JSON.stringify(localModelValueItem);
2933
+ }
2934
+ return optionValue === localModelValueItem;
2935
+ })) {
2936
+ toReturn.push(localModelValueItem);
2937
+ }
2938
+ }
2939
+ return toReturn;
2940
+ });
2941
+ watch(addedOptions, (newValue) => {
2942
+ if (newValue.size > 0) {
2943
+ emit("update:options", hasOptions.value);
2944
+ }
2945
+ });
2902
2946
  function isOptionDisabledOrNotSelectable(option) {
2903
2947
  return isOptionDisabled(option) || !isSelectable.value && !isOptionSelected(option);
2904
2948
  }
@@ -2909,13 +2953,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2909
2953
  const toReturn = await Promise.resolve(
2910
2954
  propsDefaults.value.searchFunction(
2911
2955
  debouncedSearchText.value,
2912
- props.options
2956
+ hasOptions.value
2913
2957
  )
2914
2958
  );
2915
2959
  localLoading.value = false;
2916
2960
  return toReturn;
2917
2961
  }
2918
- return (_a = props.options) == null ? void 0 : _a.filter((option) => {
2962
+ return (_a = hasOptions.value) == null ? void 0 : _a.filter((option) => {
2919
2963
  return getOptionLabel(option).toLowerCase().includes(debouncedSearchText.value.toLowerCase().trim());
2920
2964
  });
2921
2965
  });
@@ -2932,7 +2976,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2932
2976
  return localModelValue.value.includes(optionValue);
2933
2977
  }
2934
2978
  const selectedOptions = computed(() => {
2935
- const options = props.options.reduce(
2979
+ const toReturn = hasOptions.value.reduce(
2936
2980
  (acc, value) => {
2937
2981
  if (isGroup(value)) {
2938
2982
  return [...acc, ...getOptionGrouped(value)];
@@ -2941,7 +2985,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2941
2985
  },
2942
2986
  []
2943
2987
  );
2944
- return options.filter((option) => {
2988
+ return toReturn.filter((option) => {
2945
2989
  return isOptionSelected(option);
2946
2990
  });
2947
2991
  });
@@ -2978,7 +3022,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
2978
3022
  emit("clear");
2979
3023
  }
2980
3024
  watch(
2981
- () => props.options,
3025
+ hasOptions,
2982
3026
  (newValue) => {
2983
3027
  if ((newValue == null ? void 0 : newValue.length) && props.autoselectFirst && !isDirty.value) {
2984
3028
  onInput(newValue[0]);
@@ -3047,6 +3091,31 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3047
3091
  },
3048
3092
  { target: inputEl }
3049
3093
  );
3094
+ function onKeyupEnterInputSearch() {
3095
+ var _a, _b;
3096
+ if ((_a = filteredOptions.value) == null ? void 0 : _a.length) {
3097
+ if (filteredOptions.value.length === 1) {
3098
+ onInput(filteredOptions.value[0]);
3099
+ return;
3100
+ }
3101
+ (_b = dropdownEl.value) == null ? void 0 : _b.focusFirstListElement();
3102
+ return;
3103
+ }
3104
+ if (propsDefaults.value.addable) {
3105
+ const trimmedSearch = searchText.value.trim();
3106
+ if (!trimmedSearch) {
3107
+ return;
3108
+ }
3109
+ const exists = hasOptions.value.some(
3110
+ (opt) => getOptionLabel(opt).toLowerCase() === trimmedSearch.toLowerCase()
3111
+ );
3112
+ if (exists) {
3113
+ return;
3114
+ }
3115
+ addedOptions.value.add(trimmedSearch);
3116
+ onInput(trimmedSearch);
3117
+ }
3118
+ }
3050
3119
  return (_ctx, _cache) => {
3051
3120
  return !_ctx.native ? (openBlock(), createElementBlock("div", {
3052
3121
  key: 0,
@@ -3170,7 +3239,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3170
3239
  /* FULL_PROPS */
3171
3240
  )) : createCommentVNode("v-if", true)
3172
3241
  ]),
3173
- unref(isUnselectable) ? (openBlock(), createBlock(unref(VvInputClearAction), {
3242
+ unref(isUnselectable) && unref(propsDefaults).showClearAction ? (openBlock(), createBlock(unref(VvInputClearAction), {
3174
3243
  key: 1,
3175
3244
  "input-type": "select",
3176
3245
  label: _ctx.labelClear,
@@ -3304,7 +3373,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3304
3373
  default: withCtx(() => [
3305
3374
  renderSlot(_ctx.$slots, "no-results", {}, () => [
3306
3375
  createTextVNode(
3307
- toDisplayString(unref(propsDefaults).noResultsLabel),
3376
+ toDisplayString(unref(propsDefaults).addable ? unref(propsDefaults).addOptionHintLabel : unref(propsDefaults).noResultsLabel),
3308
3377
  1
3309
3378
  /* TEXT */
3310
3379
  )
@@ -3347,8 +3416,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
3347
3416
  spellcheck: "false",
3348
3417
  type: "search",
3349
3418
  class: "vv-dropdown__search",
3350
- placeholder: unref(propsDefaults).searchPlaceholder
3351
- }, null, 8, _hoisted_3)), [
3419
+ placeholder: unref(propsDefaults).searchPlaceholder,
3420
+ onKeyup: withKeys(onKeyupEnterInputSearch, ["enter"])
3421
+ }, null, 40, _hoisted_3)), [
3352
3422
  [vModelText, unref(searchText)]
3353
3423
  ]) : createCommentVNode("v-if", true)
3354
3424
  ]),