diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx index 7d3cc3e5d45..928a2e6237c 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView.tsx @@ -22,6 +22,7 @@ type SidePanelEditLinkItemViewProps = OrganizeActionsProps & { updates: { link?: string; name?: string }, ) => void; onOpenFolderPicker: () => void; + showMoveToFolder?: boolean; }; export const SidePanelEditLinkItemView = ({ @@ -35,13 +36,15 @@ export const SidePanelEditLinkItemView = ({ onRemove, onAddBefore, onAddAfter, + showMoveToFolder = false, }: SidePanelEditLinkItemViewProps) => { const { t } = useLingui(); const [urlEditInput, setUrlEditInput] = useState(''); const [lastAutoSetName, setLastAutoSetName] = useState(null); const defaultLabel = t`Link label`; - const selectableItemIds = getOrganizeActionsSelectableItemIds(true); + const selectableItemIds = + getOrganizeActionsSelectableItemIds(showMoveToFolder); const currentName = selectedItem.name ?? defaultLabel; const currentDomain = selectedItem.link @@ -91,7 +94,7 @@ export const SidePanelEditLinkItemView = ({ onRemove={onRemove} onAddBefore={onAddBefore} onAddAfter={onAddAfter} - showMoveToFolder + showMoveToFolder={showMoveToFolder} onMoveToFolder={onOpenFolderPicker} /> diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx index 7cf06107f23..4ce668ce4e5 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase.tsx @@ -20,6 +20,7 @@ import { type NavigationMenuItem } from '~/generated-metadata/graphql'; type SidePanelEditObjectViewBaseProps = OrganizeActionsProps & { onOpenFolderPicker: () => void; + showMoveToFolder?: boolean; showColorOption?: boolean; selectedItem?: NavigationMenuItem | null; }; @@ -33,11 +34,13 @@ export const SidePanelEditObjectViewBase = ({ onRemove, onAddBefore, onAddAfter, + showMoveToFolder = false, showColorOption = false, selectedItem, }: SidePanelEditObjectViewBaseProps) => { const { t } = useLingui(); - const selectableItemIds = getOrganizeActionsSelectableItemIds(true); + const selectableItemIds = + getOrganizeActionsSelectableItemIds(showMoveToFolder); const objectMetadataItems = useAtomStateValue(objectMetadataItemsSelector); const views = useAtomStateValue(viewsSelector); @@ -88,7 +91,7 @@ export const SidePanelEditObjectViewBase = ({ onRemove={onRemove} onAddBefore={onAddBefore} onAddAfter={onAddAfter} - showMoveToFolder + showMoveToFolder={showMoveToFolder} onMoveToFolder={onOpenFolderPicker} /> diff --git a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx index 36696974cdc..b17cadb59a8 100644 --- a/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx +++ b/packages/twenty-front/src/modules/navigation-menu-item/edit/side-panel/components/SidePanelNavigationMenuItemEditPage.tsx @@ -1,16 +1,14 @@ import { CommandMenuItem } from '@/command-menu/components/CommandMenuItem'; -import { NavigationMenuItemType } from 'twenty-shared/types'; import { pendingInsertionNavigationMenuItemState } from '@/navigation-menu-item/common/states/pendingInsertionNavigationMenuItemState'; +import { useDraftNavigationMenuItemsAllFolders } from '@/navigation-menu-item/edit/hooks/useDraftNavigationMenuItemsAllFolders'; import { useNavigationMenuItemsDraftState } from '@/navigation-menu-item/edit/hooks/useNavigationMenuItemsDraftState'; import { useSelectedNavigationMenuItemEditItem } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItem'; +import { NavigationMenuItemType } from 'twenty-shared/types'; -import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel'; -import { useUpdateLinkInDraft } from '@/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft'; import { selectedNavigationMenuItemIdInEditModeState } from '@/navigation-menu-item/common/states/selectedNavigationMenuItemIdInEditModeState'; import { parseThemeColor } from '@/navigation-menu-item/common/utils/parseThemeColor'; -import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; -import { SidePanelList } from '@/side-panel/components/SidePanelList'; -import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; +import { useSelectedNavigationMenuItemEditItemLabel } from '@/navigation-menu-item/edit/hooks/useSelectedNavigationMenuItemEditItemLabel'; +import { useUpdateLinkInDraft } from '@/navigation-menu-item/edit/link/hooks/useUpdateLinkInDraft'; import { SidePanelEditColorOption } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditColorOption'; import { SidePanelEditLinkItemView } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditLinkItemView'; import { SidePanelEditObjectViewBase } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditObjectViewBase'; @@ -18,6 +16,9 @@ import { SidePanelEditOrganizeActions } from '@/navigation-menu-item/edit/side-p import { SidePanelEditOwnerSection } from '@/navigation-menu-item/edit/side-panel/components/SidePanelEditOwnerSection'; import { useNavigationMenuItemEditOrganizeActions } from '@/navigation-menu-item/edit/side-panel/hooks/useNavigationMenuItemEditOrganizeActions'; import { getOrganizeActionsSelectableItemIds } from '@/navigation-menu-item/edit/side-panel/utils/getOrganizeActionsSelectableItemIds'; +import { SidePanelGroup } from '@/side-panel/components/SidePanelGroup'; +import { SidePanelList } from '@/side-panel/components/SidePanelList'; +import { useSidePanelSubPageHistory } from '@/side-panel/hooks/useSidePanelSubPageHistory'; import { SidePanelSubPages } from '@/side-panel/types/SidePanelSubPages'; import { SelectableListItem } from '@/ui/layout/selectable-list/components/SelectableListItem'; import { useAtomStateValue } from '@/ui/utilities/state/jotai/hooks/useAtomStateValue'; @@ -48,6 +49,7 @@ export const SidePanelNavigationMenuItemEditPage = () => { const { selectedItemLabel } = useSelectedNavigationMenuItemEditItemLabel(); const { selectedItem } = useSelectedNavigationMenuItemEditItem(); const selectedItemType = selectedItem?.type ?? null; + const { allFolders } = useDraftNavigationMenuItemsAllFolders(); const { navigateToSidePanelSubPage } = useSidePanelSubPageHistory(); const openFolderPicker = () => @@ -69,12 +71,20 @@ export const SidePanelNavigationMenuItemEditPage = () => { pendingInsertionNavigationMenuItemState, ); + const currentFolderId = + selectedItemType === NavigationMenuItemType.FOLDER + ? selectedItem?.id + : selectedItem?.folderId; + const canMoveToOtherFolder = allFolders.some( + (folder) => folder.id !== currentFolderId, + ); + const handleAddItemToFolder = () => { if (!selectedItem || selectedItem.type !== NavigationMenuItemType.FOLDER) { return; } const folderItemCount = workspaceNavigationMenuItems.filter( - (item) => (item.folderId ?? null) === selectedItem.id, + (item) => item.folderId === selectedItem.id, ).length; setPendingInsertionNavigationMenuItem({ folderId: selectedItem.id, @@ -98,6 +108,7 @@ export const SidePanelNavigationMenuItemEditPage = () => { return ( { return ( { updateLinkInDraft(linkId, updates) } onOpenFolderPicker={openFolderPicker} + showMoveToFolder={canMoveToOtherFolder} canMoveUp={canMoveUp} canMoveDown={canMoveDown} onMoveUp={onMoveUp} @@ -191,7 +204,9 @@ export const SidePanelNavigationMenuItemEditPage = () => { return ( { onRemove={onRemove} onAddBefore={onAddBefore} onAddAfter={onAddAfter} - showMoveToFolder + showMoveToFolder={canMoveToOtherFolder} onMoveToFolder={openFolderPicker} />