@useinsider/ab-components 0.0.21 → 0.0.22
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.
- package/dist/ab-components.cjs.js +1 -1
- package/dist/ab-components.cjs.js.map +1 -1
- package/dist/ab-components.css +1 -1
- package/dist/ab-components.es.js +370 -379
- package/dist/ab-components.es.js.map +1 -1
- package/dist/ab-components.iife.js +1 -1
- package/dist/ab-components.iife.js.map +1 -1
- package/dist/ab-components.umd.js +1 -1
- package/dist/ab-components.umd.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),pe="_button__size_default_1vdmr_1",de="_button__size_small_1vdmr_8",me="_icon_1vdmr_136",fe="_spinner_1vdmr_1",be="_button_1vdmr_1",ve="_button__label_1vdmr_212",ge="_button__solid_1vdmr_224",we="_fill_1vdmr_1144",M={button__size_default:pe,button__size_small:de,icon:me,spinner:fe,button:be,button__label:ve,"button__solid-primary":"_button__solid-primary_1vdmr_224","no-hover-effect":"_no-hover-effect_1vdmr_231","button--selected":"_button--selected_1vdmr_253","button__solid-subtle-primary":"_button__solid-subtle-primary_1vdmr_260","button__solid-secondary":"_button__solid-secondary_1vdmr_296","button__solid-danger":"_button__solid-danger_1vdmr_332","button__solid-warning":"_button__solid-warning_1vdmr_368","button__solid-smart":"_button__solid-smart_1vdmr_404","button__ghost-primary":"_button__ghost-primary_1vdmr_440","button__ghost-subtle-primary":"_button__ghost-subtle-primary_1vdmr_476","button__ghost-secondary":"_button__ghost-secondary_1vdmr_512","button__ghost-danger":"_button__ghost-danger_1vdmr_548","button__ghost-warning":"_button__ghost-warning_1vdmr_584","button__ghost-smart":"_button__ghost-smart_1vdmr_620","button__text-primary":"_button__text-primary_1vdmr_656","button__text-text":"_button__text-text_1vdmr_692","button__text-subtle-primary":"_button__text-subtle-primary_1vdmr_728","button__text-secondary":"_button__text-secondary_1vdmr_764","button__text-danger":"_button__text-danger_1vdmr_800","button__text-warning":"_button__text-warning_1vdmr_836","button__text-smart":"_button__text-smart_1vdmr_872","button__outline-primary":"_button__outline-primary_1vdmr_908","button__outline-subtle-primary":"_button__outline-subtle-primary_1vdmr_945","button__outline-secondary":"_button__outline-secondary_1vdmr_982","button__outline-danger":"_button__outline-danger_1vdmr_1019","button__outline-warning":"_button__outline-warning_1vdmr_1056","button__outline-smart":"_button__outline-smart_1vdmr_1093",button__solid:ge,fill:we},he=["disabled"],ke=e.defineComponent({__name:"Button",props:{variant:{},color:{},size:{default:"default"},leftIconName:{},rightIconName:{},loadingStatus:{type:Boolean,default:!1},successStatus:{type:Boolean,default:!1},label:{},disabled:{type:Boolean,default:!1},fill:{type:Boolean,default:!1}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,a=c=>{r.disabled||o("click",c)},s=e.computed(()=>r.loadingStatus?"loading-circle":r.successStatus?"line-check-natural":r.leftIconName);return(c,t)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass([e.unref(M).button,e.unref(M)[`button__${c.variant}`],e.unref(M)[`button__${c.variant}-${c.color}`],e.unref(M)[`button__size_${c.size}`],{[e.unref(M).fill]:c.fill}]),disabled:r.disabled,onClick:a},[s.value?(e.openBlock(),e.createBlock(e.unref(T),{key:0,name:s.value},null,8,["name"])):e.createCommentVNode("",!0),c.label?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(M).button__label)},e.toDisplayString(c.label),3)):e.createCommentVNode("",!0),c.rightIconName?(e.openBlock(),e.createBlock(e.unref(T),{key:2,name:c.rightIconName},null,8,["name"])):e.createCommentVNode("",!0)],10,he))}}),ye={mounted(_,n){_.clickOutsideEvent=r=>{const o=(n.value.exclude||[]).filter(s=>s.value).map(s=>s.value);[_,...o].some(s=>s&&(s===r.target||s.contains(r.target)))||n.value.handler()},document.addEventListener("click",_.clickOutsideEvent)},unmounted(_){_.clickOutsideEvent&&document.removeEventListener("click",_.clickOutsideEvent)}},ze=(_,n)=>{var o;let r=0;for(const a of _)if(a.toLowerCase()===((o=n[r])==null?void 0:o.toLowerCase())&&r++,r===n.length)return!0;return!1},Ce=(_,n,r)=>{if(!r.trim())return _;const o=r.toLowerCase();return _.filter(a=>{const s=String(a[n]);return ze(s.toLowerCase(),o)}).sort((a,s)=>{const c=String(a[n]).toLowerCase(),t=String(s[n]).toLowerCase();return c===o?-1:t===o?1:c.startsWith(o)&&!t.startsWith(o)?-1:!c.startsWith(o)&&t.startsWith(o)?1:c.length-t.length})},Be="_dropdown_18zqi_1",$e="_menu_18zqi_1",xe="_icon_18zqi_129",Se="_spinner_18zqi_1",Ee="_dropdown__valueContent_18zqi_202",Ve="_dropdown__label_18zqi_213",Ne="_dropdown__value_18zqi_202",Ie="_dropdown__placeholder_18zqi_221",Pe="_dropdown__arrowIcon_18zqi_229",Me="_menu__searchContainer_18zqi_244",Te="_menu__searchInputWrap_18zqi_248",qe="_menu__searchInput_18zqi_248",He="_menu__errorMessage_18zqi_270",De="_menu__addButton_18zqi_277",Le="_menu__itemContainer_18zqi_285",Oe="_menu__item_18zqi_285",v={dropdown:Be,menu:$e,icon:xe,spinner:Se,dropdown__valueContent:Ee,"dropdown__valueContent--open":"_dropdown__valueContent--open_18zqi_210",dropdown__label:Ve,dropdown__value:Ne,dropdown__placeholder:Ie,dropdown__arrowIcon:Pe,menu__searchContainer:Me,menu__searchInputWrap:Te,menu__searchInput:qe,"menu__searchInput--error":"_menu__searchInput--error_18zqi_267",menu__errorMessage:He,menu__addButton:De,menu__itemContainer:Le,menu__item:Oe,"menu__item--active":"_menu__item--active_18zqi_323"},We=["for"],Ae=["placeholder"],Re=["onClick"],Fe=e.defineComponent({__name:"DropdownMenu",props:{id:{},label:{},modelValue:{default:""},menuHeight:{default:154},placeholder:{},addable:{type:Boolean},addButtonText:{},searchable:{type:Boolean},searchPlaceHolder:{},items:{},validateAddItem:{type:Function,default:()=>null}},emits:["update:modelValue","add-error","item-added","select-item"],setup(_,{emit:n}){const r=ye,o=_,a=n,s=e.ref(),c=e.ref(),t=e.ref(!1),l=e.ref(null),d=e.ref(""),u=e.ref(null),y=e.ref({x:0,y:0,width:0,shouldOpenUp:!1,height:o.menuHeight}),C=e.reactive([...o.items]),k=e.reactive([...o.items]),P=()=>{if(!s.value)return;const{offsetTop:p,offsetLeft:m,offsetWidth:g}=s.value,S=window.innerHeight,q=p+s.value.offsetHeight,A=q+o.menuHeight>S;y.value={x:m+window.scrollX,y:A?p+window.scrollY:q+window.scrollY,width:g,shouldOpenUp:A,height:o.menuHeight}},h=()=>{P(),t.value=!t.value},x=()=>{u.value=null,d.value="",C.splice(0,C.length,...k)},L=()=>{t.value=!1,x()},G=p=>{l.value=p,a("select-item",p),a("update:modelValue",p.value),L()},N=()=>{const p=d.value.trim(),m=o.validateAddItem(p,k);if(m){u.value=m,a("add-error",m);return}const g={text:p,value:p};k.push(g),x(),a("item-added",g)},Y=()=>{const p=Ce(k,"text",d.value);C.splice(0,C.length,...p)},O=()=>{u.value=""},X=e.computed(()=>({top:y.value.shouldOpenUp?`${y.value.y-10}px`:`${y.value.y}px`,left:`${y.value.x}px`,width:`${y.value.width}px`,height:`${o.menuHeight}px`}));e.onMounted(()=>{if(P(),o.modelValue){const p=k.find(m=>m.value===o.modelValue);p&&(l.value=p)}});const W=e.computed(()=>l.value?l.value.text:"");e.watch(()=>o.modelValue,p=>{var m;if(((m=l.value)==null?void 0:m.value)!==p){const g=k.find(S=>S.value===p);g&&(l.value=g)}}),e.watch(()=>o.items,p=>{k.splice(0,k.length,...p),C.splice(0,C.length,...p)},{deep:!0});const U=e.ref({handler:L,exclude:[s,c]});return(p,m)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"dropdownRef",ref:s,class:e.normalizeClass(e.unref(v).dropdown)},[p.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref(v).dropdown__label),for:p.id},e.toDisplayString(p.label),11,We)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass([e.unref(v).dropdown__valueContent,{[e.unref(v)["dropdown__valueContent--open"]]:t.value}]),onClick:h},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(v).dropdown__value)},e.toDisplayString(W.value),3),p.placeholder&&!W.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(v).dropdown__placeholder)},e.toDisplayString(p.placeholder),3)):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{fill:"none",height:"17",viewBox:"0 0 16 17",width:"16",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass(e.unref(v).dropdown__arrowIcon)},m[2]||(m[2]=[e.createElementVNode("path",{d:"M8 11.2021L4.5359 6.70215L11.4641 6.70215L8 11.2021Z",fill:"#91949F"},null,-1)]),2))],2)],2),e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref_key:"menuRef",ref:c,class:e.normalizeClass(e.unref(v).menu),style:e.normalizeStyle(X.value),onClick:m[1]||(m[1]=e.withModifiers(()=>{},["prevent"]))},[o.searchable?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(v).menu__searchContainer)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(v).menu__searchInputWrap)},[e.withDirectives(e.createElementVNode("input",{type:"text",class:e.normalizeClass([e.unref(v).menu__searchInput,{[e.unref(v)["menu__searchInput--error"]]:u.value}]),placeholder:p.searchPlaceHolder,"onUpdate:modelValue":m[0]||(m[0]=g=>d.value=g),onFocus:O,onInput:Y},null,42,Ae),[[e.vModelText,d.value]]),u.value?(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(e.unref(v).menu__errorMessage)},e.toDisplayString(u.value),3)):e.createCommentVNode("",!0)],2),o.addable?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(e.unref(v).menu__addButton),onClick:N},e.toDisplayString(p.addButtonText),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("ul",{class:e.normalizeClass(e.unref(v).menu__itemContainer)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(g,S)=>(e.openBlock(),e.createElementBlock("li",{key:`${g.value}-${S}`,class:e.normalizeClass([e.unref(v).menu__item,{[e.unref(v)["menu__item--active"]]:l.value&&g.value===l.value.value}]),onClick:q=>G(g)},e.toDisplayString(g.text),11,Re))),128))],2)],6)),[[e.vShow,t.value],[e.unref(r),U.value]])],64))}}),Ge=["fill","height","width"],Ye=["xlink:href"],Xe=e.defineComponent({__name:"Icon",props:{name:{},size:{default:16},color:{}},setup(_){const n=_,r=e.computed(()=>typeof n.size=="number"?`${n.size}px`:n.size);return(o,a)=>(e.openBlock(),e.createElementBlock("svg",{class:"icon",fill:o.color||"currentColor",height:r.value,width:r.value},[e.createElementVNode("use",{"xlink:href":`#${o.name}`},null,8,Ye)],8,Ge))}}),Ue=(_,n)=>{const r=_.__vccOpts||_;for(const[o,a]of n)r[o]=a;return r},T=Ue(Xe,[["__scopeId","data-v-f04c8857"]]),je="_container_wovmm_1",Qe="_icon_wovmm_127",Ze="_spinner_wovmm_1",Je="_container__text_wovmm_204",Ke="_container__default_wovmm_208",et="_container__warning_wovmm_216",tt="_container__alert_wovmm_224",ot="_container__success_wovmm_232",Z={container:je,icon:Qe,spinner:Ze,container__text:Je,container__default:Ke,container__warning:et,container__alert:tt,container__success:ot},nt=e.defineComponent({__name:"OnPageMessage",props:{variant:{default:"default"},text:{}},setup(_){const n=_,r=e.computed(()=>{switch(n.variant){case"alert":return"icon-info-box-error";case"warning":return"line-caution-triangle";case"success":return"line-check-natural";default:return"filled-info-circle"}});return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(Z).container,e.unref(Z)[`container__${o.variant}`]])},[e.createVNode(T,{name:r.value,size:24},null,8,["name"]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(Z).container__text)},e.toDisplayString(o.text),3)],2))}}),rt="_button__size_default_1r6q6_1",at="_button__size_small_1r6q6_8",lt="_icon_1r6q6_136",st="_spinner_1r6q6_1",it="_button_1r6q6_1",_t="_button__label_1r6q6_210",ut="_button__solid_1r6q6_349",ct="_segmentGroup_1r6q6_356",pt="_fill_1r6q6_378",B={button__size_default:rt,button__size_small:at,icon:lt,spinner:st,button:it,button__label:_t,"button--primary":"_button--primary_1r6q6_227","button--selected":"_button--selected_1r6q6_237","button--secondary":"_button--secondary_1r6q6_250","button--danger":"_button--danger_1r6q6_273","button--warning":"_button--warning_1r6q6_296","button--smart":"_button--smart_1r6q6_319",button__solid:ut,segmentGroup:ct,"segmentGroup--vertical":"_segmentGroup--vertical_1r6q6_359","segmentGroup--horizontal":"_segmentGroup--horizontal_1r6q6_368",fill:pt},dt=["disabled","onClick"],mt=e.defineComponent({__name:"SegmentButton",props:{color:{},size:{default:"default"},align:{default:"horizontal"},disabled:{type:Boolean,default:!1},segments:{},fill:{type:Boolean},modelValue:{}},emits:["update:modelValue","click"],setup(_,{emit:n}){const r=_,o=n,a=e.ref(r.modelValue||""),s=t=>{r.disabled||t.disabled||(a.value=t.value,o("update:modelValue",t.value),o("click",t.value))};e.watch(()=>r.modelValue,t=>{a.value!==t&&(a.value=t||"")});const c=e.ref([...r.segments]);return e.watch(()=>r.segments,t=>{c.value=[...t],t.some(l=>l.value===a.value)||(a.value="",o("update:modelValue",""))},{deep:!0}),(t,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(B).segmentGroup,e.unref(B)[`segmentGroup--${t.align}`],{[e.unref(B).fill]:t.fill}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.value,(d,u)=>(e.openBlock(),e.createElementBlock("button",{key:`${d.value}-${u}`,class:e.normalizeClass([e.unref(B).button,e.unref(B)[`button--${t.color}`],e.unref(B)[`button__size_${t.size}`],e.unref(B).fill,{[e.unref(B)["button--selected"]]:d.value===a.value}]),disabled:d.disabled||r.disabled,onClick:y=>s(d)},[d.icon?(e.openBlock(),e.createBlock(e.unref(T),{key:0,name:d.icon},null,8,["name"])):e.createCommentVNode("",!0),d.label?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(B).button__label)},e.toDisplayString(d.label),3)):e.createCommentVNode("",!0)],10,dt))),128))],2))}}),ft="_wrapper__field_l1d3k_1",bt="_wrapper__label_l1d3k_1",vt="_wrapper__errorMessage_l1d3k_1",gt="_wrapper__counter_l1d3k_1",wt="_icon_l1d3k_129",ht="_spinner_l1d3k_1",kt="_wrapper_l1d3k_1",yt="_wrapper__bottom_l1d3k_240",$={wrapper__field:ft,wrapper__label:bt,wrapper__errorMessage:vt,wrapper__counter:gt,icon:wt,spinner:ht,wrapper:kt,wrapper__bottom:yt,"wrapper--error":"_wrapper--error_l1d3k_253"},zt=["for"],Ct=["id","maxlength","name","placeholder","value"],Bt=["id","maxlength","name","placeholder","value"],$t=e.defineComponent({__name:"TextInput",props:{id:{},name:{},modelValue:{default:""},label:{default:""},placeholder:{default:""},maxLength:{default:void 0},maxHeight:{default:void 0},error:{default:""},multiline:{type:Boolean,default:!1},autoGrow:{type:Boolean,default:!1},counter:{type:Boolean}},emits:["update:modelValue","input","change","paste","focus","blur"],setup(_,{emit:n}){const r=_,o=n,a=e.ref(null),s=()=>{if(r.autoGrow&&a.value){a.value.style.height="";const t=Math.min(a.value.scrollHeight,r.maxHeight||a.value.scrollHeight);a.value.style.height=`${t}px`}},c=t=>{const l=t.target;o("input",t),o("update:modelValue",l.value),s()};return e.onMounted(()=>{s()}),(t,l)=>{var d;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref($).wrapper)},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref($).wrapper__label),for:t.id},e.toDisplayString(t.label),11,zt)):e.createCommentVNode("",!0),t.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,id:t.id,ref_key:"textareaRef",ref:a,class:e.normalizeClass([e.unref($).wrapper__field,{[e.unref($)["wrapper--error"]]:t.error}]),maxlength:t.maxLength,name:t.name,placeholder:t.placeholder,style:e.normalizeStyle(t.maxHeight?{maxHeight:`${t.maxHeight}px`}:void 0),value:t.modelValue,onBlur:l[0]||(l[0]=u=>o("blur",u)),onChange:l[1]||(l[1]=u=>t.$emit("change",u)),onFocus:l[2]||(l[2]=u=>o("focus",u)),onInput:c,onPaste:l[3]||(l[3]=u=>o("paste",u))},null,46,Ct)):(e.openBlock(),e.createElementBlock("input",{key:2,id:t.id,type:"text",class:e.normalizeClass([e.unref($).wrapper__field,{[e.unref($)["wrapper--error"]]:t.error}]),maxlength:t.maxLength,name:t.name,placeholder:t.placeholder,value:t.modelValue,onBlur:l[4]||(l[4]=u=>o("blur",u)),onChange:l[5]||(l[5]=u=>t.$emit("change",u)),onFocus:l[6]||(l[6]=u=>o("focus",u)),onInput:c,onPaste:l[7]||(l[7]=u=>o("paste",u))},null,42,Bt)),e.createElementVNode("div",{class:e.normalizeClass(e.unref($).wrapper__bottom)},[t.error?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref($).wrapper__errorMessage)},e.toDisplayString(t.error),3)):e.createCommentVNode("",!0),t.counter?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref($).wrapper__counter)},e.toDisplayString(((d=t.modelValue)==null?void 0:d.toString().length)||0),3)):e.createCommentVNode("",!0)],2)],2)}}}),xt="_wrapper__label_k2iss_1",St="_wrapper__errorMessage_k2iss_1",Et="_wrapper__counter_k2iss_1",Vt="_wrapper_k2iss_1",Nt="_wrapper__field_k2iss_8",It="_icon_k2iss_134",Pt="_spinner_k2iss_1",Mt="_wrapper__size_default_k2iss_204",Tt="_wrapper__size_small_k2iss_207",qt="_wrapper__bottom_k2iss_244",E={wrapper__label:xt,wrapper__errorMessage:St,wrapper__counter:Et,wrapper:Vt,wrapper__field:Nt,icon:It,spinner:Pt,wrapper__size_default:Mt,wrapper__size_small:Tt,wrapper__bottom:qt,"wrapper--error":"_wrapper--error_k2iss_257"},Ht=["for"],Dt=["id","max","maxlength","min","name","placeholder","value"],Lt=e.defineComponent({__name:"NumberInput",props:{id:{},name:{},modelValue:{default:void 0},label:{default:""},placeholder:{default:""},maxLength:{default:void 0},error:{default:""},errorStatus:{type:Boolean},counter:{type:Boolean},min:{default:void 0},max:{default:void 0},size:{default:"default"}},emits:["update:modelValue","input","change","paste","focus","blur"],setup(_,{emit:n}){const r=_,o=n,a=t=>{if(t==="")return t;const l=Number(t);return typeof r.min=="number"&&l<r.min?r.min.toString():typeof r.max=="number"&&l>r.max?r.max.toString():l.toString()},s=t=>{const l=t.target,d=a(l.value);l.value=d,o("input",t),o("update:modelValue",Number(d))},c=t=>{const l=t.target,d=l.value,u=a(l.value===""?String(r.min||0):l.value);l.value=u,o("blur",t),d!==u&&o("update:modelValue",Number(u))};return(t,l)=>{var d;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(E).wrapper,e.unref(E)[`wrapper__size_${t.size}`]])},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref(E).wrapper__label),for:t.id},e.toDisplayString(t.label),11,Ht)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:t.id,type:"number",class:e.normalizeClass([e.unref(E).wrapper__field,{[e.unref(E)["wrapper--error"]]:t.error||t.errorStatus}]),max:t.max,maxlength:t.maxLength,min:t.min,name:t.name,placeholder:t.placeholder,value:t.modelValue,onBlur:c,onChange:l[0]||(l[0]=u=>t.$emit("change",u)),onFocus:l[1]||(l[1]=u=>o("focus",u)),onInput:s,onPaste:l[2]||(l[2]=u=>o("paste",u))},null,42,Dt),t.counter||t.error?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(E).wrapper__bottom)},[t.error?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(E).wrapper__errorMessage)},e.toDisplayString(t.error),3)):e.createCommentVNode("",!0),t.counter?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(E).wrapper__counter)},e.toDisplayString(((d=t.modelValue)==null?void 0:d.toString().length)||0),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)}}}),Ot="_icon_15ntm_122",Wt="_spinner_15ntm_1",At="_wrapper_15ntm_188",Rt="_wrapper__label_15ntm_195",Ft="_wrapper__input_15ntm_219",Gt="_wrapper_checked_15ntm_229",Yt="_wrapper_disabled_15ntm_236",D={icon:Ot,spinner:Wt,wrapper:At,wrapper__label:Rt,wrapper__input:Ft,wrapper_checked:Gt,wrapper_disabled:Yt},Xt=["id","checked","disabled","name"],Ut=["for"],jt=e.defineComponent({__name:"Toggle",props:{id:{},name:{},checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,a=()=>{o("click",!r.checked)};return(s,c)=>(e.openBlock(),e.createElementBlock("fieldset",{class:e.normalizeClass([e.unref(D).wrapper,{[e.unref(D).wrapper_checked]:s.checked,[e.unref(D).wrapper_disabled]:s.disabled}])},[e.createElementVNode("input",{id:s.id,type:"checkbox",checked:s.checked,class:e.normalizeClass(e.unref(D).wrapper__input),disabled:s.disabled,name:s.name,onClick:a},null,10,Xt),e.createElementVNode("label",{class:e.normalizeClass(e.unref(D).wrapper__label),for:s.id},null,10,Ut)],2))}});function Qt(_=""){return typeof _=="string"?_.replace(/<\/style>/gi,"").replace(/<(.*?) on(.*?)=['"](.*?)>/gi,"").replace(/(<meta |<style|<\/*script)(.*?)>/gi,"").replace(/(<([^>]+)>)/ig,"").replace(/<(.*?) (href|src)="j(.*)a(.*)v(.*)a(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t(.*):(.*?)>/gi,""):_}const Zt="_wrapper__box_49orz_1",Jt="_icon_49orz_129",Kt="_spinner_49orz_1",eo="_wrapper_49orz_1",to="_wrapper__icon_49orz_203",oo="_wrapper__text_49orz_286",V={wrapper__box:Zt,icon:Jt,spinner:Kt,wrapper:eo,wrapper__icon:to,"wrapper__box_bottom-start":"_wrapper__box_bottom-start_49orz_218","wrapper__box_bottom-center":"_wrapper__box_bottom-center_49orz_224","wrapper__box_bottom-end":"_wrapper__box_bottom-end_49orz_230","wrapper__box_top-start":"_wrapper__box_top-start_49orz_236","wrapper__box_top-center":"_wrapper__box_top-center_49orz_242","wrapper__box_top-end":"_wrapper__box_top-end_49orz_248","wrapper__box_right-start":"_wrapper__box_right-start_49orz_254","wrapper__box_right-center":"_wrapper__box_right-center_49orz_260","wrapper__box_right-end":"_wrapper__box_right-end_49orz_266","wrapper__box_left-start":"_wrapper__box_left-start_49orz_271","wrapper__box_left-center":"_wrapper__box_left-center_49orz_276","wrapper__box_left-end":"_wrapper__box_left-end_49orz_281",wrapper__text:oo,"wrapper__box-content":"_wrapper__box-content_49orz_315","bottom-entrance":"_bottom-entrance_49orz_328","top-entrance":"_top-entrance_49orz_331","left-entrance":"_left-entrance_49orz_334","right-entrance":"_right-entrance_49orz_337","bottom-leave":"_bottom-leave_49orz_340","top-leave":"_top-leave_49orz_343","right-leave":"_right-leave_49orz_346","left-leave":"_left-leave_49orz_349"},no=["id"],ro=["innerHTML"],ao=e.defineComponent({__name:"Tooltip",props:{id:{},text:{},staticPosition:{default:"top center"},dynamicPosition:{type:Boolean},absolutePositionStatus:{type:Boolean,default:!1},offsetX:{default:4},offsetY:{default:4},maxHeight:{default:320},status:{type:Boolean,default:!0},preventXss:{type:Boolean},iconName:{default:void 0},absoluteTriangleAlignment:{default:"center"},absoluteTrianglePosition:{default:"top"},absolutePosition:{type:[Boolean,null,String,Object,Array]}},setup(_){const n=_,r=e.ref(null),o=e.ref("center"),a=e.ref("bottom"),s=e.ref("center"),c=e.ref(!1),t=e.ref(""),l=e.ref(!1),d=e.ref(!1),u=e.ref(""),y=e.ref("d-n"),C=e.ref(null),k=e.ref(null),P=e.ref(null),h=e.computed(()=>n.staticPosition.split(" ")[0]),x=e.computed(()=>n.staticPosition.split(" ")[1]),L=e.computed(()=>n.iconName?"mt-1":"mt-0"),G=e.computed(()=>n.preventXss?Qt(n.text):n.text),N=e.computed(()=>n.absolutePositionStatus?n.absoluteTrianglePosition:n.dynamicPosition&&c.value?a.value==="bottom"?"top":"bottom":h.value==="top"?"bottom":h.value==="bottom"?"top":h.value==="left"?"right":h.value==="right"?"left":"bottom"),Y=e.computed(()=>n.absolutePositionStatus?"":l.value&&d.value||u.value==="icon"&&l.value?"opa-1":"opa-0"),O=e.computed(()=>n.absolutePositionStatus?n.absoluteTriangleAlignment:n.dynamicPosition&&c.value?o.value==="center"?"center":o.value==="end"?"end":o.value==="start"?"start":s.value:x.value==="center"?"center":x.value==="left"||x.value==="top"?"start":x.value==="right"||x.value==="bottom"?"end":"center"),X=e.computed(()=>n.absolutePositionStatus?"":n.dynamicPosition&&c.value?V[`wrapper__box_${a.value}-${o.value}`]:V[`wrapper__box_${h.value}-${O.value}`]),W=e.computed(()=>n.offsetX===0&&n.offsetY===0?{}:n.dynamicPosition?{[`margin-${a.value==="bottom"?"top":"bottom"}`]:`${n.offsetY}px`}:N.value==="top"||N.value==="bottom"?{[`margin-${N.value}`]:`${n.offsetY}px`}:{[`margin-${N.value}`]:`${n.offsetX}px`}),U=i=>{const{offsetTop:f,offsetLeft:b,offsetWidth:z,offsetHeight:H}=i,I=f+H,Q=b+z;return{top:f,left:b,width:z,bottom:I,right:Q}},p=(i,f,b=!1)=>{if(!i||!k.value)return{left:!1,right:!1,top:!1,bottom:!1,center:!1};const z={left:0,right:0,top:0,bottom:0,width:0,height:0},H=k.value.offsetHeight,I=window.innerWidth,Q=window.innerHeight,J=i.offsetHeight,R=i.offsetWidth||264,w=f&&U(f)||z,K=b?w==null?void 0:w.right:w==null?void 0:w.left,ee=b?w==null?void 0:w.top:w==null?void 0:w.bottom,ie=K+w.width+R+n.offsetX<I,_e=K+w.width/2-(R+n.offsetX)>10,ue=ee+J<Q-n.offsetY,ce=ee-(J+H+n.offsetY)>0;let te=!1;return n.iconName&&(te=w.right+R/2<I&&w.left-(R+n.offsetX)/2>=10),{left:_e,right:ie,bottom:ue,top:ce,center:te}},m=()=>{e.nextTick(()=>{var I;c.value=!0;const{bottom:i,left:f,right:b,top:z,center:H}=p(P.value,(I=P.value)==null?void 0:I.parentNode);if(H){o.value="center",a.value=i&&!z?"bottom":"top";return}if(i&&f&&b&&z){o.value="center",a.value="top";return}if(z&&!i){if(b&&f){o.value="center",a.value="top";return}if(b&&!f){o.value="start",a.value="top";return}if(!b&&f){o.value="end",a.value="top";return}}if(i&&z){if(!b&&f){o.value="end",a.value="top",s.value="end";return}if(b&&!f){o.value="start",a.value="top",s.value="start";return}}if(i&&!z){if(b&&f){o.value="center",a.value="bottom",s.value="top";return}if(!b&&f){o.value="end",a.value="bottom",s.value="top";return}b&&!f&&(o.value="start",a.value="bottom",s.value="top")}})},g=i=>{if(!(i instanceof HTMLElement))return!1;const f=i.scrollHeight>i.offsetHeight,b=window.getComputedStyle(i).overflowY,z=["auto","scroll"].includes(b);return f&&z},S=i=>{const f=(i==null?void 0:i.nodeType)===Node.COMMENT_NODE,b=(i==null?void 0:i.nodeType)===Node.DOCUMENT_NODE;return!i||f||b?document:g(i)?i:S(i.parentNode)},q=()=>{var i;(i=C.value)==null||i.removeEventListener("scroll",m),window==null||window.removeEventListener("resize",m)},A=()=>{e.nextTick(()=>{var i;C.value=S(k.value),(i=C.value)==null||i.addEventListener("scroll",m),window==null||window.addEventListener("resize",m)})},ne=()=>{u.value="wrapper",y.value="d-b",l.value=!0},j=()=>{u.value="icon",y.value="d-b",d.value=!0},re=()=>{d.value=!1},ae=()=>{u.value="",l.value=!1,d.value=!1},le=()=>{ae(),n.dynamicPosition?a.value==="bottom"?t.value="bottom-leave":a.value==="top"&&(t.value="top-leave"):h.value==="top"?t.value="top-leave":h.value==="bottom"?t.value="bottom-leave":h.value==="left"?t.value="left-leave":h.value==="right"&&(t.value="right-leave"),setTimeout(()=>{t.value="",y.value="d-n"},n.absolutePositionStatus?0:250)},se=()=>{ne(),m(),n.dynamicPosition?a.value==="bottom"?t.value="top-entrance":a.value==="top"&&(t.value="bottom-entrance"):h.value==="top"?t.value="bottom-entrance":h.value==="bottom"?t.value="top-entrance":h.value==="left"?t.value="right-entrance":h.value==="right"&&(t.value="left-entrance"),setTimeout(()=>{t.value=""},250)};return e.onMounted(()=>{n.dynamicPosition&&A()}),e.onBeforeUnmount(()=>{q()}),(i,f)=>(e.openBlock(),e.createElementBlock("div",{id:i.id,ref_key:"tooltipRootRef",ref:k,class:e.normalizeClass(e.unref(V).wrapper),onMouseenter:se,onMouseleave:le},[i.iconName?(e.openBlock(),e.createBlock(e.unref(T),{key:0,ref_key:"tooltipIconRef",ref:r,class:e.normalizeClass(e.unref(V).wrapper__icon),name:i.iconName,onMouseenter:j,onMouseleave:re},null,8,["class","name"])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(V).wrapper__icon),onMouseenter:j,onMouseleave:j},[e.renderSlot(i.$slots,"triggerElement")],34)),i.status?(e.openBlock(),e.createElementBlock("div",{key:2,ref_key:"tooltipPopupRef",ref:P,class:e.normalizeClass([e.unref(V).wrapper__box,X.value,Y.value,y.value]),style:e.normalizeStyle(i.absolutePosition)},[e.createVNode(e.unref(oe),{"border-triangle":"","border-triangle-align":O.value,"border-triangle-position":N.value,class:e.normalizeClass([e.unref(V)["wrapper__box-content"],L.value,t.value]),style:e.normalizeStyle(W.value)},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(V).wrapper__text),style:e.normalizeStyle({maxHeight:`${i.maxHeight}px`,overflowY:"auto"})},[e.createElementVNode("div",{innerHTML:G.value},null,8,ro),e.renderSlot(i.$slots,"contentSlot")],6)]),_:3},8,["border-triangle-align","border-triangle-position","class","style"])],6)):e.createCommentVNode("",!0)],42,no))}}),lo="_icon_1sx9k_122",so="_spinner_1sx9k_1",io="_box_1sx9k_188",_o="_flipBox_1sx9k_276",F={icon:lo,spinner:so,box:io,"box_top-start":"_box_top-start_1sx9k_192","box_top-center":"_box_top-center_1sx9k_192","box_top-end":"_box_top-end_1sx9k_192","box_right-start":"_box_right-start_1sx9k_192","box_right-center":"_box_right-center_1sx9k_192","box_right-end":"_box_right-end_1sx9k_192","box_bottom-start":"_box_bottom-start_1sx9k_192","box_bottom-center":"_box_bottom-center_1sx9k_192","box_bottom-end":"_box_bottom-end_1sx9k_192","box_left-start":"_box_left-start_1sx9k_192","box_left-center":"_box_left-center_1sx9k_192","box_left-end":"_box_left-end_1sx9k_192",flipBox:_o},uo=e.defineComponent({__name:"DefaultBox",props:{border:{},borderRadius:{default:"bor-r-1"},borderTriangle:{type:Boolean,default:!1},borderTriangleAlign:{default:"center"},borderTrianglePosition:{default:"top"}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,a=e.computed(()=>r.borderTriangle?F[`box_${r.borderTrianglePosition}-${r.borderTriangleAlign}`]:"");function s(){o("click")}return(c,t)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(F).box,a.value,c.border,c.borderRadius]),onClick:s},[e.renderSlot(c.$slots,"default")],2))}}),co=e.defineComponent({__name:"FlipBox",props:{boxSpacing:{default:""}},setup(_){return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(F).flipBox,n.boxSpacing])},[e.createElementVNode("div",null,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(F).box,n.boxSpacing])},[e.renderSlot(n.$slots,"front")],2),e.createElementVNode("div",{class:e.normalizeClass([n.boxSpacing])},[e.renderSlot(n.$slots,"reverse")],2)])],2))}}),oe=e.defineComponent({__name:"Box",props:{type:{default:"default"},borderTriangle:{type:Boolean,default:!1},borderTriangleAlign:{},borderTrianglePosition:{},boxSpacing:{default:""}},setup(_){const n={default:uo,flip:co};return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n[r.type]),{"border-triangle":r.borderTriangle,"border-triangle-align":r.borderTriangleAlign,"border-triangle-position":r.borderTrianglePosition,"box-spacing":r.boxSpacing},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default"),e.renderSlot(r.$slots,"front"),e.renderSlot(r.$slots,"reverse")]),_:3},8,["border-triangle","border-triangle-align","border-triangle-position","box-spacing"]))}});exports.Box=oe;exports.Button=ke;exports.DropdownMenu=Fe;exports.Icon=T;exports.NumberInput=Lt;exports.OnPageMessage=nt;exports.SegmentButton=mt;exports.TextInput=$t;exports.Toggle=jt;exports.Tooltip=ao;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ce="_button__size_default_l1vz8_1",de="_button__size_small_l1vz8_8",me="_button_l1vz8_1",fe="_button__label_l1vz8_213",be="_button__solid_l1vz8_225",ve="_fill_l1vz8_1145",ge="_spinner_l1vz8_1",M={button__size_default:ce,button__size_small:de,button:me,button__label:fe,"button__solid-primary":"_button__solid-primary_l1vz8_225","no-hover-effect":"_no-hover-effect_l1vz8_232","button--selected":"_button--selected_l1vz8_254","button__solid-subtle-primary":"_button__solid-subtle-primary_l1vz8_261","button__solid-secondary":"_button__solid-secondary_l1vz8_297","button__solid-danger":"_button__solid-danger_l1vz8_333","button__solid-warning":"_button__solid-warning_l1vz8_369","button__solid-smart":"_button__solid-smart_l1vz8_405","button__ghost-primary":"_button__ghost-primary_l1vz8_441","button__ghost-subtle-primary":"_button__ghost-subtle-primary_l1vz8_477","button__ghost-secondary":"_button__ghost-secondary_l1vz8_513","button__ghost-danger":"_button__ghost-danger_l1vz8_549","button__ghost-warning":"_button__ghost-warning_l1vz8_585","button__ghost-smart":"_button__ghost-smart_l1vz8_621","button__text-primary":"_button__text-primary_l1vz8_657","button__text-text":"_button__text-text_l1vz8_693","button__text-subtle-primary":"_button__text-subtle-primary_l1vz8_729","button__text-secondary":"_button__text-secondary_l1vz8_765","button__text-danger":"_button__text-danger_l1vz8_801","button__text-warning":"_button__text-warning_l1vz8_837","button__text-smart":"_button__text-smart_l1vz8_873","button__outline-primary":"_button__outline-primary_l1vz8_909","button__outline-subtle-primary":"_button__outline-subtle-primary_l1vz8_946","button__outline-secondary":"_button__outline-secondary_l1vz8_983","button__outline-danger":"_button__outline-danger_l1vz8_1020","button__outline-warning":"_button__outline-warning_l1vz8_1057","button__outline-smart":"_button__outline-smart_l1vz8_1094",button__solid:be,fill:ve,spinner:ge},we=["disabled"],he=e.defineComponent({__name:"Button",props:{variant:{},color:{},size:{default:"default"},leftIconName:{},rightIconName:{},loadingStatus:{type:Boolean,default:!1},successStatus:{type:Boolean,default:!1},label:{},disabled:{type:Boolean,default:!1},fill:{type:Boolean,default:!1}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,l=p=>{r.disabled||o("click",p)},s=e.computed(()=>r.loadingStatus?"loading-circle":r.successStatus?"line-check-natural":r.leftIconName);return(p,t)=>(e.openBlock(),e.createElementBlock("button",{class:e.normalizeClass([e.unref(M).button,e.unref(M)[`button__${p.variant}`],e.unref(M)[`button__${p.variant}-${p.color}`],e.unref(M)[`button__size_${p.size}`],{[e.unref(M).fill]:p.fill}]),disabled:r.disabled,onClick:l},[s.value?(e.openBlock(),e.createBlock(e.unref(T),{key:0,name:s.value},null,8,["name"])):e.createCommentVNode("",!0),p.label?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(M).button__label)},e.toDisplayString(p.label),3)):e.createCommentVNode("",!0),p.rightIconName?(e.openBlock(),e.createBlock(e.unref(T),{key:2,name:p.rightIconName},null,8,["name"])):e.createCommentVNode("",!0)],10,we))}}),ye={mounted(_,n){_.clickOutsideEvent=r=>{const o=(n.value.exclude||[]).filter(s=>s.value).map(s=>s.value);[_,...o].some(s=>s&&(s===r.target||s.contains(r.target)))||n.value.handler()},document.addEventListener("click",_.clickOutsideEvent)},unmounted(_){_.clickOutsideEvent&&document.removeEventListener("click",_.clickOutsideEvent)}},ke=(_,n)=>{var o;let r=0;for(const l of _)if(l.toLowerCase()===((o=n[r])==null?void 0:o.toLowerCase())&&r++,r===n.length)return!0;return!1},ze=(_,n,r)=>{if(!r.trim())return _;const o=r.toLowerCase();return _.filter(l=>{const s=String(l[n]);return ke(s.toLowerCase(),o)}).sort((l,s)=>{const p=String(l[n]).toLowerCase(),t=String(s[n]).toLowerCase();return p===o?-1:t===o?1:p.startsWith(o)&&!t.startsWith(o)?-1:!p.startsWith(o)&&t.startsWith(o)?1:p.length-t.length})},Ce="_dropdown_17m9p_1",Be="_menu_17m9p_1",xe="_dropdown__valueContent_17m9p_203",$e="_dropdown__label_17m9p_214",Se="_dropdown__value_17m9p_203",Ee="_dropdown__placeholder_17m9p_222",Ve="_dropdown__arrowIcon_17m9p_230",Ne="_menu__searchContainer_17m9p_245",Ie="_menu__searchInputWrap_17m9p_249",Pe="_menu__searchInput_17m9p_249",Me="_menu__errorMessage_17m9p_271",Te="_menu__addButton_17m9p_278",je="_menu__itemContainer_17m9p_286",qe="_menu__item_17m9p_286",He="_spinner_17m9p_1",v={dropdown:Ce,menu:Be,dropdown__valueContent:xe,"dropdown__valueContent--open":"_dropdown__valueContent--open_17m9p_211",dropdown__label:$e,dropdown__value:Se,dropdown__placeholder:Ee,dropdown__arrowIcon:Ve,menu__searchContainer:Ne,menu__searchInputWrap:Ie,menu__searchInput:Pe,"menu__searchInput--error":"_menu__searchInput--error_17m9p_268",menu__errorMessage:Me,menu__addButton:Te,menu__itemContainer:je,menu__item:qe,"menu__item--active":"_menu__item--active_17m9p_324",spinner:He},De=["for"],Le=["placeholder"],Oe=["onClick"],We=e.defineComponent({__name:"DropdownMenu",props:{id:{},label:{},modelValue:{default:""},menuHeight:{default:154},placeholder:{},addable:{type:Boolean},addButtonText:{},searchable:{type:Boolean},searchPlaceHolder:{},items:{},validateAddItem:{type:Function,default:()=>null}},emits:["update:modelValue","add-error","item-added","select-item"],setup(_,{emit:n}){const r=ye,o=_,l=n,s=e.ref(),p=e.ref(),t=e.ref(!1),a=e.ref(null),d=e.ref(""),u=e.ref(null),k=e.ref({x:0,y:0,width:0,shouldOpenUp:!1,height:o.menuHeight}),C=e.reactive([...o.items]),y=e.reactive([...o.items]),P=()=>{if(!s.value)return;const{offsetTop:c,offsetLeft:m,offsetWidth:g}=s.value,S=window.innerHeight,j=c+s.value.offsetHeight,W=j+o.menuHeight>S;k.value={x:m+window.scrollX,y:W?c+window.scrollY:j+window.scrollY,width:g,shouldOpenUp:W,height:o.menuHeight}},h=()=>{P(),t.value=!t.value},$=()=>{u.value=null,d.value="",C.splice(0,C.length,...y)},D=()=>{t.value=!1,$()},F=c=>{a.value=c,l("select-item",c),l("update:modelValue",c.value),D()},N=()=>{const c=d.value.trim(),m=o.validateAddItem(c,y);if(m){u.value=m,l("add-error",m);return}const g={text:c,value:c};y.push(g),$(),l("item-added",g)},G=()=>{const c=ze(y,"text",d.value);C.splice(0,C.length,...c)},L=()=>{u.value=""},Y=e.computed(()=>({top:k.value.shouldOpenUp?`${k.value.y-10}px`:`${k.value.y}px`,left:`${k.value.x}px`,width:`${k.value.width}px`,height:`${o.menuHeight}px`}));e.onMounted(()=>{if(P(),o.modelValue){const c=y.find(m=>m.value===o.modelValue);c&&(a.value=c)}});const O=e.computed(()=>a.value?a.value.text:"");e.watch(()=>o.modelValue,c=>{var m;if(((m=a.value)==null?void 0:m.value)!==c){const g=y.find(S=>S.value===c);g&&(a.value=g)}}),e.watch(()=>o.items,c=>{y.splice(0,y.length,...c),C.splice(0,C.length,...c)},{deep:!0});const X=e.ref({handler:D,exclude:[s,p]});return(c,m)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("div",{ref_key:"dropdownRef",ref:s,class:e.normalizeClass(e.unref(v).dropdown)},[c.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref(v).dropdown__label),for:c.id},e.toDisplayString(c.label),11,De)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:e.normalizeClass([e.unref(v).dropdown__valueContent,{[e.unref(v)["dropdown__valueContent--open"]]:t.value}]),onClick:h},[e.createElementVNode("span",{class:e.normalizeClass(e.unref(v).dropdown__value)},e.toDisplayString(O.value),3),c.placeholder&&!O.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:e.normalizeClass(e.unref(v).dropdown__placeholder)},e.toDisplayString(c.placeholder),3)):e.createCommentVNode("",!0),(e.openBlock(),e.createElementBlock("svg",{fill:"none",height:"17",viewBox:"0 0 16 17",width:"16",xmlns:"http://www.w3.org/2000/svg",class:e.normalizeClass(e.unref(v).dropdown__arrowIcon)},m[2]||(m[2]=[e.createElementVNode("path",{d:"M8 11.2021L4.5359 6.70215L11.4641 6.70215L8 11.2021Z",fill:"#91949F"},null,-1)]),2))],2)],2),e.withDirectives((e.openBlock(),e.createElementBlock("div",{ref_key:"menuRef",ref:p,class:e.normalizeClass(e.unref(v).menu),style:e.normalizeStyle(Y.value),onClick:m[1]||(m[1]=e.withModifiers(()=>{},["prevent"]))},[o.searchable?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(v).menu__searchContainer)},[e.createElementVNode("div",{class:e.normalizeClass(e.unref(v).menu__searchInputWrap)},[e.withDirectives(e.createElementVNode("input",{type:"text",class:e.normalizeClass([e.unref(v).menu__searchInput,{[e.unref(v)["menu__searchInput--error"]]:u.value}]),placeholder:c.searchPlaceHolder,"onUpdate:modelValue":m[0]||(m[0]=g=>d.value=g),onFocus:L,onInput:G},null,42,Le),[[e.vModelText,d.value]]),u.value?(e.openBlock(),e.createElementBlock("p",{key:0,class:e.normalizeClass(e.unref(v).menu__errorMessage)},e.toDisplayString(u.value),3)):e.createCommentVNode("",!0)],2),o.addable?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(e.unref(v).menu__addButton),onClick:N},e.toDisplayString(c.addButtonText),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),e.createElementVNode("ul",{class:e.normalizeClass(e.unref(v).menu__itemContainer)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(C,(g,S)=>(e.openBlock(),e.createElementBlock("li",{key:`${g.value}-${S}`,class:e.normalizeClass([e.unref(v).menu__item,{[e.unref(v)["menu__item--active"]]:a.value&&g.value===a.value.value}]),onClick:j=>F(g)},e.toDisplayString(g.text),11,Oe))),128))],2)],6)),[[e.vShow,t.value],[e.unref(r),X.value]])],64))}}),Ae=["fill","height","width"],Re=["xlink:href"],Fe=e.defineComponent({__name:"Icon",props:{name:{},size:{default:16},color:{}},setup(_){const n=_,r=e.computed(()=>typeof n.size=="number"?`${n.size}px`:n.size);return(o,l)=>(e.openBlock(),e.createElementBlock("svg",{class:"icon",fill:o.color||"currentColor",height:r.value,width:r.value},[e.createElementVNode("use",{"xlink:href":`#${o.name}`},null,8,Re)],8,Ae))}}),Ge=(_,n)=>{const r=_.__vccOpts||_;for(const[o,l]of n)r[o]=l;return r},T=Ge(Fe,[["__scopeId","data-v-f04c8857"]]),Ye="_container_smuz7_1",Xe="_container__text_smuz7_205",Ue="_container__default_smuz7_209",Qe="_container__warning_smuz7_217",Ze="_container__alert_smuz7_225",Je="_container__success_smuz7_233",Ke="_spinner_smuz7_1",Z={container:Ye,container__text:Xe,container__default:Ue,container__warning:Qe,container__alert:Ze,container__success:Je,spinner:Ke},et=e.defineComponent({__name:"OnPageMessage",props:{variant:{default:"default"},text:{}},setup(_){const n=_,r=e.computed(()=>{switch(n.variant){case"alert":return"icon-info-box-error";case"warning":return"line-caution-triangle";case"success":return"line-check-natural";default:return"filled-info-circle"}});return(o,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(Z).container,e.unref(Z)[`container__${o.variant}`]])},[e.createVNode(T,{name:r.value,size:24},null,8,["name"]),e.createElementVNode("span",{class:e.normalizeClass(e.unref(Z).container__text)},e.toDisplayString(o.text),3)],2))}}),tt="_button__size_default_wlx30_1",ot="_button__size_small_wlx30_8",nt="_button_wlx30_1",rt="_button__label_wlx30_211",lt="_button__solid_wlx30_350",at="_segmentGroup_wlx30_357",st="_fill_wlx30_379",it="_spinner_wlx30_1",B={button__size_default:tt,button__size_small:ot,button:nt,button__label:rt,"button--primary":"_button--primary_wlx30_228","button--selected":"_button--selected_wlx30_238","button--secondary":"_button--secondary_wlx30_251","button--danger":"_button--danger_wlx30_274","button--warning":"_button--warning_wlx30_297","button--smart":"_button--smart_wlx30_320",button__solid:lt,segmentGroup:at,"segmentGroup--vertical":"_segmentGroup--vertical_wlx30_360","segmentGroup--horizontal":"_segmentGroup--horizontal_wlx30_369",fill:st,spinner:it},_t=["disabled","onClick"],ut=e.defineComponent({__name:"SegmentButton",props:{color:{},size:{default:"default"},align:{default:"horizontal"},disabled:{type:Boolean,default:!1},segments:{},fill:{type:Boolean},modelValue:{}},emits:["update:modelValue","click"],setup(_,{emit:n}){const r=_,o=n,l=e.ref(r.modelValue||""),s=t=>{r.disabled||t.disabled||(l.value=t.value,o("update:modelValue",t.value),o("click",t.value))};e.watch(()=>r.modelValue,t=>{l.value!==t&&(l.value=t||"")});const p=e.ref([...r.segments]);return e.watch(()=>r.segments,t=>{p.value=[...t],t.some(a=>a.value===l.value)||(l.value="",o("update:modelValue",""))},{deep:!0}),(t,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(B).segmentGroup,e.unref(B)[`segmentGroup--${t.align}`],{[e.unref(B).fill]:t.fill}])},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(p.value,(d,u)=>(e.openBlock(),e.createElementBlock("button",{key:`${d.value}-${u}`,class:e.normalizeClass([e.unref(B).button,e.unref(B)[`button--${t.color}`],e.unref(B)[`button__size_${t.size}`],e.unref(B).fill,{[e.unref(B)["button--selected"]]:d.value===l.value}]),disabled:d.disabled||r.disabled,onClick:k=>s(d)},[d.icon?(e.openBlock(),e.createBlock(e.unref(T),{key:0,name:d.icon},null,8,["name"])):e.createCommentVNode("",!0),d.label?(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(e.unref(B).button__label)},e.toDisplayString(d.label),3)):e.createCommentVNode("",!0)],10,_t))),128))],2))}}),pt="_wrapper__field_1gjtq_1",ct="_wrapper__label_1gjtq_1",dt="_wrapper__errorMessage_1gjtq_1",mt="_wrapper__counter_1gjtq_1",ft="_wrapper_1gjtq_1",bt="_wrapper__bottom_1gjtq_241",vt="_spinner_1gjtq_1",x={wrapper__field:pt,wrapper__label:ct,wrapper__errorMessage:dt,wrapper__counter:mt,wrapper:ft,wrapper__bottom:bt,"wrapper--error":"_wrapper--error_1gjtq_254",spinner:vt},gt=["for"],wt=["id","maxlength","name","placeholder","value"],ht=["id","maxlength","name","placeholder","value"],yt=e.defineComponent({__name:"TextInput",props:{id:{},name:{},modelValue:{default:""},label:{default:""},placeholder:{default:""},maxLength:{default:void 0},maxHeight:{default:void 0},error:{default:""},multiline:{type:Boolean,default:!1},autoGrow:{type:Boolean,default:!1},counter:{type:Boolean}},emits:["update:modelValue","input","change","paste","focus","blur"],setup(_,{emit:n}){const r=_,o=n,l=e.ref(null),s=()=>{if(r.autoGrow&&l.value){l.value.style.height="";const t=Math.min(l.value.scrollHeight,r.maxHeight||l.value.scrollHeight);l.value.style.height=`${t}px`}},p=t=>{const a=t.target;o("input",t),o("update:modelValue",a.value),s()};return e.onMounted(()=>{s()}),(t,a)=>{var d;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(e.unref(x).wrapper)},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref(x).wrapper__label),for:t.id},e.toDisplayString(t.label),11,gt)):e.createCommentVNode("",!0),t.multiline?(e.openBlock(),e.createElementBlock("textarea",{key:1,id:t.id,ref_key:"textareaRef",ref:l,class:e.normalizeClass([e.unref(x).wrapper__field,{[e.unref(x)["wrapper--error"]]:t.error}]),maxlength:t.maxLength,name:t.name,placeholder:t.placeholder,style:e.normalizeStyle(t.maxHeight?{maxHeight:`${t.maxHeight}px`}:void 0),value:t.modelValue,onBlur:a[0]||(a[0]=u=>o("blur",u)),onChange:a[1]||(a[1]=u=>t.$emit("change",u)),onFocus:a[2]||(a[2]=u=>o("focus",u)),onInput:p,onPaste:a[3]||(a[3]=u=>o("paste",u))},null,46,wt)):(e.openBlock(),e.createElementBlock("input",{key:2,id:t.id,type:"text",class:e.normalizeClass([e.unref(x).wrapper__field,{[e.unref(x)["wrapper--error"]]:t.error}]),maxlength:t.maxLength,name:t.name,placeholder:t.placeholder,value:t.modelValue,onBlur:a[4]||(a[4]=u=>o("blur",u)),onChange:a[5]||(a[5]=u=>t.$emit("change",u)),onFocus:a[6]||(a[6]=u=>o("focus",u)),onInput:p,onPaste:a[7]||(a[7]=u=>o("paste",u))},null,42,ht)),e.createElementVNode("div",{class:e.normalizeClass(e.unref(x).wrapper__bottom)},[t.error?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(x).wrapper__errorMessage)},e.toDisplayString(t.error),3)):e.createCommentVNode("",!0),t.counter?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(x).wrapper__counter)},e.toDisplayString(((d=t.modelValue)==null?void 0:d.toString().length)||0),3)):e.createCommentVNode("",!0)],2)],2)}}}),kt="_wrapper__label_1wzvv_1",zt="_wrapper__errorMessage_1wzvv_1",Ct="_wrapper__counter_1wzvv_1",Bt="_wrapper_1wzvv_1",xt="_wrapper__field_1wzvv_8",$t="_wrapper__size_default_1wzvv_205",St="_wrapper__size_small_1wzvv_208",Et="_wrapper__bottom_1wzvv_245",Vt="_spinner_1wzvv_1",E={wrapper__label:kt,wrapper__errorMessage:zt,wrapper__counter:Ct,wrapper:Bt,wrapper__field:xt,wrapper__size_default:$t,wrapper__size_small:St,wrapper__bottom:Et,"wrapper--error":"_wrapper--error_1wzvv_258",spinner:Vt},Nt=["for"],It=["id","max","maxlength","min","name","placeholder","value"],Pt=e.defineComponent({__name:"NumberInput",props:{id:{},name:{},modelValue:{default:void 0},label:{default:""},placeholder:{default:""},maxLength:{default:void 0},error:{default:""},errorStatus:{type:Boolean},counter:{type:Boolean},min:{default:void 0},max:{default:void 0},size:{default:"default"}},emits:["update:modelValue","input","change","paste","focus","blur"],setup(_,{emit:n}){const r=_,o=n,l=t=>{if(t==="")return t;const a=Number(t);return typeof r.min=="number"&&a<r.min?r.min.toString():typeof r.max=="number"&&a>r.max?r.max.toString():a.toString()},s=t=>{const a=t.target,d=l(a.value);a.value=d,o("input",t),o("update:modelValue",Number(d))},p=t=>{const a=t.target,d=a.value,u=l(a.value===""?String(r.min||0):a.value);a.value=u,o("blur",t),d!==u&&o("update:modelValue",Number(u))};return(t,a)=>{var d;return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(E).wrapper,e.unref(E)[`wrapper__size_${t.size}`]])},[t.label?(e.openBlock(),e.createElementBlock("label",{key:0,class:e.normalizeClass(e.unref(E).wrapper__label),for:t.id},e.toDisplayString(t.label),11,Nt)):e.createCommentVNode("",!0),e.createElementVNode("input",{id:t.id,type:"number",class:e.normalizeClass([e.unref(E).wrapper__field,{[e.unref(E)["wrapper--error"]]:t.error||t.errorStatus}]),max:t.max,maxlength:t.maxLength,min:t.min,name:t.name,placeholder:t.placeholder,value:t.modelValue,onBlur:p,onChange:a[0]||(a[0]=u=>t.$emit("change",u)),onFocus:a[1]||(a[1]=u=>o("focus",u)),onInput:s,onPaste:a[2]||(a[2]=u=>o("paste",u))},null,42,It),t.counter||t.error?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(E).wrapper__bottom)},[t.error?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(e.unref(E).wrapper__errorMessage)},e.toDisplayString(t.error),3)):e.createCommentVNode("",!0),t.counter?(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(E).wrapper__counter)},e.toDisplayString(((d=t.modelValue)==null?void 0:d.toString().length)||0),3)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],2)}}}),Mt="_wrapper_192md_189",Tt="_wrapper__label_192md_196",jt="_wrapper__input_192md_220",qt="_wrapper_checked_192md_230",Ht="_wrapper_disabled_192md_237",Dt="_spinner_192md_1",H={wrapper:Mt,wrapper__label:Tt,wrapper__input:jt,wrapper_checked:qt,wrapper_disabled:Ht,spinner:Dt},Lt=["id","checked","disabled","name"],Ot=["for"],Wt=e.defineComponent({__name:"Toggle",props:{id:{},name:{},checked:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,l=()=>{o("click",!r.checked)};return(s,p)=>(e.openBlock(),e.createElementBlock("fieldset",{class:e.normalizeClass([e.unref(H).wrapper,{[e.unref(H).wrapper_checked]:s.checked,[e.unref(H).wrapper_disabled]:s.disabled}])},[e.createElementVNode("input",{id:s.id,type:"checkbox",checked:s.checked,class:e.normalizeClass(e.unref(H).wrapper__input),disabled:s.disabled,name:s.name,onClick:l},null,10,Lt),e.createElementVNode("label",{class:e.normalizeClass(e.unref(H).wrapper__label),for:s.id},null,10,Ot)],2))}});function At(_=""){return typeof _=="string"?_.replace(/<\/style>/gi,"").replace(/<(.*?) on(.*?)=['"](.*?)>/gi,"").replace(/(<meta |<style|<\/*script)(.*?)>/gi,"").replace(/(<([^>]+)>)/ig,"").replace(/<(.*?) (href|src)="j(.*)a(.*)v(.*)a(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t(.*):(.*?)>/gi,""):_}const Rt="_wrapper__box_1djqh_1",Ft="_wrapper_1djqh_1",Gt="_wrapper__icon_1djqh_204",Yt="_wrapper__text_1djqh_287",Xt="_spinner_1djqh_1",V={wrapper__box:Rt,wrapper:Ft,wrapper__icon:Gt,"wrapper__box_bottom-start":"_wrapper__box_bottom-start_1djqh_219","wrapper__box_bottom-center":"_wrapper__box_bottom-center_1djqh_225","wrapper__box_bottom-end":"_wrapper__box_bottom-end_1djqh_231","wrapper__box_top-start":"_wrapper__box_top-start_1djqh_237","wrapper__box_top-center":"_wrapper__box_top-center_1djqh_243","wrapper__box_top-end":"_wrapper__box_top-end_1djqh_249","wrapper__box_right-start":"_wrapper__box_right-start_1djqh_255","wrapper__box_right-center":"_wrapper__box_right-center_1djqh_261","wrapper__box_right-end":"_wrapper__box_right-end_1djqh_267","wrapper__box_left-start":"_wrapper__box_left-start_1djqh_272","wrapper__box_left-center":"_wrapper__box_left-center_1djqh_277","wrapper__box_left-end":"_wrapper__box_left-end_1djqh_282",wrapper__text:Yt,"wrapper__box-content":"_wrapper__box-content_1djqh_316","bottom-entrance":"_bottom-entrance_1djqh_329","top-entrance":"_top-entrance_1djqh_332","left-entrance":"_left-entrance_1djqh_335","right-entrance":"_right-entrance_1djqh_338","bottom-leave":"_bottom-leave_1djqh_341","top-leave":"_top-leave_1djqh_344","right-leave":"_right-leave_1djqh_347","left-leave":"_left-leave_1djqh_350",spinner:Xt},Ut=["id"],Qt=["innerHTML"],Zt=e.defineComponent({__name:"Tooltip",props:{id:{},text:{},staticPosition:{default:"top center"},dynamicPosition:{type:Boolean},absolutePositionStatus:{type:Boolean,default:!1},offsetX:{default:4},offsetY:{default:4},maxHeight:{default:320},status:{type:Boolean,default:!0},preventXss:{type:Boolean},iconName:{default:void 0},absoluteTriangleAlignment:{default:"center"},absoluteTrianglePosition:{default:"top"},absolutePosition:{type:[Boolean,null,String,Object,Array]}},setup(_){const n=_,r=e.ref(null),o=e.ref("center"),l=e.ref("bottom"),s=e.ref("center"),p=e.ref(!1),t=e.ref(""),a=e.ref(!1),d=e.ref(!1),u=e.ref(""),k=e.ref("d-n"),C=e.ref(null),y=e.ref(null),P=e.ref(null),h=e.computed(()=>n.staticPosition.split(" ")[0]),$=e.computed(()=>n.staticPosition.split(" ")[1]),D=e.computed(()=>n.iconName?"mt-1":"mt-0"),F=e.computed(()=>n.preventXss?At(n.text):n.text),N=e.computed(()=>n.absolutePositionStatus?n.absoluteTrianglePosition:n.dynamicPosition&&p.value?l.value==="bottom"?"top":"bottom":h.value==="top"?"bottom":h.value==="bottom"?"top":h.value==="left"?"right":h.value==="right"?"left":"bottom"),G=e.computed(()=>n.absolutePositionStatus?"":a.value&&d.value||u.value==="icon"&&a.value?"opa-1":"opa-0"),L=e.computed(()=>n.absolutePositionStatus?n.absoluteTriangleAlignment:n.dynamicPosition&&p.value?o.value==="center"?"center":o.value==="end"?"end":o.value==="start"?"start":s.value:$.value==="center"?"center":$.value==="left"||$.value==="top"?"start":$.value==="right"||$.value==="bottom"?"end":"center"),Y=e.computed(()=>n.absolutePositionStatus?"":n.dynamicPosition&&p.value?V[`wrapper__box_${l.value}-${o.value}`]:V[`wrapper__box_${h.value}-${L.value}`]),O=e.computed(()=>n.offsetX===0&&n.offsetY===0?{}:n.dynamicPosition?{[`margin-${l.value==="bottom"?"top":"bottom"}`]:`${n.offsetY}px`}:N.value==="top"||N.value==="bottom"?{[`margin-${N.value}`]:`${n.offsetY}px`}:{[`margin-${N.value}`]:`${n.offsetX}px`}),X=i=>{const{offsetTop:f,offsetLeft:b,offsetWidth:z,offsetHeight:q}=i,I=f+q,Q=b+z;return{top:f,left:b,width:z,bottom:I,right:Q}},c=(i,f,b=!1)=>{if(!i||!y.value)return{left:!1,right:!1,top:!1,bottom:!1,center:!1};const z={left:0,right:0,top:0,bottom:0,width:0,height:0},q=y.value.offsetHeight,I=window.innerWidth,Q=window.innerHeight,J=i.offsetHeight,A=i.offsetWidth||264,w=f&&X(f)||z,K=b?w==null?void 0:w.right:w==null?void 0:w.left,ee=b?w==null?void 0:w.top:w==null?void 0:w.bottom,ie=K+w.width+A+n.offsetX<I,_e=K+w.width/2-(A+n.offsetX)>10,ue=ee+J<Q-n.offsetY,pe=ee-(J+q+n.offsetY)>0;let te=!1;return n.iconName&&(te=w.right+A/2<I&&w.left-(A+n.offsetX)/2>=10),{left:_e,right:ie,bottom:ue,top:pe,center:te}},m=()=>{e.nextTick(()=>{var I;p.value=!0;const{bottom:i,left:f,right:b,top:z,center:q}=c(P.value,(I=P.value)==null?void 0:I.parentNode);if(q){o.value="center",l.value=i&&!z?"bottom":"top";return}if(i&&f&&b&&z){o.value="center",l.value="top";return}if(z&&!i){if(b&&f){o.value="center",l.value="top";return}if(b&&!f){o.value="start",l.value="top";return}if(!b&&f){o.value="end",l.value="top";return}}if(i&&z){if(!b&&f){o.value="end",l.value="top",s.value="end";return}if(b&&!f){o.value="start",l.value="top",s.value="start";return}}if(i&&!z){if(b&&f){o.value="center",l.value="bottom",s.value="top";return}if(!b&&f){o.value="end",l.value="bottom",s.value="top";return}b&&!f&&(o.value="start",l.value="bottom",s.value="top")}})},g=i=>{if(!(i instanceof HTMLElement))return!1;const f=i.scrollHeight>i.offsetHeight,b=window.getComputedStyle(i).overflowY,z=["auto","scroll"].includes(b);return f&&z},S=i=>{const f=(i==null?void 0:i.nodeType)===Node.COMMENT_NODE,b=(i==null?void 0:i.nodeType)===Node.DOCUMENT_NODE;return!i||f||b?document:g(i)?i:S(i.parentNode)},j=()=>{var i;(i=C.value)==null||i.removeEventListener("scroll",m),window==null||window.removeEventListener("resize",m)},W=()=>{e.nextTick(()=>{var i;C.value=S(y.value),(i=C.value)==null||i.addEventListener("scroll",m),window==null||window.addEventListener("resize",m)})},ne=()=>{u.value="wrapper",k.value="d-b",a.value=!0},U=()=>{u.value="icon",k.value="d-b",d.value=!0},re=()=>{d.value=!1},le=()=>{u.value="",a.value=!1,d.value=!1},ae=()=>{le(),n.dynamicPosition?l.value==="bottom"?t.value="bottom-leave":l.value==="top"&&(t.value="top-leave"):h.value==="top"?t.value="top-leave":h.value==="bottom"?t.value="bottom-leave":h.value==="left"?t.value="left-leave":h.value==="right"&&(t.value="right-leave"),setTimeout(()=>{t.value="",k.value="d-n"},n.absolutePositionStatus?0:250)},se=()=>{ne(),m(),n.dynamicPosition?l.value==="bottom"?t.value="top-entrance":l.value==="top"&&(t.value="bottom-entrance"):h.value==="top"?t.value="bottom-entrance":h.value==="bottom"?t.value="top-entrance":h.value==="left"?t.value="right-entrance":h.value==="right"&&(t.value="left-entrance"),setTimeout(()=>{t.value=""},250)};return e.onMounted(()=>{n.dynamicPosition&&W()}),e.onBeforeUnmount(()=>{j()}),(i,f)=>(e.openBlock(),e.createElementBlock("div",{id:i.id,ref_key:"tooltipRootRef",ref:y,class:e.normalizeClass(e.unref(V).wrapper),onMouseenter:se,onMouseleave:ae},[i.iconName?(e.openBlock(),e.createBlock(e.unref(T),{key:0,ref_key:"tooltipIconRef",ref:r,class:e.normalizeClass(e.unref(V).wrapper__icon),name:i.iconName,onMouseenter:U,onMouseleave:re},null,8,["class","name"])):(e.openBlock(),e.createElementBlock("div",{key:1,class:e.normalizeClass(e.unref(V).wrapper__icon),onMouseenter:U,onMouseleave:U},[e.renderSlot(i.$slots,"triggerElement")],34)),i.status?(e.openBlock(),e.createElementBlock("div",{key:2,ref_key:"tooltipPopupRef",ref:P,class:e.normalizeClass([e.unref(V).wrapper__box,Y.value,G.value,k.value]),style:e.normalizeStyle(i.absolutePosition)},[e.createVNode(e.unref(oe),{"border-triangle":"","border-triangle-align":L.value,"border-triangle-position":N.value,class:e.normalizeClass([e.unref(V)["wrapper__box-content"],D.value,t.value]),style:e.normalizeStyle(O.value)},{default:e.withCtx(()=>[e.createElementVNode("div",{class:e.normalizeClass(e.unref(V).wrapper__text),style:e.normalizeStyle({maxHeight:`${i.maxHeight}px`,overflowY:"auto"})},[e.createElementVNode("div",{innerHTML:F.value},null,8,Qt),e.renderSlot(i.$slots,"contentSlot")],6)]),_:3},8,["border-triangle-align","border-triangle-position","class","style"])],6)):e.createCommentVNode("",!0)],42,Ut))}}),Jt="_box_1ebla_189",Kt="_flipBox_1ebla_277",eo="_spinner_1ebla_1",R={box:Jt,"box_top-start":"_box_top-start_1ebla_193","box_top-center":"_box_top-center_1ebla_193","box_top-end":"_box_top-end_1ebla_193","box_right-start":"_box_right-start_1ebla_193","box_right-center":"_box_right-center_1ebla_193","box_right-end":"_box_right-end_1ebla_193","box_bottom-start":"_box_bottom-start_1ebla_193","box_bottom-center":"_box_bottom-center_1ebla_193","box_bottom-end":"_box_bottom-end_1ebla_193","box_left-start":"_box_left-start_1ebla_193","box_left-center":"_box_left-center_1ebla_193","box_left-end":"_box_left-end_1ebla_193",flipBox:Kt,spinner:eo},to=e.defineComponent({__name:"DefaultBox",props:{border:{},borderRadius:{default:"bor-r-1"},borderTriangle:{type:Boolean,default:!1},borderTriangleAlign:{default:"center"},borderTrianglePosition:{default:"top"}},emits:["click"],setup(_,{emit:n}){const r=_,o=n,l=e.computed(()=>r.borderTriangle?R[`box_${r.borderTrianglePosition}-${r.borderTriangleAlign}`]:"");function s(){o("click")}return(p,t)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(R).box,l.value,p.border,p.borderRadius]),onClick:s},[e.renderSlot(p.$slots,"default")],2))}}),oo=e.defineComponent({__name:"FlipBox",props:{boxSpacing:{default:""}},setup(_){return(n,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass([e.unref(R).flipBox,n.boxSpacing])},[e.createElementVNode("div",null,[e.createElementVNode("div",{class:e.normalizeClass([e.unref(R).box,n.boxSpacing])},[e.renderSlot(n.$slots,"front")],2),e.createElementVNode("div",{class:e.normalizeClass([n.boxSpacing])},[e.renderSlot(n.$slots,"reverse")],2)])],2))}}),oe=e.defineComponent({__name:"Box",props:{type:{default:"default"},borderTriangle:{type:Boolean,default:!1},borderTriangleAlign:{},borderTrianglePosition:{},boxSpacing:{default:""}},setup(_){const n={default:to,flip:oo};return(r,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n[r.type]),{"border-triangle":r.borderTriangle,"border-triangle-align":r.borderTriangleAlign,"border-triangle-position":r.borderTrianglePosition,"box-spacing":r.boxSpacing},{default:e.withCtx(()=>[e.renderSlot(r.$slots,"default"),e.renderSlot(r.$slots,"front"),e.renderSlot(r.$slots,"reverse")]),_:3},8,["border-triangle","border-triangle-align","border-triangle-position","box-spacing"]))}});exports.Box=oe;exports.Button=he;exports.DropdownMenu=We;exports.Icon=T;exports.NumberInput=Pt;exports.OnPageMessage=et;exports.SegmentButton=ut;exports.TextInput=yt;exports.Toggle=Wt;exports.Tooltip=Zt;
|
|
2
2
|
//# sourceMappingURL=ab-components.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ab-components.cjs.js","sources":["../src/components/Button/Button.vue","../src/directives/clickOutside.ts","../src/utils/search.ts","../src/components/Dropdown/DropdownMenu.vue","../src/components/Icon/Icon.vue","../src/components/OnPageMessage/OnPageMessage.vue","../src/components/SegmentButton/SegmentButton.vue","../src/components/TextInput/TextInput.vue","../src/components/NumberInput/NumberInput.vue","../src/components/Toggle/Toggle.vue","../src/utils/preventXSS.ts","../src/components/Tooltip/Tooltip.vue","../src/components/Box/DefaultBox.vue","../src/components/Box/Box.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\n\nimport { Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './Button.module.scss';\n\ninterface ButtonProps {\n variant: 'solid' | 'ghost' | 'text' | 'outline';\n color: 'primary' | 'subtle-primary' | 'secondary' | 'danger' | 'warning' | 'smart';\n size?: 'default' | 'small';\n leftIconName?: IconNames;\n rightIconName?: IconNames;\n loadingStatus?: boolean;\n successStatus?: boolean;\n label?: string;\n disabled?: boolean;\n fill?: boolean;\n}\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n loadingStatus: false,\n successStatus: false,\n disabled: false,\n fill: false,\n size: 'default',\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst onClick = (event: MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n emit('click', event);\n};\n\nconst leftIcon = computed<IconNames | undefined>(() => {\n if (props.loadingStatus) {\n return 'loading-circle';\n } else if (props.successStatus) {\n return 'line-check-natural';\n }\n\n return props.leftIconName;\n});\n</script>\n\n<template>\n <button\n :class=\"[\n styles.button,\n styles[`button__${variant}`],\n styles[`button__${variant}-${color}`],\n styles[`button__size_${size}`],\n { [styles.fill]: fill },\n ]\"\n :disabled=\"props.disabled\"\n @click=\"onClick\">\n <Icon\n v-if=\"leftIcon\"\n :name=\"leftIcon\" />\n <span\n v-if=\"label\"\n :class=\"styles.button__label\">\n {{ label }}\n </span>\n <Icon\n v-if=\"rightIconName\"\n :name=\"rightIconName\" />\n </button>\n</template>\n","import type { DirectiveBinding, Ref } from 'vue';\n\ninterface ClickOutsideElement extends HTMLElement {\n clickOutsideEvent?: (event: Event) => void;\n}\n\ntype DirectiveType = {\n handler: () => void;\n exclude: Ref<HTMLElement | undefined>[];\n}\n\nexport default {\n mounted(el: ClickOutsideElement, binding: DirectiveBinding<DirectiveType>) {\n el.clickOutsideEvent = (event: Event) => {\n const excludeElements = (binding.value.exclude || [])\n .filter(el => el.value)\n .map(el => el.value);\n const isClickInside = [el, ...excludeElements].some(element => {\n return element && (element === event.target || element.contains(event.target as Node))\n });\n\n if (!isClickInside) {\n binding.value.handler();\n }\n };\n\n document.addEventListener('click', el.clickOutsideEvent);\n },\n unmounted(el: ClickOutsideElement) {\n if (el.clickOutsideEvent) {\n document.removeEventListener('click', el.clickOutsideEvent);\n }\n },\n};\n","const isFuzzyMatch = (choiceValue: string, searchTerm: string): boolean => {\n let searchIndex = 0;\n for (const char of choiceValue) {\n if (char.toLowerCase() === searchTerm[searchIndex]?.toLowerCase()) {\n searchIndex++;\n }\n if (searchIndex === searchTerm.length) {\n return true;\n }\n }\n return false;\n};\n\n\nexport const fuzzySearch = <T>(\n choices: T[],\n key: keyof T,\n searchTerm: string,\n): T[] => {\n if (!searchTerm.trim()) {\n return choices;\n }\n\n const normalizedSearchTerm = searchTerm.toLowerCase();\n\n return choices\n .filter(choice => {\n const value = String(choice[key]);\n\n return isFuzzyMatch(value.toLowerCase(), normalizedSearchTerm)\n })\n .sort((a, b) => {\n const aValue = String(a[key]).toLowerCase();\n const bValue = String(b[key]).toLowerCase();\n\n if (aValue === normalizedSearchTerm) return -1;\n if (bValue === normalizedSearchTerm) return 1;\n\n if (aValue.startsWith(normalizedSearchTerm) && !bValue.startsWith(normalizedSearchTerm))\n return -1;\n if (!aValue.startsWith(normalizedSearchTerm) && bValue.startsWith(normalizedSearchTerm))\n return 1;\n\n return aValue.length - bValue.length;\n });\n};\n","<script lang=\"ts\" setup>\nimport { ref, computed, type StyleValue, onMounted, reactive, watch } from 'vue';\nimport clickOutside from '@/directives/clickOutside';\nimport { fuzzySearch } from '@/utils/search';\nimport styles from './Dropdown.module.scss';\n\nconst vClickOutside = clickOutside;\n\ninterface MenuItem {\n text: string;\n value: string;\n}\n\ninterface DropdownProps {\n id: string;\n label?: string;\n modelValue?: string;\n menuHeight?: number;\n placeholder?: string;\n addable?: boolean;\n addButtonText?: string;\n searchable?: boolean;\n searchPlaceHolder?: string;\n items: MenuItem[];\n validateAddItem?: (item: string, items: MenuItem[]) => string | null;\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void;\n (e: 'add-error', error: string): void;\n (e: 'item-added', item: MenuItem): void;\n (e: 'select-item', item: MenuItem): void;\n}\n\nconst props = withDefaults(defineProps<DropdownProps>(), {\n menuHeight: 154,\n searchBar: false,\n addItem: false,\n modelValue: '',\n validateAddItem: () => null,\n});\n\nconst emit = defineEmits<Emits>();\nconst dropdownRef = ref<HTMLDivElement>();\nconst menuRef = ref<HTMLDivElement>();\nconst isOpen = ref(false);\nconst selectedItem = ref<MenuItem | null>(null);\nconst searchQuery = ref('');\nconst errorMessage = ref<string | null>(null);\nconst menuPosition = ref({ x: 0, y: 0, width: 0, shouldOpenUp: false, height: props.menuHeight });\nconst filteredItems = reactive([...props.items]);\nconst allItems = reactive([...props.items]);\n\nconst calculateMenuPosition = () => {\n if (!dropdownRef.value) {\n return;\n }\n\n const { offsetTop: top, offsetLeft: left, offsetWidth: width } = dropdownRef.value;\n const viewportHeight = window.innerHeight;\n const bottom = top + dropdownRef.value.offsetHeight;\n const shouldOpenUp = bottom + props.menuHeight > viewportHeight;\n\n menuPosition.value = {\n x: left + window.scrollX,\n y: shouldOpenUp ? top + window.scrollY : bottom + window.scrollY,\n width,\n shouldOpenUp,\n height: props.menuHeight,\n };\n};\n\nconst toggleMenu = () => {\n calculateMenuPosition();\n isOpen.value = !isOpen.value;\n};\n\nconst resetSettings = () => {\n errorMessage.value = null;\n searchQuery.value = '';\n filteredItems.splice(0, filteredItems.length, ...allItems);\n};\n\nconst closeMenu = () => {\n isOpen.value = false;\n\n resetSettings();\n};\n\nconst selectItem = (item: MenuItem) => {\n selectedItem.value = item;\n\n emit('select-item', item);\n emit('update:modelValue', item.value);\n\n closeMenu();\n};\n\nconst addItem = () => {\n const query = searchQuery.value.trim();\n const error = props.validateAddItem(query, allItems);\n\n if (error) {\n errorMessage.value = error;\n\n emit('add-error', error);\n\n return;\n }\n\n const newItem: MenuItem = {\n text: query,\n value: query,\n };\n\n allItems.push(newItem);\n resetSettings();\n\n emit('item-added', newItem);\n};\n\nconst onSearch = () => {\n const results = fuzzySearch<MenuItem>(allItems, 'text', searchQuery.value);\n\n filteredItems.splice(0, filteredItems.length, ...results);\n};\n\nconst onFocusSearch = () => {\n errorMessage.value = '';\n};\n\nconst menuStyle = computed<Partial<StyleValue>>(() => ({\n top: menuPosition.value.shouldOpenUp ? `${menuPosition.value.y - 10}px` : `${menuPosition.value.y}px`,\n left: `${menuPosition.value.x}px`,\n width: `${menuPosition.value.width}px`,\n height: `${props.menuHeight}px`,\n}));\n\nonMounted(() => {\n calculateMenuPosition();\n\n if (props.modelValue) {\n const defaultItem = allItems.find(item => item.value === props.modelValue);\n\n if (defaultItem) {\n selectedItem.value = defaultItem;\n }\n }\n});\n\nconst selectedValue = computed(() => (selectedItem.value ? selectedItem.value.text : ''));\n\nwatch(() => props.modelValue, newValue => {\n if (selectedItem.value?.value !== newValue) {\n const defaultItem = allItems.find(item => item.value === newValue);\n\n if (defaultItem) {\n selectedItem.value = defaultItem;\n }\n }\n});\n\nwatch(\n () => props.items,\n newItems => {\n allItems.splice(0, allItems.length, ...newItems);\n filteredItems.splice(0, filteredItems.length, ...newItems);\n },\n { deep: true }\n);\n\nconst clickOutsideTarget = ref({ handler: closeMenu, exclude: [dropdownRef, menuRef] });\n</script>\n\n<template>\n <div\n ref=\"dropdownRef\"\n :class=\"styles.dropdown\">\n <label\n v-if=\"label\"\n :class=\"styles.dropdown__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <button\n :class=\"[\n styles.dropdown__valueContent, {\n [styles['dropdown__valueContent--open']]: isOpen,\n },\n ]\"\n @click=\"toggleMenu\">\n <span :class=\"styles.dropdown__value\">\n {{ selectedValue }}\n </span>\n <span\n v-if=\"placeholder && !selectedValue\"\n :class=\"styles.dropdown__placeholder\">\n {{ placeholder }}\n </span>\n <svg\n fill=\"none\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n :class=\"styles.dropdown__arrowIcon\">\n <path\n d=\"M8 11.2021L4.5359 6.70215L11.4641 6.70215L8 11.2021Z\"\n fill=\"#91949F\" />\n </svg>\n </button>\n </div>\n\n <div\n v-show=\"isOpen\"\n ref=\"menuRef\"\n :class=\"styles.menu\"\n :style=\"menuStyle\"\n v-click-outside=\"clickOutsideTarget\"\n @click.prevent>\n <div\n v-if=\"props.searchable\"\n :class=\"styles.menu__searchContainer\">\n <div :class=\"styles.menu__searchInputWrap\">\n <input\n type=\"text\"\n :class=\"[\n styles.menu__searchInput, {\n [styles['menu__searchInput--error']]: errorMessage,\n },\n ]\"\n :placeholder=\"searchPlaceHolder\"\n v-model=\"searchQuery\"\n @focus=\"onFocusSearch\"\n @input=\"onSearch\">\n <p\n v-if=\"errorMessage\"\n :class=\"styles.menu__errorMessage\">\n {{ errorMessage }}\n </p>\n </div>\n <button\n v-if=\"props.addable\"\n :class=\"styles.menu__addButton\"\n @click=\"addItem\">\n {{ addButtonText }}\n </button>\n </div>\n <ul :class=\"styles.menu__itemContainer\">\n <li\n v-for=\"(item, index) in filteredItems\"\n :key=\"`${item.value}-${index}`\"\n :class=\"[\n styles.menu__item, {\n [styles['menu__item--active']]: selectedItem && item.value === selectedItem.value,\n },\n ]\"\n @click=\"selectItem(item)\">\n {{ item.text }}\n </li>\n </ul>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { IconNames } from '@/types/generated/svgIconName';\n\nexport interface IconProps {\n name: IconNames;\n size?: 16 | 24;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IconProps>(), {\n size: 16,\n});\n\nconst iconSize = computed(() => (typeof props.size === 'number' ? `${props.size}px` : props.size));\n</script>\n\n<template>\n <svg\n class=\"icon\"\n :fill=\"color || 'currentColor'\"\n :height=\"iconSize\"\n :width=\"iconSize\">\n <use :xlink:href=\"`#${name}`\" />\n </svg>\n</template>\n\n<style scoped>\n.icon {\n display: inline-block;\n line-height: 0;\n vertical-align: middle;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport Icon from '@/components/Icon/Icon.vue';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './OnPageMessage.module.scss';\n\ninterface OnPageMessageProps {\n variant?: 'default' | 'warning' | 'alert' | 'success';\n text: string;\n}\n\nconst props = withDefaults(defineProps<OnPageMessageProps>(), {\n variant: 'default',\n});\n\nconst IconName = computed<IconNames>(() => {\n switch (props.variant) {\n case 'alert': return 'icon-info-box-error';\n case 'warning': return 'line-caution-triangle';\n case 'success': return 'line-check-natural';\n\n default: return 'filled-info-circle';\n }\n});\n</script>\n\n<template>\n <div\n :class=\"[\n styles.container,\n styles[`container__${variant}`],\n ]\">\n <Icon\n :name=\"IconName\"\n :size=\"24\" />\n <span :class=\"styles.container__text\">{{ text }}</span>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport { Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './SegmentButton.module.scss';\n\nexport interface SegmentType {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: IconNames;\n}\n\nexport interface SegmentButtonProps {\n color: 'primary' | 'secondary' | 'danger' | 'warning' | 'smart';\n size?: 'default' | 'small';\n align?: 'vertical' | 'horizontal';\n disabled?: boolean;\n segments: SegmentType[];\n fill?: boolean;\n modelValue?: string;\n}\n\ninterface SegmentButtonEmits {\n 'update:modelValue': [value: string];\n click: [value: SegmentType['value']];\n}\n\nconst props = withDefaults(defineProps<SegmentButtonProps>(), {\n loadingStatus: false,\n successStatus: false,\n disabled: false,\n size: 'default',\n align: 'horizontal',\n});\n\nconst emit = defineEmits<SegmentButtonEmits>();\nconst selected = ref<string>(props.modelValue || '');\n\nconst setSelect = (segment: SegmentType) => {\n if (props.disabled || segment.disabled) {\n return;\n }\n\n selected.value = segment.value;\n emit('update:modelValue', segment.value);\n emit('click', segment.value);\n};\n\nwatch(() => props.modelValue, newValue => {\n if (selected.value !== newValue) {\n selected.value = newValue || '';\n }\n});\n\nconst filteredSegments = ref<SegmentType[]>([...props.segments]);\n\nwatch(() => props.segments, newSegments => {\n filteredSegments.value = [...newSegments];\n\n if (!newSegments.some(segment => segment.value === selected.value)) {\n selected.value = '';\n emit('update:modelValue', '');\n }\n}, { deep: true });\n</script>\n\n<template>\n <div\n :class=\"[\n styles.segmentGroup,\n styles[`segmentGroup--${align}`],\n { [styles.fill]: fill },\n ]\">\n <button\n v-for=\"(segment, index) in filteredSegments\"\n :key=\"`${segment.value}-${index}`\"\n :class=\"[\n styles.button,\n styles[`button--${color}`],\n styles[`button__size_${size}`],\n styles.fill,\n {\n [styles[`button--selected`]]: segment.value === selected,\n },\n ]\"\n :disabled=\"segment.disabled || props.disabled\"\n @click=\"setSelect(segment)\">\n <Icon\n v-if=\"segment.icon\"\n :name=\"segment.icon\" />\n <span\n v-if=\"segment.label\"\n :class=\"styles.button__label\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue';\nimport styles from './TextInput.module.scss';\n\nexport interface Props {\n id: string;\n name: string;\n modelValue?: string;\n label?: string;\n placeholder?: string;\n maxLength?: number;\n maxHeight?: number;\n error?: string;\n multiline?: boolean;\n autoGrow?: boolean;\n counter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n label: '',\n placeholder: '',\n maxLength: undefined,\n maxHeight: undefined,\n error: '',\n multiline: false,\n autoGrow: false,\n modelValue: '',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [Props['modelValue']];\n input: [event: Event];\n change: [event: Event];\n paste: [event: ClipboardEvent];\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n}>();\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null);\n\nconst autoGrow = () => {\n if (props.autoGrow && textareaRef.value) {\n textareaRef.value.style.height = '';\n\n const newHeight = Math.min(textareaRef.value.scrollHeight, props.maxHeight || textareaRef.value.scrollHeight);\n\n textareaRef.value.style.height = `${newHeight}px`;\n }\n};\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n\n emit('input', event);\n emit('update:modelValue', target.value);\n\n autoGrow();\n};\n\nonMounted(() => {\n autoGrow();\n});\n</script>\n\n<template>\n <div :class=\"styles.wrapper\">\n <label\n v-if=\"label\"\n :class=\"styles.wrapper__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <template v-if=\"multiline\">\n <textarea\n :id=\"id\"\n ref=\"textareaRef\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error,\n },\n ]\"\n :maxlength=\"maxLength\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :style=\"maxHeight ? { maxHeight: `${maxHeight}px` } : undefined\"\n :value=\"modelValue\"\n @blur=\"emit('blur', $event)\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\" />\n </template>\n <template v-else>\n <input\n :id=\"id\"\n type=\"text\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error,\n },\n ]\"\n :maxlength=\"maxLength\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :value=\"modelValue\"\n @blur=\"emit('blur', $event)\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\">\n </template>\n\n <div :class=\"styles.wrapper__bottom\">\n <div\n v-if=\"error\"\n :class=\"styles.wrapper__errorMessage\">\n {{ error }}\n </div>\n <div\n v-if=\"counter\"\n :class=\"styles.wrapper__counter\">\n {{ modelValue?.toString().length || 0 }}\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport styles from './NumberInput.module.scss';\n\nexport interface Props {\n id: string;\n name: string;\n modelValue?: number;\n label?: string;\n placeholder?: string;\n maxLength?: number;\n error?: string;\n errorStatus?: boolean;\n counter?: boolean;\n min?: number;\n max?: number;\n size?: 'default' | 'small';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n label: '',\n placeholder: '',\n maxLength: undefined,\n min: undefined,\n max: undefined,\n error: '',\n modelValue: undefined,\n size: 'default',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [Props['modelValue']];\n input: [event: Event];\n change: [event: Event];\n paste: [event: ClipboardEvent];\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n}>();\n\nconst applyMinMax = (value: string): string => {\n if (value === '') {\n return value;\n }\n\n const numericValue = Number(value);\n\n if (typeof props.min === 'number' && numericValue < props.min) {\n return props.min.toString();\n } else if (typeof props.max === 'number' && numericValue > props.max) {\n return props.max.toString();\n }\n\n return numericValue.toString();\n};\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n const sanitizedValue = applyMinMax(target.value);\n\n target.value = sanitizedValue;\n\n emit('input', event);\n emit('update:modelValue', Number(sanitizedValue));\n};\n\nconst handleBlur = (event: FocusEvent) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n const oldValue = target.value;\n const sanitizedValue = applyMinMax(target.value === '' ? String(props.min || 0) : target.value);\n\n target.value = sanitizedValue;\n\n emit('blur', event);\n\n if (oldValue !== sanitizedValue) {\n emit('update:modelValue', Number(sanitizedValue));\n }\n};\n</script>\n\n<template>\n <div :class=\"[styles.wrapper, styles[`wrapper__size_${size}`]]\">\n <label\n v-if=\"label\"\n :class=\"styles.wrapper__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <input\n :id=\"id\"\n type=\"number\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error || errorStatus,\n },\n ]\"\n :max=\"max\"\n :maxlength=\"maxLength\"\n :min=\"min\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :value=\"modelValue\"\n @blur=\"handleBlur\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\">\n\n <div\n v-if=\"counter || error\"\n :class=\"styles.wrapper__bottom\">\n <div\n v-if=\"error\"\n :class=\"styles.wrapper__errorMessage\">\n {{ error }}\n </div>\n <div\n v-if=\"counter\"\n :class=\"styles.wrapper__counter\">\n {{ modelValue?.toString().length || 0 }}\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport styles from './Toggle.module.scss';\n\ninterface ToggleProps {\n id: string;\n name: string;\n checked?: boolean;\n disabled?: boolean;\n}\n\nconst props = withDefaults(defineProps<ToggleProps>(), {\n checked: false,\n disabled: false,\n});\n\nconst emit = defineEmits<{\n click: [checked: boolean];\n}>();\n\nconst onClick = () => {\n emit('click', !props.checked);\n};\n</script>\n\n<template>\n <fieldset\n :class=\"[\n styles.wrapper,\n {\n [styles.wrapper_checked]: checked,\n [styles.wrapper_disabled]: disabled,\n },\n ]\">\n <input\n :id=\"id\"\n type=\"checkbox\"\n :checked=\"checked\"\n :class=\"styles.wrapper__input\"\n :disabled=\"disabled\"\n :name=\"name\"\n @click=\"onClick\">\n <label\n :class=\"styles.wrapper__label\"\n :for=\"id\" />\n </fieldset>\n</template>\n","export function preventXSS (html = '') {\n if (typeof(html) === 'string') {\n return html.replace(/<\\/style>/gi, '')\n .replace(/<(.*?) on(.*?)=['\"](.*?)>/gi, '')\n .replace(/(<meta |<style|<\\/*script)(.*?)>/gi, '')\n .replace(/(<([^>]+)>)/ig, '')\n .replace(/<(.*?) (href|src)=\"j(.*)a(.*)v(.*)a(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t(.*):(.*?)>/gi, '');\n }\n return html;\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, type StyleValue } from 'vue';\nimport { Box, Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport { preventXSS } from '@/utils/preventXSS';\nimport styles from './Tooltip.module.scss';\n\ntype TriangleAlignment = 'start' | 'center' | 'end' | 'top';\n\nexport interface TooltipProps {\n id: string;\n text: string;\n staticPosition?: (\n 'top center'\n | 'top left'\n | 'top right'\n | 'bottom center'\n | 'bottom left'\n | 'bottom right'\n | 'right center'\n | 'right top'\n | 'right bottom'\n | 'left center'\n | 'left top'\n | 'left bottom'\n );\n dynamicPosition?: boolean;\n absolutePositionStatus?: boolean;\n offsetX?: number;\n offsetY?: number;\n maxHeight?: number;\n status?: boolean;\n preventXss?: boolean;\n iconName?: IconNames;\n absoluteTriangleAlignment?: TriangleAlignment;\n absoluteTrianglePosition?: 'top' | 'bottom';\n absolutePosition?: StyleValue;\n}\n\nconst props = withDefaults(defineProps<TooltipProps>(), {\n offsetX: 4,\n offsetY: 4,\n staticPosition: 'top center',\n maxHeight: 320,\n status: true,\n iconName: undefined,\n absoluteTriangleAlignment: 'center',\n absoluteTrianglePosition: 'top',\n position: 'bottom',\n align: 'end',\n absolutePositionStatus: false,\n});\n\nconst tooltipIconRef = ref<HTMLElement | null>(null);\nconst dynamicPositionTriangle = ref('center');\nconst dynamicPositionAlignment = ref('bottom');\nconst dynamicPositionTrianglePosition = ref<TriangleAlignment>('center');\nconst dynamicPositionInitialized = ref(false);\nconst animationClass = ref('');\nconst mouseEnterWrapper = ref(false);\nconst mouseEnterIcon = ref(false);\nconst lastEnteredElement = ref('');\nconst displayClass = ref('d-n');\nconst scrollAreaRef = ref<Document | HTMLElement | ParentNode | null>(null);\nconst tooltipRootRef = ref<HTMLElement | null>(null);\nconst tooltipPopupRef = ref<HTMLElement | null>(null);\nconst position = computed(() => props.staticPosition.split(' ')[0]);\nconst alignment = computed(() => props.staticPosition.split(' ')[1]);\nconst topClass = computed(() => (props.iconName ? 'mt-1' : 'mt-0'));\nconst secureText = computed(() => (props.preventXss ? preventXSS(props.text) : props.text));\n\nconst trianglePosition = computed(() => {\n if (props.absolutePositionStatus) {\n return props.absoluteTrianglePosition;\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n return dynamicPositionAlignment.value === 'bottom' ? 'top' : 'bottom';\n }\n\n if (position.value === 'top') {\n return 'bottom';\n }\n\n if (position.value === 'bottom') {\n return 'top';\n }\n\n if (position.value === 'left') {\n return 'right';\n }\n\n if (position.value === 'right') {\n return 'left';\n }\n\n return 'bottom';\n});\n\nconst visibilityClass = computed(() => {\n if (props.absolutePositionStatus) {\n return '';\n }\n\n if (\n (mouseEnterWrapper.value && mouseEnterIcon.value)\n || (lastEnteredElement.value === 'icon' && mouseEnterWrapper.value)\n ) {\n return 'opa-1';\n }\n\n return 'opa-0';\n});\n\nconst triangleAlignment = computed<TriangleAlignment>(() => {\n if (props.absolutePositionStatus) {\n return props.absoluteTriangleAlignment;\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n if (dynamicPositionTriangle.value === 'center') {\n return 'center';\n }\n\n if (dynamicPositionTriangle.value === 'end') {\n return 'end';\n }\n\n if (dynamicPositionTriangle.value === 'start') {\n return 'start';\n }\n\n return dynamicPositionTrianglePosition.value;\n }\n\n if (alignment.value === 'center') {\n return 'center';\n }\n\n if (alignment.value === 'left' || alignment.value === 'top') {\n return 'start';\n }\n\n if (alignment.value === 'right' || alignment.value === 'bottom') {\n return 'end';\n }\n\n return 'center';\n});\n\nconst staticPositionClass = computed(() => {\n if (props.absolutePositionStatus) {\n return '';\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n return styles[`wrapper__box_${dynamicPositionAlignment.value}-${dynamicPositionTriangle.value}`];\n }\n\n return styles[`wrapper__box_${position.value}-${triangleAlignment.value}`];\n});\n\nconst offsetStyle = computed(() => {\n if (props.offsetX === 0 && props.offsetY === 0) {\n return {};\n }\n\n if (props.dynamicPosition) {\n const marginDirection = dynamicPositionAlignment.value === 'bottom' ? 'top' : 'bottom';\n\n return {\n [`margin-${marginDirection}`]: `${props.offsetY}px`,\n };\n }\n\n if (trianglePosition.value === 'top' || trianglePosition.value === 'bottom') {\n return {\n [`margin-${trianglePosition.value}`]: `${props.offsetY}px`,\n };\n }\n\n return { [`margin-${trianglePosition.value}`]: `${props.offsetX}px` };\n});\n\nconst getOffsetRect = (element: HTMLElement) => {\n const { offsetTop: top, offsetLeft: left, offsetWidth: width, offsetHeight: height } = element;\n const bottom = top + height;\n const right = left + width;\n\n return {\n top,\n left,\n width,\n bottom,\n right,\n };\n};\n\nconst getDynamicPosition = (\n target: HTMLElement | null | undefined,\n parent: HTMLElement | null | undefined,\n nested = false\n) => {\n if (!target || !tooltipRootRef.value) {\n return { left: false, right: false, top: false, bottom: false, center: false };\n }\n\n const customRect = { left: 0, right: 0, top: 0, bottom: 0, width: 0, height: 0 };\n const tooltipElementHeight = tooltipRootRef.value.offsetHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const targetHeight = target.offsetHeight;\n const targetWidth = target.offsetWidth || 264;\n const parentRectangle = (parent && getOffsetRect(parent)) || customRect;\n const parentXOffset = nested ? parentRectangle?.right : parentRectangle?.left;\n const parentYOffset = nested ? parentRectangle?.top : parentRectangle?.bottom;\n const hasSpaceOnRight = (\n (parentXOffset + parentRectangle.width) + targetWidth + props.offsetX\n ) < windowWidth;\n const hasSpaceOnLeft = ((parentXOffset + (parentRectangle.width / 2))\n - (targetWidth + props.offsetX)) > 10;\n const hasSpaceOnBottom = (parentYOffset + targetHeight) < (windowHeight - props.offsetY);\n const hasSpaceOnTop = (parentYOffset - (targetHeight + tooltipElementHeight + props.offsetY)) > 0;\n let hasSpaceOnCenter = false;\n\n if (props.iconName) {\n hasSpaceOnCenter = (parentRectangle.right + (targetWidth / 2) < windowWidth)\n && (parentRectangle.left - ((targetWidth + props.offsetX) / 2) >= 10);\n }\n\n return {\n left: hasSpaceOnLeft,\n right: hasSpaceOnRight,\n bottom: hasSpaceOnBottom,\n top: hasSpaceOnTop,\n center: hasSpaceOnCenter,\n };\n};\n\nconst handleDynamicPosition = () => {\n nextTick(() => {\n dynamicPositionInitialized.value = true;\n\n const { bottom, left, right, top, center } = getDynamicPosition(\n tooltipPopupRef.value,\n tooltipPopupRef.value?.parentNode as HTMLElement\n );\n\n if (center) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = bottom && !top ? 'bottom' : 'top';\n\n return;\n }\n\n // Means that every direction has an available space\n if (bottom && left && right && top) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (top && !bottom) {\n if (right && left) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n }\n\n if (bottom && top) {\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'top';\n dynamicPositionTrianglePosition.value = 'end';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'top';\n dynamicPositionTrianglePosition.value = 'start';\n\n return;\n }\n }\n\n if (bottom && !top) {\n if (right && left) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n\n return;\n }\n\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n }\n }\n });\n};\n\nconst isScrollable = (el: HTMLElement | ParentNode): boolean => {\n if (!(el instanceof HTMLElement)) {\n return false;\n }\n\n const hasScrollableContent = el.scrollHeight > el.offsetHeight;\n const overflowYStyle = window.getComputedStyle(el).overflowY;\n const isOverflowScroll = ['auto', 'scroll'].includes(overflowYStyle);\n\n return hasScrollableContent && isOverflowScroll;\n};\n\nconst getScrollableParent = (element: HTMLElement | ParentNode | null): HTMLElement | ParentNode | null => {\n const isComment = element?.nodeType === Node.COMMENT_NODE;\n const isDocument = element?.nodeType === Node.DOCUMENT_NODE;\n\n if (!element || isComment || isDocument) {\n return document;\n }\n\n if (isScrollable(element)) {\n return element;\n }\n\n return getScrollableParent(element.parentNode);\n};\n\nconst killDynamicPositioning = () => {\n scrollAreaRef.value?.removeEventListener('scroll', handleDynamicPosition);\n window?.removeEventListener('resize', handleDynamicPosition);\n};\n\nconst initDynamicPositioning = () => {\n nextTick(() => {\n scrollAreaRef.value = getScrollableParent(tooltipRootRef.value);\n scrollAreaRef.value?.addEventListener('scroll', handleDynamicPosition);\n window?.addEventListener('resize', handleDynamicPosition);\n });\n};\n\nconst onMouseEnterWrapper = () => {\n lastEnteredElement.value = 'wrapper';\n displayClass.value = 'd-b';\n\n mouseEnterWrapper.value = true;\n};\n\nconst onMouseEnterIcon = () => {\n lastEnteredElement.value = 'icon';\n displayClass.value = 'd-b';\n\n mouseEnterIcon.value = true;\n};\n\nconst onMouseLeaveIcon = () => {\n mouseEnterIcon.value = false;\n};\n\nconst onMouseLeaveWrapper = () => {\n lastEnteredElement.value = '';\n mouseEnterWrapper.value = false;\n mouseEnterIcon.value = false;\n};\n\nconst mouseLeave = () => {\n onMouseLeaveWrapper();\n\n if (props.dynamicPosition) {\n if (dynamicPositionAlignment.value === 'bottom') {\n animationClass.value = 'bottom-leave';\n } else if (dynamicPositionAlignment.value === 'top') {\n animationClass.value = 'top-leave';\n }\n } else if (position.value === 'top') {\n animationClass.value = 'top-leave';\n } else if (position.value === 'bottom') {\n animationClass.value = 'bottom-leave';\n } else if (position.value === 'left') {\n animationClass.value = 'left-leave';\n } else if (position.value === 'right') {\n animationClass.value = 'right-leave';\n }\n\n setTimeout(() => {\n animationClass.value = '';\n displayClass.value = 'd-n';\n }, props.absolutePositionStatus ? 0 : 250);\n};\n\nconst addAnimationClass = () => {\n onMouseEnterWrapper();\n handleDynamicPosition();\n\n if (props.dynamicPosition) {\n if (dynamicPositionAlignment.value === 'bottom') {\n animationClass.value = 'top-entrance';\n } else if (dynamicPositionAlignment.value === 'top') {\n animationClass.value = 'bottom-entrance';\n }\n } else if (position.value === 'top') {\n animationClass.value = 'bottom-entrance';\n } else if (position.value === 'bottom') {\n animationClass.value = 'top-entrance';\n } else if (position.value === 'left') {\n animationClass.value = 'right-entrance';\n } else if (position.value === 'right') {\n animationClass.value = 'left-entrance';\n }\n\n setTimeout(() => {\n animationClass.value = '';\n }, 250);\n};\n\nonMounted(() => {\n if (props.dynamicPosition) {\n initDynamicPositioning();\n }\n});\n\nonBeforeUnmount(() => {\n killDynamicPositioning();\n});\n</script>\n\n<template>\n <div\n :id=\"id\"\n ref=\"tooltipRootRef\"\n :class=\"styles.wrapper\"\n @mouseenter=\"addAnimationClass\"\n @mouseleave=\"mouseLeave\">\n <Icon\n v-if=\"iconName\"\n ref=\"tooltipIconRef\"\n :class=\"styles.wrapper__icon\"\n :name=\"iconName\"\n @mouseenter=\"onMouseEnterIcon\"\n @mouseleave=\"onMouseLeaveIcon\" />\n <div\n v-else\n :class=\"styles.wrapper__icon\"\n @mouseenter=\"onMouseEnterIcon\"\n @mouseleave=\"onMouseEnterIcon\">\n <slot name=\"triggerElement\" />\n </div>\n <div\n v-if=\"status\"\n ref=\"tooltipPopupRef\"\n :class=\"[styles.wrapper__box, staticPositionClass, visibilityClass, displayClass]\"\n :style=\"absolutePosition\">\n <Box\n border-triangle\n :border-triangle-align=\"triangleAlignment\"\n :border-triangle-position=\"trianglePosition\"\n :class=\"[styles['wrapper__box-content'], topClass, animationClass]\"\n :style=\"offsetStyle\">\n <div\n :class=\"styles.wrapper__text\"\n :style=\"{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }\">\n <div v-html=\"secureText\" />\n <slot name=\"contentSlot\" />\n </div>\n </Box>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport styles from './Box.module.scss';\n\nexport interface Props {\n border?: string;\n borderRadius?: string;\n borderTriangle?: boolean;\n borderTriangleAlign?: 'start' | 'center' | 'end';\n borderTrianglePosition?: 'top' | 'right' | 'left' | 'bottom';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n borderRadius: 'bor-r-1',\n borderTriangle: false,\n borderTriangleAlign: 'center',\n borderTrianglePosition: 'top',\n});\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\nconst trianglePosition = computed(\n () => (props.borderTriangle ? styles[`box_${props.borderTrianglePosition}-${props.borderTriangleAlign}`] : '')\n);\n\nfunction trigger (): void {\n emit('click');\n}\n</script>\n\n<template>\n <div\n :class=\"[styles.box, trianglePosition, border, borderRadius]\"\n @click=\"trigger\">\n <slot />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport DefaultBox from './DefaultBox.vue';\nimport FlipBox from './FlipBox.vue';\n\nconst boxes = {\n default: DefaultBox,\n flip: FlipBox,\n} as const;\n\nwithDefaults(defineProps<{\n type?: keyof typeof boxes;\n borderTriangle?: boolean;\n borderTriangleAlign?: 'start' | 'center' | 'end' | 'top';\n borderTrianglePosition?: 'top' | 'right' | 'left' | 'bottom';\n boxSpacing?: string;\n}>(), {\n borderTriangle: false,\n boxSpacing: '',\n type: 'default',\n});\n</script>\n\n<template>\n <component\n :is=\"boxes[type]\"\n :border-triangle=\"borderTriangle\"\n :border-triangle-align=\"borderTriangleAlign\"\n :border-triangle-position=\"borderTrianglePosition\"\n :box-spacing=\"boxSpacing\">\n <slot />\n <slot name=\"front\" />\n <slot name=\"reverse\" />\n </component>\n</template>\n"],"names":["props","__props","emit","__emit","onClick","event","leftIcon","computed","clickOutside","el","binding","excludeElements","element","isFuzzyMatch","choiceValue","searchTerm","searchIndex","char","_a","fuzzySearch","choices","key","normalizedSearchTerm","choice","value","b","aValue","bValue","vClickOutside","dropdownRef","ref","menuRef","isOpen","selectedItem","searchQuery","errorMessage","menuPosition","filteredItems","reactive","allItems","calculateMenuPosition","top","left","width","viewportHeight","bottom","shouldOpenUp","toggleMenu","resetSettings","closeMenu","selectItem","item","addItem","query","error","newItem","onSearch","results","onFocusSearch","menuStyle","onMounted","defaultItem","selectedValue","watch","newValue","newItems","clickOutsideTarget","iconSize","IconName","selected","setSelect","segment","filteredSegments","newSegments","textareaRef","autoGrow","newHeight","handleInput","target","applyMinMax","numericValue","sanitizedValue","handleBlur","oldValue","preventXSS","html","tooltipIconRef","dynamicPositionTriangle","dynamicPositionAlignment","dynamicPositionTrianglePosition","dynamicPositionInitialized","animationClass","mouseEnterWrapper","mouseEnterIcon","lastEnteredElement","displayClass","scrollAreaRef","tooltipRootRef","tooltipPopupRef","position","alignment","topClass","secureText","trianglePosition","visibilityClass","triangleAlignment","staticPositionClass","styles","offsetStyle","getOffsetRect","height","right","getDynamicPosition","parent","nested","customRect","tooltipElementHeight","windowWidth","windowHeight","targetHeight","targetWidth","parentRectangle","parentXOffset","parentYOffset","hasSpaceOnRight","hasSpaceOnLeft","hasSpaceOnBottom","hasSpaceOnTop","hasSpaceOnCenter","handleDynamicPosition","nextTick","center","isScrollable","hasScrollableContent","overflowYStyle","isOverflowScroll","getScrollableParent","isComment","isDocument","killDynamicPositioning","initDynamicPositioning","onMouseEnterWrapper","onMouseEnterIcon","onMouseLeaveIcon","onMouseLeaveWrapper","mouseLeave","addAnimationClass","onBeforeUnmount","trigger","boxes","DefaultBox","FlipBox"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ab-components.cjs.js","sources":["../src/components/Button/Button.vue","../src/directives/clickOutside.ts","../src/utils/search.ts","../src/components/Dropdown/DropdownMenu.vue","../src/components/Icon/Icon.vue","../src/components/OnPageMessage/OnPageMessage.vue","../src/components/SegmentButton/SegmentButton.vue","../src/components/TextInput/TextInput.vue","../src/components/NumberInput/NumberInput.vue","../src/components/Toggle/Toggle.vue","../src/utils/preventXSS.ts","../src/components/Tooltip/Tooltip.vue","../src/components/Box/DefaultBox.vue","../src/components/Box/Box.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\n\nimport { Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './Button.module.scss';\n\ninterface ButtonProps {\n variant: 'solid' | 'ghost' | 'text' | 'outline';\n color: 'primary' | 'subtle-primary' | 'secondary' | 'danger' | 'warning' | 'smart';\n size?: 'default' | 'small';\n leftIconName?: IconNames;\n rightIconName?: IconNames;\n loadingStatus?: boolean;\n successStatus?: boolean;\n label?: string;\n disabled?: boolean;\n fill?: boolean;\n}\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n loadingStatus: false,\n successStatus: false,\n disabled: false,\n fill: false,\n size: 'default',\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst onClick = (event: MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n emit('click', event);\n};\n\nconst leftIcon = computed<IconNames | undefined>(() => {\n if (props.loadingStatus) {\n return 'loading-circle';\n } else if (props.successStatus) {\n return 'line-check-natural';\n }\n\n return props.leftIconName;\n});\n</script>\n\n<template>\n <button\n :class=\"[\n styles.button,\n styles[`button__${variant}`],\n styles[`button__${variant}-${color}`],\n styles[`button__size_${size}`],\n { [styles.fill]: fill },\n ]\"\n :disabled=\"props.disabled\"\n @click=\"onClick\">\n <Icon\n v-if=\"leftIcon\"\n :name=\"leftIcon\" />\n <span\n v-if=\"label\"\n :class=\"styles.button__label\">\n {{ label }}\n </span>\n <Icon\n v-if=\"rightIconName\"\n :name=\"rightIconName\" />\n </button>\n</template>\n","import type { DirectiveBinding, Ref } from 'vue';\n\ninterface ClickOutsideElement extends HTMLElement {\n clickOutsideEvent?: (event: Event) => void;\n}\n\ntype DirectiveType = {\n handler: () => void;\n exclude: Ref<HTMLElement | undefined>[];\n}\n\nexport default {\n mounted(el: ClickOutsideElement, binding: DirectiveBinding<DirectiveType>) {\n el.clickOutsideEvent = (event: Event) => {\n const excludeElements = (binding.value.exclude || [])\n .filter(el => el.value)\n .map(el => el.value);\n const isClickInside = [el, ...excludeElements].some(element => {\n return element && (element === event.target || element.contains(event.target as Node))\n });\n\n if (!isClickInside) {\n binding.value.handler();\n }\n };\n\n document.addEventListener('click', el.clickOutsideEvent);\n },\n unmounted(el: ClickOutsideElement) {\n if (el.clickOutsideEvent) {\n document.removeEventListener('click', el.clickOutsideEvent);\n }\n },\n};\n","const isFuzzyMatch = (choiceValue: string, searchTerm: string): boolean => {\n let searchIndex = 0;\n for (const char of choiceValue) {\n if (char.toLowerCase() === searchTerm[searchIndex]?.toLowerCase()) {\n searchIndex++;\n }\n if (searchIndex === searchTerm.length) {\n return true;\n }\n }\n return false;\n};\n\n\nexport const fuzzySearch = <T>(\n choices: T[],\n key: keyof T,\n searchTerm: string,\n): T[] => {\n if (!searchTerm.trim()) {\n return choices;\n }\n\n const normalizedSearchTerm = searchTerm.toLowerCase();\n\n return choices\n .filter(choice => {\n const value = String(choice[key]);\n\n return isFuzzyMatch(value.toLowerCase(), normalizedSearchTerm)\n })\n .sort((a, b) => {\n const aValue = String(a[key]).toLowerCase();\n const bValue = String(b[key]).toLowerCase();\n\n if (aValue === normalizedSearchTerm) return -1;\n if (bValue === normalizedSearchTerm) return 1;\n\n if (aValue.startsWith(normalizedSearchTerm) && !bValue.startsWith(normalizedSearchTerm))\n return -1;\n if (!aValue.startsWith(normalizedSearchTerm) && bValue.startsWith(normalizedSearchTerm))\n return 1;\n\n return aValue.length - bValue.length;\n });\n};\n","<script lang=\"ts\" setup>\nimport { ref, computed, type StyleValue, onMounted, reactive, watch } from 'vue';\nimport clickOutside from '@/directives/clickOutside';\nimport { fuzzySearch } from '@/utils/search';\nimport styles from './Dropdown.module.scss';\n\nconst vClickOutside = clickOutside;\n\ninterface MenuItem {\n text: string;\n value: string;\n}\n\ninterface DropdownProps {\n id: string;\n label?: string;\n modelValue?: string;\n menuHeight?: number;\n placeholder?: string;\n addable?: boolean;\n addButtonText?: string;\n searchable?: boolean;\n searchPlaceHolder?: string;\n items: MenuItem[];\n validateAddItem?: (item: string, items: MenuItem[]) => string | null;\n}\n\ninterface Emits {\n (e: 'update:modelValue', value: string): void;\n (e: 'add-error', error: string): void;\n (e: 'item-added', item: MenuItem): void;\n (e: 'select-item', item: MenuItem): void;\n}\n\nconst props = withDefaults(defineProps<DropdownProps>(), {\n menuHeight: 154,\n searchBar: false,\n addItem: false,\n modelValue: '',\n validateAddItem: () => null,\n});\n\nconst emit = defineEmits<Emits>();\nconst dropdownRef = ref<HTMLDivElement>();\nconst menuRef = ref<HTMLDivElement>();\nconst isOpen = ref(false);\nconst selectedItem = ref<MenuItem | null>(null);\nconst searchQuery = ref('');\nconst errorMessage = ref<string | null>(null);\nconst menuPosition = ref({ x: 0, y: 0, width: 0, shouldOpenUp: false, height: props.menuHeight });\nconst filteredItems = reactive([...props.items]);\nconst allItems = reactive([...props.items]);\n\nconst calculateMenuPosition = () => {\n if (!dropdownRef.value) {\n return;\n }\n\n const { offsetTop: top, offsetLeft: left, offsetWidth: width } = dropdownRef.value;\n const viewportHeight = window.innerHeight;\n const bottom = top + dropdownRef.value.offsetHeight;\n const shouldOpenUp = bottom + props.menuHeight > viewportHeight;\n\n menuPosition.value = {\n x: left + window.scrollX,\n y: shouldOpenUp ? top + window.scrollY : bottom + window.scrollY,\n width,\n shouldOpenUp,\n height: props.menuHeight,\n };\n};\n\nconst toggleMenu = () => {\n calculateMenuPosition();\n isOpen.value = !isOpen.value;\n};\n\nconst resetSettings = () => {\n errorMessage.value = null;\n searchQuery.value = '';\n filteredItems.splice(0, filteredItems.length, ...allItems);\n};\n\nconst closeMenu = () => {\n isOpen.value = false;\n\n resetSettings();\n};\n\nconst selectItem = (item: MenuItem) => {\n selectedItem.value = item;\n\n emit('select-item', item);\n emit('update:modelValue', item.value);\n\n closeMenu();\n};\n\nconst addItem = () => {\n const query = searchQuery.value.trim();\n const error = props.validateAddItem(query, allItems);\n\n if (error) {\n errorMessage.value = error;\n\n emit('add-error', error);\n\n return;\n }\n\n const newItem: MenuItem = {\n text: query,\n value: query,\n };\n\n allItems.push(newItem);\n resetSettings();\n\n emit('item-added', newItem);\n};\n\nconst onSearch = () => {\n const results = fuzzySearch<MenuItem>(allItems, 'text', searchQuery.value);\n\n filteredItems.splice(0, filteredItems.length, ...results);\n};\n\nconst onFocusSearch = () => {\n errorMessage.value = '';\n};\n\nconst menuStyle = computed<Partial<StyleValue>>(() => ({\n top: menuPosition.value.shouldOpenUp ? `${menuPosition.value.y - 10}px` : `${menuPosition.value.y}px`,\n left: `${menuPosition.value.x}px`,\n width: `${menuPosition.value.width}px`,\n height: `${props.menuHeight}px`,\n}));\n\nonMounted(() => {\n calculateMenuPosition();\n\n if (props.modelValue) {\n const defaultItem = allItems.find(item => item.value === props.modelValue);\n\n if (defaultItem) {\n selectedItem.value = defaultItem;\n }\n }\n});\n\nconst selectedValue = computed(() => (selectedItem.value ? selectedItem.value.text : ''));\n\nwatch(() => props.modelValue, newValue => {\n if (selectedItem.value?.value !== newValue) {\n const defaultItem = allItems.find(item => item.value === newValue);\n\n if (defaultItem) {\n selectedItem.value = defaultItem;\n }\n }\n});\n\nwatch(\n () => props.items,\n newItems => {\n allItems.splice(0, allItems.length, ...newItems);\n filteredItems.splice(0, filteredItems.length, ...newItems);\n },\n { deep: true }\n);\n\nconst clickOutsideTarget = ref({ handler: closeMenu, exclude: [dropdownRef, menuRef] });\n</script>\n\n<template>\n <div\n ref=\"dropdownRef\"\n :class=\"styles.dropdown\">\n <label\n v-if=\"label\"\n :class=\"styles.dropdown__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <button\n :class=\"[\n styles.dropdown__valueContent, {\n [styles['dropdown__valueContent--open']]: isOpen,\n },\n ]\"\n @click=\"toggleMenu\">\n <span :class=\"styles.dropdown__value\">\n {{ selectedValue }}\n </span>\n <span\n v-if=\"placeholder && !selectedValue\"\n :class=\"styles.dropdown__placeholder\">\n {{ placeholder }}\n </span>\n <svg\n fill=\"none\"\n height=\"17\"\n viewBox=\"0 0 16 17\"\n width=\"16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n :class=\"styles.dropdown__arrowIcon\">\n <path\n d=\"M8 11.2021L4.5359 6.70215L11.4641 6.70215L8 11.2021Z\"\n fill=\"#91949F\" />\n </svg>\n </button>\n </div>\n\n <div\n v-show=\"isOpen\"\n ref=\"menuRef\"\n :class=\"styles.menu\"\n :style=\"menuStyle\"\n v-click-outside=\"clickOutsideTarget\"\n @click.prevent>\n <div\n v-if=\"props.searchable\"\n :class=\"styles.menu__searchContainer\">\n <div :class=\"styles.menu__searchInputWrap\">\n <input\n type=\"text\"\n :class=\"[\n styles.menu__searchInput, {\n [styles['menu__searchInput--error']]: errorMessage,\n },\n ]\"\n :placeholder=\"searchPlaceHolder\"\n v-model=\"searchQuery\"\n @focus=\"onFocusSearch\"\n @input=\"onSearch\">\n <p\n v-if=\"errorMessage\"\n :class=\"styles.menu__errorMessage\">\n {{ errorMessage }}\n </p>\n </div>\n <button\n v-if=\"props.addable\"\n :class=\"styles.menu__addButton\"\n @click=\"addItem\">\n {{ addButtonText }}\n </button>\n </div>\n <ul :class=\"styles.menu__itemContainer\">\n <li\n v-for=\"(item, index) in filteredItems\"\n :key=\"`${item.value}-${index}`\"\n :class=\"[\n styles.menu__item, {\n [styles['menu__item--active']]: selectedItem && item.value === selectedItem.value,\n },\n ]\"\n @click=\"selectItem(item)\">\n {{ item.text }}\n </li>\n </ul>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport type { IconNames } from '@/types/generated/svgIconName';\n\nexport interface IconProps {\n name: IconNames;\n size?: 16 | 24;\n color?: string;\n}\n\nconst props = withDefaults(defineProps<IconProps>(), {\n size: 16,\n});\n\nconst iconSize = computed(() => (typeof props.size === 'number' ? `${props.size}px` : props.size));\n</script>\n\n<template>\n <svg\n class=\"icon\"\n :fill=\"color || 'currentColor'\"\n :height=\"iconSize\"\n :width=\"iconSize\">\n <use :xlink:href=\"`#${name}`\" />\n </svg>\n</template>\n\n<style scoped>\n.icon {\n display: inline-block;\n line-height: 0;\n vertical-align: middle;\n}\n</style>\n","<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport Icon from '@/components/Icon/Icon.vue';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './OnPageMessage.module.scss';\n\ninterface OnPageMessageProps {\n variant?: 'default' | 'warning' | 'alert' | 'success';\n text: string;\n}\n\nconst props = withDefaults(defineProps<OnPageMessageProps>(), {\n variant: 'default',\n});\n\nconst IconName = computed<IconNames>(() => {\n switch (props.variant) {\n case 'alert': return 'icon-info-box-error';\n case 'warning': return 'line-caution-triangle';\n case 'success': return 'line-check-natural';\n\n default: return 'filled-info-circle';\n }\n});\n</script>\n\n<template>\n <div\n :class=\"[\n styles.container,\n styles[`container__${variant}`],\n ]\">\n <Icon\n :name=\"IconName\"\n :size=\"24\" />\n <span :class=\"styles.container__text\">{{ text }}</span>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { ref, watch } from 'vue';\nimport { Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport styles from './SegmentButton.module.scss';\n\nexport interface SegmentType {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: IconNames;\n}\n\nexport interface SegmentButtonProps {\n color: 'primary' | 'secondary' | 'danger' | 'warning' | 'smart';\n size?: 'default' | 'small';\n align?: 'vertical' | 'horizontal';\n disabled?: boolean;\n segments: SegmentType[];\n fill?: boolean;\n modelValue?: string;\n}\n\ninterface SegmentButtonEmits {\n 'update:modelValue': [value: string];\n click: [value: SegmentType['value']];\n}\n\nconst props = withDefaults(defineProps<SegmentButtonProps>(), {\n loadingStatus: false,\n successStatus: false,\n disabled: false,\n size: 'default',\n align: 'horizontal',\n});\n\nconst emit = defineEmits<SegmentButtonEmits>();\nconst selected = ref<string>(props.modelValue || '');\n\nconst setSelect = (segment: SegmentType) => {\n if (props.disabled || segment.disabled) {\n return;\n }\n\n selected.value = segment.value;\n emit('update:modelValue', segment.value);\n emit('click', segment.value);\n};\n\nwatch(() => props.modelValue, newValue => {\n if (selected.value !== newValue) {\n selected.value = newValue || '';\n }\n});\n\nconst filteredSegments = ref<SegmentType[]>([...props.segments]);\n\nwatch(() => props.segments, newSegments => {\n filteredSegments.value = [...newSegments];\n\n if (!newSegments.some(segment => segment.value === selected.value)) {\n selected.value = '';\n emit('update:modelValue', '');\n }\n}, { deep: true });\n</script>\n\n<template>\n <div\n :class=\"[\n styles.segmentGroup,\n styles[`segmentGroup--${align}`],\n { [styles.fill]: fill },\n ]\">\n <button\n v-for=\"(segment, index) in filteredSegments\"\n :key=\"`${segment.value}-${index}`\"\n :class=\"[\n styles.button,\n styles[`button--${color}`],\n styles[`button__size_${size}`],\n styles.fill,\n {\n [styles[`button--selected`]]: segment.value === selected,\n },\n ]\"\n :disabled=\"segment.disabled || props.disabled\"\n @click=\"setSelect(segment)\">\n <Icon\n v-if=\"segment.icon\"\n :name=\"segment.icon\" />\n <span\n v-if=\"segment.label\"\n :class=\"styles.button__label\">\n {{ segment.label }}\n </span>\n </button>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue';\nimport styles from './TextInput.module.scss';\n\nexport interface Props {\n id: string;\n name: string;\n modelValue?: string;\n label?: string;\n placeholder?: string;\n maxLength?: number;\n maxHeight?: number;\n error?: string;\n multiline?: boolean;\n autoGrow?: boolean;\n counter?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n label: '',\n placeholder: '',\n maxLength: undefined,\n maxHeight: undefined,\n error: '',\n multiline: false,\n autoGrow: false,\n modelValue: '',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [Props['modelValue']];\n input: [event: Event];\n change: [event: Event];\n paste: [event: ClipboardEvent];\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n}>();\n\nconst textareaRef = ref<HTMLTextAreaElement | null>(null);\n\nconst autoGrow = () => {\n if (props.autoGrow && textareaRef.value) {\n textareaRef.value.style.height = '';\n\n const newHeight = Math.min(textareaRef.value.scrollHeight, props.maxHeight || textareaRef.value.scrollHeight);\n\n textareaRef.value.style.height = `${newHeight}px`;\n }\n};\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n\n emit('input', event);\n emit('update:modelValue', target.value);\n\n autoGrow();\n};\n\nonMounted(() => {\n autoGrow();\n});\n</script>\n\n<template>\n <div :class=\"styles.wrapper\">\n <label\n v-if=\"label\"\n :class=\"styles.wrapper__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <template v-if=\"multiline\">\n <textarea\n :id=\"id\"\n ref=\"textareaRef\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error,\n },\n ]\"\n :maxlength=\"maxLength\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :style=\"maxHeight ? { maxHeight: `${maxHeight}px` } : undefined\"\n :value=\"modelValue\"\n @blur=\"emit('blur', $event)\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\" />\n </template>\n <template v-else>\n <input\n :id=\"id\"\n type=\"text\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error,\n },\n ]\"\n :maxlength=\"maxLength\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :value=\"modelValue\"\n @blur=\"emit('blur', $event)\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\">\n </template>\n\n <div :class=\"styles.wrapper__bottom\">\n <div\n v-if=\"error\"\n :class=\"styles.wrapper__errorMessage\">\n {{ error }}\n </div>\n <div\n v-if=\"counter\"\n :class=\"styles.wrapper__counter\">\n {{ modelValue?.toString().length || 0 }}\n </div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport styles from './NumberInput.module.scss';\n\nexport interface Props {\n id: string;\n name: string;\n modelValue?: number;\n label?: string;\n placeholder?: string;\n maxLength?: number;\n error?: string;\n errorStatus?: boolean;\n counter?: boolean;\n min?: number;\n max?: number;\n size?: 'default' | 'small';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n label: '',\n placeholder: '',\n maxLength: undefined,\n min: undefined,\n max: undefined,\n error: '',\n modelValue: undefined,\n size: 'default',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [Props['modelValue']];\n input: [event: Event];\n change: [event: Event];\n paste: [event: ClipboardEvent];\n focus: [event: FocusEvent];\n blur: [event: FocusEvent];\n}>();\n\nconst applyMinMax = (value: string): string => {\n if (value === '') {\n return value;\n }\n\n const numericValue = Number(value);\n\n if (typeof props.min === 'number' && numericValue < props.min) {\n return props.min.toString();\n } else if (typeof props.max === 'number' && numericValue > props.max) {\n return props.max.toString();\n }\n\n return numericValue.toString();\n};\n\nconst handleInput = (event: Event) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n const sanitizedValue = applyMinMax(target.value);\n\n target.value = sanitizedValue;\n\n emit('input', event);\n emit('update:modelValue', Number(sanitizedValue));\n};\n\nconst handleBlur = (event: FocusEvent) => {\n const target = event.target as HTMLInputElement | HTMLTextAreaElement;\n const oldValue = target.value;\n const sanitizedValue = applyMinMax(target.value === '' ? String(props.min || 0) : target.value);\n\n target.value = sanitizedValue;\n\n emit('blur', event);\n\n if (oldValue !== sanitizedValue) {\n emit('update:modelValue', Number(sanitizedValue));\n }\n};\n</script>\n\n<template>\n <div :class=\"[styles.wrapper, styles[`wrapper__size_${size}`]]\">\n <label\n v-if=\"label\"\n :class=\"styles.wrapper__label\"\n :for=\"id\">\n {{ label }}\n </label>\n <input\n :id=\"id\"\n type=\"number\"\n :class=\"[\n styles.wrapper__field, {\n [styles['wrapper--error']]: error || errorStatus,\n },\n ]\"\n :max=\"max\"\n :maxlength=\"maxLength\"\n :min=\"min\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :value=\"modelValue\"\n @blur=\"handleBlur\"\n @change=\"$emit('change', $event)\"\n @focus=\"emit('focus', $event)\"\n @input=\"handleInput\"\n @paste=\"emit('paste', $event)\">\n\n <div\n v-if=\"counter || error\"\n :class=\"styles.wrapper__bottom\">\n <div\n v-if=\"error\"\n :class=\"styles.wrapper__errorMessage\">\n {{ error }}\n </div>\n <div\n v-if=\"counter\"\n :class=\"styles.wrapper__counter\">\n {{ modelValue?.toString().length || 0 }}\n </div>\n </div>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport styles from './Toggle.module.scss';\n\ninterface ToggleProps {\n id: string;\n name: string;\n checked?: boolean;\n disabled?: boolean;\n}\n\nconst props = withDefaults(defineProps<ToggleProps>(), {\n checked: false,\n disabled: false,\n});\n\nconst emit = defineEmits<{\n click: [checked: boolean];\n}>();\n\nconst onClick = () => {\n emit('click', !props.checked);\n};\n</script>\n\n<template>\n <fieldset\n :class=\"[\n styles.wrapper,\n {\n [styles.wrapper_checked]: checked,\n [styles.wrapper_disabled]: disabled,\n },\n ]\">\n <input\n :id=\"id\"\n type=\"checkbox\"\n :checked=\"checked\"\n :class=\"styles.wrapper__input\"\n :disabled=\"disabled\"\n :name=\"name\"\n @click=\"onClick\">\n <label\n :class=\"styles.wrapper__label\"\n :for=\"id\" />\n </fieldset>\n</template>\n","export function preventXSS (html = '') {\n if (typeof(html) === 'string') {\n return html.replace(/<\\/style>/gi, '')\n .replace(/<(.*?) on(.*?)=['\"](.*?)>/gi, '')\n .replace(/(<meta |<style|<\\/*script)(.*?)>/gi, '')\n .replace(/(<([^>]+)>)/ig, '')\n .replace(/<(.*?) (href|src)=\"j(.*)a(.*)v(.*)a(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t(.*):(.*?)>/gi, '');\n }\n return html;\n}\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, type StyleValue } from 'vue';\nimport { Box, Icon } from '@/index';\nimport type { IconNames } from '@/types/generated/svgIconName';\nimport { preventXSS } from '@/utils/preventXSS';\nimport styles from './Tooltip.module.scss';\n\ntype TriangleAlignment = 'start' | 'center' | 'end' | 'top';\n\nexport interface TooltipProps {\n id: string;\n text: string;\n staticPosition?: (\n 'top center'\n | 'top left'\n | 'top right'\n | 'bottom center'\n | 'bottom left'\n | 'bottom right'\n | 'right center'\n | 'right top'\n | 'right bottom'\n | 'left center'\n | 'left top'\n | 'left bottom'\n );\n dynamicPosition?: boolean;\n absolutePositionStatus?: boolean;\n offsetX?: number;\n offsetY?: number;\n maxHeight?: number;\n status?: boolean;\n preventXss?: boolean;\n iconName?: IconNames;\n absoluteTriangleAlignment?: TriangleAlignment;\n absoluteTrianglePosition?: 'top' | 'bottom';\n absolutePosition?: StyleValue;\n}\n\nconst props = withDefaults(defineProps<TooltipProps>(), {\n offsetX: 4,\n offsetY: 4,\n staticPosition: 'top center',\n maxHeight: 320,\n status: true,\n iconName: undefined,\n absoluteTriangleAlignment: 'center',\n absoluteTrianglePosition: 'top',\n position: 'bottom',\n align: 'end',\n absolutePositionStatus: false,\n});\n\nconst tooltipIconRef = ref<HTMLElement | null>(null);\nconst dynamicPositionTriangle = ref('center');\nconst dynamicPositionAlignment = ref('bottom');\nconst dynamicPositionTrianglePosition = ref<TriangleAlignment>('center');\nconst dynamicPositionInitialized = ref(false);\nconst animationClass = ref('');\nconst mouseEnterWrapper = ref(false);\nconst mouseEnterIcon = ref(false);\nconst lastEnteredElement = ref('');\nconst displayClass = ref('d-n');\nconst scrollAreaRef = ref<Document | HTMLElement | ParentNode | null>(null);\nconst tooltipRootRef = ref<HTMLElement | null>(null);\nconst tooltipPopupRef = ref<HTMLElement | null>(null);\nconst position = computed(() => props.staticPosition.split(' ')[0]);\nconst alignment = computed(() => props.staticPosition.split(' ')[1]);\nconst topClass = computed(() => (props.iconName ? 'mt-1' : 'mt-0'));\nconst secureText = computed(() => (props.preventXss ? preventXSS(props.text) : props.text));\n\nconst trianglePosition = computed(() => {\n if (props.absolutePositionStatus) {\n return props.absoluteTrianglePosition;\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n return dynamicPositionAlignment.value === 'bottom' ? 'top' : 'bottom';\n }\n\n if (position.value === 'top') {\n return 'bottom';\n }\n\n if (position.value === 'bottom') {\n return 'top';\n }\n\n if (position.value === 'left') {\n return 'right';\n }\n\n if (position.value === 'right') {\n return 'left';\n }\n\n return 'bottom';\n});\n\nconst visibilityClass = computed(() => {\n if (props.absolutePositionStatus) {\n return '';\n }\n\n if (\n (mouseEnterWrapper.value && mouseEnterIcon.value)\n || (lastEnteredElement.value === 'icon' && mouseEnterWrapper.value)\n ) {\n return 'opa-1';\n }\n\n return 'opa-0';\n});\n\nconst triangleAlignment = computed<TriangleAlignment>(() => {\n if (props.absolutePositionStatus) {\n return props.absoluteTriangleAlignment;\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n if (dynamicPositionTriangle.value === 'center') {\n return 'center';\n }\n\n if (dynamicPositionTriangle.value === 'end') {\n return 'end';\n }\n\n if (dynamicPositionTriangle.value === 'start') {\n return 'start';\n }\n\n return dynamicPositionTrianglePosition.value;\n }\n\n if (alignment.value === 'center') {\n return 'center';\n }\n\n if (alignment.value === 'left' || alignment.value === 'top') {\n return 'start';\n }\n\n if (alignment.value === 'right' || alignment.value === 'bottom') {\n return 'end';\n }\n\n return 'center';\n});\n\nconst staticPositionClass = computed(() => {\n if (props.absolutePositionStatus) {\n return '';\n }\n\n if (props.dynamicPosition && dynamicPositionInitialized.value) {\n return styles[`wrapper__box_${dynamicPositionAlignment.value}-${dynamicPositionTriangle.value}`];\n }\n\n return styles[`wrapper__box_${position.value}-${triangleAlignment.value}`];\n});\n\nconst offsetStyle = computed(() => {\n if (props.offsetX === 0 && props.offsetY === 0) {\n return {};\n }\n\n if (props.dynamicPosition) {\n const marginDirection = dynamicPositionAlignment.value === 'bottom' ? 'top' : 'bottom';\n\n return {\n [`margin-${marginDirection}`]: `${props.offsetY}px`,\n };\n }\n\n if (trianglePosition.value === 'top' || trianglePosition.value === 'bottom') {\n return {\n [`margin-${trianglePosition.value}`]: `${props.offsetY}px`,\n };\n }\n\n return { [`margin-${trianglePosition.value}`]: `${props.offsetX}px` };\n});\n\nconst getOffsetRect = (element: HTMLElement) => {\n const { offsetTop: top, offsetLeft: left, offsetWidth: width, offsetHeight: height } = element;\n const bottom = top + height;\n const right = left + width;\n\n return {\n top,\n left,\n width,\n bottom,\n right,\n };\n};\n\nconst getDynamicPosition = (\n target: HTMLElement | null | undefined,\n parent: HTMLElement | null | undefined,\n nested = false\n) => {\n if (!target || !tooltipRootRef.value) {\n return { left: false, right: false, top: false, bottom: false, center: false };\n }\n\n const customRect = { left: 0, right: 0, top: 0, bottom: 0, width: 0, height: 0 };\n const tooltipElementHeight = tooltipRootRef.value.offsetHeight;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n const targetHeight = target.offsetHeight;\n const targetWidth = target.offsetWidth || 264;\n const parentRectangle = (parent && getOffsetRect(parent)) || customRect;\n const parentXOffset = nested ? parentRectangle?.right : parentRectangle?.left;\n const parentYOffset = nested ? parentRectangle?.top : parentRectangle?.bottom;\n const hasSpaceOnRight = (\n (parentXOffset + parentRectangle.width) + targetWidth + props.offsetX\n ) < windowWidth;\n const hasSpaceOnLeft = ((parentXOffset + (parentRectangle.width / 2))\n - (targetWidth + props.offsetX)) > 10;\n const hasSpaceOnBottom = (parentYOffset + targetHeight) < (windowHeight - props.offsetY);\n const hasSpaceOnTop = (parentYOffset - (targetHeight + tooltipElementHeight + props.offsetY)) > 0;\n let hasSpaceOnCenter = false;\n\n if (props.iconName) {\n hasSpaceOnCenter = (parentRectangle.right + (targetWidth / 2) < windowWidth)\n && (parentRectangle.left - ((targetWidth + props.offsetX) / 2) >= 10);\n }\n\n return {\n left: hasSpaceOnLeft,\n right: hasSpaceOnRight,\n bottom: hasSpaceOnBottom,\n top: hasSpaceOnTop,\n center: hasSpaceOnCenter,\n };\n};\n\nconst handleDynamicPosition = () => {\n nextTick(() => {\n dynamicPositionInitialized.value = true;\n\n const { bottom, left, right, top, center } = getDynamicPosition(\n tooltipPopupRef.value,\n tooltipPopupRef.value?.parentNode as HTMLElement\n );\n\n if (center) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = bottom && !top ? 'bottom' : 'top';\n\n return;\n }\n\n // Means that every direction has an available space\n if (bottom && left && right && top) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (top && !bottom) {\n if (right && left) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'top';\n\n return;\n }\n }\n\n if (bottom && top) {\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'top';\n dynamicPositionTrianglePosition.value = 'end';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'top';\n dynamicPositionTrianglePosition.value = 'start';\n\n return;\n }\n }\n\n if (bottom && !top) {\n if (right && left) {\n dynamicPositionTriangle.value = 'center';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n\n return;\n }\n\n if (!right && left) {\n dynamicPositionTriangle.value = 'end';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n\n return;\n }\n\n if (right && !left) {\n dynamicPositionTriangle.value = 'start';\n dynamicPositionAlignment.value = 'bottom';\n dynamicPositionTrianglePosition.value = 'top';\n }\n }\n });\n};\n\nconst isScrollable = (el: HTMLElement | ParentNode): boolean => {\n if (!(el instanceof HTMLElement)) {\n return false;\n }\n\n const hasScrollableContent = el.scrollHeight > el.offsetHeight;\n const overflowYStyle = window.getComputedStyle(el).overflowY;\n const isOverflowScroll = ['auto', 'scroll'].includes(overflowYStyle);\n\n return hasScrollableContent && isOverflowScroll;\n};\n\nconst getScrollableParent = (element: HTMLElement | ParentNode | null): HTMLElement | ParentNode | null => {\n const isComment = element?.nodeType === Node.COMMENT_NODE;\n const isDocument = element?.nodeType === Node.DOCUMENT_NODE;\n\n if (!element || isComment || isDocument) {\n return document;\n }\n\n if (isScrollable(element)) {\n return element;\n }\n\n return getScrollableParent(element.parentNode);\n};\n\nconst killDynamicPositioning = () => {\n scrollAreaRef.value?.removeEventListener('scroll', handleDynamicPosition);\n window?.removeEventListener('resize', handleDynamicPosition);\n};\n\nconst initDynamicPositioning = () => {\n nextTick(() => {\n scrollAreaRef.value = getScrollableParent(tooltipRootRef.value);\n scrollAreaRef.value?.addEventListener('scroll', handleDynamicPosition);\n window?.addEventListener('resize', handleDynamicPosition);\n });\n};\n\nconst onMouseEnterWrapper = () => {\n lastEnteredElement.value = 'wrapper';\n displayClass.value = 'd-b';\n\n mouseEnterWrapper.value = true;\n};\n\nconst onMouseEnterIcon = () => {\n lastEnteredElement.value = 'icon';\n displayClass.value = 'd-b';\n\n mouseEnterIcon.value = true;\n};\n\nconst onMouseLeaveIcon = () => {\n mouseEnterIcon.value = false;\n};\n\nconst onMouseLeaveWrapper = () => {\n lastEnteredElement.value = '';\n mouseEnterWrapper.value = false;\n mouseEnterIcon.value = false;\n};\n\nconst mouseLeave = () => {\n onMouseLeaveWrapper();\n\n if (props.dynamicPosition) {\n if (dynamicPositionAlignment.value === 'bottom') {\n animationClass.value = 'bottom-leave';\n } else if (dynamicPositionAlignment.value === 'top') {\n animationClass.value = 'top-leave';\n }\n } else if (position.value === 'top') {\n animationClass.value = 'top-leave';\n } else if (position.value === 'bottom') {\n animationClass.value = 'bottom-leave';\n } else if (position.value === 'left') {\n animationClass.value = 'left-leave';\n } else if (position.value === 'right') {\n animationClass.value = 'right-leave';\n }\n\n setTimeout(() => {\n animationClass.value = '';\n displayClass.value = 'd-n';\n }, props.absolutePositionStatus ? 0 : 250);\n};\n\nconst addAnimationClass = () => {\n onMouseEnterWrapper();\n handleDynamicPosition();\n\n if (props.dynamicPosition) {\n if (dynamicPositionAlignment.value === 'bottom') {\n animationClass.value = 'top-entrance';\n } else if (dynamicPositionAlignment.value === 'top') {\n animationClass.value = 'bottom-entrance';\n }\n } else if (position.value === 'top') {\n animationClass.value = 'bottom-entrance';\n } else if (position.value === 'bottom') {\n animationClass.value = 'top-entrance';\n } else if (position.value === 'left') {\n animationClass.value = 'right-entrance';\n } else if (position.value === 'right') {\n animationClass.value = 'left-entrance';\n }\n\n setTimeout(() => {\n animationClass.value = '';\n }, 250);\n};\n\nonMounted(() => {\n if (props.dynamicPosition) {\n initDynamicPositioning();\n }\n});\n\nonBeforeUnmount(() => {\n killDynamicPositioning();\n});\n</script>\n\n<template>\n <div\n :id=\"id\"\n ref=\"tooltipRootRef\"\n :class=\"styles.wrapper\"\n @mouseenter=\"addAnimationClass\"\n @mouseleave=\"mouseLeave\">\n <Icon\n v-if=\"iconName\"\n ref=\"tooltipIconRef\"\n :class=\"styles.wrapper__icon\"\n :name=\"iconName\"\n @mouseenter=\"onMouseEnterIcon\"\n @mouseleave=\"onMouseLeaveIcon\" />\n <div\n v-else\n :class=\"styles.wrapper__icon\"\n @mouseenter=\"onMouseEnterIcon\"\n @mouseleave=\"onMouseEnterIcon\">\n <slot name=\"triggerElement\" />\n </div>\n <div\n v-if=\"status\"\n ref=\"tooltipPopupRef\"\n :class=\"[styles.wrapper__box, staticPositionClass, visibilityClass, displayClass]\"\n :style=\"absolutePosition\">\n <Box\n border-triangle\n :border-triangle-align=\"triangleAlignment\"\n :border-triangle-position=\"trianglePosition\"\n :class=\"[styles['wrapper__box-content'], topClass, animationClass]\"\n :style=\"offsetStyle\">\n <div\n :class=\"styles.wrapper__text\"\n :style=\"{ maxHeight: `${maxHeight}px`, overflowY: 'auto' }\">\n <div v-html=\"secureText\" />\n <slot name=\"contentSlot\" />\n </div>\n </Box>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport styles from './Box.module.scss';\n\nexport interface Props {\n border?: string;\n borderRadius?: string;\n borderTriangle?: boolean;\n borderTriangleAlign?: 'start' | 'center' | 'end';\n borderTrianglePosition?: 'top' | 'right' | 'left' | 'bottom';\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n borderRadius: 'bor-r-1',\n borderTriangle: false,\n borderTriangleAlign: 'center',\n borderTrianglePosition: 'top',\n});\n\nconst emit = defineEmits<{\n click: [];\n}>();\n\nconst trianglePosition = computed(\n () => (props.borderTriangle ? styles[`box_${props.borderTrianglePosition}-${props.borderTriangleAlign}`] : '')\n);\n\nfunction trigger (): void {\n emit('click');\n}\n</script>\n\n<template>\n <div\n :class=\"[styles.box, trianglePosition, border, borderRadius]\"\n @click=\"trigger\">\n <slot />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport DefaultBox from './DefaultBox.vue';\nimport FlipBox from './FlipBox.vue';\n\nconst boxes = {\n default: DefaultBox,\n flip: FlipBox,\n} as const;\n\nwithDefaults(defineProps<{\n type?: keyof typeof boxes;\n borderTriangle?: boolean;\n borderTriangleAlign?: 'start' | 'center' | 'end' | 'top';\n borderTrianglePosition?: 'top' | 'right' | 'left' | 'bottom';\n boxSpacing?: string;\n}>(), {\n borderTriangle: false,\n boxSpacing: '',\n type: 'default',\n});\n</script>\n\n<template>\n <component\n :is=\"boxes[type]\"\n :border-triangle=\"borderTriangle\"\n :border-triangle-align=\"borderTriangleAlign\"\n :border-triangle-position=\"borderTrianglePosition\"\n :box-spacing=\"boxSpacing\">\n <slot />\n <slot name=\"front\" />\n <slot name=\"reverse\" />\n </component>\n</template>\n"],"names":["props","__props","emit","__emit","onClick","event","leftIcon","computed","clickOutside","el","binding","excludeElements","element","isFuzzyMatch","choiceValue","searchTerm","searchIndex","char","_a","fuzzySearch","choices","key","normalizedSearchTerm","choice","value","a","b","aValue","bValue","vClickOutside","dropdownRef","ref","menuRef","isOpen","selectedItem","searchQuery","errorMessage","menuPosition","filteredItems","reactive","allItems","calculateMenuPosition","top","left","width","viewportHeight","bottom","shouldOpenUp","toggleMenu","resetSettings","closeMenu","selectItem","item","addItem","query","error","newItem","onSearch","results","onFocusSearch","menuStyle","onMounted","defaultItem","selectedValue","watch","newValue","newItems","clickOutsideTarget","iconSize","IconName","selected","setSelect","segment","filteredSegments","newSegments","textareaRef","autoGrow","newHeight","handleInput","target","applyMinMax","numericValue","sanitizedValue","handleBlur","oldValue","preventXSS","html","tooltipIconRef","dynamicPositionTriangle","dynamicPositionAlignment","dynamicPositionTrianglePosition","dynamicPositionInitialized","animationClass","mouseEnterWrapper","mouseEnterIcon","lastEnteredElement","displayClass","scrollAreaRef","tooltipRootRef","tooltipPopupRef","position","alignment","topClass","secureText","trianglePosition","visibilityClass","triangleAlignment","staticPositionClass","styles","offsetStyle","getOffsetRect","height","right","getDynamicPosition","parent","nested","customRect","tooltipElementHeight","windowWidth","windowHeight","targetHeight","targetWidth","parentRectangle","parentXOffset","parentYOffset","hasSpaceOnRight","hasSpaceOnLeft","hasSpaceOnBottom","hasSpaceOnTop","hasSpaceOnCenter","handleDynamicPosition","nextTick","center","isScrollable","hasScrollableContent","overflowYStyle","isOverflowScroll","getScrollableParent","isComment","isDocument","killDynamicPositioning","initDynamicPositioning","onMouseEnterWrapper","onMouseEnterIcon","onMouseLeaveIcon","onMouseLeaveWrapper","mouseLeave","addAnimationClass","onBeforeUnmount","trigger","boxes","DefaultBox","FlipBox"],"mappings":"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"}
|