diff --git a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx index d387dc218e..a2d1f2001b 100644 --- a/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx +++ b/packages/twenty-front/src/modules/object-metadata/components/NavigationDrawerSectionForObjectMetadataItems.tsx @@ -8,8 +8,9 @@ import { NavigationDrawerSection } from '@/ui/navigation/navigation-drawer/compo import { NavigationDrawerSectionTitle } from '@/ui/navigation/navigation-drawer/components/NavigationDrawerSectionTitle'; import { useNavigationSection } from '@/ui/navigation/navigation-drawer/hooks/useNavigationSection'; import { useRecoilValue } from 'recoil'; +import { isDefined } from 'twenty-shared/utils'; -const ORDERED_STANDARD_OBJECTS: string[] = [ +const ORDERED_FIRST_STANDARD_OBJECTS: string[] = [ CoreObjectNameSingular.Person, CoreObjectNameSingular.Company, CoreObjectNameSingular.Opportunity, @@ -17,6 +18,11 @@ const ORDERED_STANDARD_OBJECTS: string[] = [ CoreObjectNameSingular.Note, ]; +const ORDERED_LAST_STANDARD_OBJECTS: string[] = [ + CoreObjectNameSingular.Workflow, + CoreObjectNameSingular.Dashboard, +]; + type NavigationDrawerSectionForObjectMetadataItemsProps = { sectionTitle: string; isRemote: boolean; @@ -35,12 +41,16 @@ export const NavigationDrawerSectionForObjectMetadataItems = ({ const { objectPermissionsByObjectMetadataId } = useObjectPermissions(); const sortedStandardObjectMetadataItems = [...objectMetadataItems] - .filter((item) => ORDERED_STANDARD_OBJECTS.includes(item.nameSingular)) + .filter( + (item) => + ORDERED_FIRST_STANDARD_OBJECTS.includes(item.nameSingular) && + !ORDERED_LAST_STANDARD_OBJECTS.includes(item.nameSingular), + ) .sort((objectMetadataItemA, objectMetadataItemB) => { - const indexA = ORDERED_STANDARD_OBJECTS.indexOf( + const indexA = ORDERED_FIRST_STANDARD_OBJECTS.indexOf( objectMetadataItemA.nameSingular, ); - const indexB = ORDERED_STANDARD_OBJECTS.indexOf( + const indexB = ORDERED_FIRST_STANDARD_OBJECTS.indexOf( objectMetadataItemB.nameSingular, ); if (indexA === -1 || indexB === -1) { @@ -52,7 +62,11 @@ export const NavigationDrawerSectionForObjectMetadataItems = ({ }); const sortedCustomObjectMetadataItems = [...objectMetadataItems] - .filter((item) => !ORDERED_STANDARD_OBJECTS.includes(item.nameSingular)) + .filter( + (item) => + !ORDERED_FIRST_STANDARD_OBJECTS.includes(item.nameSingular) && + !ORDERED_LAST_STANDARD_OBJECTS.includes(item.nameSingular), + ) .sort((objectMetadataItemA, objectMetadataItemB) => { return new Date(objectMetadataItemA.createdAt) < new Date(objectMetadataItemB.createdAt) @@ -60,9 +74,17 @@ export const NavigationDrawerSectionForObjectMetadataItems = ({ : -1; }); + const sortedLastStandardObjectMetadataItems = + ORDERED_LAST_STANDARD_OBJECTS.map((nameSingular) => { + return objectMetadataItems.find( + (item) => item.nameSingular === nameSingular, + ); + }).filter(isDefined); + const objectMetadataItemsForNavigationItems = [ ...sortedStandardObjectMetadataItems, ...sortedCustomObjectMetadataItems, + ...sortedLastStandardObjectMetadataItems, ]; const objectMetadataItemsForNavigationItemsWithReadPermission =