feat: refactor schema builder and resolver builder (#2215)
* feat: wip refactor schema builder * feat: wip store types and first queries generation * feat: refactor schema-builder and resolver-builder * fix: clean & small type fix * fix: avoid breaking change * fix: remove util from pg-graphql classes * fix: required default fields * Refactor frontend accordingly --------- Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
@ -26,7 +26,7 @@ export const ActivityAssigneeEditableField = ({
|
||||
fieldId: 'assignee',
|
||||
label: 'Assignee',
|
||||
Icon: IconUserCircle,
|
||||
type: 'relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
fieldName: 'assignee',
|
||||
relationType: Entity.User,
|
||||
|
||||
@ -24,7 +24,7 @@ export const ActivityEditorDateField = ({
|
||||
fieldId: 'activityDueAt',
|
||||
label: 'Due date',
|
||||
Icon: IconCalendar,
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'dueAt',
|
||||
},
|
||||
|
||||
@ -23,7 +23,7 @@ export const useCurrentUserTaskCount = () => {
|
||||
displayValue: currentUser.displayName,
|
||||
displayAvatarUrl: currentUser.avatarUrl ?? undefined,
|
||||
definition: {
|
||||
type: 'entity',
|
||||
type: 'ENTITY',
|
||||
},
|
||||
})
|
||||
: {}),
|
||||
|
||||
@ -33,7 +33,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconBuildingSkyscraper,
|
||||
size: 180,
|
||||
position: 0,
|
||||
type: 'chip',
|
||||
type: 'CHIP',
|
||||
metadata: {
|
||||
urlFieldName: 'domainName',
|
||||
contentFieldName: 'name',
|
||||
@ -50,7 +50,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconLink,
|
||||
size: 100,
|
||||
position: 1,
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'domainName',
|
||||
placeHolder: 'example.com',
|
||||
@ -65,7 +65,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconUserCircle,
|
||||
size: 150,
|
||||
position: 2,
|
||||
type: 'relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
fieldName: 'accountOwner',
|
||||
relationType: Entity.User,
|
||||
@ -87,7 +87,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconCalendarEvent,
|
||||
size: 150,
|
||||
position: 3,
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'createdAt',
|
||||
},
|
||||
@ -100,7 +100,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconUsers,
|
||||
size: 150,
|
||||
position: 4,
|
||||
type: 'number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
fieldName: 'employees',
|
||||
isPositive: true,
|
||||
@ -115,7 +115,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconBrandLinkedin,
|
||||
size: 170,
|
||||
position: 5,
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'linkedinUrl',
|
||||
placeHolder: 'LinkedIn URL',
|
||||
@ -129,7 +129,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconMap,
|
||||
size: 170,
|
||||
position: 6,
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'address',
|
||||
placeHolder: 'Address', // Hack: Fake character to prevent password-manager from filling the field
|
||||
@ -143,7 +143,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconTarget,
|
||||
size: 150,
|
||||
position: 7,
|
||||
type: 'boolean',
|
||||
type: 'BOOLEAN',
|
||||
metadata: {
|
||||
fieldName: 'idealCustomerProfile',
|
||||
},
|
||||
@ -157,7 +157,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconMoneybag,
|
||||
size: 150,
|
||||
position: 8,
|
||||
type: 'moneyAmount',
|
||||
type: 'MONEY_AMOUNT',
|
||||
metadata: {
|
||||
fieldName: 'annualRecurringRevenue',
|
||||
placeHolder: 'ARR',
|
||||
@ -171,7 +171,7 @@ export const companiesAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>
|
||||
Icon: IconBrandX,
|
||||
size: 150,
|
||||
position: 9,
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'xUrl',
|
||||
placeHolder: 'X',
|
||||
@ -189,7 +189,7 @@ export const suppliersAvailableColumnDefinitions: ColumnDefinition<FieldMetadata
|
||||
Icon: IconBuildingSkyscraper,
|
||||
size: 180,
|
||||
position: 0,
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'name',
|
||||
placeHolder: 'Company Name',
|
||||
@ -204,7 +204,7 @@ export const suppliersAvailableColumnDefinitions: ColumnDefinition<FieldMetadata
|
||||
Icon: IconBuildingSkyscraper,
|
||||
size: 180,
|
||||
position: 0,
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'city',
|
||||
placeHolder: 'Company Name',
|
||||
|
||||
@ -2,6 +2,7 @@ import { ApolloClient, useMutation } from '@apollo/client';
|
||||
import { getOperationName } from '@apollo/client/utilities';
|
||||
|
||||
import { FieldType } from '@/ui/object/field/types/FieldType';
|
||||
import { FieldMetadataType } from '~/generated/graphql';
|
||||
import {
|
||||
CreateOneMetadataFieldMutation,
|
||||
CreateOneMetadataFieldMutationVariables,
|
||||
@ -12,10 +13,12 @@ import { FIND_MANY_METADATA_OBJECTS } from '../graphql/queries';
|
||||
|
||||
import { useApolloMetadataClient } from './useApolloMetadataClient';
|
||||
|
||||
type CreateOneMetadataFieldArgs =
|
||||
CreateOneMetadataFieldMutationVariables['input']['field'] & {
|
||||
type: FieldType;
|
||||
};
|
||||
type CreateOneMetadataFieldArgs = Omit<
|
||||
CreateOneMetadataFieldMutationVariables['input']['field'],
|
||||
'type'
|
||||
> & {
|
||||
type: FieldType;
|
||||
};
|
||||
|
||||
export const useCreateOneMetadataField = () => {
|
||||
const apolloMetadataClient = useApolloMetadataClient();
|
||||
@ -33,6 +36,7 @@ export const useCreateOneMetadataField = () => {
|
||||
input: {
|
||||
field: {
|
||||
...input,
|
||||
type: input.type as FieldMetadataType, // Todo improve typing once we have aligned backend and frontend
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@ -1,44 +0,0 @@
|
||||
import { isNonEmptyArray } from '~/utils/isNonEmptyArray';
|
||||
|
||||
import { useCreateOneMetadataField } from './useCreateOneMetadataField';
|
||||
import { useCreateOneObjectMetadataItem } from './useCreateOneObjectMetadataItem';
|
||||
|
||||
export const useSeedCustomObjectsTemp = () => {
|
||||
const { createOneObjectMetadataItem } = useCreateOneObjectMetadataItem();
|
||||
const { createOneMetadataField } = useCreateOneMetadataField();
|
||||
|
||||
return async () => {
|
||||
const { data: createdObjectMetadataItem, errors } =
|
||||
await createOneObjectMetadataItem({
|
||||
labelPlural: 'Suppliers',
|
||||
labelSingular: 'Supplier',
|
||||
nameSingular: 'supplier',
|
||||
namePlural: 'suppliers',
|
||||
description: 'Suppliers',
|
||||
icon: 'IconBuilding',
|
||||
});
|
||||
|
||||
if (!isNonEmptyArray(errors)) {
|
||||
const supplierObjectId =
|
||||
createdObjectMetadataItem?.createOneObject?.id ?? '';
|
||||
|
||||
await createOneMetadataField({
|
||||
objectId: supplierObjectId,
|
||||
name: 'name',
|
||||
type: 'text',
|
||||
description: 'Name',
|
||||
label: 'Name',
|
||||
icon: 'IconBuilding',
|
||||
});
|
||||
|
||||
await createOneMetadataField({
|
||||
objectId: supplierObjectId,
|
||||
label: 'City',
|
||||
name: 'city',
|
||||
type: 'text',
|
||||
description: 'City',
|
||||
icon: 'IconMap',
|
||||
});
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -12,5 +12,5 @@ export const formatMetadataFieldAsFilterDefinition = ({
|
||||
fieldId: field.id,
|
||||
label: field.label,
|
||||
Icon: icons[field.icon ?? 'Icon123'],
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
});
|
||||
|
||||
@ -13,7 +13,7 @@ export const generateCreateOneObjectMutation = ({
|
||||
|
||||
return gql`
|
||||
mutation CreateOne${capitalizedObjectName}($input: ${capitalizedObjectName}CreateInput!) {
|
||||
createOne${capitalizedObjectName}(data: $input) {
|
||||
create${capitalizedObjectName}(data: $input) {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
@ -13,7 +13,7 @@ export const generateDeleteOneObjectMutation = ({
|
||||
|
||||
return gql`
|
||||
mutation DeleteOne${capitalizedObjectName}($idToDelete: ID!) {
|
||||
deleteOne${capitalizedObjectName}(id: $idToDelete) {
|
||||
delete${capitalizedObjectName}(id: $idToDelete) {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@ export const generateFindManyCustomObjectsQuery = ({
|
||||
objectMetadataItem.nameSingular,
|
||||
)}FilterInput, $orderBy: ${capitalize(
|
||||
objectMetadataItem.nameSingular,
|
||||
)}OrderBy) {
|
||||
)}OrderByInput) {
|
||||
${objectMetadataItem.namePlural}(filter: $filter, orderBy: $orderBy){
|
||||
edges {
|
||||
node {
|
||||
|
||||
@ -13,7 +13,7 @@ export const generateUpdateOneObjectMutation = ({
|
||||
|
||||
return gql`
|
||||
mutation UpdateOne${capitalizedObjectName}($idToUpdate: ID!, $input: ${capitalizedObjectName}UpdateInput!) {
|
||||
updateOne${capitalizedObjectName}(id: $idToUpdate, data: $input) {
|
||||
update${capitalizedObjectName}(id: $idToUpdate, data: $input) {
|
||||
id
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,20 +7,20 @@ export const mapFieldMetadataToGraphQLQuery = (field: Field) => {
|
||||
|
||||
const fieldIsSimpleValue = (
|
||||
[
|
||||
'text',
|
||||
'phone',
|
||||
'date',
|
||||
'email',
|
||||
'number',
|
||||
'boolean',
|
||||
'date',
|
||||
'TEXT',
|
||||
'PHONE',
|
||||
'DATE',
|
||||
'EMAIL',
|
||||
'NUMBER',
|
||||
'BOOLEAN',
|
||||
'DATE',
|
||||
] as FieldType[]
|
||||
).includes(fieldType);
|
||||
|
||||
const fieldIsURL = fieldType === 'url' || fieldType === 'urlV2';
|
||||
const fieldIsURL = fieldType === 'URL' || fieldType === 'URL_V2';
|
||||
|
||||
const fieldIsMoneyAmount =
|
||||
fieldType === 'money' || fieldType === 'moneyAmountV2';
|
||||
fieldType === 'MONEY' || fieldType === 'MONEY_AMOUNT_V2';
|
||||
|
||||
if (fieldIsSimpleValue) {
|
||||
return field.name;
|
||||
|
||||
@ -2,11 +2,11 @@ import { FieldType } from '@/ui/object/field/types/FieldType';
|
||||
|
||||
export const parseFieldType = (fieldType: string): FieldType => {
|
||||
if (fieldType === 'url') {
|
||||
return 'urlV2';
|
||||
return 'URL_V2';
|
||||
}
|
||||
|
||||
if (fieldType === 'money') {
|
||||
return 'moneyAmountV2';
|
||||
return 'MONEY_AMOUNT_V2';
|
||||
}
|
||||
|
||||
return fieldType as FieldType;
|
||||
|
||||
@ -32,7 +32,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconUser,
|
||||
size: 210,
|
||||
position: 0,
|
||||
type: 'double-text-chip',
|
||||
type: 'DOUBLE_TEXT_CHIP',
|
||||
metadata: {
|
||||
firstValueFieldName: 'firstName',
|
||||
secondValueFieldName: 'lastName',
|
||||
@ -49,7 +49,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
label: 'Email',
|
||||
Icon: IconMail,
|
||||
size: 150,
|
||||
type: 'email',
|
||||
type: 'EMAIL',
|
||||
position: 1,
|
||||
metadata: {
|
||||
fieldName: 'email',
|
||||
@ -63,7 +63,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconBuildingSkyscraper,
|
||||
size: 150,
|
||||
position: 2,
|
||||
type: 'relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
fieldName: 'company',
|
||||
relationType: Entity.Company,
|
||||
@ -83,7 +83,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconPhone,
|
||||
size: 150,
|
||||
position: 3,
|
||||
type: 'phone',
|
||||
type: 'PHONE',
|
||||
metadata: {
|
||||
fieldName: 'phone',
|
||||
placeHolder: 'Phone', // Hack: Fake character to prevent password-manager from filling the field
|
||||
@ -96,7 +96,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconCalendarEvent,
|
||||
size: 150,
|
||||
position: 4,
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'createdAt',
|
||||
},
|
||||
@ -108,7 +108,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconMap,
|
||||
size: 150,
|
||||
position: 5,
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'city',
|
||||
placeHolder: 'City', // Hack: Fake character to prevent password-manager from filling the field
|
||||
@ -121,7 +121,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconBriefcase,
|
||||
size: 150,
|
||||
position: 6,
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'jobTitle',
|
||||
placeHolder: 'Job title',
|
||||
@ -134,7 +134,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconBrandLinkedin,
|
||||
size: 150,
|
||||
position: 7,
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'linkedinUrl',
|
||||
placeHolder: 'LinkedIn',
|
||||
@ -147,7 +147,7 @@ export const peopleAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[]
|
||||
Icon: IconBrandX,
|
||||
size: 150,
|
||||
position: 8,
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'xUrl',
|
||||
placeHolder: 'X',
|
||||
|
||||
@ -22,7 +22,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
|
||||
label: 'Close Date',
|
||||
Icon: IconCalendarEvent,
|
||||
position: 0,
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'closeDate',
|
||||
},
|
||||
@ -36,7 +36,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
|
||||
label: 'Amount',
|
||||
Icon: IconCurrencyDollar,
|
||||
position: 1,
|
||||
type: 'number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
fieldName: 'amount',
|
||||
placeHolder: '0',
|
||||
@ -50,7 +50,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
|
||||
label: 'Probability',
|
||||
Icon: IconProgressCheck,
|
||||
position: 2,
|
||||
type: 'probability',
|
||||
type: 'PROBABILITY',
|
||||
metadata: {
|
||||
fieldName: 'probability',
|
||||
},
|
||||
@ -64,7 +64,7 @@ export const pipelineAvailableFieldDefinitions: ColumnDefinition<FieldMetadata>[
|
||||
label: 'Point of Contact',
|
||||
Icon: IconUser,
|
||||
position: 3,
|
||||
type: 'relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
fieldName: 'pointOfContact',
|
||||
relationType: Entity.Person,
|
||||
|
||||
@ -12,7 +12,7 @@ type SettingsObjectFieldTypeSelectSectionProps = {
|
||||
};
|
||||
|
||||
// TODO: remove "relation" type for now, add it back when the backend is ready.
|
||||
const { relation: _, ...dataTypesWithoutRelation } = dataTypes;
|
||||
const { RELATION: _, ...dataTypesWithoutRelation } = dataTypes;
|
||||
|
||||
export const SettingsObjectFieldTypeSelectSection = ({
|
||||
disabled,
|
||||
|
||||
@ -9,7 +9,7 @@ const meta: Meta<typeof SettingsObjectFieldTypeSelectSection> = {
|
||||
title: 'Modules/Settings/DataModel/SettingsObjectFieldTypeSelectSection',
|
||||
component: SettingsObjectFieldTypeSelectSection,
|
||||
decorators: [ComponentDecorator],
|
||||
args: { type: 'number' },
|
||||
args: { type: 'NUMBER' },
|
||||
};
|
||||
|
||||
export default meta;
|
||||
|
||||
@ -13,9 +13,9 @@ export const dataTypes: Record<
|
||||
MetadataFieldDataType,
|
||||
{ label: string; Icon: IconComponent }
|
||||
> = {
|
||||
number: { label: 'Number', Icon: IconNumbers },
|
||||
text: { label: 'Text', Icon: IconTextSize },
|
||||
url: { label: 'Link', Icon: IconLink },
|
||||
boolean: { label: 'True/False', Icon: IconCheck },
|
||||
relation: { label: 'Relation', Icon: IconPlug },
|
||||
NUMBER: { label: 'Number', Icon: IconNumbers },
|
||||
TEXT: { label: 'Text', Icon: IconTextSize },
|
||||
URL: { label: 'Link', Icon: IconLink },
|
||||
BOOLEAN: { label: 'True/False', Icon: IconCheck },
|
||||
RELATION: { label: 'Relation', Icon: IconPlug },
|
||||
};
|
||||
|
||||
@ -15,7 +15,7 @@ const StyledDataType = styled.div<{ value: MetadataFieldDataType }>`
|
||||
padding: 0 ${({ theme }) => theme.spacing(2)};
|
||||
|
||||
${({ theme, value }) =>
|
||||
value === 'relation'
|
||||
value === 'RELATION'
|
||||
? css`
|
||||
border-color: ${theme.color.purple20};
|
||||
color: ${theme.color.purple};
|
||||
|
||||
@ -39,10 +39,10 @@ export const SettingsObjectFieldItemTableRow = ({
|
||||
|
||||
// TODO: parse with zod and merge types with FieldType (create a subset of FieldType for example)
|
||||
const fieldDataTypeIsSupported = [
|
||||
'text',
|
||||
'number',
|
||||
'boolean',
|
||||
'url',
|
||||
'TEXT',
|
||||
'NUMBER',
|
||||
'BOOLEAN',
|
||||
'URL',
|
||||
].includes(fieldItem.type);
|
||||
|
||||
if (!fieldDataTypeIsSupported) {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
export type MetadataFieldDataType =
|
||||
| 'boolean'
|
||||
| 'number'
|
||||
| 'relation'
|
||||
| 'text'
|
||||
| 'url';
|
||||
| 'BOOLEAN'
|
||||
| 'NUMBER'
|
||||
| 'RELATION'
|
||||
| 'TEXT'
|
||||
| 'URL';
|
||||
|
||||
@ -33,7 +33,7 @@ const DateFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'date',
|
||||
label: 'Date',
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'Date',
|
||||
},
|
||||
|
||||
@ -40,7 +40,7 @@ const DoubleTextFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'double-text',
|
||||
label: 'Double-Text',
|
||||
type: 'double-text',
|
||||
type: 'DOUBLE_TEXT',
|
||||
metadata: {
|
||||
firstValueFieldName: 'First-text',
|
||||
firstValuePlaceholder: 'First-text',
|
||||
|
||||
@ -32,7 +32,7 @@ const EmailFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'email',
|
||||
label: 'Email',
|
||||
type: 'email',
|
||||
type: 'EMAIL',
|
||||
metadata: {
|
||||
fieldName: 'Email',
|
||||
placeHolder: 'Email',
|
||||
|
||||
@ -34,7 +34,7 @@ const MoneyFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'money',
|
||||
label: 'Money',
|
||||
type: 'moneyAmount',
|
||||
type: 'MONEY_AMOUNT',
|
||||
metadata: {
|
||||
fieldName: 'Amount',
|
||||
placeHolder: 'Amount',
|
||||
|
||||
@ -34,7 +34,7 @@ const NumberFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'number',
|
||||
label: 'Number',
|
||||
type: 'number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
fieldName: 'Number',
|
||||
placeHolder: 'Number',
|
||||
|
||||
@ -32,7 +32,7 @@ const PhoneFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'phone',
|
||||
label: 'Phone',
|
||||
type: 'phone',
|
||||
type: 'PHONE',
|
||||
metadata: {
|
||||
fieldName: 'Phone',
|
||||
placeHolder: 'Phone',
|
||||
|
||||
@ -34,7 +34,7 @@ const TextFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'text',
|
||||
label: 'Text',
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'Text',
|
||||
placeHolder: 'Text',
|
||||
|
||||
@ -32,7 +32,7 @@ const URLFieldDisplayWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'URL',
|
||||
label: 'URL',
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'URL',
|
||||
placeHolder: 'URL',
|
||||
|
||||
@ -9,7 +9,7 @@ import { isFieldBoolean } from '../../types/guards/isFieldBoolean';
|
||||
export const useBooleanField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('boolean', isFieldBoolean, fieldDefinition);
|
||||
assertFieldMetadata('BOOLEAN', isFieldBoolean, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ import { isFieldChip } from '../../types/guards/isFieldChip';
|
||||
export const useChipField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('chip', isFieldChip, fieldDefinition);
|
||||
assertFieldMetadata('CHIP', isFieldChip, fieldDefinition);
|
||||
|
||||
const contentFieldName = fieldDefinition.metadata.contentFieldName;
|
||||
const avatarUrlFieldName = fieldDefinition.metadata.urlFieldName;
|
||||
|
||||
@ -9,7 +9,7 @@ import { isFieldDate } from '../../types/guards/isFieldDate';
|
||||
export const useDateField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('date', isFieldDate, fieldDefinition);
|
||||
assertFieldMetadata('DATE', isFieldDate, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ export const useDoubleTextChipField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata(
|
||||
'double-text-chip',
|
||||
'DOUBLE_TEXT_CHIP',
|
||||
isFieldDoubleTextChip,
|
||||
fieldDefinition,
|
||||
);
|
||||
|
||||
@ -10,7 +10,7 @@ import { isFieldDoubleText } from '../../types/guards/isFieldDoubleText';
|
||||
export const useDoubleTextField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('double-text', isFieldDoubleText, fieldDefinition);
|
||||
assertFieldMetadata('DOUBLE_TEXT', isFieldDoubleText, fieldDefinition);
|
||||
|
||||
const [firstValue, setFirstValue] = useRecoilState<string>(
|
||||
entityFieldsFamilySelector({
|
||||
|
||||
@ -10,7 +10,7 @@ import { isFieldEmail } from '../../types/guards/isFieldEmail';
|
||||
export const useEmailField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('email', isFieldEmail, fieldDefinition);
|
||||
assertFieldMetadata('EMAIL', isFieldEmail, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import { isFieldMoneyAmountV2Value } from '../../types/guards/isFieldMoneyAmount
|
||||
export const useMoneyAmountV2Field = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('moneyAmountV2', isFieldMoneyAmountV2, fieldDefinition);
|
||||
assertFieldMetadata('MONEY_AMOUNT_V2', isFieldMoneyAmountV2, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ import { isFieldMoney } from '../../types/guards/isFieldMoney';
|
||||
export const useMoneyField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('moneyAmount', isFieldMoney, fieldDefinition);
|
||||
assertFieldMetadata('MONEY_AMOUNT', isFieldMoney, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ import { isFieldNumber } from '../../types/guards/isFieldNumber';
|
||||
export const useNumberField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('number', isFieldNumber, fieldDefinition);
|
||||
assertFieldMetadata('NUMBER', isFieldNumber, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -12,7 +12,7 @@ import { isFieldPhone } from '../../types/guards/isFieldPhone';
|
||||
export const usePhoneField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('phone', isFieldPhone, fieldDefinition);
|
||||
assertFieldMetadata('PHONE', isFieldPhone, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ import { isFieldProbability } from '../../types/guards/isFieldProbability';
|
||||
export const useProbabilityField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('probability', isFieldProbability, fieldDefinition);
|
||||
assertFieldMetadata('PROBABILITY', isFieldProbability, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -11,7 +11,7 @@ import { isFieldRelation } from '../../types/guards/isFieldRelation';
|
||||
export const useRelationField = () => {
|
||||
const { entityId, fieldDefinition } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('relation', isFieldRelation, fieldDefinition);
|
||||
assertFieldMetadata('RELATION', isFieldRelation, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ import { isFieldText } from '../../types/guards/isFieldText';
|
||||
export const useTextField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('text', isFieldText, fieldDefinition);
|
||||
assertFieldMetadata('TEXT', isFieldText, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import { isFieldURL } from '../../types/guards/isFieldURL';
|
||||
export const useURLField = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('url', isFieldURL, fieldDefinition);
|
||||
assertFieldMetadata('URL', isFieldURL, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -13,7 +13,7 @@ import { isFieldURLV2Value } from '../../types/guards/isFieldURLV2Value';
|
||||
export const useURLV2Field = () => {
|
||||
const { entityId, fieldDefinition, hotkeyScope } = useContext(FieldContext);
|
||||
|
||||
assertFieldMetadata('urlV2', isFieldURLV2, fieldDefinition);
|
||||
assertFieldMetadata('URL_V2', isFieldURLV2, fieldDefinition);
|
||||
|
||||
const fieldName = fieldDefinition.metadata.fieldName;
|
||||
|
||||
|
||||
@ -36,7 +36,7 @@ const BooleanFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'boolean',
|
||||
label: 'Boolean',
|
||||
type: 'boolean',
|
||||
type: 'BOOLEAN',
|
||||
metadata: {
|
||||
fieldName: 'Boolean',
|
||||
},
|
||||
|
||||
@ -46,7 +46,7 @@ const ChipFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'chip',
|
||||
label: 'Chip',
|
||||
type: 'chip',
|
||||
type: 'CHIP',
|
||||
metadata: {
|
||||
contentFieldName: 'name',
|
||||
urlFieldName: 'xURL',
|
||||
|
||||
@ -46,7 +46,7 @@ const DateFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'date',
|
||||
label: 'Date',
|
||||
type: 'date',
|
||||
type: 'DATE',
|
||||
metadata: {
|
||||
fieldName: 'Date',
|
||||
},
|
||||
|
||||
@ -59,7 +59,7 @@ const DoubleTextChipFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'double-text-chip',
|
||||
label: 'Double-Text-Chip',
|
||||
type: 'double-text-chip',
|
||||
type: 'DOUBLE_TEXT_CHIP',
|
||||
metadata: {
|
||||
firstValueFieldName: 'First-text',
|
||||
firstValuePlaceholder: 'First-text',
|
||||
|
||||
@ -57,7 +57,7 @@ const DoubleTextFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'double-text',
|
||||
label: 'Double-Text',
|
||||
type: 'double-text',
|
||||
type: 'DOUBLE_TEXT',
|
||||
metadata: {
|
||||
firstValueFieldName: 'First-text',
|
||||
firstValuePlaceholder: 'First-text',
|
||||
|
||||
@ -45,7 +45,7 @@ const EmailFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'email',
|
||||
label: 'Email',
|
||||
type: 'email',
|
||||
type: 'EMAIL',
|
||||
metadata: {
|
||||
fieldName: 'email',
|
||||
placeHolder: 'username@email.com',
|
||||
|
||||
@ -45,7 +45,7 @@ const MoneyFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'moneyAmount',
|
||||
label: 'MoneyAmout',
|
||||
type: 'moneyAmount',
|
||||
type: 'MONEY_AMOUNT',
|
||||
metadata: {
|
||||
fieldName: 'moneyAmount',
|
||||
placeHolder: 'Enter Amount',
|
||||
|
||||
@ -45,7 +45,7 @@ const NumberFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'number',
|
||||
label: 'Number',
|
||||
type: 'number',
|
||||
type: 'NUMBER',
|
||||
metadata: {
|
||||
fieldName: 'number',
|
||||
placeHolder: 'Enter number',
|
||||
|
||||
@ -45,7 +45,7 @@ const PhoneFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'phone',
|
||||
label: 'Phone',
|
||||
type: 'phone',
|
||||
type: 'PHONE',
|
||||
metadata: {
|
||||
fieldName: 'Phone',
|
||||
placeHolder: 'Enter phone number',
|
||||
|
||||
@ -43,7 +43,7 @@ const ProbabilityFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'probability',
|
||||
label: 'Probability',
|
||||
type: 'probability',
|
||||
type: 'PROBABILITY',
|
||||
metadata: {
|
||||
fieldName: 'Probability',
|
||||
},
|
||||
|
||||
@ -48,7 +48,7 @@ const RelationFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'relation',
|
||||
label: 'Relation',
|
||||
type: 'relation',
|
||||
type: 'RELATION',
|
||||
metadata: {
|
||||
fieldName: 'Relation',
|
||||
relationType: Entity.Person,
|
||||
|
||||
@ -45,7 +45,7 @@ const TextFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'text',
|
||||
label: 'Text',
|
||||
type: 'text',
|
||||
type: 'TEXT',
|
||||
metadata: {
|
||||
fieldName: 'Text',
|
||||
placeHolder: 'Enter text',
|
||||
|
||||
@ -45,7 +45,7 @@ const URLFieldInputWithContext = ({
|
||||
fieldDefinition={{
|
||||
fieldId: 'url',
|
||||
label: 'URL',
|
||||
type: 'url',
|
||||
type: 'URL',
|
||||
metadata: {
|
||||
fieldName: 'URL',
|
||||
placeHolder: 'Enter URL',
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
export type FieldType =
|
||||
| 'text'
|
||||
| 'relation'
|
||||
| 'chip'
|
||||
| 'double-text-chip'
|
||||
| 'double-text'
|
||||
| 'number'
|
||||
| 'email'
|
||||
| 'boolean'
|
||||
| 'date'
|
||||
| 'phone'
|
||||
| 'url'
|
||||
| 'urlV2'
|
||||
| 'probability'
|
||||
| 'moneyAmountV2'
|
||||
| 'moneyAmount'
|
||||
| 'money';
|
||||
| 'TEXT'
|
||||
| 'RELATION'
|
||||
| 'CHIP'
|
||||
| 'DOUBLE_TEXT_CHIP'
|
||||
| 'DOUBLE_TEXT'
|
||||
| 'NUMBER'
|
||||
| 'EMAIL'
|
||||
| 'BOOLEAN'
|
||||
| 'DATE'
|
||||
| 'PHONE'
|
||||
| 'URL'
|
||||
| 'URL_V2'
|
||||
| 'PROBABILITY'
|
||||
| 'MONEY_AMOUNT_V2'
|
||||
| 'MONEY_AMOUNT'
|
||||
| 'MONEY';
|
||||
|
||||
@ -21,35 +21,35 @@ import { FieldType } from '../FieldType';
|
||||
|
||||
type AssertFieldMetadataFunction = <
|
||||
E extends FieldType,
|
||||
T extends E extends 'text'
|
||||
T extends E extends 'TEXT'
|
||||
? FieldTextMetadata
|
||||
: E extends 'relation'
|
||||
: E extends 'RELATION'
|
||||
? FieldRelationMetadata
|
||||
: E extends 'chip'
|
||||
: E extends 'CHIP'
|
||||
? FieldChipMetadata
|
||||
: E extends 'double-text-chip'
|
||||
: E extends 'DOUBLE_TEXT_CHIP'
|
||||
? FieldDoubleTextChipMetadata
|
||||
: E extends 'double-text'
|
||||
: E extends 'DOUBLE_TEXT'
|
||||
? FieldDoubleTextMetadata
|
||||
: E extends 'number'
|
||||
: E extends 'NUMBER'
|
||||
? FieldNumberMetadata
|
||||
: E extends 'email'
|
||||
: E extends 'EMAIL'
|
||||
? FieldEmailMetadata
|
||||
: E extends 'boolean'
|
||||
: E extends 'BOOLEAN'
|
||||
? FieldBooleanMetadata
|
||||
: E extends 'date'
|
||||
: E extends 'DATE'
|
||||
? FieldDateMetadata
|
||||
: E extends 'phone'
|
||||
: E extends 'PHONE'
|
||||
? FieldPhoneMetadata
|
||||
: E extends 'url'
|
||||
: E extends 'URL'
|
||||
? FieldURLMetadata
|
||||
: E extends 'urlV2'
|
||||
: E extends 'URL_V2'
|
||||
? FieldURLV2Metadata
|
||||
: E extends 'probability'
|
||||
: E extends 'PROBABILITY'
|
||||
? FieldProbabilityMetadata
|
||||
: E extends 'moneyAmount'
|
||||
: E extends 'MONEY_AMOUNT'
|
||||
? FieldMoneyMetadata
|
||||
: E extends 'moneyAmountV2'
|
||||
: E extends 'MONEY_AMOUNT_V2'
|
||||
? FieldMoneyAmountV2Metadata
|
||||
: never,
|
||||
>(
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldBooleanMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldBoolean = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldBooleanMetadata> => field.type === 'boolean';
|
||||
): field is FieldDefinition<FieldBooleanMetadata> => field.type === 'BOOLEAN';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldChipMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldChip = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldChipMetadata> => field.type === 'chip';
|
||||
): field is FieldDefinition<FieldChipMetadata> => field.type === 'CHIP';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldDateMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldDate = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDateMetadata> => field.type === 'date';
|
||||
): field is FieldDefinition<FieldDateMetadata> => field.type === 'DATE';
|
||||
|
||||
@ -4,4 +4,4 @@ import { FieldDoubleTextMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
export const isFieldDoubleText = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDoubleTextMetadata> =>
|
||||
field.type === 'double-text';
|
||||
field.type === 'DOUBLE_TEXT';
|
||||
|
||||
@ -4,4 +4,4 @@ import { FieldDoubleTextChipMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
export const isFieldDoubleTextChip = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldDoubleTextChipMetadata> =>
|
||||
field.type === 'double-text-chip';
|
||||
field.type === 'DOUBLE_TEXT_CHIP';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldEmailMetadata, FieldMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldEmail = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldEmailMetadata> => field.type === 'email';
|
||||
): field is FieldDefinition<FieldEmailMetadata> => field.type === 'EMAIL';
|
||||
|
||||
@ -3,4 +3,5 @@ import { FieldMetadata, FieldMoneyMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldMoney = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldMoneyMetadata> => field.type === 'moneyAmount';
|
||||
): field is FieldDefinition<FieldMoneyMetadata> =>
|
||||
field.type === 'MONEY_AMOUNT';
|
||||
|
||||
@ -4,4 +4,4 @@ import { FieldMetadata, FieldMoneyAmountV2Metadata } from '../FieldMetadata';
|
||||
export const isFieldMoneyAmountV2 = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldMoneyAmountV2Metadata> =>
|
||||
field.type === 'moneyAmountV2';
|
||||
field.type === 'MONEY_AMOUNT_V2';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldNumberMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldNumber = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldNumberMetadata> => field.type === 'number';
|
||||
): field is FieldDefinition<FieldNumberMetadata> => field.type === 'NUMBER';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldPhoneMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldPhone = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldPhoneMetadata> => field.type === 'phone';
|
||||
): field is FieldDefinition<FieldPhoneMetadata> => field.type === 'PHONE';
|
||||
|
||||
@ -4,4 +4,4 @@ import { FieldMetadata, FieldProbabilityMetadata } from '../FieldMetadata';
|
||||
export const isFieldProbability = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldProbabilityMetadata> =>
|
||||
field.type === 'probability';
|
||||
field.type === 'PROBABILITY';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldRelationMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldRelation = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldRelationMetadata> => field.type === 'relation';
|
||||
): field is FieldDefinition<FieldRelationMetadata> => field.type === 'RELATION';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldTextMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldText = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldTextMetadata> => field.type === 'text';
|
||||
): field is FieldDefinition<FieldTextMetadata> => field.type === 'TEXT';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldURLMetadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldURL = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldURLMetadata> => field.type === 'url';
|
||||
): field is FieldDefinition<FieldURLMetadata> => field.type === 'URL';
|
||||
|
||||
@ -3,4 +3,4 @@ import { FieldMetadata, FieldURLV2Metadata } from '../FieldMetadata';
|
||||
|
||||
export const isFieldURLV2 = (
|
||||
field: FieldDefinition<FieldMetadata>,
|
||||
): field is FieldDefinition<FieldURLV2Metadata> => field.type === 'urlV2';
|
||||
): field is FieldDefinition<FieldURLV2Metadata> => field.type === 'URL_V2';
|
||||
|
||||
@ -30,19 +30,19 @@ export const MultipleFiltersDropdownContent = () => {
|
||||
<>
|
||||
<ObjectFilterDropdownOperandButton />
|
||||
<DropdownMenuSeparator />
|
||||
{filterDefinitionUsedInDropdown.type === 'text' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'TEXT' && (
|
||||
<ObjectFilterDropdownTextSearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'number' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'NUMBER' && (
|
||||
<ObjectFilterDropdownNumberSearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'date' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'DATE' && (
|
||||
<ObjectFilterDropdownDateSearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'entity' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'ENTITY' && (
|
||||
<ObjectFilterDropdownEntitySearchInput />
|
||||
)}
|
||||
{filterDefinitionUsedInDropdown.type === 'entity' && (
|
||||
{filterDefinitionUsedInDropdown.type === 'ENTITY' && (
|
||||
<ObjectFilterDropdownEntitySelect />
|
||||
)}
|
||||
</>
|
||||
|
||||
@ -16,7 +16,7 @@ export const ObjectFilterDropdownButton = ({
|
||||
|
||||
const hasOnlyOneEntityFilter =
|
||||
availableFilterDefinitions.length === 1 &&
|
||||
availableFilterDefinitions[0].type === 'entity';
|
||||
availableFilterDefinitions[0].type === 'ENTITY';
|
||||
|
||||
if (!availableFilterDefinitions.length) {
|
||||
return <></>;
|
||||
|
||||
@ -6,7 +6,7 @@ import { useFilter } from '../hooks/useFilter';
|
||||
export const ObjectFilterDropdownEntitySelect = () => {
|
||||
const { filterDefinitionUsedInDropdown } = useFilter();
|
||||
|
||||
if (filterDefinitionUsedInDropdown?.type !== 'entity') {
|
||||
if (filterDefinitionUsedInDropdown?.type !== 'ENTITY') {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -25,7 +25,7 @@ export const ObjectFilterDropdownFilterSelect = () => {
|
||||
onClick={() => {
|
||||
setFilterDefinitionUsedInDropdown(availableFilterDefinition);
|
||||
|
||||
if (availableFilterDefinition.type === 'entity') {
|
||||
if (availableFilterDefinition.type === 'ENTITY') {
|
||||
setHotkeyScope(RelationPickerHotkeyScope.RelationPicker);
|
||||
}
|
||||
|
||||
|
||||
@ -1 +1 @@
|
||||
export type FilterType = 'text' | 'date' | 'entity' | 'number';
|
||||
export type FilterType = 'TEXT' | 'DATE' | 'ENTITY' | 'NUMBER';
|
||||
|
||||
@ -6,12 +6,12 @@ export const getOperandsForFilterType = (
|
||||
filterType: FilterType | null | undefined,
|
||||
): ViewFilterOperand[] => {
|
||||
switch (filterType) {
|
||||
case 'text':
|
||||
case 'TEXT':
|
||||
return [ViewFilterOperand.Contains, ViewFilterOperand.DoesNotContain];
|
||||
case 'number':
|
||||
case 'date':
|
||||
case 'NUMBER':
|
||||
case 'DATE':
|
||||
return [ViewFilterOperand.GreaterThan, ViewFilterOperand.LessThan];
|
||||
case 'entity':
|
||||
case 'ENTITY':
|
||||
return [ViewFilterOperand.Is, ViewFilterOperand.IsNot];
|
||||
default:
|
||||
return [];
|
||||
|
||||
@ -24,7 +24,7 @@ export const turnFilterIntoWhereClause = (
|
||||
};
|
||||
default:
|
||||
switch (filter.definition.type) {
|
||||
case 'text':
|
||||
case 'TEXT':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.Contains:
|
||||
return {
|
||||
@ -47,7 +47,7 @@ export const turnFilterIntoWhereClause = (
|
||||
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
|
||||
);
|
||||
}
|
||||
case 'number':
|
||||
case 'NUMBER':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.GreaterThan:
|
||||
return {
|
||||
@ -66,7 +66,7 @@ export const turnFilterIntoWhereClause = (
|
||||
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
|
||||
);
|
||||
}
|
||||
case 'date':
|
||||
case 'DATE':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.GreaterThan:
|
||||
return {
|
||||
@ -85,7 +85,7 @@ export const turnFilterIntoWhereClause = (
|
||||
`Unknown operand ${filter.operand} for ${filter.definition.type} filter`,
|
||||
);
|
||||
}
|
||||
case 'entity':
|
||||
case 'ENTITY':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.Is:
|
||||
return {
|
||||
|
||||
@ -26,7 +26,7 @@ export const turnFiltersIntoWhereClauseV2 = (
|
||||
}
|
||||
|
||||
switch (filter.definition.type) {
|
||||
case 'text':
|
||||
case 'TEXT':
|
||||
switch (filter.operand) {
|
||||
case ViewFilterOperand.Contains:
|
||||
whereClause[correspondingField.name] = {
|
||||
|
||||
Reference in New Issue
Block a user