import { EditOutlined } from '@mui/icons-material'; import DeleteOutline from '@mui/icons-material/DeleteOutline'; import { Box } from '@mui/material'; import { useAtomValue, useSetAtom } from 'jotai'; import { isNil } from 'ramda'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; import { IconButton } from '../../Button'; import { canDeleteSubItemsAtom, itemToDeleteAtom, openFormModalAtom } from '../atoms'; interface Props { row: TData & { internalListingParentId?: number; internalListingParentRow: TData & { id: number }; }; } const labelDelete = 'Delete'; const labelUpdate = 'Update'; const Actions = ({ row }: Props): JSX.Element => { const { t } = useTranslation(); const canDeleteSubItems = useAtomValue(canDeleteSubItemsAtom); const setItemToDelete = useSetAtom(itemToDeleteAtom); const setOpenFormModal = useSetAtom(openFormModalAtom); const askBeforeDelete = (): void => { setItemToDelete({ id: row.id, name: row.name, parent: isNil(row.internalListingParentRow) ? undefined : { id: row.internalListingParentRow.id, name: row.internalListingParentRow.name } }); }; const updateRow = useCallback( () => setOpenFormModal(row.id), [row.id, setOpenFormModal] ); return ( {isNil(row.internalListingParentRow) && ( } onClick={updateRow} size="small" title={t(labelUpdate)} /> )} {(canDeleteSubItems || isNil(row.internalListingParentRow)) && ( } onClick={askBeforeDelete} size="small" title={t(labelDelete)} /> )} ); }; export default Actions;