adverich-kun-ui
Version:
Una librería de componentes Vue.js con Tailwind CSS
44 lines (43 loc) • 1.36 kB
JavaScript
import { reactive as F, ref as k, computed as w, watch as A } from "vue";
import { debounce as S } from "../../../../utils/utils.js";
function v(u, i) {
const t = F({
search: "",
byColumn: {}
}), { items: c, customFilter: s, searchableKeys: f } = u, y = k(!1), a = (e, r) => e == null ? !1 : String(e).toLowerCase().includes(String(r).toLowerCase()), l = (e, r, n) => {
const o = e[r];
return typeof (s == null ? void 0 : s.value) == "function" ? s.value(e, r, n) : Array.isArray(n) ? n.some((b) => a(o, b)) : a(o, n);
}, m = w(() => Array.isArray(c.value) ? c.value.filter((e) => {
if (t.search && !(f.value || Object.keys(e)).some((o) => l(e, o, t.search)))
return !1;
for (const r in t.byColumn) {
const n = t.byColumn[r];
if (n != null && n !== "" && !l(e, r, n))
return !1;
}
return !0;
}) : []), h = S((e) => {
t.search = (e == null ? void 0 : e.toString().toLowerCase()) || "";
}, i.value), p = (e, r) => {
t.byColumn[e] = r;
};
function C(e) {
for (const r in e)
p(r, e[r]);
}
const d = () => {
t.search = "", t.byColumn = {};
};
return A(() => c.value, () => {
}, { deep: !0 }), {
modalFilter: y,
appliedFilters: t,
filteredItems: m,
setSearch: h,
applyColumnFilters: C,
clearFilters: d
};
}
export {
v as default
};