dendelion-ui 0.0.24 → 0.0.26
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/dendelion-ui.cjs.js +1 -5
- package/dist/dendelion-ui.es.js +298 -298
- package/dist/dendelion-ui.umd.js +1 -5
- package/dist/types/components/stepper/StepPanels.vue.d.ts +2 -2
- package/dist/types/components/table/Table.vue.d.ts +8 -4
- package/dist/types/components/table/TableColumn.vue.d.ts +8 -4
- package/dist/types/components/table/interface.d.ts +9 -4
- package/package.json +80 -77
- package/src/components/table/Table.vue +38 -18
- package/src/components/table/interface.ts +24 -12
package/dist/dendelion-ui.umd.js
CHANGED
|
@@ -1,5 +1 @@
|
|
|
1
|
-
(function(d,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(d=typeof globalThis<"u"?globalThis:d||self,e(d.DendelionUI={},d.Vue))})(this,function(d,e){"use strict";var R=(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))(R||{});class q{static toClassName(n){switch(n){case 0:return"bg-primary";case 1:return"bg-primary-content";case 2:return"bg-secondary";case 3:return"bg-secondary-content";case 4:return"bg-accent";case 5:return"bg-accent-content";case 6:return"bg-neutral";case 7:return"bg-neutral-content";case 8:return"base-100";case 9:return"bg-base-200";case 10:return"bg-base-300";case 11:return"bg-base-content";case 12:return"bg-info";case 13:return"bg-info-content";case 14:return"bg-success";case 15:return"bg-success-content";case 16:return"bg-warning";case 17:return"bg-warning-content";case 18:return"bg-error";case 19:return"bg-error-content";default:return"bg-base-content"}}}class I{static toClassName(n){switch(n){case 0:return"btn-primary";case 1:return"btn-primary-content";case 2:return"btn-secondary";case 3:return"btn-secondary-content";case 4:return"btn-accent";case 5:return"btn-accent-content";case 6:return"btn-neutral";case 7:return"btn-neutral-content";case 8:return"base-100";case 9:return"btn-base-200";case 10:return"btn-base-300";case 11:return"btn-base-content";case 12:return"btn-info";case 13:return"btn-info-content";case 14:return"btn-success";case 15:return"btn-success-content";case 16:return"btn-warning";case 17:return"btn-warning-content";case 18:return"btn-error";case 19:return"btn-error-content";default:return"btn-base-content"}}}class ne{static toClassName(n){switch(n){case 0:return"text-primary";case 1:return"text-primary-content";case 2:return"text-secondary";case 3:return"text-secondary-content";case 4:return"text-accent";case 5:return"text-accent-content";case 6:return"text-neutral";case 7:return"text-neutral-content";case 8:return"base-100";case 9:return"text-base-200";case 10:return"text-base-300";case 11:return"text-base-content";case 12:return"text-info";case 13:return"text-info-content";case 14:return"text-success";case 15:return"text-success-content";case 16:return"text-warning";case 17:return"text-warning-content";case 18:return"text-error";case 19:return"text-error-content";default:return"text-base-content"}}}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"btn-xs";case 1:return"btn-sm";case 2:return"btn-md";case 3:return"btn-lg";case 4:return"btn-xl";case 5:return"btn-2xl";case 6:return"btn-3xl";default:return"btn-md"}}}class j{static toClassName(n){switch(n){case 0:return"rounded-xs";case 1:return"rounded-sm";case 2:return"rounded-md";case 3:return"rounded-lg";case 4:return"rounded-xl";case 5:return"rounded-2xl";case 6:return"rounded-3xl";default:return"rounded-md"}}}class K{static toClassName(n){switch(n){case 0:return"table-xs";case 1:return"table-sm";case 2:return"table-md";case 3:return"table-lg";case 4:return"table-xl";case 5:return"table-2xl";case 6:return"table-3xl";default:return"table-md"}}}class H{static toClassName(n){switch(n){case 0:return"tabs-xs";case 1:return"tabs-sm";case 2:return"tabs-md";case 3:return"tabs-lg";case 4:return"tabs-xl";default:return"tabs-md"}}}function G(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var D={exports:{}};/*!
|
|
2
|
-
Copyright (c) 2018 Jed Watson.
|
|
3
|
-
Licensed under the MIT License (MIT), see
|
|
4
|
-
http://jedwatson.github.io/classnames
|
|
5
|
-
*/var J;function re(){return J||(J=1,function(t){(function(){var n={}.hasOwnProperty;function a(){for(var r="",c=0;c<arguments.length;c++){var f=arguments[c];f&&(r=o(r,s(f)))}return r}function s(r){if(typeof r=="string"||typeof r=="number")return r;if(typeof r!="object")return"";if(Array.isArray(r))return a.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=o(c,f));return c}function o(r,c){return c?r?r+" "+c:r+c:r}t.exports?(a.default=a,t.exports=a):window.classNames=a})()}(D)),D.exports}var ae=re();const $=G(ae),oe=["type","disabled"],se={class:"group-[.is-loading]:text-transparent"},ce=e.defineComponent({__name:"Button",props:{type:{default:"button"},loading:{type:Boolean},color:{default:R.Neutral},soft:{type:Boolean,default:!1},outline:{type:Boolean,default:!1},disabled:{type:Boolean},click:{}},setup(t){const n=t,a=e.computed(()=>$("btn","group",I.toClassName(n.color),n.soft?"btn-soft":"",n.outline?"btn-outline":"",n.loading?"is-loading":"",n.disabled?"disabled":""));return(s,o)=>(e.openBlock(),e.createElementBlock("button",{onClick:o[0]||(o[0]=r=>t.click?t.click:void 0),class:e.normalizeClass(a.value),type:t.type,disabled:t.disabled||t.loading},[o[1]||(o[1]=e.createElementVNode("span",{class:"loading loading-spinner loading-md absolute hidden group-[.is-loading]:block"},null,-1)),e.createElementVNode("span",se,[e.renderSlot(s.$slots,"default")])],10,oe))}}),W=(t,n)=>{const a=t.__vccOpts||t;for(const[s,o]of n)a[s]=o;return a},le={};function ie(t,n){return e.openBlock(),e.createElementBlock("button")}const de=W(le,[["render",ie]]),ue=e.defineComponent({__name:"Card",props:{backgroundColor:{default:R.Primary},shadow:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},rounded:{type:Boolean},roundedSize:{}},setup(t){const n=t,a=e.ref($("card",q.toClassName(n.backgroundColor),n.shadow?"shadow-lg":"",n.fullWidth?"w-full":"",n.rounded&&!n.roundedSize?"rounded":n.roundedSize?j.toClassName(n.roundedSize):""));return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(s.$slots,"default")],2))}}),fe={},me={class:"card-body"};function pe(t,n){return e.openBlock(),e.createElementBlock("div",me,[e.renderSlot(t.$slots,"default")])}const be=W(fe,[["render",pe]]),he=e.defineComponent({__name:"CardTitle",props:{is:{default:"h1"},text:{default:""}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.is),{class:"card-title"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.text),1)]),_:1}))}}),ge=e.defineComponent({__name:"Container",props:{container:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(t){const n=t,a=e.ref([n.container?"container":"",n.padding?"p-6":""]);return(s,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(s.$slots,"default")],2))}}),T=(t,n)=>String(!t||typeof t!="object"?t:n.split(".").reduce((a,s)=>a&&(typeof a=="object"?a[s]:a),t));var O={},P={},Z;function Y(){return Z||(Z=1,function(t){t.__esModule=!0,t.default=o;var n=/[\u0300-\u036f]/g,a=/ł/g,s=/ñ/g;function o(r){return r.toLowerCase().normalize("NFD").replace(n,"").replace(a,"l").replace(s,"n").trim()}}(P)),P}var M={},Q;function v(){if(Q)return M;Q=1,M.__esModule=!0,M.aggressiveFuzzyMatch=C,M.createFuzzySearchImpl=_,M.experimentalSmartFuzzyMatch=B,M.fuzzyMatchImpl=y;var t=n(Y());function n(l){return l&&l.__esModule?l:{default:l}}var a=Number.MAX_SAFE_INTEGER,s=function(i,b){return i.score-b.score},o=function(i,b){return i[0]-b[0]},r=new Set(` []()-–—'"“”`.split(""));function c(l){return r.has(l)}function f(l,i,b,k,u,g,p){if(l===k)return[0,[[0,l.length-1]]];var m=k.length,h=i.length,x=u.length;if(i===u)return[.1,[[0,h-1]]];if(i.startsWith(u))return[.5,[[0,x-1]]];var w=l.indexOf(k);if(w>-1&&c(l[w-1]))return[.9,[[w,w+m-1]]];var S=i.indexOf(u);if(S>-1&&c(i[S-1]))return[1,[[S,S+m-1]]];var N=g.length;if(N>1&&g.every(function(V){return b.has(V)})){var z=1.5+N*.2;return[z,g.map(function(V){var L=i.indexOf(V);return[L,L+V.length-1]}).sort(o)]}return S>-1?[2,[[S,S+m-1]]]:p==="aggressive"?C(i,u):p==="smart"?B(i,u):null}function C(l,i){for(var b=l.length,k=i.length,u=0,g=i[u],p=[],m=-1,h=-2,x=0;x<b;x+=1)if(l[x]===g){if(x!==h+1&&(m>=0&&p.push([m,h]),m=x),h=x,u+=1,u===k)return p.push([m,h]),E(p,l);g=i[u]}return null}function B(l,i){for(var b=l.length,k=[],u=0,g=i[u],p=-1,m=-2;;){var h=l.indexOf(g,m+1);if(h===-1)break;if(h===0||c(l[h-1]))p=h;else{var x=i.length-u,w=l.length-h,S=Math.min(3,x,w),N=i.slice(u,u+S);if(l.slice(h,h+S)===N)p=h;else{m+=1;continue}}for(m=p;m<b&&l[m]===g;m+=1)u+=1,g=i[u];if(m-=1,k.push([p,m]),u===i.length)return E(k,l)}return null}function E(l,i){var b=2;return l.forEach(function(k){var u=k[0],g=k[1],p=g-u+1,m=u===0||i[u]===" "||i[u-1]===" ",h=g===i.length-1||i[g]===" "||i[g+1]===" ",x=m&&h;x?b+=.2:m?b+=.4:p>=3?b+=.8:b+=1.6}),[b,l]}function y(l,i){var b=(0,t.default)(i),k=b.split(" "),u=(0,t.default)(l),g=new Set(u.split(" ")),p=f(l,u,g,i,b,k,"smart");return p?{item:l,score:p[0],matches:[p[1]]}:null}function _(l,i){var b=i.strategy,k=b===void 0?"aggressive":b,u=i.getText,g=l.map(function(p){var m;if(u)m=u(p);else{var h=i.key?p[i.key]:p;m=[h]}var x=m.map(function(w){var S=w||"",N=(0,t.default)(S),z=new Set(N.split(" "));return[S,N,z]});return[p,x]});return function(p){var m=[],h=(0,t.default)(p),x=h.split(" ");return h.length?(g.forEach(function(w){for(var S=w[0],N=w[1],z=a,V=[],L=0,tt=N.length;L<tt;L+=1){var U=N[L],nt=U[0],rt=U[1],at=U[2],A=f(nt,rt,at,p,h,x,k);A?(z=Math.min(z,A[0]),V.push(A[1])):V.push(null)}z<a&&m.push({item:S,score:z,matches:V})}),m.sort(s),m):[]}}return M}var ee;function ye(){return ee||(ee=1,function(t){t.__esModule=!0,t.default=s,t.fuzzyMatch=o;var n=a(Y());t.normalizeText=n.default;function a(r){return r&&r.__esModule?r:{default:r}}function s(r,c){return c===void 0&&(c={}),v().createFuzzySearchImpl(r,c)}function o(r,c){return v().fuzzyMatchImpl(r,c)}}(O)),O}var ke=ye();const Be=G(ke),_e={key:0},xe={key:0},Ce=["innerHTML"],Se={key:1},Ee={key:2},te=e.defineComponent({__name:"TableColumn",props:{column:{},row:{},rowIndex:{}},setup(t){const n=t,a=e.computed(()=>n.column.render?n.column.render(T(n.row,n.column.data),n.row):T(n.row,n.column.data));e.onMounted(()=>{a.value&&typeof a.value=="object"&&"then"in a.value&&console.warn("Async component detected in TableColumn, this may cause issues with rendering.")});const s=(r,c)=>c.render===void 0?{}:c.render(T(r,c.data),r).props,o=r=>(console.log("getComponent",r),r&&typeof r=="object"&&"then"in r?e.defineAsyncComponent(()=>r):typeof r=="function"?e.defineAsyncComponent(r):r);return(r,c)=>(e.openBlock(),e.createElementBlock("td",null,[t.column.render?t.row?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.value?(e.openBlock(),e.createElementBlock("div",_e,[typeof a.value=="string"?(e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",{innerHTML:a.value},null,8,Ce)])):e.isVNode(a.value)?(e.openBlock(),e.createElementBlock("div",Se,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value)))])):(e.openBlock(),e.createElementBlock("div",Ee,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o(a.value.component)),e.normalizeProps(e.guardReactiveProps(s(t.row,t.column))),null,16))]))])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(T)(t.row,t.column.data)),1)],64))]))}}),we={key:0},Ne={key:1},ze={key:0},Ve=["colspan"],$e=["onClick"],Te={key:2},Me={key:0},Le=["colspan"],Fe=e.defineComponent({__name:"Table",props:{zebra:{type:Boolean,default:!1},pinRows:{type:Boolean,default:!1},pinCols:{type:Boolean,default:!1},horizontal:{type:Boolean,default:!1},size:{default:F.MD},customRowClasses:{default:void 0},columns:{},dataSource:{},ajax:{},searchValue:{},searchFunction:{},onRowClick:{}},setup(t){const n=e.ref([]),a=e.ref([]),s=e.ref(null),o=t,r=e.ref($(o.customRowClasses,{hover:o.onRowClick})),c=e.ref($("table",K.toClassName(o.size),{"table-zebra":o.zebra,"table-pin-rows":o.pinRows,"table-pin-cols ":o.pinCols})),f=(B,E)=>{o.onRowClick&&o.onRowClick(B,E)};e.onMounted(()=>{n.value=o.dataSource,a.value=o.dataSource}),e.watch(()=>o.dataSource,B=>{n.value=B,a.value=B},{immediate:!0}),e.watch(()=>o.searchValue,B=>{if(o.searchFunction){a.value=o.searchFunction(B??"");return}a.value=B?C(B):n.value},{immediate:!0});const C=B=>{const E=[];return n.value.length>0?(Object.keys(n.value[0]).forEach(_=>{const l=n.value.map(k=>T(k,_)),b=Be(l)(B);for(const k of b){const u=n.value.filter(g=>T(g,_)===k.item);E.push(...u)}}),E):[]};return(B,E)=>(e.openBlock(),e.createElementBlock("table",{ref_key:"table",ref:s,class:e.normalizeClass(c.value)},[t.horizontal?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("thead",we,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,y=>(e.openBlock(),e.createElementBlock("th",{key:y.title},e.toDisplayString(y.title),1))),128))])])),t.horizontal?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tbody",Ne,[a.value.length===0?(e.openBlock(),e.createElementBlock("tr",ze,[e.createElementVNode("td",{colspan:o.columns.length},"No data found",8,Ve)])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(a.value,(y,_)=>(e.openBlock(),e.createElementBlock("tr",{class:e.normalizeClass(r.value),key:JSON.stringify(y),onClick:l=>f(y,_)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,l=>(e.openBlock(),e.createBlock(te,{key:l.data,column:l,row:y,rowIndex:_},null,8,["column","row","rowIndex"]))),128))],10,$e))),128))])),t.horizontal?(e.openBlock(),e.createElementBlock("tbody",Te,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,y=>(e.openBlock(),e.createElementBlock("tr",{key:y.title},[e.createElementVNode("th",null,e.toDisplayString(y.title),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(_,l)=>(e.openBlock(),e.createBlock(te,{key:l,column:y,row:_,rowIndex:l},null,8,["column","row","rowIndex"]))),128))]))),128)),a.value.length===0?(e.openBlock(),e.createElementBlock("tr",Me,[e.createElementVNode("td",{colspan:o.columns.length+1,style:{"text-align":"center",padding:"1rem"}}," No data found ",8,Le)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],2))}}),Re=e.defineComponent({__name:"Stepper",props:{value:{}},emits:["update:value"],setup(t,{expose:n,emit:a}){const s=t,o=e.ref(s.value),r=a,c=f=>{o.value=f,r("update:value",f)};return e.provide("stepper",{value:o,updateValue:c}),e.watch(()=>s.value,f=>{o.value=f}),n({updateValue:c}),(f,C)=>e.renderSlot(f.$slots,"default",{updateValue:c})}}),De=e.defineComponent({__name:"Step",props:{value:{}},setup(t){const n=t,a=e.inject("stepper"),s=e.ref("");return e.watch(()=>a?.value.value,o=>{o&&n.value&&(s.value=Number(o)>=Number(n.value)?"step-primary":"")}),e.onMounted(()=>{a&&(s.value=a.value.value===n.value?"step-primary":"",Number(a.value.value)>=Number(n.value)&&(s.value="step-primary"))}),(o,r)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["step",s.value])},[e.renderSlot(o.$slots,"default")],2))}}),We={},Oe={class:"steps"};function Pe(t,n){return e.openBlock(),e.createElementBlock("ul",Oe,[e.renderSlot(t.$slots,"default")])}const Ue=W(We,[["render",Pe]]),Ae={key:0},qe=e.defineComponent({__name:"StepPanels",setup(t){const n=e.inject("stepper");return(a,s)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade",mode:"out-in"},{default:e.withCtx(()=>[e.unref(n)?.value?(e.openBlock(),e.createElementBlock("div",Ae,[e.renderSlot(a.$slots,"default",{currentStep:e.unref(n)?.value})])):e.createCommentVNode("",!0)]),_:3}))}}),Ie={key:0},Xe=e.defineComponent({__name:"StepPanel",props:{value:{}},setup(t,{expose:n}){const a=e.computed(()=>s?.value.value),s=e.inject("stepper"),o=r=>{s&&s.updateValue(r.toString())};return n({activateCallback:o}),(r,c)=>t.value===a.value?(e.openBlock(),e.createElementBlock("div",Ie,[e.renderSlot(r.$slots,"default",{activateCallback:o})])):e.createCommentVNode("",!0)}}),je={key:0,method:"dialog"},Ke=e.defineComponent({__name:"Modal",props:{closeButton:{type:Boolean,default:!0},overflow:{type:Boolean,default:!1},closeButtonSize:{default:F.SM},extraBoxClasses:{}},emits:["close"],setup(t,{expose:n,emit:a}){const s=e.ref(null),o=a,r=t,c=e.ref($("modal-box",r.extraBoxClasses,{"overflow-visible":r.overflow})),f=e.ref($("modal")),C=e.ref($("btn",X.toClassName(r.closeButtonSize),"btn-circle","btn-ghost","absolute","right-2","top-2"));return n({showModal:()=>{s.value?.showModal()},closeModal:()=>{s.value?.close()}}),(y,_)=>(e.openBlock(),e.createElementBlock("dialog",{ref_key:"modal",ref:s,class:e.normalizeClass([f.value,y.$attrs.class]),"aria-modal":"true","aria-hidden":"true",role:"dialog",onClose:_[0]||(_[0]=l=>o("close",l))},[e.createElementVNode("div",{class:e.normalizeClass(c.value)},[t.closeButton?(e.openBlock(),e.createElementBlock("form",je,[e.createElementVNode("button",{class:e.normalizeClass(C.value)},"✕",2)])):e.createCommentVNode("",!0),e.renderSlot(y.$slots,"default")],2),_[1]||(_[1]=e.createElementVNode("form",{method:"dialog",class:"modal-backdrop"},[e.createElementVNode("button",null,"close")],-1))],34))}}),He={class:"hidden w-full max-w-sm lg:flex"},Ge={class:"relative mx-3 w-full"},Je={class:"relative w-full max-w-full"},Ze=["value"],Ye=e.defineComponent({__name:"SearchBar",props:["modelValue"],emits:["update:modelValue"],setup(t,{emit:n}){const a=t,s=e.ref(null),o=n,r=c=>{(c.ctrlKey||c.metaKey)&&c.key.toLowerCase()==="k"&&(c.preventDefault(),s.value&&s.value.focus())};return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(c,f)=>(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("label",Ge,[f[1]||(f[1]=e.createElementVNode("svg",{class:"pointer-events-none absolute z-10 my-3.5 ms-4 text-base-content opacity-60","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",Je,[e.createElementVNode("form",null,[e.createElementVNode("input",{ref_key:"searchInput",ref:s,type:"search",placeholder:"Zoeken...",value:a.modelValue,onInput:f[0]||(f[0]=C=>o("update:modelValue",C.target.value)),class:"color-[inherit] w-full rounded-xl border-[2px] border-solid border-transparent bg-transparent px-3 py-2 ps-10 focus:border-[2px] focus:border-base-200 focus:outline-none"},null,40,Ze)])]),f[2]||(f[2]=e.createElementVNode("div",{class:"pointer-events-none absolute end-10 top-2.5 hidden gap-1 opacity-50 lg:flex rtl:flex-row-reverse"},[e.createElementVNode("kbd",{class:"kbd kbd-sm"},"ctrl"),e.createElementVNode("kbd",{class:"kbd kbd-sm"},"K")],-1))])]))}}),Qe=["name","value"],ve=e.defineComponent({__name:"Tabs",props:{box:{type:Boolean,default:!1},border:{type:Boolean,default:!1},lift:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},placement:{default:"top"},size:{default:F.MD},items:{},activeTab:{default:0}},setup(t,{expose:n}){const a=Math.random().toString(36).substring(2,15),s=t,o=e.computed(()=>100/s.items.length),r=e.computed(()=>["tabs",s.placement==="top"?"tabs-top":"tabs-bottom",`${H.toClassName(s.size)}`,{"tabs-box":s.box,"tabs-border":s.border,"tabs-lift":s.lift}]),c=e.ref(s.activeTab??0),f=C=>{c.value=C};return e.watch(()=>s.activeTab,C=>{c.value=C}),n({activeIndex:c,setActiveTab:f}),(C,B)=>(e.openBlock(),e.createElementBlock("div",{role:"tablist",class:e.normalizeClass(r.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.items,(E,y)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:y},[e.createElementVNode("label",{class:"tab",style:e.normalizeStyle(s.fullWidth?{width:o.value+"%"}:{})},[e.withDirectives(e.createElementVNode("input",{type:"radio",name:e.unref(a),value:y,"onUpdate:modelValue":B[0]||(B[0]=_=>c.value=_)},null,8,Qe),[[e.vModelRadio,c.value]]),e.createTextVNode(" "+e.toDisplayString(E.label),1)],4),e.createElementVNode("div",{class:e.normalizeClass(["tab-content p-6",E.disabled?"tab-disabled":""])},[e.renderSlot(C.$slots,E.slot)],2)],64))),128))],2))}}),et=["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"];d.BackgroundColorUtils=q,d.Button=ce,d.ButtonColorUtils=I,d.ButtonSizeUtils=X,d.Card=ue,d.CardBody=be,d.CardTitle=he,d.Color=R,d.Container=ge,d.Modal=Ke,d.RoundedSizeUtils=j,d.SearchBar=Ye,d.SimpleButton=de,d.Size=F,d.Step=De,d.StepList=Ue,d.StepPanel=Xe,d.StepPanels=qe,d.Stepper=Re,d.Table=Fe,d.TableSizeUtils=K,d.Tabs=ve,d.TabsSizeUtils=H,d.TextColorUtils=ne,d.dendelionSafeList=et,d.getValue=T,Object.defineProperty(d,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(u,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(u=typeof globalThis<"u"?globalThis:u||self,e(u.DendelionUI={},u.Vue))})(this,(function(u,e){"use strict";var R=(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))(R||{});class q{static toClassName(n){switch(n){case 0:return"bg-primary";case 1:return"bg-primary-content";case 2:return"bg-secondary";case 3:return"bg-secondary-content";case 4:return"bg-accent";case 5:return"bg-accent-content";case 6:return"bg-neutral";case 7:return"bg-neutral-content";case 8:return"base-100";case 9:return"bg-base-200";case 10:return"bg-base-300";case 11:return"bg-base-content";case 12:return"bg-info";case 13:return"bg-info-content";case 14:return"bg-success";case 15:return"bg-success-content";case 16:return"bg-warning";case 17:return"bg-warning-content";case 18:return"bg-error";case 19:return"bg-error-content";default:return"bg-base-content"}}}class I{static toClassName(n){switch(n){case 0:return"btn-primary";case 1:return"btn-primary-content";case 2:return"btn-secondary";case 3:return"btn-secondary-content";case 4:return"btn-accent";case 5:return"btn-accent-content";case 6:return"btn-neutral";case 7:return"btn-neutral-content";case 8:return"base-100";case 9:return"btn-base-200";case 10:return"btn-base-300";case 11:return"btn-base-content";case 12:return"btn-info";case 13:return"btn-info-content";case 14:return"btn-success";case 15:return"btn-success-content";case 16:return"btn-warning";case 17:return"btn-warning-content";case 18:return"btn-error";case 19:return"btn-error-content";default:return"btn-base-content"}}}class ne{static toClassName(n){switch(n){case 0:return"text-primary";case 1:return"text-primary-content";case 2:return"text-secondary";case 3:return"text-secondary-content";case 4:return"text-accent";case 5:return"text-accent-content";case 6:return"text-neutral";case 7:return"text-neutral-content";case 8:return"base-100";case 9:return"text-base-200";case 10:return"text-base-300";case 11:return"text-base-content";case 12:return"text-info";case 13:return"text-info-content";case 14:return"text-success";case 15:return"text-success-content";case 16:return"text-warning";case 17:return"text-warning-content";case 18:return"text-error";case 19:return"text-error-content";default:return"text-base-content"}}}var L=(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))(L||{});class X{static toClassName(n){switch(n){case 0:return"btn-xs";case 1:return"btn-sm";case 2:return"btn-md";case 3:return"btn-lg";case 4:return"btn-xl";case 5:return"btn-2xl";case 6:return"btn-3xl";default:return"btn-md"}}}class K{static toClassName(n){switch(n){case 0:return"rounded-xs";case 1:return"rounded-sm";case 2:return"rounded-md";case 3:return"rounded-lg";case 4:return"rounded-xl";case 5:return"rounded-2xl";case 6:return"rounded-3xl";default:return"rounded-md"}}}class j{static toClassName(n){switch(n){case 0:return"table-xs";case 1:return"table-sm";case 2:return"table-md";case 3:return"table-lg";case 4:return"table-xl";case 5:return"table-2xl";case 6:return"table-3xl";default:return"table-md"}}}class H{static toClassName(n){switch(n){case 0:return"tabs-xs";case 1:return"tabs-sm";case 2:return"tabs-md";case 3:return"tabs-lg";case 4:return"tabs-xl";default:return"tabs-md"}}}function G(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var D={exports:{}};var J;function re(){return J||(J=1,(function(t){(function(){var n={}.hasOwnProperty;function a(){for(var r="",i=0;i<arguments.length;i++){var p=arguments[i];p&&(r=o(r,l(p)))}return r}function l(r){if(typeof r=="string"||typeof r=="number")return r;if(typeof r!="object")return"";if(Array.isArray(r))return a.apply(null,r);if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]"))return r.toString();var i="";for(var p in r)n.call(r,p)&&r[p]&&(i=o(i,p));return i}function o(r,i){return i?r?r+" "+i:r+i:r}t.exports?(a.default=a,t.exports=a):window.classNames=a})()})(D)),D.exports}var ae=re();const T=G(ae),oe=["type","disabled"],se={class:"group-[.is-loading]:text-transparent"},le=e.defineComponent({__name:"Button",props:{type:{default:"button"},loading:{type:Boolean},color:{default:R.Neutral},soft:{type:Boolean,default:!1},outline:{type:Boolean,default:!1},disabled:{type:Boolean},click:{}},setup(t){const n=t,a=e.computed(()=>T("btn","group",I.toClassName(n.color),n.soft?"btn-soft":"",n.outline?"btn-outline":"",n.loading?"is-loading":"",n.disabled?"disabled":""));return(l,o)=>(e.openBlock(),e.createElementBlock("button",{onClick:o[0]||(o[0]=r=>t.click?t.click:void 0),class:e.normalizeClass(a.value),type:t.type,disabled:t.disabled||t.loading},[o[1]||(o[1]=e.createElementVNode("span",{class:"loading loading-spinner loading-md absolute hidden group-[.is-loading]:block"},null,-1)),e.createElementVNode("span",se,[e.renderSlot(l.$slots,"default")])],10,oe))}}),W=(t,n)=>{const a=t.__vccOpts||t;for(const[l,o]of n)a[l]=o;return a},ce={};function ie(t,n){return e.openBlock(),e.createElementBlock("button")}const de=W(ce,[["render",ie]]),ue=e.defineComponent({__name:"Card",props:{backgroundColor:{default:R.Primary},shadow:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},rounded:{type:Boolean},roundedSize:{}},setup(t){const n=t,a=e.ref(T("card",q.toClassName(n.backgroundColor),n.shadow?"shadow-lg":"",n.fullWidth?"w-full":"",n.rounded&&!n.roundedSize?"rounded":n.roundedSize?K.toClassName(n.roundedSize):""));return(l,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(l.$slots,"default")],2))}}),fe={},pe={class:"card-body"};function me(t,n){return e.openBlock(),e.createElementBlock("div",pe,[e.renderSlot(t.$slots,"default")])}const be=W(fe,[["render",me]]),he=e.defineComponent({__name:"CardTitle",props:{is:{default:"h1"},text:{default:""}},setup(t){return(n,a)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.is),{class:"card-title"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.text),1)]),_:1}))}}),ge=e.defineComponent({__name:"Container",props:{container:{type:Boolean,default:!0},padding:{type:Boolean,default:!0}},setup(t){const n=t,a=e.ref([n.container?"container":"",n.padding?"p-6":""]);return(l,o)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(a.value)},[e.renderSlot(l.$slots,"default")],2))}});var O={},P={},Z;function Y(){return Z||(Z=1,(function(t){t.__esModule=!0,t.default=o;var n=/[\u0300-\u036f]/g,a=/ł/g,l=/ñ/g;function o(r){return r.toLowerCase().normalize("NFD").replace(n,"").replace(a,"l").replace(l,"n").trim()}})(P)),P}var $={},Q;function v(){if(Q)return $;Q=1,$.__esModule=!0,$.aggressiveFuzzyMatch=B,$.createFuzzySearchImpl=k,$.experimentalSmartFuzzyMatch=w,$.fuzzyMatchImpl=h;var t=n(Y());function n(s){return s&&s.__esModule?s:{default:s}}var a=Number.MAX_SAFE_INTEGER,l=function(c,d){return c.score-d.score},o=function(c,d){return c[0]-d[0]},r=new Set(` []()-–—'"“”`.split(""));function i(s){return r.has(s)}function p(s,c,d,_,f,g,b){if(s===_)return[0,[[0,s.length-1]]];var m=_.length,y=c.length,x=f.length;if(c===f)return[.1,[[0,y-1]]];if(c.startsWith(f))return[.5,[[0,x-1]]];var S=s.indexOf(_);if(S>-1&&i(s[S-1]))return[.9,[[S,S+m-1]]];var C=c.indexOf(f);if(C>-1&&i(c[C-1]))return[1,[[C,C+m-1]]];var E=g.length;if(E>1&&g.every(function(V){return d.has(V)})){var z=1.5+E*.2;return[z,g.map(function(V){var M=c.indexOf(V);return[M,M+V.length-1]}).sort(o)]}return C>-1?[2,[[C,C+m-1]]]:b==="aggressive"?B(c,f):b==="smart"?w(c,f):null}function B(s,c){for(var d=s.length,_=c.length,f=0,g=c[f],b=[],m=-1,y=-2,x=0;x<d;x+=1)if(s[x]===g){if(x!==y+1&&(m>=0&&b.push([m,y]),m=x),y=x,f+=1,f===_)return b.push([m,y]),N(b,s);g=c[f]}return null}function w(s,c){for(var d=s.length,_=[],f=0,g=c[f],b=-1,m=-2;;){var y=s.indexOf(g,m+1);if(y===-1)break;if(y===0||i(s[y-1]))b=y;else{var x=c.length-f,S=s.length-y,C=Math.min(3,x,S),E=c.slice(f,f+C);if(s.slice(y,y+C)===E)b=y;else{m+=1;continue}}for(m=b;m<d&&s[m]===g;m+=1)f+=1,g=c[f];if(m-=1,_.push([b,m]),f===c.length)return N(_,s)}return null}function N(s,c){var d=2;return s.forEach(function(_){var f=_[0],g=_[1],b=g-f+1,m=f===0||c[f]===" "||c[f-1]===" ",y=g===c.length-1||c[g]===" "||c[g+1]===" ",x=m&&y;x?d+=.2:m?d+=.4:b>=3?d+=.8:d+=1.6}),[d,s]}function h(s,c){var d=(0,t.default)(c),_=d.split(" "),f=(0,t.default)(s),g=new Set(f.split(" ")),b=p(s,f,g,c,d,_,"smart");return b?{item:s,score:b[0],matches:[b[1]]}:null}function k(s,c){var d=c.strategy,_=d===void 0?"aggressive":d,f=c.getText,g=s.map(function(b){var m;if(f)m=f(b);else{var y=c.key?b[c.key]:b;m=[y]}var x=m.map(function(S){var C=S||"",E=(0,t.default)(C),z=new Set(E.split(" "));return[C,E,z]});return[b,x]});return function(b){var m=[],y=(0,t.default)(b),x=y.split(" ");return y.length?(g.forEach(function(S){for(var C=S[0],E=S[1],z=a,V=[],M=0,tt=E.length;M<tt;M+=1){var U=E[M],nt=U[0],rt=U[1],at=U[2],A=p(nt,rt,at,b,y,x,_);A?(z=Math.min(z,A[0]),V.push(A[1])):V.push(null)}z<a&&m.push({item:C,score:z,matches:V})}),m.sort(l),m):[]}}return $}var ee;function ye(){return ee||(ee=1,(function(t){t.__esModule=!0,t.default=l,t.fuzzyMatch=o;var n=a(Y());t.normalizeText=n.default;function a(r){return r&&r.__esModule?r:{default:r}}function l(r,i){return i===void 0&&(i={}),v().createFuzzySearchImpl(r,i)}function o(r,i){return v().fuzzyMatchImpl(r,i)}})(O)),O}var ke=ye();const Be=G(ke),F=(t,n)=>!t||typeof t!="object"?String(t):n.split(".").reduce((a,l)=>a&&(typeof a=="object"?a[l]:a),t),_e={key:0},xe={key:0},Ce=["innerHTML"],Se={key:1},Ee={key:2},te=e.defineComponent({__name:"TableColumn",props:{column:{},row:{},rowIndex:{}},setup(t){const n=t,a=e.computed(()=>n.column.render?n.column.render(F(n.row,n.column.data),n.row):F(n.row,n.column.data));e.onMounted(()=>{a.value&&typeof a.value=="object"&&"then"in a.value&&console.warn("Async component detected in TableColumn, this may cause issues with rendering.")});const l=(r,i)=>i.render===void 0?{}:i.render(F(r,i.data),r).props,o=r=>(console.log("getComponent",r),r&&typeof r=="object"&&"then"in r?e.defineAsyncComponent(()=>r):typeof r=="function"?e.defineAsyncComponent(r):r);return(r,i)=>(e.openBlock(),e.createElementBlock("td",null,[t.column.render?t.row?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[a.value?(e.openBlock(),e.createElementBlock("div",_e,[typeof a.value=="string"?(e.openBlock(),e.createElementBlock("div",xe,[e.createElementVNode("div",{innerHTML:a.value},null,8,Ce)])):e.isVNode(a.value)?(e.openBlock(),e.createElementBlock("div",Se,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value)))])):(e.openBlock(),e.createElementBlock("div",Ee,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(o(a.value.component)),e.normalizeProps(e.guardReactiveProps(l(t.row,t.column))),null,16))]))])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(e.unref(F)(t.row,t.column.data)),1)],64))]))}}),we={key:0},Ne={key:1},ze={key:0},Ve=["colspan"],Te=["onClick"],$e={key:2},Me={key:0},Le=["colspan"],Fe=e.defineComponent({__name:"Table",props:{zebra:{type:Boolean,default:!1},pinRows:{type:Boolean,default:!1},pinCols:{type:Boolean,default:!1},horizontal:{type:Boolean,default:!1},size:{default:L.MD},customRowClasses:{default:void 0},columns:{},dataSource:{},ajax:{},searchValue:{},searchFunction:{},onRowClick:{}},setup(t){const n=e.ref([]),a=e.ref([]),l=e.ref(null),o=t,r=e.ref(T(o.customRowClasses,{hover:o.onRowClick})),i=e.ref(T("table",j.toClassName(o.size),{"table-zebra":o.zebra,"table-pin-rows":o.pinRows,"table-pin-cols ":o.pinCols})),p=(h,k)=>{o.onRowClick&&o.onRowClick(h,k)};e.onMounted(()=>{n.value=o.dataSource,a.value=o.dataSource}),e.watch(()=>o.dataSource,h=>{n.value=h,a.value=h},{immediate:!0}),e.watch(()=>o.searchValue,h=>{if(o.searchFunction){a.value=o.searchFunction(h??"");return}a.value=h?N(h):n.value},{immediate:!0});const B=(h,k="")=>Object.keys(h).flatMap(s=>{const c=h[s],d=k?`${k}.${s}`:s;return c!==null&&typeof c=="object"?B(c,d):[d]}),w=(h,k)=>k.split(".").reduce((s,c)=>s!==null&&typeof s=="object"?s[c]:void 0,h),N=h=>{const k=[];return n.value.length>0?(B(n.value[0]).forEach(c=>{const d=n.value.map(g=>w(g,c)),f=Be(d)(h);for(const g of f){const b=n.value.filter(m=>w(m,c)===g.item);k.push(...b)}}),[...new Set(k)]):[]};return(h,k)=>(e.openBlock(),e.createElementBlock("table",{ref_key:"table",ref:l,class:e.normalizeClass(i.value)},[t.horizontal?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("thead",we,[e.createElementVNode("tr",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,s=>(e.openBlock(),e.createElementBlock("th",{key:s.title},e.toDisplayString(s.title),1))),128))])])),t.horizontal?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tbody",Ne,[a.value.length===0?(e.openBlock(),e.createElementBlock("tr",ze,[e.createElementVNode("td",{colspan:o.columns.length},"No data found",8,Ve)])):(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(a.value,(s,c)=>(e.openBlock(),e.createElementBlock("tr",{class:e.normalizeClass(r.value),key:JSON.stringify(s),onClick:d=>p(s,c)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,d=>(e.openBlock(),e.createBlock(te,{key:d.data,column:d,row:s,rowIndex:c},null,8,["column","row","rowIndex"]))),128))],10,Te))),128))])),t.horizontal?(e.openBlock(),e.createElementBlock("tbody",$e,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.columns,s=>(e.openBlock(),e.createElementBlock("tr",{key:s.title},[e.createElementVNode("th",null,e.toDisplayString(s.title),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(a.value,(c,d)=>(e.openBlock(),e.createBlock(te,{key:d,column:s,row:c,rowIndex:d},null,8,["column","row","rowIndex"]))),128))]))),128)),a.value.length===0?(e.openBlock(),e.createElementBlock("tr",Me,[e.createElementVNode("td",{colspan:o.columns.length+1,style:{"text-align":"center",padding:"1rem"}}," No data found ",8,Le)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],2))}}),Re=e.defineComponent({__name:"Stepper",props:{value:{}},emits:["update:value"],setup(t,{expose:n,emit:a}){const l=t,o=e.ref(l.value),r=a,i=p=>{o.value=p,r("update:value",p)};return e.provide("stepper",{value:o,updateValue:i}),e.watch(()=>l.value,p=>{o.value=p}),n({updateValue:i}),(p,B)=>e.renderSlot(p.$slots,"default",{updateValue:i})}}),De=e.defineComponent({__name:"Step",props:{value:{}},setup(t){const n=t,a=e.inject("stepper"),l=e.ref("");return e.watch(()=>a?.value.value,o=>{o&&n.value&&(l.value=Number(o)>=Number(n.value)?"step-primary":"")}),e.onMounted(()=>{a&&(l.value=a.value.value===n.value?"step-primary":"",Number(a.value.value)>=Number(n.value)&&(l.value="step-primary"))}),(o,r)=>(e.openBlock(),e.createElementBlock("li",{class:e.normalizeClass(["step",l.value])},[e.renderSlot(o.$slots,"default")],2))}}),We={},Oe={class:"steps"};function Pe(t,n){return e.openBlock(),e.createElementBlock("ul",Oe,[e.renderSlot(t.$slots,"default")])}const Ue=W(We,[["render",Pe]]),Ae={key:0},qe=e.defineComponent({__name:"StepPanels",setup(t){const n=e.inject("stepper");return(a,l)=>(e.openBlock(),e.createBlock(e.Transition,{name:"fade",mode:"out-in"},{default:e.withCtx(()=>[e.unref(n)?.value?(e.openBlock(),e.createElementBlock("div",Ae,[e.renderSlot(a.$slots,"default",{currentStep:e.unref(n)?.value})])):e.createCommentVNode("",!0)]),_:3}))}}),Ie={key:0},Xe=e.defineComponent({__name:"StepPanel",props:{value:{}},setup(t,{expose:n}){const a=e.computed(()=>l?.value.value),l=e.inject("stepper"),o=r=>{l&&l.updateValue(r.toString())};return n({activateCallback:o}),(r,i)=>t.value===a.value?(e.openBlock(),e.createElementBlock("div",Ie,[e.renderSlot(r.$slots,"default",{activateCallback:o})])):e.createCommentVNode("",!0)}}),Ke={key:0,method:"dialog"},je=e.defineComponent({__name:"Modal",props:{closeButton:{type:Boolean,default:!0},overflow:{type:Boolean,default:!1},closeButtonSize:{default:L.SM},extraBoxClasses:{}},emits:["close"],setup(t,{expose:n,emit:a}){const l=e.ref(null),o=a,r=t,i=e.ref(T("modal-box",r.extraBoxClasses,{"overflow-visible":r.overflow})),p=e.ref(T("modal")),B=e.ref(T("btn",X.toClassName(r.closeButtonSize),"btn-circle","btn-ghost","absolute","right-2","top-2"));return n({showModal:()=>{l.value?.showModal()},closeModal:()=>{l.value?.close()}}),(h,k)=>(e.openBlock(),e.createElementBlock("dialog",{ref_key:"modal",ref:l,class:e.normalizeClass([p.value,h.$attrs.class]),"aria-modal":"true","aria-hidden":"true",role:"dialog",onClose:k[0]||(k[0]=s=>o("close",s))},[e.createElementVNode("div",{class:e.normalizeClass(i.value)},[t.closeButton?(e.openBlock(),e.createElementBlock("form",Ke,[e.createElementVNode("button",{class:e.normalizeClass(B.value)},"✕",2)])):e.createCommentVNode("",!0),e.renderSlot(h.$slots,"default")],2),k[1]||(k[1]=e.createElementVNode("form",{method:"dialog",class:"modal-backdrop"},[e.createElementVNode("button",null,"close")],-1))],34))}}),He={class:"hidden w-full max-w-sm lg:flex"},Ge={class:"relative mx-3 w-full"},Je={class:"relative w-full max-w-full"},Ze=["value"],Ye=e.defineComponent({__name:"SearchBar",props:["modelValue"],emits:["update:modelValue"],setup(t,{emit:n}){const a=t,l=e.ref(null),o=n,r=i=>{(i.ctrlKey||i.metaKey)&&i.key.toLowerCase()==="k"&&(i.preventDefault(),l.value&&l.value.focus())};return e.onMounted(()=>{document.addEventListener("keydown",r)}),e.onUnmounted(()=>{document.removeEventListener("keydown",r)}),(i,p)=>(e.openBlock(),e.createElementBlock("div",He,[e.createElementVNode("label",Ge,[p[1]||(p[1]=e.createElementVNode("svg",{class:"pointer-events-none absolute z-10 my-3.5 ms-4 text-base-content opacity-60","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",Je,[e.createElementVNode("form",null,[e.createElementVNode("input",{ref_key:"searchInput",ref:l,type:"search",placeholder:"Zoeken...",value:a.modelValue,onInput:p[0]||(p[0]=B=>o("update:modelValue",B.target.value)),class:"color-[inherit] w-full rounded-xl border-[2px] border-solid border-transparent bg-transparent px-3 py-2 ps-10 focus:border-[2px] focus:border-base-200 focus:outline-none"},null,40,Ze)])]),p[2]||(p[2]=e.createElementVNode("div",{class:"pointer-events-none absolute end-10 top-2.5 hidden gap-1 opacity-50 lg:flex rtl:flex-row-reverse"},[e.createElementVNode("kbd",{class:"kbd kbd-sm"},"ctrl"),e.createElementVNode("kbd",{class:"kbd kbd-sm"},"K")],-1))])]))}}),Qe=["name","value"],ve=e.defineComponent({__name:"Tabs",props:{box:{type:Boolean,default:!1},border:{type:Boolean,default:!1},lift:{type:Boolean,default:!1},fullWidth:{type:Boolean,default:!1},placement:{default:"top"},size:{default:L.MD},items:{},activeTab:{default:0}},setup(t,{expose:n}){const a=Math.random().toString(36).substring(2,15),l=t,o=e.computed(()=>100/l.items.length),r=e.computed(()=>["tabs",l.placement==="top"?"tabs-top":"tabs-bottom",`${H.toClassName(l.size)}`,{"tabs-box":l.box,"tabs-border":l.border,"tabs-lift":l.lift}]),i=e.ref(l.activeTab??0),p=B=>{i.value=B};return e.watch(()=>l.activeTab,B=>{i.value=B}),n({activeIndex:i,setActiveTab:p}),(B,w)=>(e.openBlock(),e.createElementBlock("div",{role:"tablist",class:e.normalizeClass(r.value)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(l.items,(N,h)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:h},[e.createElementVNode("label",{class:"tab",style:e.normalizeStyle(l.fullWidth?{width:o.value+"%"}:{})},[e.withDirectives(e.createElementVNode("input",{type:"radio",name:e.unref(a),value:h,"onUpdate:modelValue":w[0]||(w[0]=k=>i.value=k)},null,8,Qe),[[e.vModelRadio,i.value]]),e.createTextVNode(" "+e.toDisplayString(N.label),1)],4),e.createElementVNode("div",{class:e.normalizeClass(["tab-content p-6",N.disabled?"tab-disabled":""])},[e.renderSlot(B.$slots,N.slot)],2)],64))),128))],2))}}),et=["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"];u.BackgroundColorUtils=q,u.Button=le,u.ButtonColorUtils=I,u.ButtonSizeUtils=X,u.Card=ue,u.CardBody=be,u.CardTitle=he,u.Color=R,u.Container=ge,u.Modal=je,u.RoundedSizeUtils=K,u.SearchBar=Ye,u.SimpleButton=de,u.Size=L,u.Step=De,u.StepList=Ue,u.StepPanel=Xe,u.StepPanels=qe,u.Stepper=Re,u.Table=Fe,u.TableSizeUtils=j,u.Tabs=ve,u.TabsSizeUtils=H,u.TextColorUtils=ne,u.dendelionSafeList=et,u.getValue=F,Object.defineProperty(u,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type Ref } from 'vue';
|
|
2
|
-
declare var
|
|
2
|
+
declare var __VLS_7: {
|
|
3
3
|
currentStep: Ref<string, string>;
|
|
4
4
|
};
|
|
5
5
|
type __VLS_Slots = {} & {
|
|
6
|
-
default?: (props: typeof
|
|
6
|
+
default?: (props: typeof __VLS_7) => any;
|
|
7
7
|
};
|
|
8
8
|
declare const __VLS_base: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
9
9
|
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { TableProps } from './interface';
|
|
2
|
-
declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
|
|
3
|
-
props: __VLS_PrettifyLocal<TableProps<T>> &
|
|
2
|
+
declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
3
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<TableProps<T>> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
4
6
|
expose: (exposed: {}) => void;
|
|
5
7
|
attrs: any;
|
|
6
8
|
slots: {};
|
|
@@ -10,6 +12,8 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
|
|
|
10
12
|
};
|
|
11
13
|
declare const _default: typeof __VLS_export;
|
|
12
14
|
export default _default;
|
|
13
|
-
type __VLS_PrettifyLocal<T> = {
|
|
15
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
16
|
+
[K in keyof T]: T[K];
|
|
17
|
+
} : {
|
|
14
18
|
[K in keyof T as K]: T[K];
|
|
15
|
-
} & {};
|
|
19
|
+
}) & {};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { ColumnProps } from './interface';
|
|
2
|
-
declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>,
|
|
3
|
-
props: __VLS_PrettifyLocal<ColumnProps<T>> &
|
|
2
|
+
declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
3
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<ColumnProps<T>> & (typeof globalThis extends {
|
|
4
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
5
|
+
} ? P : {});
|
|
4
6
|
expose: (exposed: {}) => void;
|
|
5
7
|
attrs: any;
|
|
6
8
|
slots: {};
|
|
@@ -10,6 +12,8 @@ declare const __VLS_export: <T>(__VLS_props: NonNullable<Awaited<typeof __VLS_se
|
|
|
10
12
|
};
|
|
11
13
|
declare const _default: typeof __VLS_export;
|
|
12
14
|
export default _default;
|
|
13
|
-
type __VLS_PrettifyLocal<T> = {
|
|
15
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
16
|
+
[K in keyof T]: T[K];
|
|
17
|
+
} : {
|
|
14
18
|
[K in keyof T as K]: T[K];
|
|
15
|
-
} & {};
|
|
19
|
+
}) & {};
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { Size } from '@/types';
|
|
2
2
|
import { Component, VNode } from 'vue';
|
|
3
|
+
type DeepKey<T> = T extends object ? {
|
|
4
|
+
[K in keyof T & string]: K | `${K}.${DeepKey<T[K]>}`;
|
|
5
|
+
}[keyof T & string] : never;
|
|
6
|
+
type DeepValue<T, P extends string> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? DeepValue<T[K], Rest> : never : P extends keyof T ? T[P] : never;
|
|
3
7
|
export type TableProps<T> = {
|
|
4
8
|
zebra?: boolean;
|
|
5
9
|
pinRows?: boolean;
|
|
@@ -19,10 +23,10 @@ export type ColumnProps<T> = {
|
|
|
19
23
|
row: T;
|
|
20
24
|
rowIndex: number;
|
|
21
25
|
};
|
|
22
|
-
export type Column<T> = {
|
|
26
|
+
export type Column<T, K extends DeepKey<T> = DeepKey<T>> = {
|
|
23
27
|
title: string;
|
|
24
|
-
data:
|
|
25
|
-
render?: (text:
|
|
28
|
+
data: K;
|
|
29
|
+
render?: (text: DeepValue<T, K & string>, row: T) => string | ColumnComponent | VNode;
|
|
26
30
|
extraClasses?: ExtraClasses;
|
|
27
31
|
};
|
|
28
32
|
export type ExtraClasses = {
|
|
@@ -41,4 +45,5 @@ export type ColumnComponent = {
|
|
|
41
45
|
component: ComponentOrImport;
|
|
42
46
|
props: any;
|
|
43
47
|
};
|
|
44
|
-
export declare const getValue: (obj:
|
|
48
|
+
export declare const getValue: <T, K extends DeepKey<T>>(obj: T, keyPath: K) => DeepValue<T, K & string>;
|
|
49
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,79 +1,82 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
2
|
+
"name": "dendelion-ui",
|
|
3
|
+
"private": false,
|
|
4
|
+
"description": "Simpel component library using Tailwind css and DaisyUI",
|
|
5
|
+
"version": "0.0.26",
|
|
6
|
+
"author": "ThatzOkay",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"homepage": "https://github.com/ThatzOkay/DendelionUI#readme",
|
|
9
|
+
"repository": {
|
|
10
|
+
"url": "git+https://github.com/ThatzOkay/DendelionUI.git",
|
|
11
|
+
"type": "git"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/ThatzOkay/DendelionUI/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"Tailwind",
|
|
18
|
+
"DaisyUI",
|
|
19
|
+
"Vue",
|
|
20
|
+
"Component",
|
|
21
|
+
"Library"
|
|
22
|
+
],
|
|
23
|
+
"type": "module",
|
|
24
|
+
"files": [
|
|
25
|
+
"dist",
|
|
26
|
+
"src"
|
|
27
|
+
],
|
|
28
|
+
"main": "./dist/dendelion-ui.umd.js",
|
|
29
|
+
"module": "./dist/dendelion-ui.es.js",
|
|
30
|
+
"typings": "./dist/types/index.d.ts",
|
|
31
|
+
"types": "./dist/types/index.d.ts",
|
|
32
|
+
"exports": {
|
|
33
|
+
".": {
|
|
34
|
+
"types": "./dist/types/index.d.ts",
|
|
35
|
+
"import": "./dist/dendelion-ui.es.js",
|
|
36
|
+
"require": "./dist/dendelion-ui.umd.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"dev": "cross-env MODE=demo npm run vite",
|
|
41
|
+
"vite": "vite",
|
|
42
|
+
"clean": "rimraf dist",
|
|
43
|
+
"build": "npm run clean && npm run build:lib && npm run build:tsc",
|
|
44
|
+
"build:lib": "cross-env MODE=lib vite build",
|
|
45
|
+
"build:tsc": "vue-tsc --emitDeclarationOnly",
|
|
46
|
+
"build:demo": "cross-env MODE=demo vite build",
|
|
47
|
+
"docs:dev": "vitepress dev docs",
|
|
48
|
+
"docs:build": "vitepress build docs",
|
|
49
|
+
"docs:preview": "vitepress preview docs",
|
|
50
|
+
"lint": "eslint ",
|
|
51
|
+
"lint:fix": "eslint --fix ",
|
|
52
|
+
"format": "prettier ./src --write",
|
|
53
|
+
"preview": "vite preview"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@nozbe/microfuzz": "^1.0.0",
|
|
57
|
+
"classnames": "^2.5.1",
|
|
58
|
+
"fuzzysearch": "^1.0.3"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"vue": "^3.3.0"
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"vue": "^3.5.28",
|
|
65
|
+
"@vitejs/plugin-vue": "^6.0.4",
|
|
66
|
+
"@vue/tsconfig": "^0.9.0",
|
|
67
|
+
"autoprefixer": "^10.4.24",
|
|
68
|
+
"cross-env": "^10.1.0",
|
|
69
|
+
"daisyui": "^5.5.18",
|
|
70
|
+
"eslint": "^10.0.0",
|
|
71
|
+
"eslint-plugin-vue": "^10.7.0",
|
|
72
|
+
"fluid-tailwind": "^1.0.4",
|
|
73
|
+
"prettier": "^3.8.1",
|
|
74
|
+
"prettier-eslint": "^16.4.2",
|
|
75
|
+
"prettier-plugin-tailwindcss": "^0.7.2",
|
|
76
|
+
"rimraf": "^6.1.2",
|
|
77
|
+
"typescript": "^6.0.0",
|
|
78
|
+
"typescript-eslint": "^8.55.0",
|
|
79
|
+
"vite": "^8.0.0",
|
|
80
|
+
"vue-tsc": "^3.2.4"
|
|
81
|
+
}
|
|
79
82
|
}
|
|
@@ -108,24 +108,44 @@ watch(
|
|
|
108
108
|
{ immediate: true },
|
|
109
109
|
);
|
|
110
110
|
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
for (const item of found) {
|
|
121
|
-
const matchingItems = originalDataSource.value.filter((i) => getValue(i, key) === item.item);
|
|
122
|
-
foundRows.push(...(matchingItems as T[]));
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
return foundRows;
|
|
127
|
-
}
|
|
111
|
+
const getDeepKeys = (obj: object, prefix = ""): string[] => {
|
|
112
|
+
return Object.keys(obj).flatMap((key) => {
|
|
113
|
+
const value = (obj as Record<string, unknown>)[key];
|
|
114
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
115
|
+
return value !== null && typeof value === "object"
|
|
116
|
+
? getDeepKeys(value as object, fullKey)
|
|
117
|
+
: [fullKey];
|
|
118
|
+
});
|
|
119
|
+
};
|
|
128
120
|
|
|
129
|
-
|
|
121
|
+
const getDeepValue = (obj: unknown, path: string): unknown => {
|
|
122
|
+
return path.split(".").reduce((acc, key) => {
|
|
123
|
+
return acc !== null && typeof acc === "object"
|
|
124
|
+
? (acc as Record<string, unknown>)[key]
|
|
125
|
+
: undefined;
|
|
126
|
+
}, obj);
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
const doFuzzySearch = (value: string): T[] => {
|
|
130
|
+
const foundRows: T[] = [];
|
|
131
|
+
if (originalDataSource.value.length > 0) {
|
|
132
|
+
const deepKeys = getDeepKeys(originalDataSource.value[0] as object);
|
|
133
|
+
|
|
134
|
+
deepKeys.forEach((key) => {
|
|
135
|
+
const list = originalDataSource.value.map((row) => getDeepValue(row, key));
|
|
136
|
+
const fuzzySearch = createFuzzySearch(list);
|
|
137
|
+
const found = fuzzySearch(value);
|
|
138
|
+
for (const item of found) {
|
|
139
|
+
const matchingItems = originalDataSource.value.filter(
|
|
140
|
+
(i) => getDeepValue(i, key) === item.item
|
|
141
|
+
);
|
|
142
|
+
foundRows.push(...(matchingItems as T[]));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
return [...new Set(foundRows)];
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return [];
|
|
130
150
|
};
|
|
131
151
|
</script>
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import { Size } from '@/types';
|
|
2
2
|
import { Component, VNode } from 'vue';
|
|
3
3
|
|
|
4
|
+
type DeepKey<T> = T extends object
|
|
5
|
+
? {
|
|
6
|
+
[K in keyof T & string]: K | `${K}.${DeepKey<T[K]>}`;
|
|
7
|
+
}[keyof T & string]
|
|
8
|
+
: never;
|
|
9
|
+
|
|
10
|
+
type DeepValue<T, P extends string> = P extends `${infer K}.${infer Rest}`
|
|
11
|
+
? K extends keyof T
|
|
12
|
+
? DeepValue<T[K], Rest>
|
|
13
|
+
: never
|
|
14
|
+
: P extends keyof T
|
|
15
|
+
? T[P]
|
|
16
|
+
: never;
|
|
17
|
+
|
|
4
18
|
|
|
5
19
|
export type TableProps<T> = {
|
|
6
20
|
zebra?: boolean;
|
|
@@ -23,11 +37,11 @@ export type ColumnProps<T> = {
|
|
|
23
37
|
rowIndex: number;
|
|
24
38
|
};
|
|
25
39
|
|
|
26
|
-
export type Column<T> = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
export type Column<T, K extends DeepKey<T> = DeepKey<T>> = {
|
|
41
|
+
title: string;
|
|
42
|
+
data: K;
|
|
43
|
+
render?: (text: DeepValue<T, K & string>, row: T) => string | ColumnComponent | VNode;
|
|
44
|
+
extraClasses?: ExtraClasses;
|
|
31
45
|
};
|
|
32
46
|
|
|
33
47
|
export type ExtraClasses = {
|
|
@@ -48,11 +62,9 @@ export type ColumnComponent = {
|
|
|
48
62
|
props: any;
|
|
49
63
|
};
|
|
50
64
|
|
|
51
|
-
export const getValue = (obj:
|
|
52
|
-
if (!obj || typeof obj !== 'object') return String(obj)
|
|
53
|
-
return
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.reduce<unknown>((acc, key) => acc && (typeof acc === 'object' ? (acc as Record<string, any>)[key] : acc), obj),
|
|
57
|
-
);
|
|
65
|
+
export const getValue = <T, K extends DeepKey<T>>(obj: T, keyPath: K): DeepValue<T, K & string> => {
|
|
66
|
+
if (!obj || typeof obj !== 'object') return String(obj) as DeepValue<T, K & string>;
|
|
67
|
+
return keyPath
|
|
68
|
+
.split('.')
|
|
69
|
+
.reduce<unknown>((acc, key) => acc && (typeof acc === 'object' ? (acc as Record<string, any>)[key] : acc), obj) as DeepValue<T, K & string>;
|
|
58
70
|
};
|