diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard.tsx index c799bdb62..650378b99 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldSettingsFormCard.tsx @@ -3,23 +3,23 @@ import omit from 'lodash.omit'; import { z } from 'zod'; import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem'; +import { SettingsDataModelPreviewFormCard } from '@/settings/data-model/components/SettingsDataModelPreviewFormCard'; +import { SETTINGS_FIELD_TYPE_CONFIGS } from '@/settings/data-model/constants/SettingsFieldTypeConfigs'; import { SettingsDataModelFieldBooleanForm, settingsDataModelFieldBooleanFormSchema, -} from '@/settings/data-model/components/SettingsDataModelDefaultValue'; -import { SettingsDataModelPreviewFormCard } from '@/settings/data-model/components/SettingsDataModelPreviewFormCard'; -import { settingsDataModelFieldRelationFormSchema } from '@/settings/data-model/components/SettingsObjectFieldRelationForm'; -import { - settingsDataModelFieldMultiSelectFormSchema, - settingsDataModelFieldSelectFormSchema, -} from '@/settings/data-model/components/SettingsObjectFieldSelectForm'; -import { SETTINGS_FIELD_TYPE_CONFIGS } from '@/settings/data-model/constants/SettingsFieldTypeConfigs'; +} from '@/settings/data-model/fields/forms/components/boolean/SettingsDataModelFieldBooleanForm'; import { SettingsDataModelFieldCurrencyForm, settingsDataModelFieldCurrencyFormSchema, -} from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldCurrencyForm'; -import { SettingsDataModelFieldRelationSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldRelationSettingsFormCard'; -import { SettingsDataModelFieldSelectSettingsFormCard } from '@/settings/data-model/fields/forms/components/SettingsDataModelFieldSelectSettingsFormCard'; +} from '@/settings/data-model/fields/forms/components/currency/SettingsDataModelFieldCurrencyForm'; +import { settingsDataModelFieldRelationFormSchema } from '@/settings/data-model/fields/forms/components/relation/SettingsDataModelFieldRelationForm'; +import { SettingsDataModelFieldRelationSettingsFormCard } from '@/settings/data-model/fields/forms/components/relation/SettingsDataModelFieldRelationSettingsFormCard'; +import { + settingsDataModelFieldMultiSelectFormSchema, + settingsDataModelFieldSelectFormSchema, +} from '@/settings/data-model/fields/forms/components/select/SettingsDataModelFieldSelectForm'; +import { SettingsDataModelFieldSelectSettingsFormCard } from '@/settings/data-model/fields/forms/components/select/SettingsDataModelFieldSelectSettingsFormCard'; import { SettingsDataModelFieldPreviewCard, SettingsDataModelFieldPreviewCardProps, diff --git a/packages/twenty-front/src/modules/settings/data-model/components/SettingsDataModelDefaultValue.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/boolean/SettingsDataModelFieldBooleanForm.tsx similarity index 87% rename from packages/twenty-front/src/modules/settings/data-model/components/SettingsDataModelDefaultValue.tsx rename to packages/twenty-front/src/modules/settings/data-model/fields/forms/components/boolean/SettingsDataModelFieldBooleanForm.tsx index 7f7cffc26..806e3d16f 100644 --- a/packages/twenty-front/src/modules/settings/data-model/components/SettingsDataModelDefaultValue.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/boolean/SettingsDataModelFieldBooleanForm.tsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import styled from '@emotion/styled'; import { IconCheck, IconX } from 'twenty-ui'; @@ -8,8 +9,6 @@ import { Select } from '@/ui/input/components/Select'; import { CardContent } from '@/ui/layout/card/components/CardContent'; import { isDefined } from '~/utils/isDefined'; -// TODO: rename to SettingsDataModelFieldBooleanForm and move to settings/data-model/fields/forms/components - export const settingsDataModelFieldBooleanFormSchema = z.object({ defaultValue: z.boolean(), }); @@ -33,18 +32,23 @@ const StyledLabel = styled.span` font-size: ${({ theme }) => theme.font.size.xs}; font-weight: ${({ theme }) => theme.font.weight.semiBold}; margin-bottom: 6px; - margin-top: ${({ theme }) => theme.spacing(1)}; `; export const SettingsDataModelFieldBooleanForm = ({ className, fieldMetadataItem, }: SettingsDataModelFieldBooleanFormProps) => { - const { control } = useFormContext(); + const { control, resetField } = + useFormContext(); const isEditMode = isDefined(fieldMetadataItem?.defaultValue); const initialValue = fieldMetadataItem?.defaultValue ?? true; + // Reset defaultValue on mount, so it doesn't conflict with other field types. + useEffect(() => { + resetField('defaultValue', { defaultValue: initialValue }); + }, [initialValue, resetField]); + return ( Default Value diff --git a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldCurrencyForm.tsx b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/currency/SettingsDataModelFieldCurrencyForm.tsx similarity index 75% rename from packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldCurrencyForm.tsx rename to packages/twenty-front/src/modules/settings/data-model/fields/forms/components/currency/SettingsDataModelFieldCurrencyForm.tsx index d89d447ac..7c09c9ac0 100644 --- a/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/SettingsDataModelFieldCurrencyForm.tsx +++ b/packages/twenty-front/src/modules/settings/data-model/fields/forms/components/currency/SettingsDataModelFieldCurrencyForm.tsx @@ -1,3 +1,4 @@ +import { useEffect } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import { z } from 'zod'; @@ -13,6 +14,7 @@ import { simpleQuotesStringSchema } from '~/utils/validation-schemas/simpleQuote export const settingsDataModelFieldCurrencyFormSchema = z.object({ defaultValue: z.object({ + amountMicros: z.null(), currencyCode: simpleQuotesStringSchema.refine( (value) => currencyCodeSchema.safeParse(stripSimpleQuotesFromString(value)) @@ -43,19 +45,38 @@ export const SettingsDataModelFieldCurrencyForm = ({ disabled, fieldMetadataItem, }: SettingsDataModelFieldCurrencyFormProps) => { - const { control } = + const { control, resetField } = useFormContext(); - const initialValue = + const initialAmountMicrosValue = null; + const initialCurrencyCode = (fieldMetadataItem?.defaultValue?.currencyCode as CurrencyCode) ?? CurrencyCode.USD; + const initialCurrencyCodeValue = + applySimpleQuotesToString(initialCurrencyCode); + + // Reset defaultValue on mount, so it doesn't conflict with other field types. + useEffect(() => { + resetField('defaultValue', { + defaultValue: { + amountMicros: initialAmountMicrosValue, + currencyCode: initialCurrencyCodeValue, + }, + }); + }, [initialCurrencyCodeValue, resetField]); return ( + <>} + /> (