Files
bflows-bandi-fe/src/pages/BandoFormsEdit/components/BuilderElementItem/index.js
Vitalii Kiiko 7dcf932819 - updated zustand and react libraries;
- added 'put in draft' btn;
2025-04-10 12:36:19 +02:00

50 lines
1.4 KiB
JavaScript

import React, { useRef } from 'react'
import { useDrag } from 'react-dnd'
import { ItemTypes } from '../ItemTypes';
import uniqid from '../../../../helpers/uniqid';
import { storeSet } from '../../../../store';
const BuilderElementItem = ({ dbId, name, label, description = '' }) => {
const ref = useRef(null);
const [{ isDragging }, drag] = useDrag(() => ({
type: ItemTypes.FIELD,
item: () => {
const newId = uniqid();
storeSet('draggingElementId', newId);
return { name, dbId, id: newId, index: -1 }
},
end: (item, monitor) => {
const dropResult = monitor.getDropResult()
if (monitor.didDrop()) {
if (item && dropResult) {
return item;
}
} else {
storeSet('removeElement', item.id);
storeSet('draggingElementId', 0);
}
},
collect: (monitor) => ({
isDragging: monitor.isDragging(),
handlerId: monitor.getHandlerId(),
}),
}))
const opacity = isDragging ? 0.4 : 1
drag(ref);
return (
<div
ref={ref}
title={description}
className="formBuilder__elementItem"
style={{ opacity }}>
{label}
</div>
)
}
export default BuilderElementItem;