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