From 4b3a46d95301c7bb389af234007b594be525f64e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Bosi?=
<71827178+bosiraphael@users.noreply.github.com>
Date: Fri, 10 Apr 2026 11:28:27 +0200
Subject: [PATCH] Refactor command menu items deprecated code (#19508)
- Removes the intermediate `CommandMenuItemConfig` /
`CommandConfigContext` / `CommandMenuItemDisplay` abstraction layers,
replacing them with a single `CommandMenuItemRenderer` that renders
directly from the command menu items from the backend
- Eliminates the server-items/ subdirectory by moving its contents
(hooks/, contexts/, states/, display/, edit/) up into the parent
command-menu-item/ module, removing an unnecessary nesting level.
---
.../components/RecordIndexCommandMenu.tsx | 6 +-
.../RecordIndexCommandMenuDropdown.tsx | 21 +-
...RecordPageSidePanelCommandMenuDropdown.tsx | 57 +++--
.../components/RecordShowCommandMenu.tsx | 4 +-
...RecordIndexCommandMenuDropdown.stories.tsx | 38 +--
...owSidePanelCommandMenuDropdown.stories.tsx | 26 +-
.../constants/EmptyCommandMenuContextApi.ts | 30 +++
.../contexts/CommandConfigContext.tsx | 6 -
.../contexts/CommandMenuContext.ts | 10 +-
.../contexts/CommandMenuContextProvider.tsx | 58 ++++-
.../CommandMenuContextProviderContent.tsx | 58 +++++
...ContextProviderWithWorkflowEnrichment.tsx} | 22 +-
.../display/components/Command.tsx | 32 ---
.../components/CommandDropdownItem.tsx | 58 -----
.../display/components/CommandLink.tsx | 21 --
.../display/components/CommandListItem.tsx | 61 -----
.../components/CommandMenuItemButton.tsx | 23 --
.../components/CommandMenuItemComponent.tsx | 14 -
.../components/CommandMenuItemDisplay.tsx | 89 -------
.../components/CommandMenuItemRenderer.tsx | 154 +++++++++++
.../display/components/CommandModal.tsx | 79 ------
.../FrontComponentCommandMenuItem.tsx | 69 -----
.../components/HeadlessCommandMenuItem.tsx | 75 ------
.../PinnedCommandMenuItemButtons.tsx | 49 ++--
...nnedCommandMenuItemsInlineMeasurements.tsx | 68 +++++
.../SidePanelCommandMenuItemDisplayPage.tsx | 121 ++++-----
.../CommandMenuItemButton.stories.tsx | 65 -----
.../CommandMenuItemComponent.stories.tsx | 67 -----
.../CommandMenuItemDisplay.stories.tsx | 146 -----------
.../CommandMenuItemDropdownItem.stories.tsx | 75 ------
.../CommandMenuItemListItem.stories.tsx | 75 ------
.../constants/PinnedCommandMenuItemsGap.ts | 0
.../usePinnedCommandMenuItemsInlineLayout.ts | 42 +--
.../commandMenuPinnedInlineLayoutState.ts | 2 +-
.../types/CommandMenuPinnedInlineLayout.ts | 0
...mandMenuItemCountForContainerWidth.test.ts | 2 +-
...leCommandMenuItemCountForContainerWidth.ts | 0
.../utils/interpolateCommandMenuItemFields.ts | 32 +++
.../components/CommandMenuItemEditButton.tsx | 0
...andMenuItemEditRecordSelectionDropdown.tsx | 2 +-
.../CommandMenuItemOptionsDropdown.tsx | 2 +-
.../PinnedCommandMenuItemButtonsEditMode.tsx | 102 +++-----
.../SidePanelCommandMenuItemEditPage.tsx | 40 ++-
.../useReorderCommandMenuItemsInDraft.ts | 6 +-
.../hooks/useResetCommandMenuItemsDraft.ts | 4 +-
.../hooks/useSaveCommandMenuItemsDraft.ts | 6 +-
.../hooks/useSelectFirstRecordForEditMode.ts | 2 +-
.../hooks/useUpdateCommandMenuItemInDraft.ts | 4 +-
.../edit/states/commandMenuItemsDraftState.ts | 0
.../types/CommandMenuItemEditableFields.ts | 0
.../computeInsertPositionFromBounds.test.ts | 2 +-
.../getPositionBoundsAtInsertionPoint.test.ts | 2 +-
.../utils/computeInsertPositionFromBounds.ts | 0
.../getPositionBoundsAtInsertionPoint.ts | 0
.../edit/utils/getRecordIndexId.ts | 0
.../mutations/updateCommandMenuItem.ts | 0
.../__tests__/useCloseCommandMenu.test.tsx | 27 +-
...lockedByGlobalLayoutCustomization.test.tsx | 87 -------
.../hooks/useCloseCommandMenu.ts | 13 +-
.../hooks/useCommandMenuContextApi.ts | 0
.../hooks/useCommandMenuItemClick.ts | 119 +++++++++
.../hooks/useCommandMenuItemsDraftState.ts | 4 +-
...mmandBlockedByGlobalLayoutCustomization.ts | 17 --
.../hooks/useWorkflowsWithCurrentVersions.ts | 0
.../mock/command-menu-items.mock.tsx | 175 ++++++-------
.../CommandMenuContextProviderServerItems.tsx | 68 -----
...dMenuContextProviderServerItemsContent.tsx | 40 ---
.../useCommandMenuItemsFromBackend.test.tsx | 154 -----------
.../hooks/useCommandMenuItemsFromBackend.tsx | 242 ------------------
...nnedCommandMenuItemsInlineMeasurements.tsx | 54 ----
.../states/commandMenuItemsSelector.ts | 0
.../types/CommandMenuItemConfig.ts | 31 ---
.../types/CommandMenuItemScope.ts | 6 -
.../types/CommandMenuItemType.ts | 7 -
...andMenuDropdownIdFromCommandMenuId.test.ts | 2 +-
.../getCommandMenuIdFromRecordIndexId.test.ts | 2 +-
...andMenuDropdownIdFromCommandMenuId.test.ts | 2 +-
...oesCommandMenuItemMatchObjectMetadataId.ts | 0
.../utils/groupCommandMenuItems.ts | 18 ++
.../src/modules/command-menu/types/Command.ts | 26 --
.../hooks/useEnterLayoutCustomizationMode.ts | 4 +-
.../hooks/useExitLayoutCustomizationMode.ts | 2 +-
.../hooks/useIsLayoutCustomizationDirty.ts | 2 +-
.../hooks/useSaveLayoutCustomization.ts | 4 +-
.../SidePanelEditFolderPickerSubPage.tsx | 1 -
.../components/SidePanelEditLinkItemView.tsx | 2 +-
.../SidePanelEditObjectViewBase.tsx | 2 +-
.../SidePanelNavigationMenuItemEditPage.tsx | 2 -
.../SidePanelNewSidebarItemMainMenu.tsx | 2 +-
.../SidePanelNewSidebarItemRecordSubPage.tsx | 1 -
...lNewSidebarItemViewObjectPickerSubView.tsx | 1 -
...dePanelNewSidebarItemViewPickerSubView.tsx | 1 -
...dePanelNewSidebarItemViewSystemSubView.tsx | 1 -
.../SidePanelObjectPickerSubView.tsx | 2 -
.../SidePanelSystemObjectPickerSubView.tsx | 2 -
.../components/RecordIndexPageHeader.tsx | 6 +-
.../PageLayoutRecordPageRenderer.tsx | 42 +--
...UpdateMultipleRecordsContainer.stories.tsx | 3 +-
.../components/EmailThreadComposer.tsx | 22 +-
.../side-panel/components/SidePanelList.tsx | 16 +-
.../components/SidePanelToggleButton.tsx} | 2 +-
.../constants/SidePanelPagesConfig.tsx | 4 +-
.../page-layout/components/ChartSettings.tsx | 2 +-
...nelPageLayoutDashboardWidgetTypeSelect.tsx | 2 +-
...elPageLayoutRecordPageWidgetTypeSelect.tsx | 2 +-
.../SidePanelPageLayoutTabSettingsContent.tsx | 2 +-
.../SidePanelDashboardIframeSettings.tsx | 2 +-
.../SidePanelDashboardRecordTableSettings.tsx | 5 +-
.../SidePanelRecordPageFieldSettings.tsx | 2 +-
.../SidePanelRecordPageFieldsSettings.tsx | 2 +-
.../root/components/SidePanelRootPage.tsx | 137 +++++-----
...eFilterActionsWithSidePanelSearch.test.tsx | 102 --------
...mmandMenuItemsWithSidePanelSearch.test.tsx | 142 ++++++++++
.../useFilterActionsWithSidePanelSearch.ts | 44 ----
...lterCommandMenuItemsWithSidePanelSearch.ts | 63 +++++
.../pages/root/hooks/useSidePanelActions.tsx | 84 ------
.../root/hooks/useSidePanelMatchingActions.ts | 81 ------
.../components/SidePanelSearchRecordsPage.tsx | 80 +++++-
.../hooks/useSidePanelSearchRecords.tsx | 124 +++------
.../SidePanelCommandMenuItemGroupConfig.ts | 6 -
.../sidePanelWidgetFooterActionsState.ts | 9 -
...ePanelWidgetFooterCommandMenuItemsState.ts | 9 +
...n.ts => SidePanelFooterCommandMenuItem.ts} | 4 +-
.../components/WorkflowDiagramCanvasBase.tsx | 11 +-
.../WorkflowRunVisualizerEffect.tsx | 3 +-
.../hooks/useStartNodeCreation.ts | 5 +-
.../WorkflowDiagramEmptyTriggerEditable.tsx | 5 +-
.../WorkflowDiagramEmptyTriggerReadonly.tsx | 5 +-
.../WorkflowDiagramStepNodeEditable.tsx | 5 +-
.../WorkflowDiagramStepNodeReadonly.tsx | 5 +-
.../components/WorkflowRunDiagramStepNode.tsx | 5 +-
.../pages/object-record/RecordShowPage.tsx | 6 +-
132 files changed, 1376 insertions(+), 2723 deletions(-)
create mode 100644 packages/twenty-front/src/modules/command-menu-item/constants/EmptyCommandMenuContextApi.ts
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/contexts/CommandConfigContext.tsx
create mode 100644 packages/twenty-front/src/modules/command-menu-item/contexts/CommandMenuContextProviderContent.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common/contexts/CommandMenuContextProviderServerItemsWithWorkflowEnrichment.tsx => contexts/CommandMenuContextProviderWithWorkflowEnrichment.tsx} (71%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/Command.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandDropdownItem.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandLink.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandListItem.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandMenuItemButton.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandMenuItemComponent.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandMenuItemDisplay.tsx
create mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandMenuItemRenderer.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/CommandModal.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/FrontComponentCommandMenuItem.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/HeadlessCommandMenuItem.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/components/PinnedCommandMenuItemButtons.tsx (61%)
create mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/PinnedCommandMenuItemsInlineMeasurements.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/components/SidePanelCommandMenuItemDisplayPage.tsx (54%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/__stories__/CommandMenuItemButton.stories.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/__stories__/CommandMenuItemComponent.stories.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/__stories__/CommandMenuItemDisplay.stories.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/__stories__/CommandMenuItemDropdownItem.stories.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/display/components/__stories__/CommandMenuItemListItem.stories.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/constants/PinnedCommandMenuItemsGap.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/hooks/usePinnedCommandMenuItemsInlineLayout.ts (70%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/states/commandMenuPinnedInlineLayoutState.ts (85%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/types/CommandMenuPinnedInlineLayout.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/utils/__tests__/getVisibleCommandMenuItemCountForContainerWidth.test.ts (93%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/display/utils/getVisibleCommandMenuItemCountForContainerWidth.ts (100%)
create mode 100644 packages/twenty-front/src/modules/command-menu-item/display/utils/interpolateCommandMenuItemFields.ts
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/components/CommandMenuItemEditButton.tsx (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/components/CommandMenuItemEditRecordSelectionDropdown.tsx (98%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/components/CommandMenuItemOptionsDropdown.tsx (98%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/components/PinnedCommandMenuItemButtonsEditMode.tsx (57%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/components/SidePanelCommandMenuItemEditPage.tsx (90%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/hooks/useReorderCommandMenuItemsInDraft.ts (93%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/hooks/useResetCommandMenuItemsDraft.ts (77%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/hooks/useSaveCommandMenuItemsDraft.ts (85%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/hooks/useSelectFirstRecordForEditMode.ts (95%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/hooks/useUpdateCommandMenuItemInDraft.ts (87%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/states/commandMenuItemsDraftState.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/types/CommandMenuItemEditableFields.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/utils/__tests__/computeInsertPositionFromBounds.test.ts (95%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/utils/__tests__/getPositionBoundsAtInsertionPoint.test.ts (97%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/utils/computeInsertPositionFromBounds.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/utils/getPositionBoundsAtInsertionPoint.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items => }/edit/utils/getRecordIndexId.ts (100%)
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/graphql/mutations/updateCommandMenuItem.ts (100%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/hooks/__tests__/useIsCommandBlockedByGlobalLayoutCustomization.test.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/hooks/useCommandMenuContextApi.ts (100%)
create mode 100644 packages/twenty-front/src/modules/command-menu-item/hooks/useCommandMenuItemClick.ts
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/hooks/useCommandMenuItemsDraftState.ts (84%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/hooks/useIsCommandBlockedByGlobalLayoutCustomization.ts
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/hooks/useWorkflowsWithCurrentVersions.ts (100%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/server-items/common/contexts/CommandMenuContextProviderServerItems.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/server-items/common/contexts/CommandMenuContextProviderServerItemsContent.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/server-items/common/hooks/__tests__/useCommandMenuItemsFromBackend.test.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/server-items/common/hooks/useCommandMenuItemsFromBackend.tsx
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/server-items/display/components/PinnedCommandMenuItemsInlineMeasurements.tsx
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/states/commandMenuItemsSelector.ts (100%)
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/types/CommandMenuItemConfig.ts
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/types/CommandMenuItemScope.ts
delete mode 100644 packages/twenty-front/src/modules/command-menu-item/types/CommandMenuItemType.ts
rename packages/twenty-front/src/modules/command-menu-item/{server-items/common => }/utils/doesCommandMenuItemMatchObjectMetadataId.ts (100%)
create mode 100644 packages/twenty-front/src/modules/command-menu-item/utils/groupCommandMenuItems.ts
delete mode 100644 packages/twenty-front/src/modules/command-menu/types/Command.ts
rename packages/twenty-front/src/modules/{command-menu-item/server-items/display/components/CommandMenuItemMoreActionsButton.tsx => side-panel/components/SidePanelToggleButton.tsx} (97%)
delete mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/__tests__/useFilterActionsWithSidePanelSearch.test.tsx
create mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/__tests__/useFilterCommandMenuItemsWithSidePanelSearch.test.tsx
delete mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/useFilterActionsWithSidePanelSearch.ts
create mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/useFilterCommandMenuItemsWithSidePanelSearch.ts
delete mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/useSidePanelActions.tsx
delete mode 100644 packages/twenty-front/src/modules/side-panel/pages/root/hooks/useSidePanelMatchingActions.ts
delete mode 100644 packages/twenty-front/src/modules/side-panel/types/SidePanelCommandMenuItemGroupConfig.ts
delete mode 100644 packages/twenty-front/src/modules/ui/layout/side-panel/states/sidePanelWidgetFooterActionsState.ts
create mode 100644 packages/twenty-front/src/modules/ui/layout/side-panel/states/sidePanelWidgetFooterCommandMenuItemsState.ts
rename packages/twenty-front/src/modules/ui/layout/side-panel/types/{SidePanelFooterAction.ts => SidePanelFooterCommandMenuItem.ts} (77%)
diff --git a/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenu.tsx b/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenu.tsx
index 51f6007335..7b407eaee6 100644
--- a/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenu.tsx
+++ b/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenu.tsx
@@ -1,8 +1,8 @@
-import { PinnedCommandMenuItemButtons } from '@/command-menu-item/server-items/display/components/PinnedCommandMenuItemButtons';
+import { PinnedCommandMenuItemButtons } from '@/command-menu-item/display/components/PinnedCommandMenuItemButtons';
import { RecordIndexCommandMenuDropdown } from '@/command-menu-item/components/RecordIndexCommandMenuDropdown';
import { CommandMenuContextProvider } from '@/command-menu-item/contexts/CommandMenuContextProvider';
-import { CommandMenuItemEditButton } from '@/command-menu-item/server-items/edit/components/CommandMenuItemEditButton';
-import { PinnedCommandMenuItemButtonsEditMode } from '@/command-menu-item/server-items/edit/components/PinnedCommandMenuItemButtonsEditMode';
+import { CommandMenuItemEditButton } from '@/command-menu-item/edit/components/CommandMenuItemEditButton';
+import { PinnedCommandMenuItemButtonsEditMode } from '@/command-menu-item/edit/components/PinnedCommandMenuItemButtonsEditMode';
import { MAIN_CONTEXT_STORE_INSTANCE_ID } from '@/context-store/constants/MainContextStoreInstanceId';
import { contextStoreCurrentObjectMetadataItemIdComponentState } from '@/context-store/states/contextStoreCurrentObjectMetadataItemIdComponentState';
import { isLayoutCustomizationModeEnabledState } from '@/layout-customization/states/isLayoutCustomizationModeEnabledState';
diff --git a/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenuDropdown.tsx b/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenuDropdown.tsx
index c7453f32e2..7887b0ac86 100644
--- a/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenuDropdown.tsx
+++ b/packages/twenty-front/src/modules/command-menu-item/components/RecordIndexCommandMenuDropdown.tsx
@@ -1,11 +1,9 @@
-import { CommandMenuItemComponent } from '@/command-menu-item/display/components/CommandMenuItemComponent';
-import { CommandMenuItemScope } from '@/command-menu-item/types/CommandMenuItemScope';
-import { CommandMenuItemType } from '@/command-menu-item/types/CommandMenuItemType';
import { COMMAND_MENU_DROPDOWN_CLICK_OUTSIDE_ID } from '@/command-menu-item/constants/CommandMenuDropdownClickOutsideId';
import { CommandMenuContext } from '@/command-menu-item/contexts/CommandMenuContext';
-import { CommandMenuComponentInstanceContext } from '@/command-menu/states/contexts/CommandMenuComponentInstanceContext';
+import { CommandMenuItemRenderer } from '@/command-menu-item/display/components/CommandMenuItemRenderer';
import { recordIndexCommandMenuDropdownPositionComponentState } from '@/command-menu-item/states/recordIndexCommandMenuDropdownPositionComponentState';
import { getCommandMenuDropdownIdFromCommandMenuId } from '@/command-menu-item/utils/getCommandMenuDropdownIdFromCommandMenuId';
+import { CommandMenuComponentInstanceContext } from '@/command-menu/states/contexts/CommandMenuComponentInstanceContext';
import { useSidePanelMenu } from '@/side-panel/hooks/useSidePanelMenu';
import { Dropdown } from '@/ui/layout/dropdown/components/Dropdown';
import { DropdownContent } from '@/ui/layout/dropdown/components/DropdownContent';
@@ -21,6 +19,7 @@ import { useLingui } from '@lingui/react/macro';
import { useContext } from 'react';
import { IconLayoutSidebarRightExpand } from 'twenty-ui/display';
import { MenuItem } from 'twenty-ui/navigation';
+import { CommandMenuItemAvailabilityType } from '~/generated-metadata/graphql';
const StyledDropdownMenuContainer = styled.div`
align-items: center;
@@ -36,10 +35,10 @@ export const RecordIndexCommandMenuDropdown = () => {
const { t } = useLingui();
const { commandMenuItems } = useContext(CommandMenuContext);
- const recordIndexActions = commandMenuItems.filter(
- (action) =>
- action.type === CommandMenuItemType.Standard &&
- action.scope === CommandMenuItemScope.RecordSelection,
+ const recordIndexCommandMenuItems = commandMenuItems.filter(
+ (item) =>
+ item.availabilityType ===
+ CommandMenuItemAvailabilityType.RECORD_SELECTION,
);
const commandMenuId = useAvailableComponentInstanceIdOrThrow(
@@ -57,7 +56,7 @@ export const RecordIndexCommandMenuDropdown = () => {
const { openSidePanelMenu } = useSidePanelMenu();
const selectedItemIdArray = [
- ...recordIndexActions.map((action) => action.key),
+ ...recordIndexCommandMenuItems.map((item) => item.id),
'more-actions',
];
@@ -87,8 +86,8 @@ export const RecordIndexCommandMenuDropdown = () => {
selectableItemIdArray={selectedItemIdArray}
selectableListInstanceId={dropdownId}
>
- {recordIndexActions.map((action) => (
-
+ {recordIndexCommandMenuItems.map((item) => (
+
))}
{
const { commandMenuItems } = useContext(CommandMenuContext);
@@ -24,21 +24,30 @@ export const RecordPageSidePanelCommandMenuDropdown = () => {
const { closeDropdown } = useCloseDropdown();
- const sidePanelWidgetFooterActions = useAtomStateValue(
- sidePanelWidgetFooterActionsState,
+ const sidePanelWidgetFooterCommandMenuItems = useAtomStateValue(
+ sidePanelWidgetFooterCommandMenuItemsState,
);
- const dropdownWidgetActions = sidePanelWidgetFooterActions.filter(
- (action) => action.isPinned === false,
- );
+ const dropdownWidgetCommandMenuItems =
+ sidePanelWidgetFooterCommandMenuItems.filter(
+ (commandMenuItem) => commandMenuItem.isPinned === false,
+ );
- const recordSelectionActions = commandMenuItems.filter(
- (action) => action.scope === CommandMenuItemScope.RecordSelection,
+ const recordSelectionCommandMenuItems = useMemo(
+ () =>
+ commandMenuItems.filter(
+ (item) =>
+ item.availabilityType ===
+ CommandMenuItemAvailabilityType.RECORD_SELECTION,
+ ),
+ [commandMenuItems],
);
const selectableItemIdArray = [
- ...dropdownWidgetActions.map((action) => action.key),
- ...recordSelectionActions.map((action) => action.key),
+ ...dropdownWidgetCommandMenuItems.map(
+ (commandMenuItem) => commandMenuItem.id,
+ ),
+ ...recordSelectionCommandMenuItems.map((item) => item.id),
];
return (
@@ -47,21 +56,23 @@ export const RecordPageSidePanelCommandMenuDropdown = () => {
selectableListId={commandMenuId}
selectableItemIdArray={selectableItemIdArray}
>
- {dropdownWidgetActions.map((action) => (
+ {dropdownWidgetCommandMenuItems.map((commandMenuItem) => (