fix: hide "Move to folder" when no destination folder is available (#18992)

This commit is contained in:
Abdul Rahman
2026-03-26 16:11:00 +05:30
committed by GitHub
parent 29979f535d
commit b651a74b1f
3 changed files with 34 additions and 13 deletions
@@ -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<string | null>(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}
/>
<SidePanelEditOwnerSection applicationId={selectedItem.applicationId} />
@@ -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}
/>
</SidePanelList>
@@ -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 (
<SidePanelEditObjectViewBase
onOpenFolderPicker={openFolderPicker}
showMoveToFolder={canMoveToOtherFolder}
canMoveUp={canMoveUp}
canMoveDown={canMoveDown}
onMoveUp={onMoveUp}
@@ -113,6 +124,7 @@ export const SidePanelNavigationMenuItemEditPage = () => {
return (
<SidePanelEditObjectViewBase
onOpenFolderPicker={openFolderPicker}
showMoveToFolder={canMoveToOtherFolder}
canMoveUp={canMoveUp}
canMoveDown={canMoveDown}
onMoveUp={onMoveUp}
@@ -135,6 +147,7 @@ export const SidePanelNavigationMenuItemEditPage = () => {
updateLinkInDraft(linkId, updates)
}
onOpenFolderPicker={openFolderPicker}
showMoveToFolder={canMoveToOtherFolder}
canMoveUp={canMoveUp}
canMoveDown={canMoveDown}
onMoveUp={onMoveUp}
@@ -191,7 +204,9 @@ export const SidePanelNavigationMenuItemEditPage = () => {
return (
<SidePanelList
commandGroups={[]}
selectableItemIds={getOrganizeActionsSelectableItemIds(true)}
selectableItemIds={getOrganizeActionsSelectableItemIds(
canMoveToOtherFolder,
)}
>
<SidePanelEditOrganizeActions
canMoveUp={canMoveUp}
@@ -201,7 +216,7 @@ export const SidePanelNavigationMenuItemEditPage = () => {
onRemove={onRemove}
onAddBefore={onAddBefore}
onAddAfter={onAddAfter}
showMoveToFolder
showMoveToFolder={canMoveToOtherFolder}
onMoveToFolder={openFolderPicker}
/>
</SidePanelList>