diff --git a/src/components/TemplateManager/ElementConstructor.tsx b/src/components/TemplateManager/ElementConstructor.tsx index f52610a..a1a65a8 100644 --- a/src/components/TemplateManager/ElementConstructor.tsx +++ b/src/components/TemplateManager/ElementConstructor.tsx @@ -698,7 +698,11 @@ const CanvasSettings: React.FC = ({ interface ElementConstructorProps { template: Template onElementAdd: (element: TemplateElement) => void - onElementUpdate: (elementId: string, element: TemplateElement) => void + // Принимаем частичное обновление элемента, чтобы корректно обновлять только изменённые поля + onElementUpdate: ( + elementId: string, + updates: Partial + ) => void onElementDelete: (elementId: string) => void disabled?: boolean } diff --git a/src/pages/ElementsCreation/Page.tsx b/src/pages/ElementsCreation/Page.tsx index c245cbc..98ab97c 100644 --- a/src/pages/ElementsCreation/Page.tsx +++ b/src/pages/ElementsCreation/Page.tsx @@ -59,7 +59,7 @@ export const ElementsCreation: FC = () => { const handleElementUpdate = async ( elementId: string, - updatedElement: TemplateElement + updates: Partial ) => { if (!selectedTemplate) return @@ -68,7 +68,15 @@ export const ElementsCreation: FC = () => { const updatedTemplate = { ...selectedTemplate, elements: selectedTemplate.elements.map(el => - el.id === elementId ? updatedElement : el + el.id === elementId + ? { + ...el, + // Обновляем только определённые ключи, чтобы не затирать существующие значения `undefined` + ...Object.fromEntries( + Object.entries(updates).filter(([, v]) => v !== undefined) + ), + } + : el ), updatedAt: new Date(), }