dgz-ui-shared
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library
134 lines (133 loc) • 2.77 kB
JavaScript
import { useEffect as C, useMemo as j, useCallback as a, useState as O } from "react";
import { a as l } from "./MyInput-qse97Dxt.js";
import { u as E } from "./useColumnsStore-CUWnqxpS.js";
import { S as b } from "./SortOrder-CwuehjY1.js";
const F = ({
key: n,
columns: e = []
}) => {
const { storedColumns: t, setColumns: u } = E();
C(() => {
if (l.isEmpty(l.get(t, n))) {
const o = l.get(t, n, {});
e.forEach((s) => {
l.set(o, s.key, !!s.hidden);
}), u({
...t,
[n]: o
});
}
}, [n, e, t, u]);
const m = j(() => {
const o = l.get(t, n, {});
return e.map((s) => {
const { hidden: r, ...i } = s;
return {
...i,
hidden: l.get(o, s.key, !!r)
};
});
}, [n, t, e]), f = a(
(o, s) => {
const r = l.get(t, n, {});
l.set(r, o.key, s), u({
...t,
[n]: r
});
},
[n, u, t]
), c = a(() => {
const o = {};
e.forEach((s) => {
l.set(o, s.key, !!s.hidden);
}), u({
...t,
[n]: o
});
}, [n, u, t, e]);
return {
formattedColumns: m,
handleColumnsChange: f,
resetColumns: c
};
}, S = ({
rows: n = [],
defaultSelectedRows: e = []
}) => {
const [t, u] = O([]), m = a(
(s, r) => {
u((i) => {
const d = n.map((h) => h[s]) || [], g = i.filter(
(h) => !d.includes(h)
);
return r ? [...g, ...d] : g;
});
},
[n]
);
C(() => {
e && u(
(s) => l.isEqual(s, e) ? s : e
);
}, [e]);
const f = a(
(s, r) => {
u((i) => r ? [...i, s] : i.filter((d) => d !== s));
},
[]
), c = a(
(s) => t.includes(s),
[t]
), o = a(
(s) => {
const r = n.map((d) => d[s]) || [];
let i = 0;
for (const d of r)
t.includes(d) && i++;
return r.length === i ? !0 : i ? "indeterminate" : !1;
},
[t, n]
);
return {
selectedRows: t,
isRowSelected: c,
isAllRowsSelected: o,
handleSelectAllRows: m,
handleSelectRow: f
};
}, x = ({
sortField: n,
sortOrder: e,
onSortOrderChange: t
}) => {
const [u, m] = O();
C(() => {
n && m(
(c) => (c == null ? void 0 : c.sortField) === e && (c == null ? void 0 : c.sortOrder) === e ? c : {
sortField: n,
sortOrder: e || void 0
}
);
}, [n, e]);
const f = a(
(c) => {
m((o) => {
const r = (o == null ? void 0 : o.sortField) === c ? (o == null ? void 0 : o.sortOrder) === b.ASC ? b.DESC : void 0 : b.ASC, i = {
sortField: r ? c : void 0,
sortOrder: r
};
return t && t(i), i;
});
},
[t]
);
return {
sortObject: u,
handleSort: f
};
};
export {
S as a,
F as b,
x as u
};