Files
twenty/front/src/modules/ui/draggable-list/components/DraggableList.tsx
Gaurav acde034a1d Replaced eslint rule twenty/no-spread-props to react/jsx-props-no-spreading (#1976)
* Replaced eslint rule twenty/no-spread-props to react/jsx-props-no-spreading

* Disable props spread on external libraries

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
2023-10-13 16:52:19 +02:00

43 lines
1.0 KiB
TypeScript

import { useState } from 'react';
import styled from '@emotion/styled';
import {
DragDropContext,
Droppable,
OnDragEndResponder,
} from '@hello-pangea/dnd';
import { v4 } from 'uuid';
type DraggableListProps = {
draggableItems: React.ReactNode;
onDragEnd: OnDragEndResponder;
};
const StyledDragDropItemsWrapper = styled.div`
width: 100%;
`;
export const DraggableList = ({
draggableItems,
onDragEnd,
}: DraggableListProps) => {
const [v4Persistable] = useState(v4());
return (
<DragDropContext onDragEnd={onDragEnd}>
<StyledDragDropItemsWrapper>
<Droppable droppableId={v4Persistable}>
{(provided) => (
<div
ref={provided.innerRef}
// eslint-disable-next-line react/jsx-props-no-spreading
{...provided.droppableProps}
>
{draggableItems}
{provided.placeholder}
</div>
)}
</Droppable>
</StyledDragDropItemsWrapper>
</DragDropContext>
);
};