diff --git a/src/lib/admin/builder/context.tsx b/src/lib/admin/builder/context.tsx index 188197d..7b7c330 100644 --- a/src/lib/admin/builder/context.tsx +++ b/src/lib/admin/builder/context.tsx @@ -301,11 +301,11 @@ function builderReducer(state: BuilderState, action: BuilderAction): BuilderStat } case "update-screen": { const { screenId, screen } = action.payload; - return withDirty(state, { - ...state, - screens: state.screens.map((current) => - current.id === screenId - ? (() => { + let nextSelectedScreenId = state.selectedScreenId; + + const nextScreens = state.screens.map((current) => + current.id === screenId + ? (() => { const nextScreen = { ...current, ...screen, @@ -336,10 +336,19 @@ function builderReducer(state: BuilderState, action: BuilderAction): BuilderStat } } + if (state.selectedScreenId === current.id && nextScreen.id !== current.id) { + nextSelectedScreenId = nextScreen.id; + } + return nextScreen; })() : current - ), + ); + + return withDirty(state, { + ...state, + screens: nextScreens, + selectedScreenId: nextSelectedScreenId, }); } case "reposition-screen": {