import React, { useCallback } from 'react'; import styles from './index.less'; import classnames from 'classnames'; import type { DropResult } from 'react-beautiful-dnd'; import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'; interface IProps
{ itemStyle?: React.CSSProperties | ((dataset: P) => React.CSSProperties); itemClassName?: string | ((item: P) => string); items: P[]; onItemClick?: (item: P) => void; onDrag: (newItems: any[]) => void; children: (item: P, icon: JSX.Element) => JSX.Element; keyField?: string; } function DragList
>({ children, itemStyle, itemClassName, items, onDrag, onItemClick, keyField = 'id', }: IProps
) {
const onDragEnd = useCallback(
(result: DropResult) => {
if (result.destination) {
const newItems = [...items];
const sourceIndex = result.source.index;
const targetIndex = result.destination.index;
const [item] = newItems.splice(sourceIndex, 1);
newItems.splice(targetIndex, 0, item);
onDrag(newItems);
}
},
[items, onDrag],
);
return (