diff --git a/packages/twenty-front/src/modules/action-menu/actions/components/Action.tsx b/packages/twenty-front/src/modules/action-menu/actions/components/Action.tsx index 6129626e2..7be79eb22 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/components/Action.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/components/Action.tsx @@ -5,14 +5,19 @@ import { useContext } from 'react'; export const Action = ({ onClick, - preventCommandMenuClosing, + closeSidePanelOnShowPageOptionsActionExecution = false, + closeSidePanelOnCommandMenuListActionExecution = true, }: { onClick: () => void; - preventCommandMenuClosing?: boolean; + closeSidePanelOnShowPageOptionsActionExecution?: boolean; + closeSidePanelOnCommandMenuListActionExecution?: boolean; }) => { const actionConfig = useContext(ActionConfigContext); - const { closeActionMenu } = useCloseActionMenu(preventCommandMenuClosing); + const { closeActionMenu } = useCloseActionMenu({ + closeSidePanelOnShowPageOptionsActionExecution, + closeSidePanelOnCommandMenuListActionExecution, + }); if (!actionConfig) { return null; diff --git a/packages/twenty-front/src/modules/action-menu/actions/components/ActionModal.tsx b/packages/twenty-front/src/modules/action-menu/actions/components/ActionModal.tsx index 650e2ea73..23e21b191 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/components/ActionModal.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/components/ActionModal.tsx @@ -18,6 +18,8 @@ export type ActionModalProps = { confirmButtonText?: string; confirmButtonAccent?: ButtonAccent; isLoading?: boolean; + closeSidePanelOnShowPageOptionsActionExecution?: boolean; + closeSidePanelOnCommandMenuListActionExecution?: boolean; }; export const ActionModal = ({ @@ -27,10 +29,15 @@ export const ActionModal = ({ confirmButtonText = 'Confirm', confirmButtonAccent = 'danger', isLoading = false, + closeSidePanelOnShowPageOptionsActionExecution, + closeSidePanelOnCommandMenuListActionExecution, }: ActionModalProps) => { const { openModal } = useModal(); - const { closeActionMenu } = useCloseActionMenu(); + const { closeActionMenu } = useCloseActionMenu({ + closeSidePanelOnShowPageOptionsActionExecution, + closeSidePanelOnCommandMenuListActionExecution, + }); const handleConfirmClick = () => { onConfirmClick(); diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/no-selection/components/CreateNewTableRecordNoSelectionRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/no-selection/components/CreateNewTableRecordNoSelectionRecordAction.tsx index 4cfbba8c2..0c830c581 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/no-selection/components/CreateNewTableRecordNoSelectionRecordAction.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/no-selection/components/CreateNewTableRecordNoSelectionRecordAction.tsx @@ -10,6 +10,9 @@ export const CreateNewTableRecordNoSelectionRecordAction = () => { }); return ( - createNewIndexRecord()} preventCommandMenuClosing /> + createNewIndexRecord()} + closeSidePanelOnCommandMenuListActionExecution={false} + /> ); }; diff --git a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/components/DestroySingleRecordAction.tsx b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/components/DestroySingleRecordAction.tsx index 7410843da..e7191a169 100644 --- a/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/components/DestroySingleRecordAction.tsx +++ b/packages/twenty-front/src/modules/action-menu/actions/record-actions/single-record/components/DestroySingleRecordAction.tsx @@ -36,6 +36,7 @@ export const DestroySingleRecordAction = () => { subtitle="Are you sure you want to destroy this record? It cannot be recovered anymore." onConfirmClick={handleDeleteClick} confirmButtonText="Permanently Destroy Record" + closeSidePanelOnShowPageOptionsActionExecution={true} /> ); }; diff --git a/packages/twenty-front/src/modules/action-menu/hooks/useCloseActionMenu.ts b/packages/twenty-front/src/modules/action-menu/hooks/useCloseActionMenu.ts index ab1756968..d3f8edd2b 100644 --- a/packages/twenty-front/src/modules/action-menu/hooks/useCloseActionMenu.ts +++ b/packages/twenty-front/src/modules/action-menu/hooks/useCloseActionMenu.ts @@ -8,7 +8,13 @@ import { useAvailableComponentInstanceIdOrThrow } from '@/ui/utilities/state/com import { useContext } from 'react'; import { isDefined } from 'twenty-shared/utils'; -export const useCloseActionMenu = (preventCommandMenuClosing?: boolean) => { +export const useCloseActionMenu = ({ + closeSidePanelOnShowPageOptionsActionExecution = false, + closeSidePanelOnCommandMenuListActionExecution = true, +}: { + closeSidePanelOnShowPageOptionsActionExecution?: boolean; + closeSidePanelOnCommandMenuListActionExecution?: boolean; +} = {}) => { const { actionMenuType, isInRightDrawer } = useContext(ActionMenuContext); const { closeCommandMenu } = useCommandMenu(); @@ -25,7 +31,10 @@ export const useCloseActionMenu = (preventCommandMenuClosing?: boolean) => { const closeActionMenu = () => { if (actionMenuType === 'command-menu') { - if (isDefined(preventCommandMenuClosing) && preventCommandMenuClosing) { + if ( + isDefined(closeSidePanelOnCommandMenuListActionExecution) && + !closeSidePanelOnCommandMenuListActionExecution + ) { return; } closeCommandMenu(); @@ -37,6 +46,14 @@ export const useCloseActionMenu = (preventCommandMenuClosing?: boolean) => { ) { closeDropdown(dropdownId); } + + if ( + actionMenuType === 'command-menu-show-page-action-menu-dropdown' && + isDefined(closeSidePanelOnShowPageOptionsActionExecution) && + closeSidePanelOnShowPageOptionsActionExecution + ) { + closeCommandMenu(); + } }; return { closeActionMenu }; diff --git a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuSearchRecords.tsx b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuSearchRecords.tsx index 799bdad98..4916a3163 100644 --- a/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuSearchRecords.tsx +++ b/packages/twenty-front/src/modules/command-menu/hooks/useCommandMenuSearchRecords.tsx @@ -76,7 +76,7 @@ export const useCommandMenuSearchRecords = () => { objectNameSingular: CoreObjectNameSingular.Note, }); }} - preventCommandMenuClosing + closeSidePanelOnCommandMenuListActionExecution={false} /> ), };