import React, { FC, ReactNode } from "react"; import { IconCheck, IconEdit, IconTrash } from "@tabler/icons-react"; import { Divider, Flex, Group, Stack, TextInput } from "@mantine/core"; import { useSelectEditorContext } from "@/app/attributes/drawers/AttrSelectEditorDrawer/contexts/SelectEditorContext"; import ActionIconWithTip from "@/components/ui/ActionIconWithTip/ActionIconWithTip"; import { AttrOptionSchema } from "@/lib/client"; type Props = { option: AttrOptionSchema; renderDraggable?: (item: AttrOptionSchema) => ReactNode; }; const OptionTableRow: FC = ({ option, renderDraggable }) => { const { optionsActions: { onStartEditing, onFinishEditing, onDelete, editingOptionsData, setEditingOptionsData, }, } = useSelectEditorContext(); const onChange = ( e: React.ChangeEvent, optionId: number ) => { setEditingOptionsData(prev => { prev.set(optionId, e.currentTarget.value); return new Map(prev); }); }; return ( {renderDraggable && renderDraggable(option)} {editingOptionsData.has(option.id) ? ( onChange(e, option.id)} /> ) : ( option.name )} {editingOptionsData.has(option.id) ? ( onFinishEditing(option)} tipLabel={"Сохранить"}> ) : ( onStartEditing(option)} tipLabel={"Редактировать"}> )} onDelete(option)} tipLabel={"Удалить"}> ); }; export default OptionTableRow;