Hardcode workflow objects and dashboards to be last in the navigation drawer (#17123)
Closes https://github.com/twentyhq/core-team-issues/issues/2058 We settled on a simpler solution by just hardcoding the objects order for now. We will change this once it's possible to reorder the workspace favorites with drag and drop.
This commit is contained in:
+27
-5
@@ -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 =
|
||||
|
||||
Reference in New Issue
Block a user