mirror of
https://github.com/grafana/grafana.git
synced 2025-02-13 09:05:45 -06:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import React from 'react';
|
|
import { DragDropContext, Droppable, DropResult } from 'react-beautiful-dnd';
|
|
|
|
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 (
|
|
<div className="gf-form-group">
|
|
<h3 className="page-headering">Dashboards</h3>
|
|
|
|
<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>
|
|
</div>
|
|
);
|
|
};
|