mirror of
https://github.com/grafana/grafana.git
synced 2025-02-10 23:55:47 -06:00
b321dc7280
* migrate from react-beautiful-dnd to @hello-pangea/dnd * revert comment
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { DragDropContext, Droppable, DropResult } from '@hello-pangea/dnd';
|
|
|
|
import { FieldSet } from '@grafana/ui';
|
|
import { t } from 'app/core/internationalization';
|
|
|
|
import { PlaylistTableRows } from './PlaylistTableRows';
|
|
import { PlaylistItem } from './types';
|
|
|
|
interface Props {
|
|
items: PlaylistItem[];
|
|
deleteItem: (idx: number) => void;
|
|
moveItem: (src: number, dst: number) => void;
|
|
}
|
|
|
|
export const PlaylistTable = ({ items, deleteItem, moveItem }: Props) => {
|
|
const onDragEnd = (d: DropResult) => {
|
|
if (d.destination) {
|
|
moveItem(d.source.index, d.destination?.index);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<FieldSet label={t('playlist-edit.form.table-heading', 'Dashboards')}>
|
|
<DragDropContext onDragEnd={onDragEnd}>
|
|
<Droppable droppableId="playlist-list" direction="vertical">
|
|
{(provided) => {
|
|
return (
|
|
<div ref={provided.innerRef} {...provided.droppableProps}>
|
|
<PlaylistTableRows items={items} onDelete={deleteItem} />
|
|
{provided.placeholder}
|
|
</div>
|
|
);
|
|
}}
|
|
</Droppable>
|
|
</DragDropContext>
|
|
</FieldSet>
|
|
);
|
|
};
|