diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/hooks/useMountCommand.ts b/packages/twenty-front/src/modules/command-menu-item/engine-command/hooks/useMountCommand.ts index 08ff584e87..114e89667d 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/hooks/useMountCommand.ts +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/hooks/useMountCommand.ts @@ -20,6 +20,7 @@ type MountCommandParams = { availabilityType?: CommandMenuItemAvailabilityType; availabilityObjectMetadataId?: string | null; payload?: CommandMenuItemPayload | null; + isInSidePanel?: boolean; }; export const useMountCommand = () => { @@ -39,12 +40,14 @@ export const useMountCommand = () => { availabilityType, availabilityObjectMetadataId, payload, + isInSidePanel, }: MountCommandParams) => { const headlessEngineCommandContextApi = buildHeadlessCommandContextApi({ store, contextStoreInstanceId, engineComponentKey, payload, + isInSidePanel, }); const commandState = isDefined(frontComponentId) diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/record/components/DestroyRecordsCommand.tsx b/packages/twenty-front/src/modules/command-menu-item/engine-command/record/components/DestroyRecordsCommand.tsx index 1fde0f7f98..6550557eec 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/record/components/DestroyRecordsCommand.tsx +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/record/components/DestroyRecordsCommand.tsx @@ -4,14 +4,20 @@ import { DEFAULT_QUERY_PAGE_SIZE } from '@/object-record/constants/DefaultQueryP import { useIncrementalDestroyManyRecords } from '@/object-record/hooks/useIncrementalDestroyManyRecords'; import { useRemoveSelectedRecordsFromRecordBoard } from '@/object-record/record-board/hooks/useRemoveSelectedRecordsFromRecordBoard'; import { useResetTableRowSelection } from '@/object-record/record-table/hooks/internal/useResetTableRowSelection'; +import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu'; import { t } from '@lingui/core/macro'; import { AppPath, type RecordGqlOperationFilter } from 'twenty-shared/types'; import { isDefined } from 'twenty-shared/utils'; import { useNavigateApp } from '~/hooks/useNavigateApp'; export const DestroyRecordsCommand = () => { - const { recordIndexId, objectMetadataItem, selectedRecords, graphqlFilter } = - useHeadlessCommandContextApi(); + const { + recordIndexId, + objectMetadataItem, + selectedRecords, + graphqlFilter, + isInSidePanel, + } = useHeadlessCommandContextApi(); if (!isDefined(recordIndexId) || !isDefined(objectMetadataItem)) { throw new Error( @@ -22,6 +28,7 @@ export const DestroyRecordsCommand = () => { const isSingleRecord = selectedRecords.length === 1; const navigateApp = useNavigateApp(); + const { closeSidePanelMenu } = useSidePanelMenu(); const { resetTableRowSelection } = useResetTableRowSelection(recordIndexId); const { removeSelectedRecordsFromRecordBoard } = @@ -55,11 +62,18 @@ export const DestroyRecordsCommand = () => { await incrementalDestroyManyRecords(); - if (isSingleRecord) { - navigateApp(AppPath.RecordIndexPage, { - objectNamePlural: objectMetadataItem.namePlural, - }); + if (!isSingleRecord) { + return; } + + if (isInSidePanel) { + closeSidePanelMenu(); + return; + } + + navigateApp(AppPath.RecordIndexPage, { + objectNamePlural: objectMetadataItem.namePlural, + }); }; const objectLabel = isSingleRecord diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/types/HeadlessCommandContextApi.ts b/packages/twenty-front/src/modules/command-menu-item/engine-command/types/HeadlessCommandContextApi.ts index 68a383f301..e92e510a41 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/types/HeadlessCommandContextApi.ts +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/types/HeadlessCommandContextApi.ts @@ -22,6 +22,7 @@ export type HeadlessEngineCommandContextApi = { selectedRecords: ObjectRecord[]; graphqlFilter: Nullable; payload: Nullable; + isInSidePanel?: boolean; }; export type HeadlessFrontComponentCommandContextApi = diff --git a/packages/twenty-front/src/modules/command-menu-item/engine-command/utils/buildHeadlessCommandContextApi.ts b/packages/twenty-front/src/modules/command-menu-item/engine-command/utils/buildHeadlessCommandContextApi.ts index fa57b59581..6d64a45f49 100644 --- a/packages/twenty-front/src/modules/command-menu-item/engine-command/utils/buildHeadlessCommandContextApi.ts +++ b/packages/twenty-front/src/modules/command-menu-item/engine-command/utils/buildHeadlessCommandContextApi.ts @@ -25,11 +25,13 @@ export const buildHeadlessCommandContextApi = ({ contextStoreInstanceId, engineComponentKey, payload, + isInSidePanel, }: { store: Store; contextStoreInstanceId: string; engineComponentKey: EngineComponentKey; payload?: CommandMenuItemPayload | null; + isInSidePanel?: boolean; }): HeadlessEngineCommandContextApi => { const objectMetadataItemId = store.get( contextStoreCurrentObjectMetadataItemIdComponentState.atomFamily({ @@ -127,5 +129,6 @@ export const buildHeadlessCommandContextApi = ({ selectedRecords, graphqlFilter, payload: payload ?? null, + isInSidePanel: isInSidePanel ?? false, }; }; diff --git a/packages/twenty-front/src/modules/command-menu-item/hooks/useCommandMenuItemClick.ts b/packages/twenty-front/src/modules/command-menu-item/hooks/useCommandMenuItemClick.ts index 7c30fa2b55..ddf8992027 100644 --- a/packages/twenty-front/src/modules/command-menu-item/hooks/useCommandMenuItemClick.ts +++ b/packages/twenty-front/src/modules/command-menu-item/hooks/useCommandMenuItemClick.ts @@ -81,6 +81,7 @@ export const useCommandMenuItemClick = ({ availabilityType: item.availabilityType, availabilityObjectMetadataId: item.availabilityObjectMetadataId, payload: item.payload ?? undefined, + isInSidePanel: commandMenuContextApi.isInSidePanel, }); return;