From 268c6b44d960d7421c04a3ffb52fd1a78aa896e5 Mon Sep 17 00:00:00 2001 From: "gitstart-app[bot]" <57568882+gitstart-app[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 15:47:19 +0200 Subject: [PATCH] Enable phone field type (#5052) ### Description Enable phone field type ### Refs https://github.com/twentyhq/twenty/issues/2700 ### Demo https://github.com/twentyhq/twenty/assets/140154534/e9810718-9916-4ad4-a080-4d718777de15 Fixes #2700 --------- Co-authored-by: gitstart-twenty Co-authored-by: Lucas Bordeau --- .../utils/formatFieldMetadataItemsAsSortDefinitions.ts | 1 + .../utils/getOperandsForFilterType.ts | 1 + .../record-field/meta-types/hooks/usePhoneField.ts | 2 +- .../object-record/record-field/types/guards/isFieldPhone.ts | 6 ++---- .../object-record/record-field/utils/isFieldValueEmpty.ts | 5 +++-- .../data-model/constants/SettingsFieldTypeConfigs.ts | 6 +++++- .../components/SettingsDataModelFieldSettingsFormCard.tsx | 1 + .../SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx | 1 - 8 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsSortDefinitions.ts b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsSortDefinitions.ts index 5138491cd..56b84aec0 100644 --- a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsSortDefinitions.ts +++ b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemsAsSortDefinitions.ts @@ -17,6 +17,7 @@ export const formatFieldMetadataItemsAsSortDefinitions = ({ FieldMetadataType.Text, FieldMetadataType.Boolean, FieldMetadataType.Select, + FieldMetadataType.Phone, ].includes(field.type) ) { return acc; diff --git a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandsForFilterType.ts b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandsForFilterType.ts index 741293e0d..34e9979ee 100644 --- a/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandsForFilterType.ts +++ b/packages/twenty-front/src/modules/object-record/object-filter-dropdown/utils/getOperandsForFilterType.ts @@ -10,6 +10,7 @@ export const getOperandsForFilterType = ( case 'EMAIL': case 'FULL_NAME': case 'ADDRESS': + case 'PHONE': case 'LINK': return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain]; case 'CURRENCY': diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhoneField.ts b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhoneField.ts index 3f8891214..b777214a2 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhoneField.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/hooks/usePhoneField.ts @@ -15,7 +15,7 @@ import { isFieldPhone } from '../../types/guards/isFieldPhone'; export const usePhoneField = () => { const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext); - assertFieldMetadata(FieldMetadataType.Text, isFieldPhone, fieldDefinition); + assertFieldMetadata(FieldMetadataType.Phone, isFieldPhone, fieldDefinition); const fieldName = fieldDefinition.metadata.fieldName; diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPhone.ts b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPhone.ts index 98d10e9d2..0de71e270 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPhone.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/types/guards/isFieldPhone.ts @@ -4,8 +4,6 @@ import { FieldDefinition } from '../FieldDefinition'; import { FieldMetadata, FieldPhoneMetadata } from '../FieldMetadata'; export const isFieldPhone = ( - field: Pick, 'type' | 'metadata'>, + field: Pick, 'type'>, ): field is FieldDefinition => - field.metadata.objectMetadataNameSingular === 'person' && - field.metadata.fieldName === 'phone' && - field.type === FieldMetadataType.Text; + field.type === FieldMetadataType.Phone; diff --git a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueEmpty.ts b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueEmpty.ts index ce9c5c77b..6c1ad7f1f 100644 --- a/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueEmpty.ts +++ b/packages/twenty-front/src/modules/object-record/record-field/utils/isFieldValueEmpty.ts @@ -17,6 +17,7 @@ import { isFieldLinkValue } from '@/object-record/record-field/types/guards/isFi import { isFieldMultiSelect } from '@/object-record/record-field/types/guards/isFieldMultiSelect'; import { isFieldMultiSelectValue } from '@/object-record/record-field/types/guards/isFieldMultiSelectValue'; import { isFieldNumber } from '@/object-record/record-field/types/guards/isFieldNumber'; +import { isFieldPhone } from '@/object-record/record-field/types/guards/isFieldPhone'; import { isFieldRating } from '@/object-record/record-field/types/guards/isFieldRating'; import { isFieldRawJson } from '@/object-record/record-field/types/guards/isFieldRawJson'; import { isFieldRelation } from '@/object-record/record-field/types/guards/isFieldRelation'; @@ -47,8 +48,8 @@ export const isFieldValueEmpty = ({ isFieldEmail(fieldDefinition) || isFieldBoolean(fieldDefinition) || isFieldRelation(fieldDefinition) || - isFieldRawJson(fieldDefinition) - //|| isFieldPhone(fieldDefinition) + isFieldRawJson(fieldDefinition) || + isFieldPhone(fieldDefinition) ) { return isValueEmpty(fieldValue); } diff --git a/packages/twenty-front/src/modules/settings/data-model/constants/SettingsFieldTypeConfigs.ts b/packages/twenty-front/src/modules/settings/data-model/constants/SettingsFieldTypeConfigs.ts index 417af6ae5..9429baaf5 100644 --- a/packages/twenty-front/src/modules/settings/data-model/constants/SettingsFieldTypeConfigs.ts +++ b/packages/twenty-front/src/modules/settings/data-model/constants/SettingsFieldTypeConfigs.ts @@ -100,7 +100,11 @@ export const SETTINGS_FIELD_TYPE_CONFIGS: Record< Icon: IconRelationManyToMany, }, [FieldMetadataType.Email]: { label: 'Email', Icon: IconMail }, - [FieldMetadataType.Phone]: { label: 'Phone', Icon: IconPhone }, + [FieldMetadataType.Phone]: { + label: 'Phone', + Icon: IconPhone, + defaultValue: '+1234-567-890', + }, [FieldMetadataType.Probability]: { label: 'Rating', Icon: IconTwentyStar, 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 72c339ff1..69a4accbe 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 @@ -74,6 +74,7 @@ const previewableTypes = [ FieldMetadataType.Text, FieldMetadataType.Address, FieldMetadataType.RawJson, + FieldMetadataType.Phone, ]; export const SettingsDataModelFieldSettingsFormCard = ({ diff --git a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx index ab106a405..57f47afcb 100644 --- a/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx +++ b/packages/twenty-front/src/pages/settings/data-model/SettingsObjectNewField/SettingsObjectNewFieldStep2.tsx @@ -284,7 +284,6 @@ export const SettingsObjectNewFieldStep2 = () => { FieldMetadataType.Link, FieldMetadataType.Links, FieldMetadataType.Numeric, - FieldMetadataType.Phone, FieldMetadataType.Probability, FieldMetadataType.Uuid, ];