import React, { useEffect, useContext } from 'react'; import { DraggableSyntheticListeners } from '@dnd-kit/core'; import { I18nContext } from '../../../../contexts'; import dragIcon from '../../../../assets/icons/drag.svg'; import warningIcon from '../../../../assets/icons/warning.svg'; interface Props { value: React.ReactNode; style?: React.CSSProperties; status?: 'is-warning' | 'is-danger'; title?: string; dragOverlay?: boolean; onClick?: () => void; onMouseEnter?: () => void; onMouseLeave?: () => void; dragging?: boolean; sorting?: boolean; transition?: string; transform?: { x: number; y: number; scaleX: number; scaleY: number } | null; fadeIn?: boolean; listeners?: DraggableSyntheticListeners; } const Item = React.memo( React.forwardRef( ( { value, status, title, style, dragOverlay, onClick, onMouseEnter, onMouseLeave, dragging, fadeIn, listeners, sorting, transition, transform, ...props }, ref ) => { const i18n = useContext(I18nContext); useEffect(() => { if (!dragOverlay) { return; } document.body.style.cursor = 'grabbing'; return () => { document.body.style.cursor = ''; }; }, [dragOverlay]); const { x, y, scaleX, scaleY } = transform || { x: 0, y: 0, scaleX: 1, scaleY: 1 }; return (
  • onClick && onClick()} > {status === undefined ? ( value ) : ( Warning icon {status === 'is-warning' ? i18n('noKeyName') : value} {status === 'is-danger' ? i18n('notUniq') : ''} )}
  • ); } ) ); export default Item;