ayongui
Version:
46 lines (45 loc) • 1.15 kB
JavaScript
import { useState as s } from "react";
const g = ({
_tableColumns: T,
data: f,
draggable: n,
onDragAfter: D = () => {
}
}) => {
const [r, u] = s(T), [o, d] = s(f), [h, i] = s(null), [v, p] = s(null);
return {
tableColumns: r,
setTableColumns: u,
tableData: o,
setTableData: d,
activeTR: h,
activeTD: v,
handleDragStart: (t, a) => {
n && (p(r[a].dataIndex), t.dataTransfer.setData("sourceIndex", String(a)));
},
handleDragStartData: (t, a) => {
n && (i(a), t.dataTransfer.setData("sourceIndexData", String(a)));
},
handleDragOver: (t) => {
n && t.preventDefault();
},
handleDrop: (t, a) => {
if (!n)
return;
p(null);
const c = parseInt(t.dataTransfer.getData("sourceIndex")), e = [...r], [l] = e.splice(c, 1);
e.splice(a, 0, l), u(e), D(e, o);
},
handleDropData: (t, a) => {
if (!n)
return;
i(null);
const c = parseInt(t.dataTransfer.getData("sourceIndexData")), e = [...o], [l] = e.splice(c, 1);
e.splice(a, 0, l), d(e), D(e, r);
}
};
};
export {
g as default,
g as useDragDrop
};