diff --git a/src/App.tsx b/src/App.tsx index 5f73436..62c11e4 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -324,34 +324,27 @@ export default function App() { // Check if the new state is actually different from the original (not the current) const isActuallyModified = JSON.stringify(updatedRow) !== JSON.stringify(originalData); - setAppState(prev => { - const newData = [...prev.data]; - newData[rowIndex] = updatedRow; - return { ...prev, data: newData, hasUnsavedChanges: true }; - }); - if (isActuallyModified) { - setPendingRows(prev => { - const next = { - ...prev, - [articleNo]: { - rowIndex, - originalData, - newData: updatedRow, - articleName: String(updatedRow[COLUMNS.ARTICLE_NAME] || articleNo), - } - }; - setAppState(app => ({ ...app, hasUnsavedChanges: true })); - return next; + setAppState(prev => { + const newData = [...prev.data]; + newData[rowIndex] = updatedRow; + return { ...prev, data: newData, hasUnsavedChanges: true }; }); + setPendingRows(prev => ({ + ...prev, + [articleNo]: { + rowIndex, + originalData, + newData: updatedRow, + articleName: String(updatedRow[COLUMNS.ARTICLE_NAME] || articleNo), + } + })); setRowStatuses(prev => ({ ...prev, [articleNo]: 'pending' })); } else { - // It was changed back to its original state - remove from pending + // Changed back to original state - remove from pending setPendingRows(prev => { const n = { ...prev }; delete n[articleNo]; - const stillHasChanges = Object.keys(n).length > 0; - setAppState(app => ({ ...app, hasUnsavedChanges: stillHasChanges })); return n; }); setRowStatuses(prev => { @@ -359,6 +352,12 @@ export default function App() { delete n[articleNo]; return n; }); + setAppState(prev => { + const newData = [...prev.data]; + newData[rowIndex] = updatedRow; + const stillHasChanges = Object.keys(pendingRows).filter(k => k !== articleNo).length > 0; + return { ...prev, data: newData, hasUnsavedChanges: stillHasChanges }; + }); } setEditingRowIndex(null); };