diff --git a/front/src/modules/ui/object/field/components/FieldDisplay.tsx b/front/src/modules/ui/object/field/components/FieldDisplay.tsx
index 1651fd44a..41adb3d44 100644
--- a/front/src/modules/ui/object/field/components/FieldDisplay.tsx
+++ b/front/src/modules/ui/object/field/components/FieldDisplay.tsx
@@ -9,29 +9,19 @@ import { isFieldLink } from '@/ui/object/field/types/guards/isFieldLink';
import { isFieldUuid } from '@/ui/object/field/types/guards/isFieldUuid';
import { FieldContext } from '../contexts/FieldContext';
-import { ChipFieldDisplay } from '../meta-types/display/components/ChipFieldDisplay';
import { CurrencyFieldDisplay } from '../meta-types/display/components/CurrencyFieldDisplay';
import { DateFieldDisplay } from '../meta-types/display/components/DateFieldDisplay';
-import { DoubleTextChipFieldDisplay } from '../meta-types/display/components/DoubleTextChipFieldDisplay';
import { EmailFieldDisplay } from '../meta-types/display/components/EmailFieldDisplay';
-import { EnumFieldDisplay } from '../meta-types/display/components/EnumFieldDisplay';
-import { MoneyFieldDisplay } from '../meta-types/display/components/MoneyFieldDisplay';
import { NumberFieldDisplay } from '../meta-types/display/components/NumberFieldDisplay';
import { PhoneFieldDisplay } from '../meta-types/display/components/PhoneFieldDisplay';
import { TextFieldDisplay } from '../meta-types/display/components/TextFieldDisplay';
-import { URLFieldDisplay } from '../meta-types/display/components/URLFieldDisplay';
-import { isFieldChip } from '../types/guards/isFieldChip';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldDate } from '../types/guards/isFieldDate';
-import { isFieldDoubleTextChip } from '../types/guards/isFieldDoubleTextChip';
import { isFieldEmail } from '../types/guards/isFieldEmail';
-import { isFieldEnum } from '../types/guards/isFieldEnum';
-import { isFieldMoney } from '../types/guards/isFieldMoney';
import { isFieldNumber } from '../types/guards/isFieldNumber';
import { isFieldPhone } from '../types/guards/isFieldPhone';
import { isFieldRelation } from '../types/guards/isFieldRelation';
import { isFieldText } from '../types/guards/isFieldText';
-import { isFieldURL } from '../types/guards/isFieldURL';
export const FieldDisplay = () => {
const { fieldDefinition } = useContext(FieldContext);
@@ -50,10 +40,6 @@ export const FieldDisplay = () => {
) : isFieldNumber(fieldDefinition) ? (
- ) : isFieldMoney(fieldDefinition) ? (
-
- ) : isFieldURL(fieldDefinition) ? (
-
) : isFieldLink(fieldDefinition) ? (
) : isFieldCurrency(fieldDefinition) ? (
@@ -62,12 +48,6 @@ export const FieldDisplay = () => {
) : isFieldPhone(fieldDefinition) ? (
- ) : isFieldChip(fieldDefinition) ? (
-
- ) : isFieldDoubleTextChip(fieldDefinition) ? (
-
- ) : isFieldEnum(fieldDefinition) ? (
-
) : (
<>>
)}
diff --git a/front/src/modules/ui/object/field/components/FieldInput.tsx b/front/src/modules/ui/object/field/components/FieldInput.tsx
index e4b4d5f9e..9206c31de 100644
--- a/front/src/modules/ui/object/field/components/FieldInput.tsx
+++ b/front/src/modules/ui/object/field/components/FieldInput.tsx
@@ -1,37 +1,31 @@
import { useContext } from 'react';
+import { FullNameFieldInput } from '@/ui/object/field/meta-types/input/components/FullNameFieldInput';
+import { isFieldFullName } from '@/ui/object/field/types/guards/isFieldFullName';
import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope';
import { FieldContext } from '../contexts/FieldContext';
import { BooleanFieldInput } from '../meta-types/input/components/BooleanFieldInput';
-import { ChipFieldInput } from '../meta-types/input/components/ChipFieldInput';
import { CurrencyFieldInput } from '../meta-types/input/components/CurrencyFieldInput';
import { DateFieldInput } from '../meta-types/input/components/DateFieldInput';
-import { DoubleTextChipFieldInput } from '../meta-types/input/components/DoubleTextChipFieldInput';
import { EmailFieldInput } from '../meta-types/input/components/EmailFieldInput';
import { LinkFieldInput } from '../meta-types/input/components/LinkFieldInput';
-import { MoneyFieldInput } from '../meta-types/input/components/MoneyFieldInput';
import { NumberFieldInput } from '../meta-types/input/components/NumberFieldInput';
import { PhoneFieldInput } from '../meta-types/input/components/PhoneFieldInput';
import { ProbabilityFieldInput } from '../meta-types/input/components/ProbabilityFieldInput';
import { RelationFieldInput } from '../meta-types/input/components/RelationFieldInput';
import { TextFieldInput } from '../meta-types/input/components/TextFieldInput';
-import { URLFieldInput } from '../meta-types/input/components/URLFieldInput';
import { FieldInputEvent } from '../types/FieldInputEvent';
import { isFieldBoolean } from '../types/guards/isFieldBoolean';
-import { isFieldChip } from '../types/guards/isFieldChip';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldDate } from '../types/guards/isFieldDate';
-import { isFieldDoubleTextChip } from '../types/guards/isFieldDoubleTextChip';
import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldLink } from '../types/guards/isFieldLink';
-import { isFieldMoney } from '../types/guards/isFieldMoney';
import { isFieldNumber } from '../types/guards/isFieldNumber';
import { isFieldPhone } from '../types/guards/isFieldPhone';
import { isFieldProbability } from '../types/guards/isFieldProbability';
import { isFieldRelation } from '../types/guards/isFieldRelation';
import { isFieldText } from '../types/guards/isFieldText';
-import { isFieldURL } from '../types/guards/isFieldURL';
type FieldInputProps = {
onSubmit?: FieldInputEvent;
@@ -76,6 +70,14 @@ export const FieldInput = ({
onTab={onTab}
onShiftTab={onShiftTab}
/>
+ ) : isFieldFullName(fieldDefinition) ? (
+
) : isFieldDate(fieldDefinition) ? (
- ) : isFieldURL(fieldDefinition) ? (
-
) : isFieldLink(fieldDefinition) ? (
) : isFieldProbability(fieldDefinition) ? (
- ) : isFieldChip(fieldDefinition) ? (
-
- ) : isFieldDoubleTextChip(fieldDefinition) ? (
-
- ) : isFieldMoney(fieldDefinition) ? (
-
) : (
<>>
)}
diff --git a/front/src/modules/ui/object/field/hooks/useGetButtonIcon.ts b/front/src/modules/ui/object/field/hooks/useGetButtonIcon.ts
index 47f209b56..cae2d3de7 100644
--- a/front/src/modules/ui/object/field/hooks/useGetButtonIcon.ts
+++ b/front/src/modules/ui/object/field/hooks/useGetButtonIcon.ts
@@ -5,9 +5,9 @@ import { IconComponent } from '@/ui/display/icon/types/IconComponent';
import { FieldContext } from '../contexts/FieldContext';
import { isFieldEmail } from '../types/guards/isFieldEmail';
+import { isFieldLink } from '../types/guards/isFieldLink';
import { isFieldPhone } from '../types/guards/isFieldPhone';
import { isFieldRelation } from '../types/guards/isFieldRelation';
-import { isFieldURL } from '../types/guards/isFieldURL';
export const useGetButtonIcon = (): IconComponent | undefined => {
const { fieldDefinition } = useContext(FieldContext);
@@ -15,7 +15,7 @@ export const useGetButtonIcon = (): IconComponent | undefined => {
if (!fieldDefinition) return undefined;
if (
- isFieldURL(fieldDefinition) ||
+ isFieldLink(fieldDefinition) ||
isFieldEmail(fieldDefinition) ||
isFieldPhone(fieldDefinition) ||
isFieldRelation(fieldDefinition)
diff --git a/front/src/modules/ui/object/field/hooks/useIsFieldEmpty.ts b/front/src/modules/ui/object/field/hooks/useIsFieldEmpty.ts
index 2d80c6abe..ff9f85437 100644
--- a/front/src/modules/ui/object/field/hooks/useIsFieldEmpty.ts
+++ b/front/src/modules/ui/object/field/hooks/useIsFieldEmpty.ts
@@ -11,8 +11,8 @@ export const useIsFieldEmpty = () => {
isEntityFieldEmptyFamilySelector({
fieldDefinition: {
type: fieldDefinition.type,
- metadata: { ...fieldDefinition.metadata, mainIdentifierMapper: null },
},
+ fieldName: fieldDefinition.metadata.fieldName,
entityId,
}),
);
diff --git a/front/src/modules/ui/object/field/hooks/usePersistField.ts b/front/src/modules/ui/object/field/hooks/usePersistField.ts
index 1e1fc04b5..0baa83247 100644
--- a/front/src/modules/ui/object/field/hooks/usePersistField.ts
+++ b/front/src/modules/ui/object/field/hooks/usePersistField.ts
@@ -1,26 +1,21 @@
import { useContext } from 'react';
import { useRecoilCallback } from 'recoil';
+import { isFieldFullName } from '@/ui/object/field/types/guards/isFieldFullName';
+import { isFieldFullNameValue } from '@/ui/object/field/types/guards/isFieldFullNameValue';
+
import { FieldContext } from '../contexts/FieldContext';
import { entityFieldsFamilySelector } from '../states/selectors/entityFieldsFamilySelector';
import { isFieldBoolean } from '../types/guards/isFieldBoolean';
import { isFieldBooleanValue } from '../types/guards/isFieldBooleanValue';
-import { isFieldChip } from '../types/guards/isFieldChip';
-import { isFieldChipValue } from '../types/guards/isFieldChipValue';
import { isFieldCurrency } from '../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../types/guards/isFieldCurrencyValue';
import { isFieldDate } from '../types/guards/isFieldDate';
import { isFieldDateValue } from '../types/guards/isFieldDateValue';
-import { isFieldDoubleText } from '../types/guards/isFieldDoubleText';
-import { isFieldDoubleTextChip } from '../types/guards/isFieldDoubleTextChip';
-import { isFieldDoubleTextChipValue } from '../types/guards/isFieldDoubleTextChipValue';
-import { isFieldDoubleTextValue } from '../types/guards/isFieldDoubleTextValue';
import { isFieldEmail } from '../types/guards/isFieldEmail';
import { isFieldEmailValue } from '../types/guards/isFieldEmailValue';
import { isFieldLink } from '../types/guards/isFieldLink';
import { isFieldLinkValue } from '../types/guards/isFieldLinkValue';
-import { isFieldMoney } from '../types/guards/isFieldMoney';
-import { isFieldMoneyValue } from '../types/guards/isFieldMoneyValue';
import { isFieldNumber } from '../types/guards/isFieldNumber';
import { isFieldNumberValue } from '../types/guards/isFieldNumberValue';
import { isFieldPhone } from '../types/guards/isFieldPhone';
@@ -31,8 +26,6 @@ import { isFieldRelation } from '../types/guards/isFieldRelation';
import { isFieldRelationValue } from '../types/guards/isFieldRelationValue';
import { isFieldText } from '../types/guards/isFieldText';
import { isFieldTextValue } from '../types/guards/isFieldTextValue';
-import { isFieldURL } from '../types/guards/isFieldURL';
-import { isFieldURLValue } from '../types/guards/isFieldURLValue';
export const usePersistField = () => {
const {
@@ -50,17 +43,6 @@ export const usePersistField = () => {
isFieldRelation(fieldDefinition) &&
isFieldRelationValue(valueToPersist);
- const fieldIsChip =
- isFieldChip(fieldDefinition) && isFieldChipValue(valueToPersist);
-
- const fieldIsDoubleText =
- isFieldDoubleText(fieldDefinition) &&
- isFieldDoubleTextValue(valueToPersist);
-
- const fieldIsDoubleTextChip =
- isFieldDoubleTextChip(fieldDefinition) &&
- isFieldDoubleTextChipValue(valueToPersist);
-
const fieldIsText =
isFieldText(fieldDefinition) && isFieldTextValue(valueToPersist);
@@ -70,9 +52,6 @@ export const usePersistField = () => {
const fieldIsDate =
isFieldDate(fieldDefinition) && isFieldDateValue(valueToPersist);
- const fieldIsURL =
- isFieldURL(fieldDefinition) && isFieldURLValue(valueToPersist);
-
const fieldIsLink =
isFieldLink(fieldDefinition) && isFieldLinkValue(valueToPersist);
@@ -87,13 +66,14 @@ export const usePersistField = () => {
const fieldIsNumber =
isFieldNumber(fieldDefinition) && isFieldNumberValue(valueToPersist);
- const fieldIsMoney =
- isFieldMoney(fieldDefinition) && isFieldMoneyValue(valueToPersist);
-
const fieldIsCurrency =
isFieldCurrency(fieldDefinition) &&
isFieldCurrencyValue(valueToPersist);
+ const fieldIsFullName =
+ isFieldFullName(fieldDefinition) &&
+ isFieldFullNameValue(valueToPersist);
+
const fieldIsPhone =
isFieldPhone(fieldDefinition) && isFieldPhoneValue(valueToPersist);
@@ -115,62 +95,17 @@ export const usePersistField = () => {
},
},
});
- } else if (fieldIsChip) {
- const fieldName = fieldDefinition.metadata.contentFieldName;
-
- set(
- entityFieldsFamilySelector({ entityId, fieldName }),
- valueToPersist,
- );
-
- updateEntity?.({
- variables: {
- where: { id: entityId },
- data: {
- [fieldName]: valueToPersist,
- },
- },
- });
- } else if (fieldIsDoubleText || fieldIsDoubleTextChip) {
- set(
- entityFieldsFamilySelector({
- entityId,
- fieldName: fieldDefinition.metadata.firstValueFieldName,
- }),
- valueToPersist.firstValue,
- );
-
- set(
- entityFieldsFamilySelector({
- entityId,
- fieldName: fieldDefinition.metadata.secondValueFieldName,
- }),
- valueToPersist.secondValue,
- );
-
- updateEntity?.({
- variables: {
- where: { id: entityId },
- data: {
- [fieldDefinition.metadata.firstValueFieldName]:
- valueToPersist.firstValue,
- [fieldDefinition.metadata.secondValueFieldName]:
- valueToPersist.secondValue,
- },
- },
- });
} else if (
fieldIsText ||
fieldIsBoolean ||
- fieldIsURL ||
fieldIsEmail ||
fieldIsProbability ||
fieldIsNumber ||
- fieldIsMoney ||
fieldIsDate ||
fieldIsPhone ||
fieldIsLink ||
- fieldIsCurrency
+ fieldIsCurrency ||
+ fieldIsFullName
) {
const fieldName = fieldDefinition.metadata.fieldName;
diff --git a/front/src/modules/ui/object/field/hooks/useToggleEditOnlyInput.ts b/front/src/modules/ui/object/field/hooks/useToggleEditOnlyInput.ts
index 2fa03b0ca..dc6816a57 100644
--- a/front/src/modules/ui/object/field/hooks/useToggleEditOnlyInput.ts
+++ b/front/src/modules/ui/object/field/hooks/useToggleEditOnlyInput.ts
@@ -40,7 +40,7 @@ export const useToggleEditOnlyInput = () => {
});
} else {
throw new Error(
- `Invalid value to toggle for type : ${fieldDefinition.type}, type may not be implemented in useToggleEditOnlyInput.`,
+ `Invalid value to toggle for type : ${fieldDefinition}, type may not be implemented in useToggleEditOnlyInput.`,
);
}
},
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/ChipFieldDisplay.tsx b/front/src/modules/ui/object/field/meta-types/display/components/ChipFieldDisplay.tsx
index 5bddab7f1..2a75d6157 100644
--- a/front/src/modules/ui/object/field/meta-types/display/components/ChipFieldDisplay.tsx
+++ b/front/src/modules/ui/object/field/meta-types/display/components/ChipFieldDisplay.tsx
@@ -1,14 +1,10 @@
-import { useChipField } from '../../hooks/useChipField';
-import { ChipDisplay } from '../content-display/components/ChipDisplay';
-
export const ChipFieldDisplay = () => {
- const { avatarFieldValue, contentFieldValue, entityId } = useChipField();
-
- return (
-
- );
+ // const { avatarFieldValue, contentFieldValue, entityId } = useChipField();
+ // return (
+ //
+ // );
};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/DoubleTextChipFieldDisplay.tsx b/front/src/modules/ui/object/field/meta-types/display/components/DoubleTextChipFieldDisplay.tsx
index 03c4d2e84..6c67a5712 100644
--- a/front/src/modules/ui/object/field/meta-types/display/components/DoubleTextChipFieldDisplay.tsx
+++ b/front/src/modules/ui/object/field/meta-types/display/components/DoubleTextChipFieldDisplay.tsx
@@ -1,17 +1,11 @@
-import { useDoubleTextChipField } from '../../hooks/useDoubleTextChipField';
-import { ChipDisplay } from '../content-display/components/ChipDisplay';
-
export const DoubleTextChipFieldDisplay = () => {
- const { avatarUrl, firstValue, secondValue, entityId } =
- useDoubleTextChipField();
-
- const content = [firstValue, secondValue].filter(Boolean).join(' ');
-
- return (
-
- );
+ // const {} = useFullNameField();
+ // const content = [firstValue, secondValue].filter(Boolean).join(' ');
+ // return (
+ //
+ // );
};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/EnumFieldDisplay.tsx b/front/src/modules/ui/object/field/meta-types/display/components/EnumFieldDisplay.tsx
deleted file mode 100644
index 798d0586d..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/EnumFieldDisplay.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Tag } from '@/ui/display/tag/components/Tag';
-
-import { useEnumField } from '../../hooks/useEnumField';
-
-export const EnumFieldDisplay = () => {
- const { fieldValue } = useEnumField();
-
- return ;
-};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/MoneyFieldDisplay.tsx b/front/src/modules/ui/object/field/meta-types/display/components/MoneyFieldDisplay.tsx
deleted file mode 100644
index d04b7ba5f..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/MoneyFieldDisplay.tsx
+++ /dev/null
@@ -1,8 +0,0 @@
-import { useMoneyField } from '../../hooks/useMoneyField';
-import { MoneyDisplay } from '../content-display/components/MoneyDisplay';
-
-export const MoneyFieldDisplay = () => {
- const { fieldValue } = useMoneyField();
-
- return ;
-};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/URLFieldDisplay.tsx b/front/src/modules/ui/object/field/meta-types/display/components/URLFieldDisplay.tsx
deleted file mode 100644
index 3faf60069..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/URLFieldDisplay.tsx
+++ /dev/null
@@ -1,9 +0,0 @@
-import { URLDisplay } from '@/ui/object/field/meta-types/display/content-display/components/URLDisplay';
-
-import { useURLField } from '../../hooks/useURLField';
-
-export const URLFieldDisplay = () => {
- const { fieldValue } = useURLField();
-
- return ;
-};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/EnumFieldDisplay.stories.tsx b/front/src/modules/ui/object/field/meta-types/display/components/__stories__/EnumFieldDisplay.stories.tsx
deleted file mode 100644
index 0f51799e2..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/EnumFieldDisplay.stories.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import { useEffect } from 'react';
-import { Meta, StoryObj } from '@storybook/react';
-
-import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
-
-import { FieldContext } from '../../../../contexts/FieldContext';
-import { FieldEnumValue } from '../../../../types/FieldMetadata';
-import { useEnumField } from '../../../hooks/useEnumField';
-import { EnumFieldDisplay } from '../EnumFieldDisplay';
-
-const EnumFieldValueSetterEffect = ({ value }: { value: FieldEnumValue }) => {
- const { setFieldValue } = useEnumField();
-
- useEffect(() => {
- setFieldValue(value);
- }, [setFieldValue, value]);
-
- return null;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Display/EnumFieldDisplay',
- decorators: [
- (Story, { args }) => (
-
-
-
-
- ),
- ComponentDecorator,
- ],
- component: EnumFieldDisplay,
- args: {
- value: { color: 'purple', text: 'Lorem ipsum' },
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/MoneyFieldDisplay.stories.tsx b/front/src/modules/ui/object/field/meta-types/display/components/__stories__/MoneyFieldDisplay.stories.tsx
deleted file mode 100644
index f55b572c5..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/MoneyFieldDisplay.stories.tsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import { useEffect } from 'react';
-import { Meta, StoryObj } from '@storybook/react';
-
-import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
-
-import { FieldContext } from '../../../../contexts/FieldContext';
-import { useMoneyField } from '../../../hooks/useMoneyField';
-import { MoneyFieldDisplay } from '../MoneyFieldDisplay';
-
-const MoneyFieldValueSetterEffect = ({ value }: { value: number }) => {
- const { setFieldValue } = useMoneyField();
-
- useEffect(() => {
- setFieldValue(value);
- }, [setFieldValue, value]);
-
- return null;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Display/MoneyFieldDisplay',
- decorators: [
- (Story, { args }) => (
- [() => undefined, undefined],
- }}
- >
-
-
-
- ),
- ComponentDecorator,
- ],
- component: MoneyFieldDisplay,
- args: {
- value: 100,
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Elipsis: Story = {
- args: {
- value: 1e100,
- },
- parameters: {
- container: { width: 100 },
- },
-};
diff --git a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/URLFieldDisplay.stories.tsx b/front/src/modules/ui/object/field/meta-types/display/components/__stories__/URLFieldDisplay.stories.tsx
deleted file mode 100644
index e779fb8c5..000000000
--- a/front/src/modules/ui/object/field/meta-types/display/components/__stories__/URLFieldDisplay.stories.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import { useEffect } from 'react';
-import { MemoryRouter } from 'react-router';
-import { Meta, StoryObj } from '@storybook/react';
-
-import { ComponentDecorator } from '~/testing/decorators/ComponentDecorator';
-
-import { FieldContext } from '../../../../contexts/FieldContext';
-import { useURLField } from '../../../hooks/useURLField';
-import { URLFieldDisplay } from '../URLFieldDisplay';
-
-const URLFieldValueSetterEffect = ({ value }: { value: string }) => {
- const { setFieldValue } = useURLField();
-
- useEffect(() => {
- setFieldValue(value);
- }, [setFieldValue, value]);
-
- return null;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Display/URLFieldDisplay',
- decorators: [
- (Story, { args }) => (
-
-
-
-
-
-
- ),
- ComponentDecorator,
- ],
- component: URLFieldDisplay,
- args: {
- value: 'https://github.com/twentyhq',
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Elipsis: Story = {
- parameters: {
- container: { width: 200 },
- },
-};
diff --git a/front/src/modules/ui/object/field/meta-types/hooks/useChipField.ts b/front/src/modules/ui/object/field/meta-types/hooks/useChipField.ts
deleted file mode 100644
index 6a5163b9b..000000000
--- a/front/src/modules/ui/object/field/meta-types/hooks/useChipField.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import { useContext } from 'react';
-import { useRecoilState } from 'recoil';
-
-import { FieldContext } from '../../contexts/FieldContext';
-import { useFieldInitialValue } from '../../hooks/useFieldInitialValue';
-import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
-import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
-import { isFieldChip } from '../../types/guards/isFieldChip';
-
-export const useChipField = () => {
- const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
-
- assertFieldMetadata('CHIP', isFieldChip, fieldDefinition);
-
- const contentFieldName = fieldDefinition.metadata.contentFieldName;
- const avatarUrlFieldName = fieldDefinition.metadata.urlFieldName;
-
- const [contentFieldValue, setContentFieldValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: contentFieldName,
- }),
- );
-
- const [avatarFieldValue, setAvatarFieldValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: avatarUrlFieldName,
- }),
- );
-
- const fieldInitialValue = useFieldInitialValue();
-
- const initialContentValue = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value ?? contentFieldValue;
-
- const initialAvatarValue = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value
- ? ''
- : avatarFieldValue;
-
- return {
- fieldDefinition,
- contentFieldValue,
- initialContentValue,
- setContentFieldValue,
- avatarFieldValue,
- initialAvatarValue,
- setAvatarFieldValue,
- entityId,
- hotkeyScope,
- };
-};
diff --git a/front/src/modules/ui/object/field/meta-types/hooks/useDoubleTextChipField.ts b/front/src/modules/ui/object/field/meta-types/hooks/useDoubleTextChipField.ts
deleted file mode 100644
index 279a914ea..000000000
--- a/front/src/modules/ui/object/field/meta-types/hooks/useDoubleTextChipField.ts
+++ /dev/null
@@ -1,75 +0,0 @@
-import { useContext } from 'react';
-import { useRecoilState } from 'recoil';
-
-import { FieldContext } from '../../contexts/FieldContext';
-import { useFieldInitialValue } from '../../hooks/useFieldInitialValue';
-import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
-import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
-import { isFieldDoubleTextChip } from '../../types/guards/isFieldDoubleTextChip';
-
-export const useDoubleTextChipField = () => {
- const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
-
- assertFieldMetadata(
- 'DOUBLE_TEXT_CHIP',
- isFieldDoubleTextChip,
- fieldDefinition,
- );
-
- const [firstValue, setFirstValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldDefinition.metadata.firstValueFieldName,
- }),
- );
-
- const [secondValue, setSecondValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldDefinition.metadata.secondValueFieldName,
- }),
- );
-
- const [avatarUrl, setAvatarUrl] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldDefinition.metadata.avatarUrlFieldName,
- }),
- );
-
- const fullValue = [firstValue, secondValue].filter(Boolean).join(' ');
-
- const fieldInitialValue = useFieldInitialValue();
-
- const initialFirstValue = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value ?? firstValue;
-
- const initialSecondValue = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value
- ? ''
- : secondValue;
-
- const initialAvatarUrl = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value
- ? ''
- : avatarUrl;
-
- return {
- fieldDefinition,
- avatarUrl,
- setAvatarUrl,
- secondValue,
- setSecondValue,
- firstValue,
- setFirstValue,
- fullValue,
- entityId,
- hotkeyScope,
- initialAvatarUrl,
- initialFirstValue,
- initialSecondValue,
- };
-};
diff --git a/front/src/modules/ui/object/field/meta-types/hooks/useEnumField.ts b/front/src/modules/ui/object/field/meta-types/hooks/useEnumField.ts
deleted file mode 100644
index 9e09be1f6..000000000
--- a/front/src/modules/ui/object/field/meta-types/hooks/useEnumField.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { useContext } from 'react';
-import { useRecoilState } from 'recoil';
-
-import { FieldEnumValue } from '@/ui/object/field/types/FieldMetadata';
-import { ThemeColor } from '@/ui/theme/constants/colors';
-
-import { FieldContext } from '../../contexts/FieldContext';
-import { useFieldInitialValue } from '../../hooks/useFieldInitialValue';
-import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
-import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
-import { isFieldEnum } from '../../types/guards/isFieldEnum';
-import { isFieldEnumValue } from '../../types/guards/isFieldEnumValue';
-
-export const useEnumField = () => {
- const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
-
- assertFieldMetadata('ENUM', isFieldEnum, fieldDefinition);
-
- const { fieldName } = fieldDefinition.metadata;
-
- const [fieldValue, setFieldValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldName,
- }),
- );
- const fieldEnumValue = isFieldEnumValue(fieldValue)
- ? fieldValue
- : { color: 'green' as ThemeColor, text: '' };
-
- const fieldInitialValue = useFieldInitialValue();
-
- const initialValue = {
- color: 'green' as ThemeColor,
- text: fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value ?? fieldEnumValue?.text ?? '',
- };
-
- return {
- fieldDefinition,
- fieldValue: fieldEnumValue,
- initialValue,
- setFieldValue,
- hotkeyScope,
- };
-};
diff --git a/front/src/modules/ui/object/field/meta-types/hooks/useMoneyField.ts b/front/src/modules/ui/object/field/meta-types/hooks/useMoneyField.ts
deleted file mode 100644
index 4baa9cd27..000000000
--- a/front/src/modules/ui/object/field/meta-types/hooks/useMoneyField.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { useContext } from 'react';
-import { useRecoilState } from 'recoil';
-
-import {
- canBeCastAsIntegerOrNull,
- castAsIntegerOrNull,
-} from '~/utils/cast-as-integer-or-null';
-
-import { FieldContext } from '../../contexts/FieldContext';
-import { useFieldInitialValue } from '../../hooks/useFieldInitialValue';
-import { usePersistField } from '../../hooks/usePersistField';
-import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
-import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
-import { isFieldMoney } from '../../types/guards/isFieldMoney';
-
-export const useMoneyField = () => {
- const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
-
- assertFieldMetadata('MONEY_AMOUNT', isFieldMoney, fieldDefinition);
-
- const fieldName = fieldDefinition.metadata.fieldName;
-
- const [fieldValue, setFieldValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldName,
- }),
- );
-
- const persistField = usePersistField();
-
- const persistMoneyField = (newValue: string) => {
- if (!canBeCastAsIntegerOrNull(newValue)) {
- return;
- }
-
- const castedValue = castAsIntegerOrNull(newValue);
-
- persistField(castedValue);
- };
-
- const fieldInitialValue = useFieldInitialValue();
-
- const initialValue = fieldInitialValue?.isEmpty
- ? null
- : !isNaN(Number(fieldInitialValue?.value))
- ? Number(fieldInitialValue?.value)
- : null ?? fieldValue;
-
- return {
- fieldDefinition,
- fieldValue,
- initialValue,
- setFieldValue,
- hotkeyScope,
- persistMoneyField,
- };
-};
diff --git a/front/src/modules/ui/object/field/meta-types/hooks/useURLField.ts b/front/src/modules/ui/object/field/meta-types/hooks/useURLField.ts
deleted file mode 100644
index f82981e8f..000000000
--- a/front/src/modules/ui/object/field/meta-types/hooks/useURLField.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-import { useContext } from 'react';
-import { useRecoilState } from 'recoil';
-
-import { isURL } from '~/utils/is-url';
-
-import { FieldContext } from '../../contexts/FieldContext';
-import { useFieldInitialValue } from '../../hooks/useFieldInitialValue';
-import { usePersistField } from '../../hooks/usePersistField';
-import { entityFieldsFamilySelector } from '../../states/selectors/entityFieldsFamilySelector';
-import { assertFieldMetadata } from '../../types/guards/assertFieldMetadata';
-import { isFieldURL } from '../../types/guards/isFieldURL';
-import { isFieldURLValue } from '../../types/guards/isFieldURLValue';
-
-export const useURLField = () => {
- const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
-
- assertFieldMetadata('URL', isFieldURL, fieldDefinition);
-
- const fieldName = fieldDefinition.metadata.fieldName;
-
- const [fieldValue, setFieldValue] = useRecoilState(
- entityFieldsFamilySelector({
- entityId: entityId,
- fieldName: fieldName,
- }),
- );
- const fieldUrlValue = isFieldURLValue(fieldValue) ? fieldValue : '';
-
- const fieldInitialValue = useFieldInitialValue();
-
- const initialValue = fieldInitialValue?.isEmpty
- ? ''
- : fieldInitialValue?.value ?? fieldUrlValue;
-
- const persistField = usePersistField();
-
- const persistURLField = (newValue: string) => {
- if (!isURL(newValue) && newValue !== '') {
- return;
- }
-
- persistField(newValue);
- };
-
- return {
- fieldDefinition,
- fieldValue: fieldUrlValue,
- initialValue,
- setFieldValue,
- hotkeyScope,
- persistURLField,
- };
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/ChipFieldInput.tsx b/front/src/modules/ui/object/field/meta-types/input/components/ChipFieldInput.tsx
deleted file mode 100644
index 60d43e503..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/ChipFieldInput.tsx
+++ /dev/null
@@ -1,66 +0,0 @@
-import { TextInput } from '@/ui/object/field/meta-types/input/components/internal/TextInput';
-
-import { usePersistField } from '../../../hooks/usePersistField';
-import { useChipField } from '../../hooks/useChipField';
-
-import { FieldInputOverlay } from './internal/FieldInputOverlay';
-import { FieldInputEvent } from './DateFieldInput';
-
-export type ChipFieldInputProps = {
- onClickOutside?: FieldInputEvent;
- onEnter?: FieldInputEvent;
- onEscape?: FieldInputEvent;
- onTab?: FieldInputEvent;
- onShiftTab?: FieldInputEvent;
-};
-
-export const ChipFieldInput = ({
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: ChipFieldInputProps) => {
- const { fieldDefinition, initialContentValue, hotkeyScope } = useChipField();
-
- const persistField = usePersistField();
-
- const handleEnter = (newText: string) => {
- onEnter?.(() => persistField(newText));
- };
-
- const handleEscape = (newText: string) => {
- onEscape?.(() => persistField(newText));
- };
-
- const handleClickOutside = (
- event: MouseEvent | TouchEvent,
- newText: string,
- ) => {
- onClickOutside?.(() => persistField(newText));
- };
-
- const handleTab = (newText: string) => {
- onTab?.(() => persistField(newText));
- };
-
- const handleShiftTab = (newText: string) => {
- onShiftTab?.(() => persistField(newText));
- };
-
- return (
-
-
-
- );
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/DoubleTextChipFieldInput.tsx b/front/src/modules/ui/object/field/meta-types/input/components/FullNameFieldInput.tsx
similarity index 57%
rename from front/src/modules/ui/object/field/meta-types/input/components/DoubleTextChipFieldInput.tsx
rename to front/src/modules/ui/object/field/meta-types/input/components/FullNameFieldInput.tsx
index 5b375ecd1..40722f4fc 100644
--- a/front/src/modules/ui/object/field/meta-types/input/components/DoubleTextChipFieldInput.tsx
+++ b/front/src/modules/ui/object/field/meta-types/input/components/FullNameFieldInput.tsx
@@ -1,13 +1,13 @@
+import { useFullNameField } from '@/ui/object/field/meta-types/hooks/useFullNameField';
import { DoubleTextInput } from '@/ui/object/field/meta-types/input/components/internal/DoubleTextInput';
import { FieldDoubleText } from '@/ui/object/field/types/FieldDoubleText';
import { usePersistField } from '../../../hooks/usePersistField';
-import { useDoubleTextChipField } from '../../hooks/useDoubleTextChipField';
import { FieldInputOverlay } from './internal/FieldInputOverlay';
import { FieldInputEvent } from './DateFieldInput';
-export type DoubleTextChipFieldInputProps = {
+export type FullNameFieldInputProps = {
onClickOutside?: FieldInputEvent;
onEnter?: FieldInputEvent;
onEscape?: FieldInputEvent;
@@ -15,52 +15,53 @@ export type DoubleTextChipFieldInputProps = {
onShiftTab?: FieldInputEvent;
};
-export const DoubleTextChipFieldInput = ({
+export const FullNameFieldInput = ({
onEnter,
onEscape,
onClickOutside,
onTab,
onShiftTab,
-}: DoubleTextChipFieldInputProps) => {
- const {
- fieldDefinition,
- initialFirstValue,
- initialSecondValue,
- hotkeyScope,
- } = useDoubleTextChipField();
+}: FullNameFieldInputProps) => {
+ const { hotkeyScope, initialValue } = useFullNameField();
const persistField = usePersistField();
+ const convertToFullName = (newDoubleText: FieldDoubleText) => {
+ return {
+ firstName: newDoubleText.firstValue,
+ lastName: newDoubleText.secondValue,
+ };
+ };
const handleEnter = (newDoubleText: FieldDoubleText) => {
- onEnter?.(() => persistField(newDoubleText));
+ onEnter?.(() => persistField(convertToFullName(newDoubleText)));
};
const handleEscape = (newDoubleText: FieldDoubleText) => {
- onEscape?.(() => persistField(newDoubleText));
+ onEscape?.(() => persistField(convertToFullName(newDoubleText)));
};
const handleClickOutside = (
event: MouseEvent | TouchEvent,
newDoubleText: FieldDoubleText,
) => {
- onClickOutside?.(() => persistField(newDoubleText));
+ onClickOutside?.(() => persistField(convertToFullName(newDoubleText)));
};
const handleTab = (newDoubleText: FieldDoubleText) => {
- onTab?.(() => persistField(newDoubleText));
+ onTab?.(() => persistField(convertToFullName(newDoubleText)));
};
const handleShiftTab = (newDoubleText: FieldDoubleText) => {
- onShiftTab?.(() => persistField(newDoubleText));
+ onShiftTab?.(() => persistField(convertToFullName(newDoubleText)));
};
return (
void) => void;
-
-export type MoneyFieldInputProps = {
- onClickOutside?: FieldInputEvent;
- onEnter?: FieldInputEvent;
- onEscape?: FieldInputEvent;
- onTab?: FieldInputEvent;
- onShiftTab?: FieldInputEvent;
-};
-
-export const MoneyFieldInput = ({
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: MoneyFieldInputProps) => {
- const { fieldDefinition, hotkeyScope, persistMoneyField, initialValue } =
- useMoneyField();
-
- const handleEnter = (newText: string) => {
- onEnter?.(() => persistMoneyField(newText));
- };
-
- const handleEscape = (newText: string) => {
- onEscape?.(() => persistMoneyField(newText));
- };
-
- const handleClickOutside = (
- event: MouseEvent | TouchEvent,
- newText: string,
- ) => {
- onClickOutside?.(() => persistMoneyField(newText));
- };
-
- const handleTab = (newText: string) => {
- onTab?.(() => persistMoneyField(newText));
- };
-
- const handleShiftTab = (newText: string) => {
- onShiftTab?.(() => persistMoneyField(newText));
- };
-
- return (
-
-
-
- );
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/URLFieldInput.tsx b/front/src/modules/ui/object/field/meta-types/input/components/URLFieldInput.tsx
deleted file mode 100644
index 03147d90d..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/URLFieldInput.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { TextInput } from '@/ui/object/field/meta-types/input/components/internal/TextInput';
-
-import { useURLField } from '../../hooks/useURLField';
-
-import { FieldInputOverlay } from './internal/FieldInputOverlay';
-import { FieldInputEvent } from './DateFieldInput';
-
-export type URLFieldInputProps = {
- onClickOutside?: FieldInputEvent;
- onEnter?: FieldInputEvent;
- onEscape?: FieldInputEvent;
- onTab?: FieldInputEvent;
- onShiftTab?: FieldInputEvent;
-};
-
-export const URLFieldInput = ({
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: URLFieldInputProps) => {
- const { fieldDefinition, initialValue, hotkeyScope, persistURLField } =
- useURLField();
-
- const handleEnter = (newText: string) => {
- onEnter?.(() => persistURLField(newText));
- };
-
- const handleEscape = (newText: string) => {
- onEscape?.(() => persistURLField(newText));
- };
-
- const handleClickOutside = (
- event: MouseEvent | TouchEvent,
- newText: string,
- ) => {
- onClickOutside?.(() => persistURLField(newText));
- };
-
- const handleTab = (newText: string) => {
- onTab?.(() => persistURLField(newText));
- };
-
- const handleShiftTab = (newText: string) => {
- onShiftTab?.(() => persistURLField(newText));
- };
-
- return (
-
-
-
- );
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/ChipFieldInput.stories.tsx b/front/src/modules/ui/object/field/meta-types/input/components/__stories__/ChipFieldInput.stories.tsx
deleted file mode 100644
index 58bbdf490..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/ChipFieldInput.stories.tsx
+++ /dev/null
@@ -1,176 +0,0 @@
-import { useEffect } from 'react';
-import { expect, jest } from '@storybook/jest';
-import { Decorator, Meta, StoryObj } from '@storybook/react';
-import { userEvent, waitFor, within } from '@storybook/testing-library';
-
-import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
-
-import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
-import { useChipField } from '../../../hooks/useChipField';
-import { ChipFieldInput, ChipFieldInputProps } from '../ChipFieldInput';
-
-const ChipFieldValueSetterEffect = ({ value }: { value: string }) => {
- const { setContentFieldValue } = useChipField();
-
- useEffect(() => {
- setContentFieldValue(value);
- }, [setContentFieldValue, value]);
-
- return <>>;
-};
-
-type ChipFieldInputWithContextProps = ChipFieldInputProps & {
- value: string;
- entityId?: string;
-};
-
-const ChipFieldInputWithContext = ({
- entityId,
- value,
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: ChipFieldInputWithContextProps) => {
- const setHotKeyScope = useSetHotkeyScope();
-
- useEffect(() => {
- setHotKeyScope('hotkey-scope');
- }, [setHotKeyScope]);
-
- return (
-
- );
-};
-
-const enterJestFn = jest.fn();
-const escapeJestfn = jest.fn();
-const clickOutsideJestFn = jest.fn();
-const tabJestFn = jest.fn();
-const shiftTabJestFn = jest.fn();
-
-const clearMocksDecorator: Decorator = (Story, context) => {
- if (context.parameters.clearMocks) {
- enterJestFn.mockClear();
- escapeJestfn.mockClear();
- clickOutsideJestFn.mockClear();
- tabJestFn.mockClear();
- shiftTabJestFn.mockClear();
- }
- return ;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Input/ChipFieldInput',
- component: ChipFieldInputWithContext,
- args: {
- value: 'chip',
- onEnter: enterJestFn,
- onEscape: escapeJestfn,
- onClickOutside: clickOutsideJestFn,
- onTab: tabJestFn,
- onShiftTab: shiftTabJestFn,
- },
- argTypes: {
- onEnter: { control: false },
- onEscape: { control: false },
- onClickOutside: { control: false },
- onTab: { control: false },
- onShiftTab: { control: false },
- },
- parameters: {
- clearMocks: true,
- },
- decorators: [clearMocksDecorator],
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Enter: Story = {
- play: async () => {
- expect(enterJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{enter}');
- expect(enterJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Escape: Story = {
- play: async () => {
- expect(escapeJestfn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{esc}');
- expect(escapeJestfn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ClickOutside: Story = {
- play: async ({ canvasElement }) => {
- const canvas = within(canvasElement);
-
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(0);
-
- const emptyDiv = canvas.getByTestId('data-field-input-click-outside-div');
-
- await waitFor(() => {
- userEvent.click(emptyDiv);
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Tab: Story = {
- play: async () => {
- expect(tabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{tab}');
- expect(tabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ShiftTab: Story = {
- play: async () => {
- expect(shiftTabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{shift>}{tab}');
- expect(shiftTabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/DoubleTextChipFieldInput.stories.tsx b/front/src/modules/ui/object/field/meta-types/input/components/__stories__/DoubleTextChipFieldInput.stories.tsx
deleted file mode 100644
index 501d479e9..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/DoubleTextChipFieldInput.stories.tsx
+++ /dev/null
@@ -1,194 +0,0 @@
-import { useEffect } from 'react';
-import { expect, jest } from '@storybook/jest';
-import { Decorator, Meta, StoryObj } from '@storybook/react';
-import { userEvent, waitFor, within } from '@storybook/testing-library';
-
-import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
-
-import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
-import { useDoubleTextChipField } from '../../../hooks/useDoubleTextChipField';
-import {
- DoubleTextChipFieldInput,
- DoubleTextChipFieldInputProps,
-} from '../DoubleTextChipFieldInput';
-
-const DoubleTextChipFieldValueSetterEffect = ({
- firstValue,
- secondValue,
-}: {
- firstValue: string;
- secondValue: string;
-}) => {
- const { setFirstValue, setSecondValue } = useDoubleTextChipField();
-
- useEffect(() => {
- setFirstValue(firstValue);
- setSecondValue(secondValue);
- }, [firstValue, secondValue, setFirstValue, setSecondValue]);
-
- return <>>;
-};
-
-type DoubleTextChipFieldInputWithContextProps =
- DoubleTextChipFieldInputProps & {
- firstValue: string;
- secondValue: string;
- entityId?: string;
- };
-
-const DoubleTextChipFieldInputWithContext = ({
- entityId,
- firstValue,
- secondValue,
- onClickOutside,
- onEnter,
- onEscape,
- onTab,
- onShiftTab,
-}: DoubleTextChipFieldInputWithContextProps) => {
- const setHotKeyScope = useSetHotkeyScope();
-
- useEffect(() => {
- setHotKeyScope('hotkey-scope');
- }, [setHotKeyScope]);
-
- return (
-
- );
-};
-
-const enterJestFn = jest.fn();
-const escapeJestfn = jest.fn();
-const clickOutsideJestFn = jest.fn();
-const tabJestFn = jest.fn();
-const shiftTabJestFn = jest.fn();
-
-const clearMocksDecorator: Decorator = (Story, context) => {
- if (context.parameters.clearMocks) {
- enterJestFn.mockClear();
- escapeJestfn.mockClear();
- clickOutsideJestFn.mockClear();
- tabJestFn.mockClear();
- shiftTabJestFn.mockClear();
- }
- return ;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Input/DoubleTextChipFieldInput',
- component: DoubleTextChipFieldInputWithContext,
- args: {
- firstValue: 'first value',
- secondValue: 'second value',
- onEnter: enterJestFn,
- onEscape: escapeJestfn,
- onClickOutside: clickOutsideJestFn,
- onTab: tabJestFn,
- onShiftTab: shiftTabJestFn,
- },
- argTypes: {
- onEnter: { control: false },
- onEscape: { control: false },
- onClickOutside: { control: false },
- onTab: { control: false },
- onShiftTab: { control: false },
- },
- parameters: {
- clearMocks: true,
- },
- decorators: [clearMocksDecorator],
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Enter: Story = {
- play: async () => {
- expect(enterJestFn).toHaveBeenCalledTimes(0);
- await waitFor(() => {
- userEvent.keyboard('{enter}');
- expect(enterJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Escape: Story = {
- play: async () => {
- expect(escapeJestfn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{esc}');
- expect(escapeJestfn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ClickOutside: Story = {
- play: async ({ canvasElement }) => {
- const canvas = within(canvasElement);
-
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(0);
-
- const emptyDiv = canvas.getByTestId('data-field-input-click-outside-div');
-
- await waitFor(() => {
- userEvent.click(emptyDiv);
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Tab: Story = {
- play: async () => {
- expect(tabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{tab}');
- expect(tabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ShiftTab: Story = {
- play: async () => {
- expect(shiftTabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{shift>}{tab}');
- expect(shiftTabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/MoneyFieldInput.stories.tsx b/front/src/modules/ui/object/field/meta-types/input/components/__stories__/MoneyFieldInput.stories.tsx
deleted file mode 100644
index a2ce2beb5..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/MoneyFieldInput.stories.tsx
+++ /dev/null
@@ -1,176 +0,0 @@
-import { useEffect } from 'react';
-import { expect, jest } from '@storybook/jest';
-import { Decorator, Meta, StoryObj } from '@storybook/react';
-import { userEvent, waitFor, within } from '@storybook/testing-library';
-
-import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
-
-import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
-import { useMoneyField } from '../../../hooks/useMoneyField';
-import { MoneyFieldInput, MoneyFieldInputProps } from '../MoneyFieldInput';
-
-const MoneyFieldValueSetterEffect = ({ value }: { value: number }) => {
- const { setFieldValue } = useMoneyField();
-
- useEffect(() => {
- setFieldValue(value);
- }, [setFieldValue, value]);
-
- return <>>;
-};
-
-type MoneyFieldInputWithContextProps = MoneyFieldInputProps & {
- value: number;
- entityId?: string;
-};
-
-const MoneyFieldInputWithContext = ({
- entityId,
- value,
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: MoneyFieldInputWithContextProps) => {
- const setHotKeyScope = useSetHotkeyScope();
-
- useEffect(() => {
- setHotKeyScope('hotkey-scope');
- }, [setHotKeyScope]);
-
- return (
-
- );
-};
-
-const enterJestFn = jest.fn();
-const escapeJestfn = jest.fn();
-const clickOutsideJestFn = jest.fn();
-const tabJestFn = jest.fn();
-const shiftTabJestFn = jest.fn();
-
-const clearMocksDecorator: Decorator = (Story, context) => {
- if (context.parameters.clearMocks) {
- enterJestFn.mockClear();
- escapeJestfn.mockClear();
- clickOutsideJestFn.mockClear();
- tabJestFn.mockClear();
- shiftTabJestFn.mockClear();
- }
- return ;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Input/MoneyFieldInput',
- component: MoneyFieldInputWithContext,
- args: {
- value: 1000,
- isPositive: true,
- onEnter: enterJestFn,
- onEscape: escapeJestfn,
- onClickOutside: clickOutsideJestFn,
- onTab: tabJestFn,
- onShiftTab: shiftTabJestFn,
- },
- argTypes: {
- onEnter: { control: false },
- onEscape: { control: false },
- onClickOutside: { control: false },
- onTab: { control: false },
- onShiftTab: { control: false },
- },
- decorators: [clearMocksDecorator],
- parameters: {
- clearMocks: true,
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Enter: Story = {
- play: async () => {
- expect(enterJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{enter}');
- expect(enterJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Escape: Story = {
- play: async () => {
- expect(escapeJestfn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{esc}');
- expect(escapeJestfn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ClickOutside: Story = {
- play: async ({ canvasElement }) => {
- const canvas = within(canvasElement);
-
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(0);
-
- const emptyDiv = canvas.getByTestId('data-field-input-click-outside-div');
-
- await waitFor(() => {
- userEvent.click(emptyDiv);
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Tab: Story = {
- play: async () => {
- expect(tabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{tab}');
- expect(tabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ShiftTab: Story = {
- play: async () => {
- expect(shiftTabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{shift>}{tab}');
- expect(shiftTabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
diff --git a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/URLFieldInput.stories.tsx b/front/src/modules/ui/object/field/meta-types/input/components/__stories__/URLFieldInput.stories.tsx
deleted file mode 100644
index a9ba74a80..000000000
--- a/front/src/modules/ui/object/field/meta-types/input/components/__stories__/URLFieldInput.stories.tsx
+++ /dev/null
@@ -1,175 +0,0 @@
-import { useEffect } from 'react';
-import { expect, jest } from '@storybook/jest';
-import { Decorator, Meta, StoryObj } from '@storybook/react';
-import { userEvent, waitFor, within } from '@storybook/testing-library';
-
-import { useSetHotkeyScope } from '@/ui/utilities/hotkey/hooks/useSetHotkeyScope';
-
-import { FieldContextProvider } from '../../../__stories__/FieldContextProvider';
-import { useURLField } from '../../../hooks/useURLField';
-import { URLFieldInput, URLFieldInputProps } from '../URLFieldInput';
-
-const URLFieldValueSetterEffect = ({ value }: { value: string }) => {
- const { setFieldValue } = useURLField();
-
- useEffect(() => {
- setFieldValue(value);
- }, [setFieldValue, value]);
-
- return <>>;
-};
-
-type URLFieldInputWithContextProps = URLFieldInputProps & {
- value: string;
- entityId?: string;
-};
-
-const URLFieldInputWithContext = ({
- entityId,
- value,
- onEnter,
- onEscape,
- onClickOutside,
- onTab,
- onShiftTab,
-}: URLFieldInputWithContextProps) => {
- const setHotKeyScope = useSetHotkeyScope();
-
- useEffect(() => {
- setHotKeyScope('hotkey-scope');
- }, [setHotKeyScope]);
-
- return (
-
- );
-};
-
-const enterJestFn = jest.fn();
-const escapeJestfn = jest.fn();
-const clickOutsideJestFn = jest.fn();
-const tabJestFn = jest.fn();
-const shiftTabJestFn = jest.fn();
-
-const clearMocksDecorator: Decorator = (Story, context) => {
- if (context.parameters.clearMocks) {
- enterJestFn.mockClear();
- escapeJestfn.mockClear();
- clickOutsideJestFn.mockClear();
- tabJestFn.mockClear();
- shiftTabJestFn.mockClear();
- }
- return ;
-};
-
-const meta: Meta = {
- title: 'UI/Data/Field/Input/URLFieldInput',
- component: URLFieldInputWithContext,
- args: {
- value: 'https://username.domain',
- onEnter: enterJestFn,
- onEscape: escapeJestfn,
- onClickOutside: clickOutsideJestFn,
- onTab: tabJestFn,
- onShiftTab: shiftTabJestFn,
- },
- argTypes: {
- onEnter: { control: false },
- onEscape: { control: false },
- onClickOutside: { control: false },
- onTab: { control: false },
- onShiftTab: { control: false },
- },
- decorators: [clearMocksDecorator],
- parameters: {
- clearMocks: true,
- },
-};
-
-export default meta;
-
-type Story = StoryObj;
-
-export const Default: Story = {};
-
-export const Enter: Story = {
- play: async () => {
- expect(enterJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{enter}');
- expect(enterJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Escape: Story = {
- play: async () => {
- expect(escapeJestfn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{esc}');
- expect(escapeJestfn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ClickOutside: Story = {
- play: async ({ canvasElement }) => {
- const canvas = within(canvasElement);
-
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(0);
-
- const emptyDiv = canvas.getByTestId('data-field-input-click-outside-div');
-
- await waitFor(() => {
- userEvent.click(emptyDiv);
- expect(clickOutsideJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const Tab: Story = {
- play: async () => {
- expect(tabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{tab}');
- expect(tabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
-
-export const ShiftTab: Story = {
- play: async () => {
- expect(shiftTabJestFn).toHaveBeenCalledTimes(0);
-
- await waitFor(() => {
- userEvent.keyboard('{shift>}{tab}');
- expect(shiftTabJestFn).toHaveBeenCalledTimes(1);
- });
- },
-};
diff --git a/front/src/modules/ui/object/field/states/selectors/isEntityFieldEmptyFamilySelector.ts b/front/src/modules/ui/object/field/states/selectors/isEntityFieldEmptyFamilySelector.ts
index 8e42cf78e..b2ad90ccd 100644
--- a/front/src/modules/ui/object/field/states/selectors/isEntityFieldEmptyFamilySelector.ts
+++ b/front/src/modules/ui/object/field/states/selectors/isEntityFieldEmptyFamilySelector.ts
@@ -8,22 +8,18 @@ import { assertNotNull } from '~/utils/assert';
import { FieldDefinition } from '../../types/FieldDefinition';
import { FieldMetadata } from '../../types/FieldMetadata';
import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
-import { isFieldChip } from '../../types/guards/isFieldChip';
import { isFieldCurrency } from '../../types/guards/isFieldCurrency';
import { isFieldCurrencyValue } from '../../types/guards/isFieldCurrencyValue';
import { isFieldDate } from '../../types/guards/isFieldDate';
-import { isFieldDoubleTextChip } from '../../types/guards/isFieldDoubleTextChip';
import { isFieldEmail } from '../../types/guards/isFieldEmail';
import { isFieldLink } from '../../types/guards/isFieldLink';
import { isFieldLinkValue } from '../../types/guards/isFieldLinkValue';
-import { isFieldMoney } from '../../types/guards/isFieldMoney';
import { isFieldNumber } from '../../types/guards/isFieldNumber';
import { isFieldPhone } from '../../types/guards/isFieldPhone';
import { isFieldProbability } from '../../types/guards/isFieldProbability';
import { isFieldRelation } from '../../types/guards/isFieldRelation';
import { isFieldRelationValue } from '../../types/guards/isFieldRelationValue';
import { isFieldText } from '../../types/guards/isFieldText';
-import { isFieldURL } from '../../types/guards/isFieldURL';
import { entityFieldsFamilyState } from '../entityFieldsFamilyState';
const isValueEmpty = (value: unknown) => !assertNotNull(value) || value === '';
@@ -32,27 +28,24 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
key: 'isEntityFieldEmptyFamilySelector',
get: ({
fieldDefinition,
+ fieldName,
entityId,
}: {
- fieldDefinition: Pick, 'type'> & {
- metadata: Omit;
- };
+ fieldDefinition: Pick, 'type'>;
+ fieldName: string;
entityId: string;
}) => {
return ({ get }) => {
if (
isFieldUuid(fieldDefinition) ||
isFieldText(fieldDefinition) ||
- isFieldURL(fieldDefinition) ||
isFieldDate(fieldDefinition) ||
isFieldNumber(fieldDefinition) ||
isFieldProbability(fieldDefinition) ||
- isFieldMoney(fieldDefinition) ||
isFieldEmail(fieldDefinition) ||
isFieldBoolean(fieldDefinition) ||
isFieldPhone(fieldDefinition)
) {
- const fieldName = fieldDefinition.metadata.fieldName;
const fieldValue = get(entityFieldsFamilyState(entityId))?.[
fieldName
] as string | number | boolean | null;
@@ -61,46 +54,12 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
}
if (isFieldRelation(fieldDefinition)) {
- const fieldName = fieldDefinition.metadata.fieldName;
-
const fieldValue = get(entityFieldsFamilyState(entityId))?.[fieldName];
return isFieldRelationValue(fieldValue) && isValueEmpty(fieldValue);
}
- if (isFieldChip(fieldDefinition)) {
- const contentFieldName = fieldDefinition.metadata.contentFieldName;
-
- const contentFieldValue = get(entityFieldsFamilyState(entityId))?.[
- contentFieldName
- ] as string | null;
-
- return isValueEmpty(contentFieldValue);
- }
-
- if (isFieldDoubleTextChip(fieldDefinition)) {
- const firstValueFieldName =
- fieldDefinition.metadata.firstValueFieldName;
-
- const secondValueFieldName =
- fieldDefinition.metadata.secondValueFieldName;
-
- const contentFieldFirstValue = get(entityFieldsFamilyState(entityId))?.[
- firstValueFieldName
- ] as string | null;
-
- const contentFieldSecondValue = get(
- entityFieldsFamilyState(entityId),
- )?.[secondValueFieldName] as string | null;
-
- return (
- isValueEmpty(contentFieldFirstValue) &&
- isValueEmpty(contentFieldSecondValue)
- );
- }
-
if (isFieldCurrency(fieldDefinition)) {
- const fieldName = fieldDefinition.metadata.fieldName;
const fieldValue = get(entityFieldsFamilyState(entityId))?.[fieldName];
return (
@@ -110,7 +69,6 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
}
if (isFieldFullName(fieldDefinition)) {
- const fieldName = fieldDefinition.metadata.fieldName;
const fieldValue = get(entityFieldsFamilyState(entityId))?.[fieldName];
return (
@@ -120,7 +78,6 @@ export const isEntityFieldEmptyFamilySelector = selectorFamily({
}
if (isFieldLink(fieldDefinition)) {
- const fieldName = fieldDefinition.metadata.fieldName;
const fieldValue = get(entityFieldsFamilyState(entityId))?.[fieldName];
return !isFieldLinkValue(fieldValue) || isValueEmpty(fieldValue?.url);
diff --git a/front/src/modules/ui/object/field/types/FieldMetadata.ts b/front/src/modules/ui/object/field/types/FieldMetadata.ts
index c83b46f4f..67a1c9be0 100644
--- a/front/src/modules/ui/object/field/types/FieldMetadata.ts
+++ b/front/src/modules/ui/object/field/types/FieldMetadata.ts
@@ -1,9 +1,11 @@
import { EntityForSelect } from '@/ui/input/relation-picker/types/EntityForSelect';
import { MainIdentifierMapper } from '@/ui/object/field/types/MainIdentifierMapper';
-import { ThemeColor } from '@/ui/theme/constants/colors';
export type FieldUuidMetadata = {
- placeHolder: string;
+ fieldName: string;
+};
+
+export type FieldBooleanMetadata = {
fieldName: string;
};
@@ -12,22 +14,8 @@ export type FieldTextMetadata = {
fieldName: string;
};
-export type FieldPhoneMetadata = {
- placeHolder: string;
- fieldName: string;
-};
-
-export type FieldURLMetadata = {
- placeHolder: string;
- fieldName: string;
-};
-
-export type FieldLinkMetadata = {
- placeHolder: string;
- fieldName: string;
-};
-
export type FieldDateMetadata = {
+ placeHolder: string;
fieldName: string;
};
@@ -37,10 +25,9 @@ export type FieldNumberMetadata = {
isPositive?: boolean;
};
-export type FieldMoneyMetadata = {
- fieldName: string;
+export type FieldLinkMetadata = {
placeHolder: string;
- isPositive?: boolean;
+ fieldName: string;
};
export type FieldCurrencyMetadata = {
@@ -49,13 +36,23 @@ export type FieldCurrencyMetadata = {
isPositive?: boolean;
};
-export type FieldFullnameMetadata = {
+export type FieldFullNameMetadata = {
+ placeHolder: string;
fieldName: string;
};
export type FieldEmailMetadata = {
- fieldName: string;
placeHolder: string;
+ fieldName: string;
+};
+
+export type FieldPhoneMetadata = {
+ placeHolder: string;
+ fieldName: string;
+};
+
+export type FieldProbabilityMetadata = {
+ fieldName: string;
};
export type FieldDefinitionRelationType =
@@ -74,85 +71,31 @@ export type FieldRelationMetadata = {
objectMetadataNamePlural: string;
};
-export type FieldChipMetadata = {
- contentFieldName: string;
- urlFieldName: string;
- placeHolder: string;
-};
-
-export type FieldDoubleTextMetadata = {
- firstValueFieldName: string;
- firstValuePlaceholder: string;
- secondValueFieldName: string;
- secondValuePlaceholder: string;
-};
-
-export type FieldDoubleTextChipMetadata = {
- firstValueFieldName: string;
- firstValuePlaceholder: string;
- secondValueFieldName: string;
- secondValuePlaceholder: string;
- avatarUrlFieldName: string;
-};
-
-export type FieldProbabilityMetadata = {
- fieldName: string;
-};
-
-export type FieldBooleanMetadata = {
- fieldName: string;
-};
-
-export type FieldEnumMetadata = {
- fieldName: string;
-};
-
export type FieldMetadata =
| FieldBooleanMetadata
- | FieldChipMetadata
- | FieldCurrencyMetadata
- | FieldDateMetadata
- | FieldDoubleTextChipMetadata
- | FieldDoubleTextMetadata
- | FieldEmailMetadata
- | FieldLinkMetadata
- | FieldMoneyMetadata
| FieldNumberMetadata
- | FieldPhoneMetadata
- | FieldProbabilityMetadata
- | FieldEnumMetadata
- | FieldRelationMetadata
+ | FieldDateMetadata
| FieldTextMetadata
- | FieldURLMetadata
- | FieldUuidMetadata;
+ | FieldUuidMetadata
+ | FieldCurrencyMetadata
+ | FieldLinkMetadata
+ | FieldPhoneMetadata
+ | FieldEmailMetadata
+ | FieldProbabilityMetadata
+ | FieldRelationMetadata
+ | FieldFullNameMetadata;
export type FieldTextValue = string;
export type FieldUUidValue = string;
-
-export type FieldChipValue = string;
export type FieldDateValue = string | null;
-export type FieldPhoneValue = string;
-export type FieldURLValue = string;
-export type FieldLinkValue = { url: string; label: string };
export type FieldNumberValue = number | null;
-export type FieldMoneyValue = number | null;
-export type FieldCurrencyValue = { currencyCode: string; amountMicros: number };
-export type FieldFullNameValue = { firstName: string; lastName: string };
-
-export type FieldEmailValue = string;
-export type FieldProbabilityValue = number;
export type FieldBooleanValue = boolean;
-export type FieldDoubleTextValue = {
- firstValue: string;
- secondValue: string;
-};
-
-export type FieldDoubleTextChipValue = {
- firstValue: string;
- secondValue: string;
-};
+export type FieldPhoneValue = string;
+export type FieldEmailValue = string;
+export type FieldLinkValue = { url: string; label: string };
+export type FieldCurrencyValue = { currencyCode: string; amountMicros: number };
+export type FieldFullNameValue = { firstName: string; lastName: string };
+export type FieldProbabilityValue = number;
export type FieldRelationValue = EntityForSelect | null;
-
-export type FieldEnumValue = { color: ThemeColor; text: string };
diff --git a/front/src/modules/ui/object/field/types/guards/assertFieldMetadata.ts b/front/src/modules/ui/object/field/types/guards/assertFieldMetadata.ts
index 5f05b75e9..414cfc6cb 100644
--- a/front/src/modules/ui/object/field/types/guards/assertFieldMetadata.ts
+++ b/front/src/modules/ui/object/field/types/guards/assertFieldMetadata.ts
@@ -1,23 +1,17 @@
import { FieldDefinition } from '../FieldDefinition';
import {
FieldBooleanMetadata,
- FieldChipMetadata,
FieldCurrencyMetadata,
FieldDateMetadata,
- FieldDoubleTextChipMetadata,
- FieldDoubleTextMetadata,
FieldEmailMetadata,
- FieldEnumMetadata,
- FieldFullnameMetadata,
+ FieldFullNameMetadata,
FieldLinkMetadata,
FieldMetadata,
- FieldMoneyMetadata,
FieldNumberMetadata,
FieldPhoneMetadata,
FieldProbabilityMetadata,
FieldRelationMetadata,
FieldTextMetadata,
- FieldURLMetadata,
FieldUuidMetadata,
} from '../FieldMetadata';
import { FieldType } from '../FieldType';
@@ -26,26 +20,16 @@ type AssertFieldMetadataFunction = <
E extends FieldType,
T extends E extends 'BOOLEAN'
? FieldBooleanMetadata
- : E extends 'CHIP'
- ? FieldChipMetadata
: E extends 'CURRENCY'
? FieldCurrencyMetadata
: E extends 'FULL_NAME'
- ? FieldFullnameMetadata
+ ? FieldFullNameMetadata
: E extends 'DATE'
? FieldDateMetadata
- : E extends 'DOUBLE_TEXT'
- ? FieldDoubleTextMetadata
- : E extends 'DOUBLE_TEXT_CHIP'
- ? FieldDoubleTextChipMetadata
: E extends 'EMAIL'
? FieldEmailMetadata
: E extends 'LINK'
? FieldLinkMetadata
- : E extends 'MONEY_AMOUNT'
- ? FieldMoneyMetadata
- : E extends 'ENUM'
- ? FieldEnumMetadata
: E extends 'NUMBER'
? FieldNumberMetadata
: E extends 'PHONE'
@@ -56,8 +40,6 @@ type AssertFieldMetadataFunction = <
? FieldRelationMetadata
: E extends 'TEXT'
? FieldTextMetadata
- : E extends 'URL'
- ? FieldURLMetadata
: E extends 'UUID'
? FieldUuidMetadata
: never,
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldChip.ts b/front/src/modules/ui/object/field/types/guards/isFieldChip.ts
deleted file mode 100644
index e3082a793..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldChip.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldChipMetadata, FieldMetadata } from '../FieldMetadata';
-
-export const isFieldChip = (
- field: Pick, 'type'>,
-): field is FieldDefinition => field.type === 'CHIP';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldChipValue.ts b/front/src/modules/ui/object/field/types/guards/isFieldChipValue.ts
deleted file mode 100644
index d276b36af..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldChipValue.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { isString } from '@sniptt/guards';
-
-import { FieldChipValue } from '../FieldMetadata';
-
-// TODO: add zod
-export const isFieldChipValue = (
- fieldValue: unknown,
-): fieldValue is FieldChipValue => isString(fieldValue);
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldDoubleText.ts b/front/src/modules/ui/object/field/types/guards/isFieldDoubleText.ts
deleted file mode 100644
index 55b41b834..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldDoubleText.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldDoubleTextMetadata, FieldMetadata } from '../FieldMetadata';
-
-export const isFieldDoubleText = (
- field: Pick, 'type'>,
-): field is FieldDefinition =>
- field.type === 'DOUBLE_TEXT';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChip.ts b/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChip.ts
deleted file mode 100644
index cdd9e5f7e..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChip.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldDoubleTextChipMetadata, FieldMetadata } from '../FieldMetadata';
-
-export const isFieldDoubleTextChip = (
- field: Pick, 'type'>,
-): field is FieldDefinition =>
- field.type === 'DOUBLE_TEXT_CHIP';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChipValue.ts b/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChipValue.ts
deleted file mode 100644
index ae90fe9ce..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextChipValue.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { FieldDoubleTextChipValue } from '../FieldMetadata';
-import { DoubleTextTypeResolver } from '../resolvers/DoubleTextTypeResolver';
-
-export const isFieldDoubleTextChipValue = (
- fieldValue: unknown,
-): fieldValue is FieldDoubleTextChipValue =>
- fieldValue !== null &&
- fieldValue !== undefined &&
- DoubleTextTypeResolver.safeParse(fieldValue).success;
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextValue.ts b/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextValue.ts
deleted file mode 100644
index 53eeee541..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldDoubleTextValue.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { FieldDoubleTextValue } from '../FieldMetadata';
-import { DoubleTextTypeResolver } from '../resolvers/DoubleTextTypeResolver';
-
-// TODO: add zod
-export const isFieldDoubleTextValue = (
- fieldValue: unknown,
-): fieldValue is FieldDoubleTextValue =>
- fieldValue !== null &&
- fieldValue !== undefined &&
- DoubleTextTypeResolver.safeParse(fieldValue).success;
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldEnum.ts b/front/src/modules/ui/object/field/types/guards/isFieldEnum.ts
deleted file mode 100644
index 25a6f3950..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldEnum.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldEnumMetadata, FieldMetadata } from '../FieldMetadata';
-
-export const isFieldEnum = (
- field: Pick, 'type'>,
-): field is FieldDefinition => field.type === 'ENUM';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldFullName.ts b/front/src/modules/ui/object/field/types/guards/isFieldFullName.ts
index d94e08138..be2571117 100644
--- a/front/src/modules/ui/object/field/types/guards/isFieldFullName.ts
+++ b/front/src/modules/ui/object/field/types/guards/isFieldFullName.ts
@@ -1,7 +1,7 @@
import { FieldDefinition } from '../FieldDefinition';
-import { FieldCurrencyMetadata, FieldMetadata } from '../FieldMetadata';
+import { FieldFullNameMetadata, FieldMetadata } from '../FieldMetadata';
export const isFieldFullName = (
field: Pick, 'type'>,
-): field is FieldDefinition =>
+): field is FieldDefinition =>
field.type === 'FULL_NAME';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldMoney.ts b/front/src/modules/ui/object/field/types/guards/isFieldMoney.ts
deleted file mode 100644
index 3131b9db0..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldMoney.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldMetadata, FieldMoneyMetadata } from '../FieldMetadata';
-
-export const isFieldMoney = (
- field: Pick, 'type'>,
-): field is FieldDefinition =>
- field.type === 'MONEY_AMOUNT';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldMoneyValue.ts b/front/src/modules/ui/object/field/types/guards/isFieldMoneyValue.ts
deleted file mode 100644
index 9db82cf2d..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldMoneyValue.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { isNull, isNumber } from '@sniptt/guards';
-
-import { FieldMoneyValue } from '../FieldMetadata';
-
-// TODO: add zod
-export const isFieldMoneyValue = (
- fieldValue: unknown,
-): fieldValue is FieldMoneyValue => isNull(fieldValue) || isNumber(fieldValue);
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldURL.ts b/front/src/modules/ui/object/field/types/guards/isFieldURL.ts
deleted file mode 100644
index 548ea2b24..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldURL.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { FieldDefinition } from '../FieldDefinition';
-import { FieldMetadata, FieldURLMetadata } from '../FieldMetadata';
-
-export const isFieldURL = (
- field: Pick, 'type'>,
-): field is FieldDefinition => field.type === 'URL';
diff --git a/front/src/modules/ui/object/field/types/guards/isFieldURLValue.ts b/front/src/modules/ui/object/field/types/guards/isFieldURLValue.ts
deleted file mode 100644
index dede3f5fb..000000000
--- a/front/src/modules/ui/object/field/types/guards/isFieldURLValue.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { isString } from '@sniptt/guards';
-
-import { FieldURLValue } from '../FieldMetadata';
-
-// TODO: add zod
-export const isFieldURLValue = (
- fieldValue: unknown,
-): fieldValue is FieldURLValue => isString(fieldValue);