@volverjs/ui-vue
Version:
@volverjs/ui-vue is a lightweight Vue 3 component library to accompany @volverjs/style.
2 lines (1 loc) • 35.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("vue-imask"),require("@floating-ui/vue"),require("@vueuse/core"),require("mitt"),require("@iconify/vue")):"function"==typeof define&&define.amd?define(["vue","vue-imask","@floating-ui/vue","@vueuse/core","mitt","@iconify/vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvInputText=t(e.vue,e.vueImask,e.vue$1,e.core,e.mitt,e.vue$2)}(this,function(e,t,o,a,l,n){"use strict";const i=e=>e.toString().padStart(2,"0");function r(e){if("string"!=typeof e)return!1;if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:?\d{2})?$/.test(e))return!1;const t=new Date(e);return!Number.isNaN(t.getTime())&&t.toISOString()===e}function u(e,t="date",o){if("string"==typeof e&&!r(e))return"";const a=new Date(e);if(Number.isNaN(a.getTime()))return"";let l=`${a.getFullYear()}-${i(a.getMonth()+1)}`;if("month"===t)return l;if(l+=`-${i(a.getDate())}`,"date"===t)return l;const n=o?`${i(a.getHours())}:${i(a.getMinutes())}:${i(a.getSeconds())}`:`${i(a.getHours())}:${i(a.getMinutes())}`;return"time"===t?n:`${l}T${n}`}function s(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}var c=(e=>(e.local="local",e.session="session",e))(c||{}),v=(e=>(e.absolute="absolute",e.fixed="fixed",e))(v||{}),p=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(p||{}),f=(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))(f||{}),m=(e=>(e.before="before",e.after="after",e))(m||{}),h=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(h||{}),b=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(b||{}),g=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(g||{}),y=(e=>(e.listbox="listbox",e.menu="menu",e))(y||{}),S=(e=>(e.option="option",e.presentation="presentation",e))(S||{});const w=Symbol.for("volver"),k=Symbol.for("dropdownTrigger"),E=Symbol.for("dropdownItem"),x=Symbol.for("dropdownAction"),$="eye-on",T="eye-off",L="calendar",D="time",B="color",C="close",O="trash",N={prefix:"normal"},P={valid:{type:Boolean,default:!1},validLabel:{type:[String,Array],default:void 0}},A={invalid:{type:Boolean,default:!1},invalidLabel:{type:[String,Array],default:void 0}},M={loading:{type:Boolean,default:!1},loadingLabel:{type:String,default:"Loading..."}},I={disabled:{type:Boolean,default:!1}},_={required:{type:Boolean,default:!1}},V={selected:{type:Boolean,default:!1}},H={label:{type:[String,Number],default:void 0}},R={readonly:{type:Boolean,default:!1}},j={modifiers:{type:[String,Array],default:void 0}},z={hintLabel:{type:String,default:""}},F={count:{type:[Boolean,String],default:!1,validator:e=>[!0,!1,"limit","countdown"].includes(e)}},U={debounce:{type:[Number,String],default:void 0}},W={icon:{type:[String,Object],default:void 0},iconPosition:{type:String,default:m.before,validation:e=>Object.values(m).includes(e)}},Y={tabindex:{type:[String,Number],default:0}},q={floating:{type:Boolean,default:!1}},K={unselectable:{type:Boolean,default:!0}},X={id:[String,Number]},J={placement:{type:String,default:p.bottom,validator:e=>Object.values(p).includes(e)||Object.values(f).includes(e)},strategy:{type:String,default:void 0,validator:e=>Object.values(v).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}},Z={...{...X,name:{type:String,required:!0}},...{autofocus:{type:Boolean,default:!1}},...{autocomplete:{type:String,default:"off"}},...Y,...I,...R,...P,...A,...z,...M,...j,...F,...U,...W,...q,...H,minlength:{type:[String,Number],default:void 0},maxlength:{type:[String,Number],default:void 0},placeholder:{type:String,default:void 0},..._};h.button,b.button;const G={storageType:{type:String,default:c.local,validator:e=>Object.values(c).includes(e)},storageKey:String},Q={...X,...J,...j,modelValue:{type:Boolean,default:void 0},reference:{type:Object,default:null},role:{type:String,default:y.menu,validator:e=>Object.values(y).includes(e)}},ee={focusOnHover:{type:Boolean,default:!1}},te={...I,...V,...K,...j,deselectHintLabel:{type:String},selectHintLabel:{type:String},selectedHintLabel:{type:String},focusOnHover:{type:Boolean,default:!1}};function oe(t){return e.computed(()=>String(t?.value||e.useId()))}function ae(t,o,a){return e.computed(()=>{const l={[t]:!0},n="string"==typeof o?.value?o.value.split(" "):o?.value;return n&&Array.isArray(n)&&n.forEach(e=>{e&&(l[`${t}--${e}`]=!0)}),a&&Object.keys(a.value).forEach(o=>{l[`${t}--${o}`]=e.unref(a.value[o])}),l})}const le=["id","tabindex","role","aria-labelledby"],ne=e.defineComponent({name:"VvDropdown",inheritAttrs:!1,props:Q,emits:["update:modelValue","beforeEnter","afterLeave","beforeExpand","beforeCollapse","afterExpand","afterCollapse","before-enter","after-leave","enter","afterEnter","enterCancelled","beforeLeave","leave","leaveCancelled"],setup(t,{expose:n,emit:i}){const r=t,u=i,{id:s}=e.toRefs(r),d=oe(s),c=e.useAttrs(),f=e.ref("auto"),m=e.ref("auto"),h=e.ref(),b=e.ref(),g=e.ref(),w=e.ref(),x=e.computed({get:()=>r.reference??h.value,set:e=>{h.value=e}}),$=e.ref(!1);e.onMounted(()=>{a.useMutationObserver(b.value,()=>{$.value="true"===window.getComputedStyle(b.value).getPropertyValue("--dropdown-custom-position")?.trim()},{attributeFilter:["style"],window:window})});const T=e.computed(()=>{const e=[];if(r.autoPlacement?"boolean"==typeof r.autoPlacement?e.push(o.autoPlacement()):e.push(o.autoPlacement(r.autoPlacement)):r.flip&&("boolean"==typeof r.flip?e.push(o.flip({fallbackStrategy:"initialPlacement"})):e.push(o.flip(r.flip))),r.shift&&("boolean"==typeof r.shift?e.push(o.shift()):e.push(o.shift(r.shift))),r.size){const t=({availableWidth:e,availableHeight:t})=>{f.value=`${e}px`,m.value=`${t}px`};"boolean"==typeof r.size?e.push(o.size({apply:t})):e.push(o.size({...r.size,apply:t}))}return r.offset&&(e.push(o.offset(Number(r.offset))),["string","number"].includes(typeof r.offset)?e.push(o.offset(Number(r.offset))):e.push(o.offset(r.offset))),r.arrow&&e.push(o.arrow({element:g})),e}),{x:L,y:D,middlewareData:B,placement:C,strategy:O}=o.useFloating(x,b,{whileElementsMounted:(...e)=>o.autoUpdate(...e,{animationFrame:r.strategy===v.fixed}),placement:e.computed(()=>r.placement),strategy:e.computed(()=>r.strategy),middleware:T}),N=e.computed(()=>{if($.value)return;const e=r.triggerWidth&&x.value?`${x.value?.offsetWidth}px`:void 0;return{position:O.value,top:`${D.value??0}px`,left:`${L.value??0}px`,maxWidth:e?void 0:f.value,maxHeight:m.value,width:e}}),P=e.computed(()=>C.value.split("-")[0]),A=e.computed(()=>{if($.value)return;const e={[p.top]:p.bottom,[p.right]:p.left,[p.bottom]:p.top,[p.left]:p.right}[P.value];return{left:void 0!==B.value.arrow?.x?`${B.value.arrow?.x}px`:void 0,top:void 0!==B.value.arrow?.y?`${B.value.arrow?.y}px`:void 0,[e]:-(g.value?.offsetWidth??0)/2+"px"}}),M=a.useVModel(r,"modelValue",u),I=e.ref(!1),_=e.computed({get:()=>M.value??I.value,set:e=>{void 0!==M.value?M.value=e:I.value=e}});function V(){_.value=!0}function H(){_.value=!1}function R(){_.value=!_.value}function j(e){x.value=e}a.onClickOutside(b,()=>{!r.keepOpen&&_.value&&(_.value=!1)},{ignore:[x]});const z=e.computed(()=>x.value?.getAttribute?.("id")??void 0),F=e.computed(()=>({"aria-controls":d.value,"aria-haspopup":!0,"aria-expanded":_.value})),{component:U,bus:W}=function({reference:t,id:o,expanded:a,aria:n}){const i=l(),r=e.defineComponent({name:"VvDropdownTriggerProvider",setup(){e.provide(k,{reference:t,id:o,expanded:a,aria:n,bus:i})},render(){return e.h(e.Fragment,{},this.$slots.default?.())}});return{bus:i,component:r}}({reference:x,id:d,expanded:_,aria:F});W.on("click",R);const{role:Y,modifiers:q}=e.toRefs(r),K=ae("vv-dropdown",q,e.computed(()=>({arrow:r.arrow}))),{focused:X}=a.useFocusWithin(b);function J(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 Z(){e.nextTick(()=>{const e=J(b.value);e.length>0&&e[0].focus({preventScroll:!0})})}function G(){e.nextTick(()=>{if(X.value){const e=J(b.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 Q(){e.nextTick(()=>{if(X.value){const e=J(b.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(_,e=>{e&&r.autofocusFirst&&Z()}),n({toggle:R,show:V,hide:H,init:j,focusFirst:Z,focusFirstListElement:function(){e.nextTick(()=>{const e=J(w.value);e.length>0&&e[0].focus({preventScroll:!0})})},focusNext:G,focusPrev:Q,customPosition:$});const ee=a.useElementHover(b),{itemRole:te}=function({role:t,...o}){const a=e.computed(()=>t.value===y.listbox?S.option:S.presentation);return e.provide(E,{role:a,...o}),{itemRole:a}}({role:Y,expanded:_,focused:X,hovered:ee});a.onKeyStroke("Escape",e=>{_.value&&(e.preventDefault(),H())}),a.onKeyStroke("ArrowDown",e=>{_.value&&X.value&&(e.preventDefault(),G())}),a.onKeyStroke("ArrowUp",e=>{_.value&&X.value&&(e.preventDefault(),Q())}),a.onKeyStroke([" ","Enter"],e=>{const t=e.target;_.value&&X.value&&t&&t?.click()});const ne={"before-enter":()=>{u(_.value?"beforeExpand":"beforeCollapse"),u("beforeEnter")},"after-leave":()=>{u(_.value?"afterExpand":"afterCollapse"),u("afterLeave")},enter:()=>{u("enter")},"after-enter":()=>{u("afterEnter")},"enter-cancelled":()=>{u("enterCancelled")},"before-leave":()=>{u("beforeLeave")},leave:()=>{u("leave")},"leave-cancelled":()=>{u("leaveCancelled")}};return(t,o)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(e.unref(U),null,{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default",e.normalizeProps(e.guardReactiveProps({init:j,show:V,hide:H,toggle:R,expanded:e.unref(_),aria:e.unref(F)})))]),_: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:b,style:e.normalizeStyle(e.unref(N)),class:e.normalizeClass(e.unref(K))},[r.arrow?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"arrowEl",ref:g,style:e.normalizeStyle(e.unref(A)),class:"vv-dropdown__arrow"},null,4)):e.createCommentVNode("v-if",!0),e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps({expanded:e.unref(_)}))),e.createElementVNode("div",e.mergeProps(e.unref(c),{id:e.unref(d),ref_key:"listEl",ref:w,tabindex:e.unref(_)?void 0:-1,role:e.unref(Y),"aria-labelledby":e.unref(z),class:"vv-dropdown__list"}),[e.renderSlot(t.$slots,"items",e.normalizeProps(e.guardReactiveProps({role:e.unref(te)})))],16,le),e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps({expanded:e.unref(_)})))],6),[[e.vShow,e.unref(_)]])]),_:3},16,["name"])],64))}});const ie=e.defineComponent({name:"VvDropdownItem",props:ee,setup(t){const o=t,{role:l,expanded:n}=e.inject(E,{}),i=e.ref(null);!function({expanded:t}){e.provide(x,{role:e.ref(g.menuitem),expanded:t})}({expanded:n});const r=a.useElementHover(i),{focused:u}=a.useFocus(i),{focused:s}=a.useFocusWithin(i);return e.watch(r,e=>{e&&o.focusOnHover&&(u.value=!0)}),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(l)},{ref_key:"element",ref:i,class:["vv-dropdown__item",{"focus-visible":e.unref(u)||e.unref(s)}]}),[e.renderSlot(t.$slots,"default")],16))}}),re=["title"],ue=e.defineComponent({name:"VvDropdownOption",props:te,setup(t){const o=t,{modifiers:a}=e.toRefs(o),l=ae("vv-dropdown-option",a,e.computed(()=>({disabled:o.disabled,selected:o.selected,unselectable:o.unselectable&&o.selected}))),n=e.computed(()=>o.selected?o.unselectable?o.deselectHintLabel:o.selectedHintLabel:o.disabled?"":o.selectHintLabel);return(t,o)=>(e.openBlock(),e.createBlock(ie,{class:e.normalizeClass(e.unref(l)),tabindex:t.disabled?-1:0,"aria-selected":t.selected,"aria-disabled":t.disabled,"focus-on-hover":t.focusOnHover},{default:e.withCtx(()=>[e.renderSlot(t.$slots,"default"),e.createElementVNode("span",{class:"vv-dropdown-option__hint",title:e.unref(n)},[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps({disabled:t.disabled,selected:t.selected,unselectable:t.unselectable})),()=>[e.createTextVNode(e.toDisplayString(e.unref(n)),1)])],8,re)]),_:3},8,["class","tabindex","aria-selected","aria-disabled","focus-on-hover"]))}});function se(){return e.inject(w,void 0)}const de=e.defineComponent({name:"VvIcon",props:e.mergeDefaults({name:{},color:{},width:{},height:{},provider:{},prefix:{},src:{},horizontalFlip:{type:Boolean},verticalFlip:{type:Boolean},flip:{},mode:{},inline:{type:Boolean},rotate:{},onLoad:{type:Function},svg:{},modifiers:{}},N),setup(t){const o=t,a=e.computed(()=>"string"==typeof o.rotate?Number.parseFloat(o.rotate):o.rotate),l=e.ref(!0),i=se(),{modifiers:r}=e.toRefs(o),u=ae("vv-icon",r),s=e.computed(()=>o.provider||i?.iconsProvider),d=e.computed(()=>{const e=o.name??"",t=`@${s.value}:${o.prefix}:${e}`;if(n.iconLoaded(t))return t;const a=i?.iconsCollections.find(t=>{const o=`@${s.value}:${t.prefix}:${e}`;return n.iconLoaded(o)});return a?`@${s.value}:${a.prefix}:${e}`:e});function c(e){const t=function(e){let t;if("undefined"==typeof window){const{JSDOM:e}=require("jsdom");t=(new e).window}return(t?new t.DOMParser:new window.DOMParser).parseFromString(e,"text/html").querySelector("svg")}(e),a=t?.innerHTML.trim()||"";t&&a&&n.addIcon(`@${s.value}:${o.prefix}:${o.name}`,{body:a,height:t.viewBox.baseVal.height,width:t.viewBox.baseVal.width})}return i&&o.src&&!n.iconLoaded(`@${s.value}:${o.prefix}:${o.name}`)&&(l.value=!1,i.fetchIcon(o.src).then(e=>{e&&(c(e),l.value=!0)}).catch(e=>{throw new Error(`Error during fetch icon: ${e?.message}`)})),o.svg&&c(o.svg),(o,i)=>e.unref(l)?(e.openBlock(),e.createBlock(e.unref(n.Icon),e.mergeProps({key:0,class:e.unref(u)},{inline:t.inline,width:t.width,height:t.height,horizontalFlip:t.horizontalFlip,verticalFlip:t.verticalFlip,flip:t.flip,rotate:e.unref(a),color:t.color,icon:e.unref(d)},{onLoad:t.onLoad}),null,16,["class","onLoad"])):e.createCommentVNode("v-if",!0)}}),ce={TEXT:"text",PASSWORD:"password",NUMBER:"number",EMAIL:"email",TEL:"tel",URL:"url",COLOR:"color",SEARCH:"search",DATE:"date",TIME:"time",DATETIME_LOCAL:"datetime-local",MONTH:"month",WEEK:"week"},ve={...Z,...G,modelValue:[String,Number,Date],type:{type:String,default:ce.TEXT,validator:e=>Object.values(ce).includes(e)},min:[Number,Date,String],max:[Number,Date,String],step:{type:[String,Number],default:1},pattern:String,multiple:Boolean,iconShowPassword:{type:[String,Object],default:$},iconHidePassword:{type:[String,Object],default:T},iconClear:{type:[String,Object],default:C},iconRemoveSuggestion:{type:[String,Object],default:O},labelStepUp:{type:String,default:"Increase value"},labelStepDown:{type:String,default:"Decrease value"},labelShowPassword:{type:String,default:"Show password"},labelHidePassword:{type:String,default:"Hide password"},labelClear:{type:String,default:"Clear"},labelRemoveSuggestion:{type:String,default:"Remove suggestion"},iMask:{type:Object,default:void 0},masked:{type:String,default:void 0},autoWidth:{type:Boolean,default:!1},hideActions:{type:Boolean,default:!1},unit:{type:String},selectOnFocus:{type:Boolean,default:!1},maxSuggestions:{type:Number,default:5},inputMode:{type:String,default:"text"}};function pe(t,o){const a=e.computed(()=>"string"==typeof t?.value?{name:t?.value}:t?.value),l=e.computed(()=>o?.value===m.before?a.value:void 0),n=e.computed(()=>o?.value===m.after?a.value:void 0),i=e.computed(()=>o?.value===p.left?a.value:void 0),r=e.computed(()=>o?.value===p.right?a.value:void 0),u=e.computed(()=>o?.value===p.top?a.value:void 0),s=e.computed(()=>o?.value===p.bottom?a.value:void 0);return{hasIcon:a,hasIconLeft:i,hasIconRight:r,hasIconTop:u,hasIconBottom:s,hasIconBefore:l,hasIconAfter:n}}const fe=e.defineComponent({components:{VvIcon:de},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:o}){const{hasIcon:a}=pe(e.computed(()=>t.icon));return{hasIcon:a,onClick:function(e){e?.stopPropagation(),t.disabled||o("clear")}}},render(){const t=this.hasIcon?e.h(de,{...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)}}),me=e.defineComponent({components:{VvIcon:de},props:{inputType:{type:String,default:"input-text"},disabled:{type:Boolean,default:!1},labelShow:{type:String,default:"Show password"},labelHide:{type:String,default:"Hide password"},iconShow:{type:[String,Object],default:$},iconHide:{type:[String,Object],default:T}},emits:["toggle-password"],setup(t,{emit:o}){const a=e.ref(!1),l=e.computed(()=>a.value?t.iconHide:t.iconShow),{hasIcon:n}=pe(l);return{active:a,activeIcon:l,hasIcon:n,onClick:function(e){e?.stopPropagation(),t.disabled||(a.value=!a.value,o("toggle-password",a.value))}}},render(){const t=this.hasIcon?e.h(de,{...this.hasIcon,class:`vv-${this.inputType}__icon`}):void 0;return e.h("button",{disabled:this.disabled,class:`vv-${this.inputType}__action`,ariaLabel:this.active?this.labelHide:this.labelShow,type:"button",onClick:this.onClick},t)}}),he=e.defineComponent({components:{VvIcon:de},props:{inputType:{type:String,default:"input-text"},disabled:{type:Boolean,default:!1},label:{type:String},mode:{type:String,validator:e=>["up","down"].includes(e),default:"up"}},emits:["step-up","step-down"],setup(t,{emit:o}){const a=e.computed(()=>"up"===t.mode);return{isUp:a,onClick:e=>{e?.stopPropagation(),t.disabled||o(a.value?"step-up":"step-down")}}},render(){return e.h("button",{class:[`vv-${this.inputType}__action`,`vv-${this.inputType}__action-chevron`,this.isUp?`vv-${this.inputType}__action-chevron-up`:void 0],disabled:this.disabled,ariaLabel:this.label,type:"button",onClick:this.onClick})}});function be(t,o,a){return{name:"VvInputTextActions",components:{VvIcon:de,VvInputPasswordAction:me,VvInputStepAction:he,VvInputClearAction:fe},setup(){const t=e.computed(()=>o.disabled||o.readonly);return{isDirty:a,isDisabled:t,labelStepUp:o.labelStepUp,labelStepDown:o.labelStepDown,labelShowPassword:o.labelShowPassword,labelHidePassword:o.labelHidePassword,labelClear:o.labelClear,iconShowPassword:o.iconShowPassword,iconHidePassword:o.iconHidePassword}},render(){let a=null;switch(t){case ce.SEARCH:{const{onClear:t}=this.$attrs;a=[e.h(fe,{disabled:this.isDisabled||!this.isDirty,label:this.labelClear,onClear:t})];break}case ce.PASSWORD:{const{onTogglePassword:t}=this.$attrs;a=[e.h(me,{disabled:this.isDisabled,onTogglePassword:t,labelShow:this.labelShowPassword,labelHide:this.labelHidePassword,iconShow:this.iconShowPassword,iconHide:this.iconHidePassword})];break}case ce.NUMBER:{const{onStepUp:t,onStepDown:l}=this.$attrs;a=[e.h(he,{mode:"up",disabled:this.isDisabled||void 0!==o.max&&o.modelValue===o.max,label:this.labelStepUp,onStepUp:t,onStepDown:l}),e.h(he,{mode:"down",disabled:this.isDisabled||void 0!==o.min&&o.modelValue===o.min,label:this.labelStepDown,onStepUp:t,onStepDown:l})];break}}return Array.isArray(a)?e.h("div",{class:"vv-input-text__actions-group"},a):a}}}const ge=["for"],ye={key:0,class:"vv-input-text__input-before"},Se=["id"],we={key:1,class:"vv-input-text__unit"},ke={key:5,class:"vv-input-text__input-after"},Ee={key:6,class:"vv-input-text__limit"},xe={class:"flex-1"},$e=["title","onClick"];return e.defineComponent({name:"VvInputText",props:ve,emits:["update:modelValue","update:masked","accept","accept:typed","accept:masked","accept:unmasked","complete","complete:typed","complete:masked","complete:unmasked","suggestion:selected","suggestion:removed","focus","blur","keyup","keydown","keypress","clear"],setup(o,{expose:l,emit:n}){const v=o,p=n,f=e.useSlots(),m=se(),h=function(t,o,a){const l=se(),n=e.computed(()=>{if(l&&l.defaults.value?.[t])return l.defaults.value[t]});return e.computed(()=>{if(void 0===n.value)return a;const e=n.value,t=o,l=a;return Object.keys(t).reduce((o,a)=>{const n=l[a];if(o[a]=n,a in e){if(Array.isArray(t[a])){const l=t[a];l.length&&l[0]===n&&(o[a]=e[a])}if("function"==typeof t[a]&&(0,t[a])()===n&&(o[a]=e[a]),"object"==typeof t[a]){let l=t[a].default;"function"==typeof l&&(l=l()),"object"==typeof l?JSON.stringify(l)===JSON.stringify(n)&&(o[a]=e[a]):l===n&&(o[a]=e[a])}}return o},{})})}("VvInputText",ve,v),{count:b,debounce:g,icon:y,iconPosition:S,iconRemoveSuggestion:w,id:k,invalid:E,label:x,loading:$,maxlength:T,minlength:C,modelValue:O,step:N,storageType:P,type:A,valid:M}=e.toRefs(v),I=oe(k),_=e.computed(()=>`${I.value}-hint`),V=e.computed(()=>v.floating&&s(v.placeholder)?" ":v.placeholder),H=function(t,o,a=0,{getter:l=e=>e,setter:n=e=>e}={}){let i;return"string"==typeof a&&(a=Number.parseInt(a)),e.computed({get:()=>l(t?.value),set:e=>{i&&clearTimeout(i),i=setTimeout(()=>{o("update:modelValue",n(e))},a)}})}(O,p,g?.value??0),R=e.computed(()=>{const e="number"==typeof N.value?N.value:Number.parseInt(N.value);return!Number.isNaN(e)&&e%60!=0}),j=/^-0?[.,]?[0*]?$/,z=e.ref(!1),F=e.ref(),U=e.ref(),{el:W,mask:Y,typed:q,masked:K,unmasked:X}=t.useIMask(e.computed(()=>{if(!v.iMask)return{mask:/./};if(v.iMask.mask===Number){const e={...v.iMask};return v.min&&(e.min=Number(v.min)),v.max&&(e.max=Number(v.max)),e}return v.iMask}),{emit:p,onAccept:()=>{if(z.value){if(p("update:masked",K.value),A.value===ce.NUMBER){if(/^-$|^$/.test(X.value)){if(null===H.value||void 0===H.value)return;return void(H.value=void 0)}return j.test(X.value)?void(H.value=0):"number"!=typeof q.value?void(H.value=Number(q.value)):void(H.value=q.value)}if(A.value===ce.DATETIME_LOCAL||A.value===ce.DATE||A.value===ce.TIME||A.value===ce.MONTH){if(!q.value){if(!H.value)return;return F.value?void(H.value=void 0):void(H.value="")}if(!(q.value instanceof Date||F.value||U.value))return void(H.value=q.value);let e=q.value;if(e instanceof Date||(e=function(e,t="date"){if(!e?.trim())return null;const o=new Date,a=o.getFullYear(),l=o.getMonth(),n=o.getDate();if("date"===t){if(!/^\d{4}-\d{2}-\d{2}$/.test(e))throw new Error("Invalid date format. Expected: YYYY-MM-DD");return new Date(`${e}T00:00:00`)}if("month"===t){if(!/^\d{4}-\d{2}$/.test(e))throw new Error("Invalid month format. Expected: YYYY-MM");return new Date(`${e}-01T00:00:00`)}if("time"===t){if(!/^(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d)?$/.test(e))throw new Error("Invalid time format. Expected: HH:mm or HH:mm:ss");return 8===e.length?new Date(`${a}-${i(l+1)}-${i(n)}T${e}`):new Date(`${a}-${i(l+1)}-${i(n)}T${e}:00`)}if(!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2})?$/.test(e))throw new Error("Invalid datetime format. Expected: YYYY-MM-DDThh:mm or YYYY-MM-DDThh:mm:ss");return 16===e.length?new Date(`${e}:00`):new Date(`${e}`)}(q.value,A.value)),F.value||U.value){const t=new Date(F.value||U.value);if(A.value!==ce.DATETIME_LOCAL&&A.value!==ce.DATE&&A.value!==ce.MONTH||(t.setFullYear(e.getFullYear()),t.setMonth(e.getMonth())),A.value!==ce.DATETIME_LOCAL&&A.value!==ce.DATE||t.setDate(e.getDate()),A.value!==ce.DATETIME_LOCAL&&A.value!==ce.TIME||(t.setHours(e.getHours()),t.setMinutes(e.getMinutes()),t.setSeconds(e.getSeconds())),F.value instanceof Date){if(H.value?.getTime()===t.getTime())return;return void(H.value=t)}return void(H.value=t.toISOString())}return void(H.value=u(e,A.value,R.value))}(H.value||X.value)&&(H.value=X.value)}}});function J(e){if(null==e)return q.value="",void(X.value="");if(v.iMask?.mask!==Date){if(A.value!==ce.NUMBER||!j.test(X.value)||0!==e){if(A.value===ce.DATE||A.value===ce.MONTH||A.value===ce.DATETIME_LOCAL||A.value===ce.TIME){if(e instanceof Date||r(e)){e instanceof Date?(F.value=e,U.value=void 0):(U.value=e,F.value=void 0);const t=new Date(e);return q.value=u(t,A.value,R.value),void(X.value=q.value)}F.value=void 0,U.value=void 0}q.value=e,X.value=`${q.value}`}}else q.value=e instanceof Date?e:new Date(e)}e.onMounted(()=>{Y.value&&(z.value=!0,J(v.modelValue))}),e.watch(()=>v.modelValue,e=>{Y.value&&J(e)}),e.watch(()=>v.masked,e=>{K.value=e??""});const Z=W,G=e.ref(),Q=e.ref(),ee=e.ref();l({$inner:G});const{focused:te}=function(t,o){const{focused:l}=a.useFocus(t);return e.watch(l,a=>{o(a?"focus":"blur",e.unref(t))}),{focused:l}}(Z,p),le=e.computed(()=>te.value&&!v.disabled&&!v.readonly);e.watch(le,e=>{if(e&&h.value.selectOnFocus&&Z.value&&Z.value.select(),e&&je.value?.size)ee.value?.show();else if(Ve.value&&je.value){const e=v.maxSuggestions;je.value.size>=e&&!je.value.has(H.value)&&(je.value=new Set([...je.value].slice(je.value.size-e+1))),je.value.add(H.value)}});const ie=a.useElementVisibility(Z);e.watch(ie,e=>{e&&v.autofocus&&!v.disabled&&!v.readonly&&(te.value=!0)});const re=e.ref(!1),fe=e.computed(()=>v.type===ce.PASSWORD);function me(){re.value=!re.value}const he=e.computed(()=>v.type===ce.TIME||v.type===ce.DATETIME_LOCAL||v.type===ce.DATE||v.type===ce.WEEK||v.type===ce.MONTH),Te=e.computed(()=>v.type===ce.NUMBER);function Le(){if(!Ie.value){if(v.iMask)return void(q.value=Number(q.value)+Number(N?.value??1));Z.value.stepUp(),H.value=Number(e.unref(Z).value)}}function De(){if(!Ie.value){if(v.iMask)return void(q.value=Number(q.value)-Number(N?.value??1));Z.value.stepDown(),H.value=Number(e.unref(Z).value)}}const Be=e.computed(()=>v.type===ce.SEARCH);function Ce(){H.value="",p("clear")}const{hasIconBefore:Oe,hasIconAfter:Ne}=pe(y,S),Pe=e.computed(()=>{if(void 0!==Ne.value)return Ne.value;switch(v.type){case ce.COLOR:return{name:B};case ce.DATE:case ce.DATETIME_LOCAL:case ce.WEEK:case ce.MONTH:return{name:L};case ce.TIME:return{name:D}}}),{hasIcon:Ae}=pe(w),{formatted:Me}=function(t,o){const a=e.computed(()=>(e.unref(t)??"").length),l=e.computed(()=>void 0!==o?.lowerLimit&&a.value<o?.lowerLimit?a.value-o.lowerLimit:void 0!==o?.upperLimit&&a.value<o?.upperLimit?o.upperLimit-a.value:0),n=e.computed(()=>{if(!1===o?.mode)return"";if("limit"===o?.mode&&o?.upperLimit)return`${a.value} / ${o.lowerLimit?`${o.lowerLimit}-`:""}${o.upperLimit}`;if("countdown"===o?.mode){if(0===l.value)return;return l}return a.value});return{length:a,gap:l,formatted:n}}(H,{mode:b.value,upperLimit:Number(T?.value),lowerLimit:Number(C?.value)}),Ie=e.computed(()=>v.disabled||v.readonly),_e=e.computed(()=>Ie.value?-1:v.tabindex),Ve=e.computed(()=>!s(O)),He=e.computed(()=>!0===E.value||!0!==M.value&&void 0),Re=e.computed(()=>v.storageKey??(m?.experimentalFeatures.forceInputSuggestions?v.name:void 0)),je=function(t,o=c.local,l){const n=e.ref();let i;return l&&(n.value=l),e.onMounted(()=>{t&&e.watch(t,(t,l)=>{const r=e.unref(o)===c.session?sessionStorage:localStorage;if(l&&l!==t&&r.removeItem(l),t)return i=a.useStorage(t,i?.value??n.value,r),void(i.value&&(n.value=i.value));i=void 0},{immediate:!0}),e.isRef(o)&&e.watch(o,(e,o)=>{if(t?.value){if(e){const o=e===c.session?sessionStorage:localStorage;i=a.useStorage(t.value,i?.value??n.value,o)}o&&o!==e&&(o===c.session?sessionStorage:localStorage).removeItem(t.value)}})}),e.watch(n,e=>{i&&(i.value=e)},{deep:!0,immediate:!0}),n}(Re,P,new Set),ze=e.computed(()=>je.value?[...je.value].filter(e=>s(H.value)||`${e}`.toLowerCase().includes(`${H.value}`.toLowerCase())&&e!==H.value).reverse():[]),Fe=e.computed(()=>Re?.value&&je.value&&je.value.size>0);const{modifiers:Ue}=e.toRefs(v),We=ae("vv-input-text",Ue,e.computed(()=>({valid:M.value,invalid:E.value,loading:$.value,disabled:v.disabled,required:v.required,readonly:v.readonly,"icon-before":!!Oe.value,"icon-after":!!Pe.value,floating:v.floating&&!s(v.label),dirty:Ve.value,focus:le.value&&!Ie.value,"auto-width":v.autoWidth}))),Ye=e.computed(()=>{const e=fe.value&&re.value?ce.TEXT:!he.value||Ve.value||te.value?v.iMask?ce.TEXT:v.type:ce.TEXT,t={type:e,name:v.name,tabindex:_e.value,disabled:v.disabled,readonly:v.readonly,required:v.required,autocomplete:v.autocomplete,"aria-invalid":He.value,"aria-describedby":Xe.value?_.value:void 0,"aria-errormessage":Je.value?_.value:void 0,inputMode:v.inputMode};if(e===ce.DATE||e===ce.MONTH||e===ce.WEEK||e===ce.TIME||e===ce.DATETIME_LOCAL||e===ce.NUMBER){let o=v.max;e!==ce.DATE||o||(o="9999-12-31"),t.step=v.step,t.max=void 0!==o?String(o):void 0,t.min=void 0!==v.min?String(v.min):void 0}return e!==ce.TEXT&&e!==ce.SEARCH&&e!==ce.URL&&e!==ce.TEL&&e!==ce.EMAIL&&e!==ce.PASSWORD&&e!==ce.NUMBER||(t.placeholder=V.value),e!==ce.TEXT&&e!==ce.SEARCH&&e!==ce.URL&&e!==ce.TEL&&e!==ce.EMAIL&&e!==ce.PASSWORD||(t.minlength=v.minlength,t.maxlength=v.maxlength,t.pattern=v.pattern),e===ce.EMAIL&&(t.multiple=v.multiple),t}),qe=e.computed(()=>({valid:v.valid,invalid:v.invalid,modelValue:v.modelValue,togglePassword:me,stepUp:Le,stepDown:De,clear:Ce})),{HintSlot:Ke,hasHintLabelOrSlot:Xe,hasInvalidLabelOrSlot:Je,hintSlotScope:Ze}=function(t,o){const a=e.computed(()=>e.isRef(t)?t.value:t),l=e.computed(()=>d(a.value.invalidLabel)),n=e.computed(()=>d(a.value.validLabel)),i=e.computed(()=>a.value.loadingLabel),r=e.computed(()=>a.value.hintLabel),u=e.computed(()=>Boolean(a.value.loading&&(o.loading||i.value))),s=e.computed(()=>!u.value&&Boolean(a.value.invalid&&(o.invalid||l.value))),c=e.computed(()=>!u.value&&!s.value&&Boolean(a.value.valid&&(o.valid||n.value))),v=e.computed(()=>!u.value&&!s.value&&!c.value&&Boolean(o.hint||r.value)),p=e.computed(()=>s.value||c.value||u.value||v.value),f=e.computed(()=>({modelValue:a.value.modelValue,valid:a.value.valid,invalid:a.value.invalid,loading:a.value.loading})),m=e.defineComponent({name:"HintSlot",props:{tag:{type:String,default:"small"}},setup:()=>({isVisible:p,invalidLabel:l,validLabel:n,loadingLabel:i,hintLabel:r,hasInvalidLabelOrSlot:s,hasValidLabelOrSlot:c,hasLoadingLabelOrSlot:u,hasHintLabelOrSlot:v}),render(){if(this.isVisible){let t;return this.hasInvalidLabelOrSlot&&(t="alert"),this.hasValidLabelOrSlot&&(t="status"),this.hasLoadingLabelOrSlot?e.h(this.tag,{role:t},this.$slots.loading?.()??this.loadingLabel):this.hasInvalidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.invalid?.()??this.$slots.invalid??this.invalidLabel):this.hasValidLabelOrSlot?e.h(this.tag,{role:t},this.$slots.valid?.()??this.validLabel):e.h(this.tag,{role:t},this.$slots.hint?.()??this.$slots.hint??this.hintLabel)}return null}});return{hasInvalidLabelOrSlot:s,hasHintLabelOrSlot:v,hasValidLabelOrSlot:c,hasLoadingLabelOrSlot:u,hintSlotScope:f,HintSlot:m}}(h,f),Ge=be(ce.PASSWORD,v,Ve),Qe=be(ce.NUMBER,v,Ve),et=be(ce.SEARCH,v,Ve);function tt(){Ie.value||(te.value=!0)}const ot=e.computed(()=>{if(v.autoWidth)return{width:void 0!==H.value?`${String(H.value).length+1}ch`:void 0}});function at(e){switch(e.code){case"ArrowUp":Te.value&&(Le(),e.preventDefault());break;case"ArrowDown":Te.value&&(De(),e.preventDefault())}p("keydown",e)}return(t,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(We))},[e.unref(x)?(e.openBlock(),e.createElementBlock("label",{key:0,for:e.unref(I),class:"vv-input-text__label"},e.toDisplayString(e.unref(x)),9,ge)):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{ref_key:"wrapperEl",ref:Q,class:"vv-input-text__wrapper"},[t.$slots.before?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(t.$slots,"before",e.normalizeProps(e.guardReactiveProps(e.unref(qe))))])):e.createCommentVNode("v-if",!0),e.createElementVNode("div",{ref_key:"innerEl",ref:G,class:"vv-input-text__inner",onClick:e.withModifiers(tt,["stop"])},[e.unref(Oe)?(e.openBlock(),e.createBlock(de,e.mergeProps({key:0},e.unref(Oe),{class:"vv-input-text__icon"}),null,16)):e.createCommentVNode("v-if",!0),e.createElementVNode("input",e.mergeProps({id:e.unref(I),ref_key:"inputEl",ref:Z},e.unref(Ye),{style:e.unref(ot),onKeyup:o[0]||(o[0]=e=>p("keyup",e)),onKeydown:at,onKeypress:o[1]||(o[1]=e=>p("keypress",e))}),null,16,Se),(t.unit||t.$slots.unit)&&e.unref(Ve)?(e.openBlock(),e.createElementBlock("div",we,[e.renderSlot(t.$slots,"unit",e.normalizeProps(e.guardReactiveProps(e.unref(qe))),()=>[e.createTextVNode(e.toDisplayString(t.unit),1)])])):e.createCommentVNode("v-if",!0)],512),e.unref(Pe)?(e.openBlock(),e.createBlock(de,e.mergeProps({key:1},e.unref(Pe),{class:"vv-input-text__icon vv-input-text__icon-after"}),null,16)):!e.unref(fe)||t.hideActions||e.unref(Ie)?!e.unref(Te)||t.hideActions||e.unref(Ie)?!e.unref(Be)||t.hideActions||e.unref(Ie)?e.createCommentVNode("v-if",!0):(e.openBlock(),e.createBlock(e.unref(et),{key:4,onClear:Ce})):(e.openBlock(),e.createBlock(e.unref(Qe),{key:3,onStepUp:Le,onStepDown:De})):(e.openBlock(),e.createBlock(e.unref(Ge),{key:2,onTogglePassword:me})),t.$slots.after?(e.openBlock(),e.createElementBlock("div",ke,[e.renderSlot(t.$slots,"after",e.normalizeProps(e.guardReactiveProps(e.unref(qe))))])):e.createCommentVNode("v-if",!0),e.unref(b)?(e.openBlock(),e.createElementBlock("span",Ee,[e.renderSlot(t.$slots,"count",e.normalizeProps(e.guardReactiveProps(e.unref(qe))),()=>[e.createTextVNode(e.toDisplayString(e.unref(Me)),1)])])):e.createCommentVNode("v-if",!0)],512),e.createVNode(e.unref(Ke),{id:e.unref(_),class:"vv-input-text__hint"},e.createSlots({_:2},[t.$slots.hint?{name:"hint",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"hint",e.normalizeProps(e.guardReactiveProps(e.unref(Ze))))]),key:"0"}:void 0,t.$slots.loading?{name:"loading",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"loading",e.normalizeProps(e.guardReactiveProps(e.unref(Ze))))]),key:"1"}:void 0,t.$slots.valid?{name:"valid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"valid",e.normalizeProps(e.guardReactiveProps(e.unref(Ze))))]),key:"2"}:void 0,t.$slots.invalid?{name:"invalid",fn:e.withCtx(()=>[e.renderSlot(t.$slots,"invalid",e.normalizeProps(e.guardReactiveProps(e.unref(Ze))))]),key:"3"}:void 0]),1032,["id"]),e.unref(Fe)?(e.openBlock(),e.createBlock(ne,{key:1,ref_key:"suggestionsDropdownEl",ref:ee,reference:e.unref(Q),"autofocus-first":!1,"trigger-width":!0},{items:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(ze),o=>(e.openBlock(),e.createBlock(ue,{key:o,onClick:e.withModifiers(e=>{return t=o,H.value=t,ee.value?.hide(),void p("suggestion:selected",t);var t},["stop"])},{default:e.withCtx(()=>[e.createElementVNode("div",xe,[e.renderSlot(t.$slots,"suggestion",e.mergeProps({ref_for:!0},{value:o}),()=>[e.createTextVNode(e.toDisplayString(o),1)])]),e.unref(je)&&e.unref(Ae)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",tabindex:"-1",class:"cursor-pointer",title:t.labelRemoveSuggestion,onClick:e.withModifiers(e=>{return t=o,je.value?.delete(t),void p("suggestion:removed",t);var t},["stop"])},[e.createVNode(de,e.mergeProps({ref_for:!0},e.unref(Ae)),null,16)],8,$e)):e.createCommentVNode("v-if",!0)]),_:2},1032,["onClick"]))),128))]),_:3},8,["reference"])):e.createCommentVNode("v-if",!0)],2))}})});