koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
52 lines (51 loc) • 1.46 kB
JavaScript
"use client";
import { useCallback as e, useMemo as w } from "react";
/* empty css */
import { set as x } from "../../../internal/utils/set.js";
import { ProcessingModes as D } from "../types.js";
import { useDialogState as j } from "../../Dialog/useDialogState.js";
const P = ({
rowSelection: c,
table: i,
tableData: u,
processingMode: d,
setTableData: l,
onEdit: h,
clearSelection: p
}) => {
const { openDialog: f } = j(
i.options.meta?.deleteModalId
), { openDialog: a } = j(i.options.meta?.editModalId), k = e(() => {
f();
}, [f]), y = e(() => {
a({ selectionAmount: Object.keys(c).length });
}, [c, a]), o = w(
() => Object.keys(c).map((t) => Number(t)),
[c]
), R = e(
(t, s, n, m) => {
const r = [...t];
return s.forEach((O) => {
const q = i.getColumn(n)?.columnDef.meta?.accessorKey;
x(r[O], q, m);
}), r;
},
[i]
), C = e(
(t, s) => {
const n = R(u, o, t, s), m = Object.fromEntries(
o.map((r) => [r, n[r]])
);
d === D.internal && l(n), h(m), p();
},
[p, R, h, d, o, l, u]
), g = e((t, s) => t.filter((n, m) => !s.has(m)), []), E = e(() => {
const t = g(u, new Set(o));
d === D.internal && l(t), h({}), p();
}, [g, u, o, d, l, h, p]);
return { handleDeleteRequest: k, handleDelete: E, handleEdit: C, handleEditRequest: y };
};
export {
P as useEdit
};
//# sourceMappingURL=useEdit.js.map