From ebe73614d8288f34a5beec122c78c38361aae13b Mon Sep 17 00:00:00 2001 From: tlartem Date: Mon, 21 Jul 2025 05:18:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B1=D0=B0=D0=B3=20=D0=B8=D0=B7=D1=87=D0=B5?= =?UTF-8?q?=D0=B7=D0=B0=D1=8E=D1=89=D0=B8=D0=B5=20=D1=8D=D0=BB=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateManager/ElementConstructor.tsx | 6 +++++- src/pages/ElementsCreation/Page.tsx | 12 ++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) 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(), }