dendelion-ui 0.0.5 → 0.0.6

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.
@@ -1,5 +1,5 @@
1
- (function(p,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(p=typeof globalThis<"u"?globalThis:p||self,e(p.DendelionUI={},p.Vue))})(this,function(p,e){"use strict";var T=(t=>(t[t.Primary=0]="Primary",t[t.PrimaryContent=1]="PrimaryContent",t[t.Secondary=2]="Secondary",t[t.SecondaryContent=3]="SecondaryContent",t[t.Accent=4]="Accent",t[t.AccentContent=5]="AccentContent",t[t.Neutral=6]="Neutral",t[t.NeutralContent=7]="NeutralContent",t[t.Base100=8]="Base100",t[t.Base200=9]="Base200",t[t.Base300=10]="Base300",t[t.BaseContent=11]="BaseContent",t[t.Info=12]="Info",t[t.InfoContent=13]="InfoContent",t[t.Success=14]="Success",t[t.SuccessContent=15]="SuccessContent",t[t.Warning=16]="Warning",t[t.WarningContent=17]="WarningContent",t[t.Error=18]="Error",t[t.ErrorContent=19]="ErrorContent",t))(T||{});class V{static toClassName(r){switch(r){case 0:return"primary";case 1:return"primary-content";case 2:return"secondary";case 3:return"secondary-content";case 4:return"accent";case 5:return"accent-content";case 6:return"neutral";case 7:return"neutral-content";case 8:return"base-100";case 9:return"base-200";case 10:return"base-300";case 11:return"base-content";case 12:return"info";case 13:return"info-content";case 14:return"success";case 15:return"success-content";case 16:return"warning";case 17:return"warning-content";case 18:return"error";case 19:return"error-content";default:return"primary"}}}function q(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var z={exports:{}};/*!
1
+ (function(p,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(p=typeof globalThis<"u"?globalThis:p||self,e(p.DendelionUI={},p.Vue))})(this,function(p,e){"use strict";var z=(t=>(t[t.Primary=0]="Primary",t[t.PrimaryContent=1]="PrimaryContent",t[t.Secondary=2]="Secondary",t[t.SecondaryContent=3]="SecondaryContent",t[t.Accent=4]="Accent",t[t.AccentContent=5]="AccentContent",t[t.Neutral=6]="Neutral",t[t.NeutralContent=7]="NeutralContent",t[t.Base100=8]="Base100",t[t.Base200=9]="Base200",t[t.Base300=10]="Base300",t[t.BaseContent=11]="BaseContent",t[t.Info=12]="Info",t[t.InfoContent=13]="InfoContent",t[t.Success=14]="Success",t[t.SuccessContent=15]="SuccessContent",t[t.Warning=16]="Warning",t[t.WarningContent=17]="WarningContent",t[t.Error=18]="Error",t[t.ErrorContent=19]="ErrorContent",t))(z||{});class P{static toClassName(n){switch(n){case 0:return"primary";case 1:return"primary-content";case 2:return"secondary";case 3:return"secondary-content";case 4:return"accent";case 5:return"accent-content";case 6:return"neutral";case 7:return"neutral-content";case 8:return"base-100";case 9:return"base-200";case 10:return"base-300";case 11:return"base-content";case 12:return"info";case 13:return"info-content";case 14:return"success";case 15:return"success-content";case 16:return"warning";case 17:return"warning-content";case 18:return"error";case 19:return"error-content";default:return"primary"}}}function A(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var T={exports:{}};/*!
2
2
  Copyright (c) 2018 Jed Watson.
3
3
  Licensed under the MIT License (MIT), see
4
4
  http://jedwatson.github.io/classnames
5
- */var P;function j(){return P||(P=1,function(t){(function(){var r={}.hasOwnProperty;function a(){for(var n="",c=0;c<arguments.length;c++){var h=arguments[c];h&&(n=o(n,s(h)))}return n}function s(n){if(typeof n=="string"||typeof n=="number")return n;if(typeof n!="object")return"";if(Array.isArray(n))return a.apply(null,n);if(n.toString!==Object.prototype.toString&&!n.toString.toString().includes("[native code]"))return n.toString();var c="";for(var h in n)r.call(n,h)&&n[h]&&(c=o(c,h));return c}function o(n,c){return c?n?n+" "+c:n+c:n}t.exports?(a.default=a,t.exports=a):window.classNames=a})()}(z)),z.exports}var Z=j();const L=q(Z),J=["type"],Y={class:"group-[.is-loading]:text-transparent"},Q=e.defineComponent({__name:"Button",props:{type:{default:"button"},loading:{type:Boolean},color:{default:T.Neutral},click:{}},setup(t){const r=t,a=e.ref(L("btn","group",`btn-${V.toClassName(r.color)}`,r.loading?"is-loading":""));return e.watch(()=>r.loading,s=>{a.value=L("btn","group",`btn-${V.toClassName(r.color)}`,s?"is-loading":"")}),(s,o)=>(e.openBlock(),e.createElementBlock("button",{onClick:o[0]||(o[0]=(...n)=>s.click&&s.click(...n)),class:e.normalizeClass(a.value),type:s.type},[o[1]||(o[1]=e.createElementVNode("span",{class:"loading loading-spinner loading-md absolute hidden group-[.is-loading]:block"},null,-1)),e.createElementVNode("span",Y,[e.renderSlot(s.$slots,"default")])],10,J))}});var F=(t=>(t[t.XS=0]="XS",t[t.SM=1]="SM",t[t.MD=2]="MD",t[t.LG=3]="LG",t[t.XL=4]="XL",t[t.TWOXL=5]="TWOXL",t[t.THREEXL=6]="THREEXL",t))(F||{});class A{static toClassName(r){switch(r){case 0:return"xs";case 1:return"sm";case 2:return"md";case 3:return"lg";case 4:return"xl";case 5:return"2xl";case 6:return"3xl";default:return"md"}}}const ee=e.defineComponent({__name:"Card",props:{backgroundColor:{default:T.Primary},shadow:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},rounded:{type:Boolean},roundedSize:{}},setup(t){const r=t,a=e.ref(L("card",`bg-${r.backgroundColor}`,r.shadow?"shadow-lg":"",r.fullWidth?"w-full":"",r.rounded&&!r.roundedSize?"rounded":r.roundedSize?`rounded-${r.roundedSize}`:""));return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(s.$slots,"default")],2))}}),X=(t,r)=>{const a=t.__vccOpts||t;for(const[s,o]of r)a[s]=o;return a},te={},ne={class:"card-body"};function re(t,r){return e.openBlock(),e.createElementBlock("div",ne,[e.renderSlot(t.$slots,"default")])}const ae=X(te,[["render",re]]),se=e.defineComponent({__name:"CardTitle",props:{is:{default:"h1"},text:{default:""}},setup(t){return(r,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.is),{class:"card-title"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(r.text),1)]),_:1}))}}),oe=e.defineComponent({__name:"Container",props:{container:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(t){const r=t,a=e.ref([r.container?"container":"",r.padding?"p-6":""]);return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(s.$slots,"default")],2))}});var D={},W={},I;function U(){return I||(I=1,function(t){t.__esModule=!0,t.default=o;var r=/[\u0300-\u036f]/g,a=/ł/g,s=/ñ/g;function o(n){return n.toLowerCase().normalize("NFD").replace(r,"").replace(a,"l").replace(s,"n").trim()}}(W)),W}var M={},H;function G(){if(H)return M;H=1,M.__esModule=!0,M.aggressiveFuzzyMatch=S,M.createFuzzySearchImpl=$e,M.experimentalSmartFuzzyMatch=E,M.fuzzyMatchImpl=x;var t=r(U());function r(i){return i&&i.__esModule?i:{default:i}}var a=Number.MAX_SAFE_INTEGER,s=function(l,b){return l.score-b.score},o=function(l,b){return l[0]-b[0]},n=new Set(`  []()-–—'"“”`.split(""));function c(i){return n.has(i)}function h(i,l,b,k,u,y,f){if(i===k)return[0,[[0,i.length-1]]];var d=k.length,m=l.length,_=u.length;if(l===u)return[.1,[[0,m-1]]];if(l.startsWith(u))return[.5,[[0,_-1]]];var w=i.indexOf(k);if(w>-1&&c(i[w-1]))return[.9,[[w,w+d-1]]];var B=l.indexOf(u);if(B>-1&&c(l[B-1]))return[1,[[B,B+d-1]]];var N=y.length;if(N>1&&y.every(function(C){return b.has(C)})){var v=1.5+N*.2;return[v,y.map(function(C){var $=l.indexOf(C);return[$,$+C.length-1]}).sort(o)]}return B>-1?[2,[[B,B+d-1]]]:f==="aggressive"?S(l,u):f==="smart"?E(l,u):null}function S(i,l){for(var b=i.length,k=l.length,u=0,y=l[u],f=[],d=-1,m=-2,_=0;_<b;_+=1)if(i[_]===y){if(_!==m+1&&(d>=0&&f.push([d,m]),d=_),m=_,u+=1,u===k)return f.push([d,m]),g(f,i);y=l[u]}return null}function E(i,l){for(var b=i.length,k=[],u=0,y=l[u],f=-1,d=-2;;){var m=i.indexOf(y,d+1);if(m===-1)break;if(m===0||c(i[m-1]))f=m;else{var _=l.length-u,w=i.length-m,B=Math.min(3,_,w),N=l.slice(u,u+B);if(i.slice(m,m+B)===N)f=m;else{d+=1;continue}}for(d=f;d<b&&i[d]===y;d+=1)u+=1,y=l[u];if(d-=1,k.push([f,d]),u===l.length)return g(k,i)}return null}function g(i,l){var b=2;return i.forEach(function(k){var u=k[0],y=k[1],f=y-u+1,d=u===0||l[u]===" "||l[u-1]===" ",m=y===l.length-1||l[y]===" "||l[y+1]===" ",_=d&&m;_?b+=.2:d?b+=.4:f>=3?b+=.8:b+=1.6}),[b,i]}function x(i,l){var b=(0,t.default)(l),k=b.split(" "),u=(0,t.default)(i),y=new Set(u.split(" ")),f=h(i,u,y,l,b,k,"smart");return f?{item:i,score:f[0],matches:[f[1]]}:null}function $e(i,l){var b=l.strategy,k=b===void 0?"aggressive":b,u=l.getText,y=i.map(function(f){var d;if(u)d=u(f);else{var m=l.key?f[l.key]:f;d=[m]}var _=d.map(function(w){var B=w||"",N=(0,t.default)(B),v=new Set(N.split(" "));return[B,N,v]});return[f,_]});return function(f){var d=[],m=(0,t.default)(f),_=m.split(" ");return m.length?(y.forEach(function(w){for(var B=w[0],N=w[1],v=a,C=[],$=0,Le=N.length;$<Le;$+=1){var O=N[$],Te=O[0],Ve=O[1],ze=O[2],R=h(Te,Ve,ze,f,m,_,k);R?(v=Math.min(v,R[0]),C.push(R[1])):C.push(null)}v<a&&d.push({item:B,score:v,matches:C})}),d.sort(s),d):[]}}return M}var K;function ce(){return K||(K=1,function(t){t.__esModule=!0,t.default=s,t.fuzzyMatch=o;var r=a(U());t.normalizeText=r.default;function a(n){return n&&n.__esModule?n:{default:n}}function s(n,c){return c===void 0&&(c={}),G().createFuzzySearchImpl(n,c)}function o(n,c){return G().fuzzyMatchImpl(n,c)}}(D)),D}var le=ce();const ie=q(le),ue=["innerHTML"],de=e.defineComponent({__name:"Table",props:{zebra:{type:Boolean,default:!1},pinRows:{type:Boolean,default:!1},pinCols:{type:Boolean,default:!1},size:{default:F.MD},columns:{},dataSource:{},ajax:{},searchValue:{},searchFunction:{}},setup(t){const r=e.ref([]),a=e.ref([]),s=e.computed(()=>ie(r.value)),o=e.ref(null),n=t,c=e.ref(L("table",`table-${A.toClassName(n.size)}`,{"table-zebra":n.zebra,"table-pin-rows":n.pinRows,"table-pin-cols ":n.pinCols})),h=(S,E)=>String(!S||typeof S!="object"?S:E.split(".").reduce((g,x)=>g&&(typeof g=="object"?g[x]:g),S));return e.watch(()=>n.searchValue,S=>{if(n.searchFunction){a.value=n.searchFunction(S??"");return}a.value=S?s.value(S):r.value}),(S,E)=>(e.openBlock(),e.createElementBlock("table",{ref_key:"table",ref:o,class:e.normalizeClass(c.value)},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,g=>(e.openBlock(),e.createElementBlock("th",{key:g.title},e.toDisplayString(g.title),1))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,g=>(e.openBlock(),e.createElementBlock("tr",{key:String(g)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,x=>(e.openBlock(),e.createElementBlock("td",{key:x.title,innerHTML:x.render?x.render(h(g,x.data),g):h(g,x.data)},null,8,ue))),128))]))),128))])],2))}}),fe=e.defineComponent({__name:"Stepper",props:{value:{}},emits:["update:value"],setup(t,{expose:r,emit:a}){const s=t,o=e.ref(s.value),n=a,c=h=>{o.value=h,n("update:value",h)};return e.provide("stepper",{value:o,updateValue:c}),e.watch(()=>s.value,h=>{o.value=h}),r({updateValue:c}),(h,S)=>e.renderSlot(h.$slots,"default",{updateValue:c})}}),pe=e.defineComponent({__name:"Step",props:{value:{}},setup(t){const r=t,a=e.inject("stepper"),s=e.ref("");return e.watch(()=>a==null?void 0:a.value.value,o=>{o&&r.value&&(s.value=Number(o)>=Number(r.value)?"step-primary":"")}),e.onMounted(()=>{a&&(s.value=a.value.value===r.value?"step-primary":"",Number(a.value.value)>=Number(r.value)&&(s.value="step-primary"))}),(o,n)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["step",s.value])},[e.renderSlot(o.$slots,"default")],2))}}),me={},he={class:"steps"};function be(t,r){return e.openBlock(),e.createElementBlock("ul",he,[e.renderSlot(t.$slots,"default")])}const ge=X(me,[["render",be]]),ye={key:0},_e=e.defineComponent({__name:"StepPanels",setup(t){const r=e.inject("stepper");return(a,s)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade",mode:"out-in"},{default:e.withCtx(()=>{var o,n;return[(o=e.unref(r))!=null&&o.value?(e.openBlock(),e.createElementBlock("div",ye,[e.renderSlot(a.$slots,"default",{currentStep:(n=e.unref(r))==null?void 0:n.value})])):e.createCommentVNode("",!0)]}),_:3}))}}),ke={key:0},Be=e.defineComponent({__name:"StepPanel",props:{value:{}},setup(t,{expose:r}){const a=e.computed(()=>s==null?void 0:s.value.value),s=e.inject("stepper"),o=n=>{s&&s.updateValue(n.toString())};return r({activateCallback:o}),(n,c)=>n.value===a.value?(e.openBlock(),e.createElementBlock("div",ke,[e.renderSlot(n.$slots,"default",{activateCallback:o})])):e.createCommentVNode("",!0)}}),Se={className:"modal-box"},Ee={key:0,method:"dialog"},xe=e.defineComponent({__name:"Modal",props:{closeButton:{type:Boolean,default:!0},overflow:{type:Boolean,default:!1}},emits:["close"],setup(t,{expose:r,emit:a}){const s=e.ref(null),o=a,n=t,c=e.ref(L("modal",{"overflow-visible":n.overflow}));return r({showModal:()=>{var E;(E=s.value)==null||E.showModal()},closeModal:()=>{var E;(E=s.value)==null||E.close()}}),(E,g)=>(e.openBlock(),e.createElementBlock("dialog",{ref_key:"modal",ref:s,class:e.normalizeClass(c.value),"aria-modal":"true","aria-hidden":"true",role:"dialog",onClose:g[0]||(g[0]=x=>o("close",x))},[e.createElementVNode("div",Se,[E.closeButton?(e.openBlock(),e.createElementBlock("form",Ee,g[1]||(g[1]=[e.createElementVNode("button",{className:"btn btn-sm btn-circle btn-ghost absolute right-2 top-2"},"✕",-1)]))):e.createCommentVNode("",!0),e.renderSlot(E.$slots,"default")])],34))}}),we={class:"hidden w-full max-w-sm lg:flex"},Ne={class:"relative mx-3 w-full"},ve={class:"w-full max-w-full relative"},Ce=e.defineComponent({__name:"SearchBar",emits:["input"],setup(t,{emit:r}){const a=e.ref(null),s=r,o=n=>{(n.ctrlKey||n.metaKey)&&n.key.toLowerCase()==="k"&&(n.preventDefault(),a.value&&a.value.focus())};return e.onMounted(()=>{document.addEventListener("keydown",o)}),e.onUnmounted(()=>{document.removeEventListener("keydown",o)}),(n,c)=>(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("label",Ne,[c[1]||(c[1]=e.createElementVNode("svg",{class:"pointer-events-none absolute z-10 my-3.5 ms-4 opacity-60 text-base-content","aria-hidden":"true",width:"16",height:"16",viewBox:"0.48 0.48 23.04 23.04",fill:"currentColor"},[e.createElementVNode("path",{fill:"none",d:"M0 0h24v24H0z"}),e.createElementVNode("path",{d:"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)),e.createElementVNode("div",ve,[e.createElementVNode("form",null,[e.createElementVNode("input",{ref_key:"searchInput",ref:a,type:"search",placeholder:"Zoeken...",onInput:c[0]||(c[0]=h=>s("input",h.target.value)),class:"bg-transparent color-[inherit] border-[2px] border-solid border-transparent focus:border-[2px] focus:border-base-200 focus:outline-none rounded-xl w-full px-3 py-2 ps-10"},null,544)])]),c[2]||(c[2]=e.createElementVNode("div",{class:"pointer-events-none absolute end-10 top-2.5 gap-1 opacity-50 rtl:flex-row-reverse hidden lg:flex"},[e.createElementVNode("kbd",{class:"kbd kbd-sm"},"ctrl"),e.createElementVNode("kbd",{class:"kbd kbd-sm"},"K")],-1))])]))}}),Me=["bg-primary","bg-primary-content","bg-secondary","bg-secondary-content","bg-accent","bg-accent-content","bg-neutral","bg-neutral-content","bg-base-100","bg-base-200","bg-base-300","bg-base-content","bg-info","bg-info-content","bg-success","bg-success-content","bg-warning","bg-warning-content","bg-error","bg-error-content","btn-primary","btn-primary-content","btn-secondary","btn-secondary-content","btn-accent","btn-accent-content","btn-neutral","btn-neutral-content","btn-base-100","btn-base-200","btn-base-300","btn-base-content","btn-info","btn-info-content","btn-success","btn-success-content","btn-warning","btn-warning-content","btn-error","btn-error-content","text-primary","text-primary-content","text-secondary","text-secondary-content","text-accent","text-accent-content","text-neutral","text-neutral-content","text-base-100","text-base-200","text-base-300","text-base-content","text-info","text-info-content","text-success","text-success-content","text-warning","text-warning-content","text-error","text-error-content","text-transparent","step","steps","modal","modal-box","btn","btn-sm","btn-circle","btn-ghost","absolute","right-2","top-2","shadow-lg","w-full","rounded-xs","rounded-sm","rounded-md","rounded-lg","rounded-xl","rounded-2xl","rounded-3xl","hidden","block"];p.Button=Q,p.Card=ee,p.CardBody=ae,p.CardTitle=se,p.Color=T,p.ColorUtils=V,p.Container=oe,p.Modal=xe,p.SearchBar=Ce,p.Size=F,p.SizeUtils=A,p.Step=pe,p.StepList=ge,p.StepPanel=Be,p.StepPanels=_e,p.Stepper=fe,p.Table=de,p.dendelionSafeList=Me,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
5
+ */var I;function Z(){return I||(I=1,function(t){(function(){var n={}.hasOwnProperty;function s(){for(var r="",c=0;c<arguments.length;c++){var f=arguments[c];f&&(r=a(r,o(f)))}return r}function o(r){if(typeof r=="string"||typeof r=="number")return r;if(typeof r!="object")return"";if(Array.isArray(r))return s.apply(null,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var c="";for(var f in r)n.call(r,f)&&r[f]&&(c=a(c,f));return c}function a(r,c){return c?r?r+" "+c:r+c:r}t.exports?(s.default=s,t.exports=s):window.classNames=s})()}(T)),T.exports}var J=Z();const L=A(J),Y=["type"],Q={class:"group-[.is-loading]:text-transparent"},ee=e.defineComponent({__name:"Button",props:{type:{default:"button"},loading:{type:Boolean},color:{default:z.Neutral},click:{}},setup(t){const n=t,s=e.computed(()=>L("btn","group",`btn-${P.toClassName(n.color)}`,n.loading?"is-loading":""));return(o,a)=>(e.openBlock(),e.createElementBlock("button",{onClick:a[0]||(a[0]=r=>o.click?o.click:void 0),class:e.normalizeClass(s.value),type:o.type},[a[1]||(a[1]=e.createElementVNode("span",{class:"loading loading-spinner loading-md absolute hidden group-[.is-loading]:block"},null,-1)),e.createElementVNode("span",Q,[e.renderSlot(o.$slots,"default")])],10,Y))}}),v=(t,n)=>{const s=t.__vccOpts||t;for(const[o,a]of n)s[o]=a;return s},te={};function ne(t,n){return e.openBlock(),e.createElementBlock("button")}const re=v(te,[["render",ne]]);var F=(t=>(t[t.XS=0]="XS",t[t.SM=1]="SM",t[t.MD=2]="MD",t[t.LG=3]="LG",t[t.XL=4]="XL",t[t.TWOXL=5]="TWOXL",t[t.THREEXL=6]="THREEXL",t))(F||{});class X{static toClassName(n){switch(n){case 0:return"xs";case 1:return"sm";case 2:return"md";case 3:return"lg";case 4:return"xl";case 5:return"2xl";case 6:return"3xl";default:return"md"}}}const ae=e.defineComponent({__name:"Card",props:{backgroundColor:{default:z.Primary},shadow:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},rounded:{type:Boolean},roundedSize:{}},setup(t){const n=t,s=e.ref(L("card",`bg-${n.backgroundColor}`,n.shadow?"shadow-lg":"",n.fullWidth?"w-full":"",n.rounded&&!n.roundedSize?"rounded":n.roundedSize?`rounded-${n.roundedSize}`:""));return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value)},[e.renderSlot(o.$slots,"default")],2))}}),se={},oe={class:"card-body"};function ce(t,n){return e.openBlock(),e.createElementBlock("div",oe,[e.renderSlot(t.$slots,"default")])}const le=v(se,[["render",ce]]),ie=e.defineComponent({__name:"CardTitle",props:{is:{default:"h1"},text:{default:""}},setup(t){return(n,s)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.is),{class:"card-title"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(n.text),1)]),_:1}))}}),de=e.defineComponent({__name:"Container",props:{container:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(t){const n=t,s=e.ref([n.container?"container":"",n.padding?"p-6":""]);return(o,a)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(s.value)},[e.renderSlot(o.$slots,"default")],2))}});var D={},W={},K;function U(){return K||(K=1,function(t){t.__esModule=!0,t.default=a;var n=/[\u0300-\u036f]/g,s=/ł/g,o=/ñ/g;function a(r){return r.toLowerCase().normalize("NFD").replace(n,"").replace(s,"l").replace(o,"n").trim()}}(W)),W}var M={},H;function j(){if(H)return M;H=1,M.__esModule=!0,M.aggressiveFuzzyMatch=y,M.createFuzzySearchImpl=O,M.experimentalSmartFuzzyMatch=B,M.fuzzyMatchImpl=_;var t=n(U());function n(i){return i&&i.__esModule?i:{default:i}}var s=Number.MAX_SAFE_INTEGER,o=function(l,h){return l.score-h.score},a=function(l,h){return l[0]-h[0]},r=new Set(`  []()-–—'"“”`.split(""));function c(i){return r.has(i)}function f(i,l,h,S,d,k,b){if(i===S)return[0,[[0,i.length-1]]];var u=S.length,g=l.length,E=d.length;if(l===d)return[.1,[[0,g-1]]];if(l.startsWith(d))return[.5,[[0,E-1]]];var N=i.indexOf(S);if(N>-1&&c(i[N-1]))return[.9,[[N,N+u-1]]];var x=l.indexOf(d);if(x>-1&&c(l[x-1]))return[1,[[x,x+u-1]]];var w=k.length;if(w>1&&k.every(function($){return h.has($)})){var C=1.5+w*.2;return[C,k.map(function($){var V=l.indexOf($);return[V,V+$.length-1]}).sort(a)]}return x>-1?[2,[[x,x+u-1]]]:b==="aggressive"?y(l,d):b==="smart"?B(l,d):null}function y(i,l){for(var h=i.length,S=l.length,d=0,k=l[d],b=[],u=-1,g=-2,E=0;E<h;E+=1)if(i[E]===k){if(E!==g+1&&(u>=0&&b.push([u,g]),u=E),g=E,d+=1,d===S)return b.push([u,g]),m(b,i);k=l[d]}return null}function B(i,l){for(var h=i.length,S=[],d=0,k=l[d],b=-1,u=-2;;){var g=i.indexOf(k,u+1);if(g===-1)break;if(g===0||c(i[g-1]))b=g;else{var E=l.length-d,N=i.length-g,x=Math.min(3,E,N),w=l.slice(d,d+x);if(i.slice(g,g+x)===w)b=g;else{u+=1;continue}}for(u=b;u<h&&i[u]===k;u+=1)d+=1,k=l[d];if(u-=1,S.push([b,u]),d===l.length)return m(S,i)}return null}function m(i,l){var h=2;return i.forEach(function(S){var d=S[0],k=S[1],b=k-d+1,u=d===0||l[d]===" "||l[d-1]===" ",g=k===l.length-1||l[k]===" "||l[k+1]===" ",E=u&&g;E?h+=.2:u?h+=.4:b>=3?h+=.8:h+=1.6}),[h,i]}function _(i,l){var h=(0,t.default)(l),S=h.split(" "),d=(0,t.default)(i),k=new Set(d.split(" ")),b=f(i,d,k,l,h,S,"smart");return b?{item:i,score:b[0],matches:[b[1]]}:null}function O(i,l){var h=l.strategy,S=h===void 0?"aggressive":h,d=l.getText,k=i.map(function(b){var u;if(d)u=d(b);else{var g=l.key?b[l.key]:b;u=[g]}var E=u.map(function(N){var x=N||"",w=(0,t.default)(x),C=new Set(w.split(" "));return[x,w,C]});return[b,E]});return function(b){var u=[],g=(0,t.default)(b),E=g.split(" ");return g.length?(k.forEach(function(N){for(var x=N[0],w=N[1],C=s,$=[],V=0,We=w.length;V<We;V+=1){var R=w[V],Oe=R[0],Re=R[1],qe=R[2],q=f(Oe,Re,qe,b,g,E,S);q?(C=Math.min(C,q[0]),$.push(q[1])):$.push(null)}C<s&&u.push({item:x,score:C,matches:$})}),u.sort(o),u):[]}}return M}var G;function ue(){return G||(G=1,function(t){t.__esModule=!0,t.default=o,t.fuzzyMatch=a;var n=s(U());t.normalizeText=n.default;function s(r){return r&&r.__esModule?r:{default:r}}function o(r,c){return c===void 0&&(c={}),j().createFuzzySearchImpl(r,c)}function a(r,c){return j().fuzzyMatchImpl(r,c)}}(D)),D}var fe=ue();const pe=A(fe),me={key:0},he=["colspan"],be=["innerHTML"],ge=e.defineComponent({__name:"Table",props:{zebra:{type:Boolean,default:!1},pinRows:{type:Boolean,default:!1},pinCols:{type:Boolean,default:!1},size:{default:F.MD},columns:{},dataSource:{},ajax:{},searchValue:{},searchFunction:{}},setup(t){const n=e.ref([]),s=e.ref([]),o=e.ref(null),a=t,r=e.ref(L("table",`table-${X.toClassName(a.size)}`,{"table-zebra":a.zebra,"table-pin-rows":a.pinRows,"table-pin-cols ":a.pinCols})),c=(y,B)=>String(!y||typeof y!="object"?y:B.split(".").reduce((m,_)=>m&&(typeof m=="object"?m[_]:m),y));e.onMounted(()=>{n.value=a.dataSource,s.value=a.dataSource}),e.watch(()=>a.dataSource,y=>{n.value=y,s.value=y},{immediate:!0}),e.watch(()=>a.searchValue,y=>{if(a.searchFunction){s.value=a.searchFunction(y??"");return}s.value=y?f(y):n.value},{immediate:!0});const f=y=>{const B=[];return n.value.length>0?(Object.keys(n.value[0]).forEach(_=>{const O=n.value.map(h=>c(h,_)),l=pe(O)(y);for(const h of l){const S=n.value.filter(d=>c(d,_)===h.item);B.push(...S)}}),B):[]};return(y,B)=>(e.openBlock(),e.createElementBlock("table",{ref_key:"table",ref:o,class:e.normalizeClass(r.value)},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.columns,m=>(e.openBlock(),e.createElementBlock("th",{key:m.title},e.toDisplayString(m.title),1))),128))])]),e.createElementVNode("tbody",null,[s.value.length===0?(e.openBlock(),e.createElementBlock("tr",me,[e.createElementVNode("td",{colspan:a.columns.length}," No data found ",8,he)])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(s.value,m=>(e.openBlock(),e.createElementBlock("tr",{key:String(m)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.columns,_=>(e.openBlock(),e.createElementBlock("td",{key:_.title},[_.render?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(c(m,_.data)),1)],64)),typeof _.render=="function"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[typeof _.render(c(m,_.data),m)=="string"?(e.openBlock(),e.createElementBlock("div",{key:0,innerHTML:_.render(c(m,_.data),m)},null,8,be)):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(_.render(c(m,_.data),m)),{key:1}))],64)):e.createCommentVNode("",!0)]))),128))]))),128))])],2))}}),ye=e.defineComponent({__name:"Stepper",props:{value:{}},emits:["update:value"],setup(t,{expose:n,emit:s}){const o=t,a=e.ref(o.value),r=s,c=f=>{a.value=f,r("update:value",f)};return e.provide("stepper",{value:a,updateValue:c}),e.watch(()=>o.value,f=>{a.value=f}),n({updateValue:c}),(f,y)=>e.renderSlot(f.$slots,"default",{updateValue:c})}}),_e=e.defineComponent({__name:"Step",props:{value:{}},setup(t){const n=t,s=e.inject("stepper"),o=e.ref("");return e.watch(()=>s==null?void 0:s.value.value,a=>{a&&n.value&&(o.value=Number(a)>=Number(n.value)?"step-primary":"")}),e.onMounted(()=>{s&&(o.value=s.value.value===n.value?"step-primary":"",Number(s.value.value)>=Number(n.value)&&(o.value="step-primary"))}),(a,r)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["step",o.value])},[e.renderSlot(a.$slots,"default")],2))}}),ke={},Be={class:"steps"};function Se(t,n){return e.openBlock(),e.createElementBlock("ul",Be,[e.renderSlot(t.$slots,"default")])}const Ee=v(ke,[["render",Se]]),xe={key:0},Ne=e.defineComponent({__name:"StepPanels",setup(t){const n=e.inject("stepper");return(s,o)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade",mode:"out-in"},{default:e.withCtx(()=>{var a,r;return[(a=e.unref(n))!=null&&a.value?(e.openBlock(),e.createElementBlock("div",xe,[e.renderSlot(s.$slots,"default",{currentStep:(r=e.unref(n))==null?void 0:r.value})])):e.createCommentVNode("",!0)]}),_:3}))}}),we={key:0},Ce=e.defineComponent({__name:"StepPanel",props:{value:{}},setup(t,{expose:n}){const s=e.computed(()=>o==null?void 0:o.value.value),o=e.inject("stepper"),a=r=>{o&&o.updateValue(r.toString())};return n({activateCallback:a}),(r,c)=>r.value===s.value?(e.openBlock(),e.createElementBlock("div",we,[e.renderSlot(r.$slots,"default",{activateCallback:a})])):e.createCommentVNode("",!0)}}),$e={className:"modal-box"},Me={key:0,method:"dialog"},Ve=e.defineComponent({__name:"Modal",props:{closeButton:{type:Boolean,default:!0},overflow:{type:Boolean,default:!1}},emits:["close"],setup(t,{expose:n,emit:s}){const o=e.ref(null),a=s,r=t,c=e.ref(L("modal",{"overflow-visible":r.overflow}));return n({showModal:()=>{var B;(B=o.value)==null||B.showModal()},closeModal:()=>{var B;(B=o.value)==null||B.close()}}),(B,m)=>(e.openBlock(),e.createElementBlock("dialog",{ref_key:"modal",ref:o,class:e.normalizeClass(c.value),"aria-modal":"true","aria-hidden":"true",role:"dialog",onClose:m[0]||(m[0]=_=>a("close",_))},[e.createElementVNode("div",$e,[B.closeButton?(e.openBlock(),e.createElementBlock("form",Me,m[1]||(m[1]=[e.createElementVNode("button",{className:"btn btn-sm btn-circle btn-ghost absolute right-2 top-2"},"✕",-1)]))):e.createCommentVNode("",!0),e.renderSlot(B.$slots,"default")])],34))}}),ze={class:"hidden w-full max-w-sm lg:flex"},Le={class:"relative mx-3 w-full"},Te={class:"w-full max-w-full relative"},ve=["value"],Fe=e.defineComponent({__name:"SearchBar",props:["modelValue"],emits:["update:modelValue"],setup(t,{emit:n}){const s=t,o=e.ref(null),a=n,r=c=>{(c.ctrlKey||c.metaKey)&&c.key.toLowerCase()==="k"&&(c.preventDefault(),o.value&&o.value.focus())};return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(c,f)=>(e.openBlock(),e.createElementBlock("div",ze,[e.createElementVNode("label",Le,[f[1]||(f[1]=e.createElementVNode("svg",{class:"pointer-events-none absolute z-10 my-3.5 ms-4 opacity-60 text-base-content","aria-hidden":"true",width:"16",height:"16",viewBox:"0.48 0.48 23.04 23.04",fill:"currentColor"},[e.createElementVNode("path",{fill:"none",d:"M0 0h24v24H0z"}),e.createElementVNode("path",{d:"M15.5 14h-.79l-.28-.27A6.471 6.471 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})],-1)),e.createElementVNode("div",Te,[e.createElementVNode("form",null,[e.createElementVNode("input",{ref_key:"searchInput",ref:o,type:"search",placeholder:"Zoeken...",value:s.modelValue,onInput:f[0]||(f[0]=y=>a("update:modelValue",y.target.value)),class:"bg-transparent color-[inherit] border-[2px] border-solid border-transparent focus:border-[2px] focus:border-base-200 focus:outline-none rounded-xl w-full px-3 py-2 ps-10"},null,40,ve)])]),f[2]||(f[2]=e.createElementVNode("div",{class:"pointer-events-none absolute end-10 top-2.5 gap-1 opacity-50 rtl:flex-row-reverse hidden lg:flex"},[e.createElementVNode("kbd",{class:"kbd kbd-sm"},"ctrl"),e.createElementVNode("kbd",{class:"kbd kbd-sm"},"K")],-1))])]))}}),De=["bg-primary","bg-primary-content","bg-secondary","bg-secondary-content","bg-accent","bg-accent-content","bg-neutral","bg-neutral-content","bg-base-100","bg-base-200","bg-base-300","bg-base-content","bg-info","bg-info-content","bg-success","bg-success-content","bg-warning","bg-warning-content","bg-error","bg-error-content","btn-primary","btn-primary-content","btn-secondary","btn-secondary-content","btn-accent","btn-accent-content","btn-neutral","btn-neutral-content","btn-base-100","btn-base-200","btn-base-300","btn-base-content","btn-info","btn-info-content","btn-success","btn-success-content","btn-warning","btn-warning-content","btn-error","btn-error-content","text-primary","text-primary-content","text-secondary","text-secondary-content","text-accent","text-accent-content","text-neutral","text-neutral-content","text-base-100","text-base-200","text-base-300","text-base-content","text-info","text-info-content","text-success","text-success-content","text-warning","text-warning-content","text-error","text-error-content","text-transparent","step","steps","modal","modal-box","btn","btn-sm","btn-circle","btn-ghost","absolute","right-2","top-2","shadow-lg","w-full","rounded-xs","rounded-sm","rounded-md","rounded-lg","rounded-xl","rounded-2xl","rounded-3xl","hidden","block"];p.Button=ee,p.Card=ae,p.CardBody=le,p.CardTitle=ie,p.Color=z,p.ColorUtils=P,p.Container=de,p.Modal=Ve,p.SearchBar=Fe,p.SimpleButton=re,p.Size=F,p.SizeUtils=X,p.Step=_e,p.StepList=Ee,p.StepPanel=Ce,p.StepPanels=Ne,p.Stepper=ye,p.Table=ge,p.dendelionSafeList=De,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, HTMLButtonElement>;
2
+ export default _default;
@@ -1,2 +1,3 @@
1
- export { default as Button } from './Button.vue';
2
- export type { ButtonProps, Type } from './interface';
1
+ export { default as Button } from "./Button.vue";
2
+ export { default as SimpleButton } from "./SimpleButton.vue";
3
+ export type { ButtonProps, Type } from "./interface";
@@ -1,7 +1,11 @@
1
- declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
2
- input: (...args: any[]) => void;
3
- }, string, import("vue").PublicProps, Readonly<{}> & Readonly<{
4
- onInput?: ((...args: any[]) => any) | undefined;
1
+ declare const _default: import("vue").DefineComponent<{
2
+ modelValue?: any;
3
+ }, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
4
+ "update:modelValue": (...args: any[]) => void;
5
+ }, string, import("vue").PublicProps, Readonly<{
6
+ modelValue?: any;
7
+ }> & Readonly<{
8
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
5
9
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {
6
10
  searchInput: HTMLInputElement;
7
11
  }, HTMLDivElement>;
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "dendelion-ui",
3
3
  "private": false,
4
4
  "description": "Simpel component library using Tailwind css and DaisyUI",
5
- "version": "0.0.5",
5
+ "version": "0.0.6",
6
6
  "author": "ThatzOkay",
7
7
  "license": "MIT",
8
8
  "homepage": "https://github.com/ThatzOkay/DendelionUI#readme",
@@ -60,13 +60,14 @@
60
60
  "devDependencies": {
61
61
  "@vitejs/plugin-vue": "^5.2.1",
62
62
  "@vue/tsconfig": "^0.7.0",
63
+ "autoprefixer": "^10.4.20",
63
64
  "cross-env": "^7.0.3",
64
65
  "daisyui": "^4.12.23",
65
66
  "eslint": "^9.20.1",
66
67
  "eslint-plugin-vue": "^9.32.0",
67
68
  "fluid-tailwind": "^1.0.4",
68
69
  "rimraf": "^6.0.1",
69
- "typescript": "~5.7.0",
70
+ "typescript": "^5.8.2",
70
71
  "typescript-eslint": "^8.24.0",
71
72
  "vite": "^6.1.0",
72
73
  "vue-tsc": "^2.2.0"
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <button v-on:click="click" :class="classes" :type="type">
2
+ <button v-on:click="click ? click : undefined" :class="classes" :type="type">
3
3
  <span class="loading loading-spinner loading-md absolute hidden group-[.is-loading]:block"></span>
4
4
  <span class="group-[.is-loading]:text-transparent"><slot /></span>
5
5
  </button>
@@ -9,24 +9,16 @@
9
9
  import { Color, ColorUtils } from '@/types/color';
10
10
  import { ButtonProps } from './interface';
11
11
  import classNames from 'classnames';
12
- import { ref, watch } from 'vue';
12
+ import { computed } from 'vue';
13
13
 
14
14
  const props = withDefaults(defineProps<ButtonProps>(), {
15
15
  type: 'button',
16
16
  color: Color.Neutral
17
17
  })
18
18
 
19
- const classes = ref(classNames('btn',
19
+ const classes = computed(() => classNames('btn',
20
20
  'group',
21
21
  `btn-${ColorUtils.toClassName(props.color)}`,
22
22
  props.loading ? 'is-loading' : '',
23
23
  ))
24
-
25
- watch(() => props.loading, (loading: boolean) => {
26
- classes.value = classNames('btn',
27
- 'group',
28
- `btn-${ColorUtils.toClassName(props.color)}`,
29
- loading ? 'is-loading' : '',
30
- )
31
- })
32
24
  </script>
@@ -0,0 +1,8 @@
1
+ <template>
2
+ <button>
3
+
4
+ </button>
5
+ </template>
6
+
7
+ <script setup lang="ts">
8
+ </script>
@@ -1,2 +1,3 @@
1
- export { default as Button } from './Button.vue';
2
- export type { ButtonProps, Type } from './interface';
1
+ export { default as Button } from "./Button.vue";
2
+ export { default as SimpleButton } from "./SimpleButton.vue";
3
+ export type { ButtonProps, Type } from "./interface";
@@ -10,7 +10,7 @@
10
10
  </svg>
11
11
  <div class="w-full max-w-full relative">
12
12
  <form>
13
- <input ref="searchInput" type="search" placeholder="Zoeken..." @input="emit('input', ($event.target as HTMLInputElement).value)"
13
+ <input ref="searchInput" type="search" placeholder="Zoeken..." :value="props.modelValue" @input="emit('update:modelValue', ($event.target as HTMLInputElement).value)"
14
14
  class="bg-transparent color-[inherit] border-[2px] border-solid border-transparent focus:border-[2px] focus:border-base-200 focus:outline-none rounded-xl w-full px-3 py-2 ps-10">
15
15
  </form>
16
16
  </div>
@@ -26,9 +26,11 @@
26
26
  <script setup lang="ts">
27
27
  import { onMounted, onUnmounted, ref } from 'vue';
28
28
 
29
+ const props = defineProps(['modelValue']);
30
+
29
31
  const searchInput = ref<HTMLInputElement | null>(null);
30
32
 
31
- const emit = defineEmits(['input']);
33
+ const emit = defineEmits(['update:modelValue']);
32
34
 
33
35
  const handleKeyPress = (event: KeyboardEvent) => {
34
36
  if ((event.ctrlKey || event.metaKey) && event.key.toLowerCase() === 'k') {
@@ -8,8 +8,21 @@
8
8
  </tr>
9
9
  </thead>
10
10
  <tbody>
11
- <tr v-for="row in filteredDataSource" v-bind:key="String(row)">
12
- <td v-for="column in props.columns" v-bind:key="column.title" v-html="column.render ? column.render(getValue(row, column.data), row as T) : getValue(row, column.data) ">
11
+ <tr v-if="filteredDataSource.length === 0">
12
+ <td :colspan="props.columns.length">
13
+ No data found
14
+ </td>
15
+ </tr>
16
+ <tr v-else v-for="row in filteredDataSource" v-bind:key="String(row)">
17
+ <td v-for="column in props.columns" v-bind:key="column.title">
18
+ <template v-if="!column.render">
19
+ {{ getValue(row, column.data) }}
20
+ </template>
21
+ <template v-if="typeof column.render === 'function'">
22
+ <div v-if="typeof column.render(getValue(row, column.data), row as T) === 'string'"
23
+ v-html="column.render(getValue(row, column.data), row as T)" />
24
+ <component v-else :is="column.render(getValue(row, column.data), row as T)" />
25
+ </template>
13
26
  </td>
14
27
  </tr>
15
28
  </tbody>
@@ -17,7 +30,7 @@
17
30
  </template>
18
31
 
19
32
  <script setup lang="ts" generic="T">
20
- import { computed, ref, watch } from 'vue';
33
+ import { onMounted, ref, watch } from 'vue';
21
34
  import { TableProps } from './interface';
22
35
  import classNames from 'classnames';
23
36
  import { Size, SizeUtils } from '@/types';
@@ -25,9 +38,6 @@ import createFuzzySearch from '@nozbe/microfuzz'
25
38
 
26
39
  const originalDataSource = ref<T[]>([]);
27
40
  const filteredDataSource = ref<T[]>([]);
28
- const fuzzyDataSource = computed(() => {
29
- return createFuzzySearch(originalDataSource.value);
30
- });
31
41
 
32
42
  const table = ref<HTMLTableElement | null>(null)
33
43
 
@@ -52,13 +62,43 @@ const getValue = (obj: any, keyPath: string): string => {
52
62
  );
53
63
  };
54
64
 
65
+ onMounted(() => {
66
+ originalDataSource.value = props.dataSource;
67
+ filteredDataSource.value = props.dataSource;
68
+ });
69
+
70
+ watch(() => props.dataSource, (value) => {
71
+ originalDataSource.value = value;
72
+ filteredDataSource.value = value;
73
+ }, { immediate: true });
74
+
55
75
  watch(() => props.searchValue, (value) => {
56
76
  if (props.searchFunction) {
57
77
  filteredDataSource.value = props.searchFunction(value ?? "");
58
78
  return;
59
79
  }
80
+ filteredDataSource.value = value ? doFuzzySearch(value) : originalDataSource.value;
81
+ }, { immediate: true });
60
82
 
61
- filteredDataSource.value = value ? fuzzyDataSource.value(value) as T[] : originalDataSource.value;
62
- });
83
+ const doFuzzySearch = (value: string): T[] => {
84
+ const foundRows: T[] = [];
85
+ if (originalDataSource.value.length > 0) {
86
+ const dataKeys = Object.keys(originalDataSource.value[0] as object);
87
+
88
+ dataKeys.forEach((key) => {
89
+ const list = originalDataSource.value.map((row) => getValue(row, key));
90
+ const fuzzySearch = createFuzzySearch(list);
91
+ const found = fuzzySearch(value);
92
+ for (const item of found) {
93
+ const matchingItems = originalDataSource.value.filter((i) => getValue(i, key) === item.item);
94
+ foundRows.push(...matchingItems as T[]);
95
+ }
96
+ });
97
+
98
+ return foundRows;
99
+ }
100
+
101
+ return [];
102
+ }
63
103
 
64
104
  </script>