fix: Edit Layout keeping the command menu open (#21161)

## Summary
- Fixes https://github.com/twentyhq/core-team-issues/issues/2460
- Engine/headless commands always skipped closing the menu
(`closeSidePanelOnCommandMenuListExecution: false`), even when the item
was not pinned. Edit Layout is `isPinned: false`, so the menu should
close like other list-only actions.

## Approach
- Option 1 (I chose this one): Derive close behavior from
`item.isPinned` -> pinned commands keep the menu open; non-pinned ones
close it.
- Option 2 (not chosen): remove the engine command override totally and
use the default close behavior for all commands.

Option 1 is more targeted: it fixed Edit Layout without changing pinned
commands (e.g. Export progress in the menu list). Option 2 is simpler
but widens the blast radius to every engine command clicked from the
side panel list.

## Screenshots
### Before

https://github.com/user-attachments/assets/70b8dc75-af00-4917-81a1-646381f571d5

### After

https://github.com/user-attachments/assets/f733d696-9330-4e6c-993b-8a8133c53e0d

---------

Signed-off-by: Parship Chowdhury <parshipchowdhury@gmail.com>
Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
Parship Chowdhury
2026-06-19 16:51:50 +05:30
committed by GitHub
parent 1ec59beb8b
commit 4de9f45015
3 changed files with 49 additions and 20 deletions
@@ -1,13 +1,17 @@
import { useResetLocationHash } from 'twenty-ui/utilities';
import { HeadlessEngineCommandWrapperEffect } from '@/command-menu-item/engine-command/components/HeadlessEngineCommandWrapperEffect';
import { useEnterLayoutCustomizationMode } from '@/layout-customization/hooks/useEnterLayoutCustomizationMode';
import { useResetLocationHash } from 'twenty-ui/utilities';
import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu';
export const EditRecordPageLayoutSingleRecordCommand = () => {
const { enterLayoutCustomizationMode } = useEnterLayoutCustomizationMode();
const { closeSidePanelMenu } = useSidePanelMenu();
const { resetLocationHash } = useResetLocationHash();
const handleExecute = () => {
const handleExecute = async () => {
await closeSidePanelMenu();
enterLayoutCustomizationMode();
resetLocationHash();
};