import { useFilteredObjectMetadataItems } from '@/object-metadata/hooks/useFilteredObjectMetadataItems'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { SettingsDataModelNewFieldBreadcrumbDropDown } from '@/settings/data-model/components/SettingsDataModelNewFieldBreadcrumbDropDown'; import { SETTINGS_FIELD_TYPE_CONFIGS } from '@/settings/data-model/constants/SettingsFieldTypeConfigs'; import { SettingsObjectNewFieldSelector } from '@/settings/data-model/fields/forms/components/SettingsObjectNewFieldSelector'; import { FieldType } from '@/settings/data-model/types/FieldType'; import { SettingsFieldType } from '@/settings/data-model/types/SettingsFieldType'; import { AppPath } from '@/types/AppPath'; import { SettingsPath } from '@/types/SettingsPath'; import { SubMenuTopBarContainer } from '@/ui/layout/page/components/SubMenuTopBarContainer'; import { zodResolver } from '@hookform/resolvers/zod'; import { t } from '@lingui/core/macro'; import { useEffect } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { useParams } from 'react-router-dom'; import { isDefined } from 'twenty-shared/utils'; import { z } from 'zod'; import { FieldMetadataType } from '~/generated-metadata/graphql'; import { useNavigateApp } from '~/hooks/useNavigateApp'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; export const settingsDataModelFieldTypeFormSchema = z.object({ type: z.enum( Object.keys(SETTINGS_FIELD_TYPE_CONFIGS) as [ SettingsFieldType, ...SettingsFieldType[], ], ), }); export type SettingsDataModelFieldTypeFormValues = z.infer< typeof settingsDataModelFieldTypeFormSchema >; export const SettingsObjectNewFieldSelect = () => { const navigate = useNavigateApp(); const { objectNamePlural = '' } = useParams(); const { findActiveObjectMetadataItemByNamePlural } = useFilteredObjectMetadataItems(); const activeObjectMetadataItem = findActiveObjectMetadataItemByNamePlural(objectNamePlural); const formMethods = useForm({ resolver: zodResolver(settingsDataModelFieldTypeFormSchema), defaultValues: { type: FieldMetadataType.TEXT, }, }); const excludedFieldTypes: FieldType[] = ( [ FieldMetadataType.NUMERIC, FieldMetadataType.RICH_TEXT, FieldMetadataType.RICH_TEXT_V2, FieldMetadataType.ACTOR, ] as const ).filter(isDefined); useEffect(() => { if (!activeObjectMetadataItem) { navigate(AppPath.NotFound); } }, [activeObjectMetadataItem, navigate]); if (!activeObjectMetadataItem) return null; return ( }, ]} > ); };