diff --git a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts
index 0c1cc9a3d..a579d5ce4 100644
--- a/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts
+++ b/packages/twenty-front/src/modules/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition.ts
@@ -40,6 +40,7 @@ export const formatFieldMetadataItemAsFieldDefinition = ({
targetFieldMetadataName:
field.relationDefinition?.targetFieldMetadata?.name ?? '',
options: field.options,
+ isNullable: field.isNullable,
};
return {
diff --git a/packages/twenty-front/src/modules/object-record/record-board/components/RecordBoard.tsx b/packages/twenty-front/src/modules/object-record/record-board/components/RecordBoard.tsx
index 23aa86128..d6ffe57f2 100644
--- a/packages/twenty-front/src/modules/object-record/record-board/components/RecordBoard.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-board/components/RecordBoard.tsx
@@ -1,6 +1,6 @@
-import { useContext, useRef } from 'react';
import styled from '@emotion/styled';
import { DragDropContext, OnDragEndResponder } from '@hello-pangea/dnd'; // Atlassian dnd does not support StrictMode from RN 18, so we use a fork @hello-pangea/dnd https://github.com/atlassian/react-beautiful-dnd/issues/2350
+import { useContext, useRef } from 'react';
import { useRecoilCallback, useRecoilValue } from 'recoil';
import { Key } from 'ts-key-enum';
diff --git a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeader.tsx b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeader.tsx
index e4f59a85a..a4c76e5bc 100644
--- a/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeader.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-board/record-board-column/components/RecordBoardColumnHeader.tsx
@@ -1,10 +1,11 @@
-import React, { useContext, useState } from 'react';
import styled from '@emotion/styled';
+import { useContext, useState } from 'react';
import { IconDotsVertical, Tag } from 'twenty-ui';
import { RecordBoardColumnDropdownMenu } from '@/object-record/record-board/record-board-column/components/RecordBoardColumnDropdownMenu';
import { RecordBoardColumnContext } from '@/object-record/record-board/record-board-column/contexts/RecordBoardColumnContext';
import { RecordBoardColumnHotkeyScope } from '@/object-record/record-board/types/BoardColumnHotkeyScope';
+import { RecordBoardColumnDefinitionType } from '@/object-record/record-board/types/RecordBoardColumnDefinition';
import { LightIconButton } from '@/ui/input/button/components/LightIconButton';
import { usePreviousHotkeyScope } from '@/ui/utilities/hotkey/hooks/usePreviousHotkeyScope';
@@ -79,14 +80,23 @@ export const RecordBoardColumnHeader = () => {
>
{!!boardColumnTotal && ${boardColumnTotal}}
{!isHeaderHovered && (
{recordCount}
)}
- {isHeaderHovered && (
+ {isHeaderHovered && columnDefinition.actions.length > 0 && (
{
)}
- {isBoardColumnMenuOpen && (
+ {isBoardColumnMenuOpen && columnDefinition.actions.length > 0 && (
= {
metadata: {
fieldName: 'accountOwner',
options: [{ label: 'Elon Musk', color: 'blue', value: 'userId' }],
+ isNullable: true,
},
};
diff --git a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx
index 53461b39f..a1d9a8631 100644
--- a/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-field/meta-types/input/components/SelectFieldInput.tsx
@@ -1,5 +1,5 @@
-import React, { useRef, useState } from 'react';
import styled from '@emotion/styled';
+import { useRef, useState } from 'react';
import { Key } from 'ts-key-enum';
import { useClearField } from '@/object-record/record-field/hooks/useClearField';
@@ -98,14 +98,16 @@ export const SelectFieldInput = ({
-
+ {fieldDefinition.metadata.isNullable && (
+
+ )}
{optionsInDropDown.map((option) => {
return (
diff --git a/packages/twenty-front/src/modules/object-record/record-field/types/FieldMetadata.ts b/packages/twenty-front/src/modules/object-record/record-field/types/FieldMetadata.ts
index fc7ff10c5..3208e5deb 100644
--- a/packages/twenty-front/src/modules/object-record/record-field/types/FieldMetadata.ts
+++ b/packages/twenty-front/src/modules/object-record/record-field/types/FieldMetadata.ts
@@ -128,6 +128,7 @@ export type FieldSelectMetadata = {
objectMetadataNameSingular?: string;
fieldName: string;
options: { label: string; color: ThemeColor; value: string }[];
+ isNullable: boolean;
};
export type FieldMultiSelectMetadata = {
diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardColumnLoaderEffect.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardColumnLoaderEffect.tsx
index 654254b86..e9c909b72 100644
--- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardColumnLoaderEffect.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardColumnLoaderEffect.tsx
@@ -16,7 +16,7 @@ export const RecordIndexBoardColumnLoaderEffect = ({
}: {
recordBoardId: string;
objectNameSingular: string;
- boardFieldSelectValue: string;
+ boardFieldSelectValue: string | null;
boardFieldMetadataId: string | null;
columnId: string;
}) => {
diff --git a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardDataLoader.tsx b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardDataLoader.tsx
index d6ca8ddfd..1906285f5 100644
--- a/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardDataLoader.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-index/components/RecordIndexBoardDataLoader.tsx
@@ -45,6 +45,15 @@ export const RecordIndexBoardDataLoader = ({
columnId={columnIds[index]}
/>
))}
+ {recordIndexKanbanFieldMetadataItem?.isNullable && (
+
+ )}
>
);
};
diff --git a/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexBoardColumn.ts b/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexBoardColumn.ts
index 03376161f..02485fe0d 100644
--- a/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexBoardColumn.ts
+++ b/packages/twenty-front/src/modules/object-record/record-index/hooks/useLoadRecordIndexBoardColumn.ts
@@ -10,12 +10,13 @@ import { useRecordBoardRecordGqlFields } from '@/object-record/record-index/hook
import { recordIndexFiltersState } from '@/object-record/record-index/states/recordIndexFiltersState';
import { recordIndexSortsState } from '@/object-record/record-index/states/recordIndexSortsState';
import { useUpsertRecordsInStore } from '@/object-record/record-store/hooks/useUpsertRecordsInStore';
+import { isDefined } from '~/utils/isDefined';
type UseLoadRecordIndexBoardProps = {
objectNameSingular: string;
boardFieldMetadataId: string | null;
recordBoardId: string;
- columnFieldSelectValue: string;
+ columnFieldSelectValue: string | null;
columnId: string;
};
@@ -51,9 +52,11 @@ export const useLoadRecordIndexBoardColumn = ({
const filter = {
...requestFilters,
- [recordIndexKanbanFieldMetadataItem?.name ?? '']: {
- in: [columnFieldSelectValue],
- },
+ [recordIndexKanbanFieldMetadataItem?.name ?? '']: isDefined(
+ columnFieldSelectValue,
+ )
+ ? { in: [columnFieldSelectValue] }
+ : { is: 'NULL' },
};
const {
diff --git a/packages/twenty-front/src/modules/object-record/utils/computeRecordBoardColumnDefinitionsFromObjectMetadata.ts b/packages/twenty-front/src/modules/object-record/utils/computeRecordBoardColumnDefinitionsFromObjectMetadata.ts
index 4df6d4afd..4abbba702 100644
--- a/packages/twenty-front/src/modules/object-record/utils/computeRecordBoardColumnDefinitionsFromObjectMetadata.ts
+++ b/packages/twenty-front/src/modules/object-record/utils/computeRecordBoardColumnDefinitionsFromObjectMetadata.ts
@@ -1,7 +1,12 @@
import { IconPencil } from 'twenty-ui';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
-import { RecordBoardColumnDefinition } from '@/object-record/record-board/types/RecordBoardColumnDefinition';
+import {
+ RecordBoardColumnDefinition,
+ RecordBoardColumnDefinitionNoValue,
+ RecordBoardColumnDefinitionType,
+ RecordBoardColumnDefinitionValue,
+} from '@/object-record/record-board/types/RecordBoardColumnDefinition';
import { FieldMetadataType } from '~/generated-metadata/graphql';
export const computeRecordBoardColumnDefinitionsFromObjectMetadata = (
@@ -25,20 +30,42 @@ export const computeRecordBoardColumnDefinitionsFromObjectMetadata = (
);
}
- return selectFieldMetadataItem.options.map((selectOption) => ({
- id: selectOption.id,
- title: selectOption.label,
- value: selectOption.value,
- color: selectOption.color,
- position: selectOption.position,
- actions: [
- {
- id: 'edit',
- label: 'Edit from settings',
- icon: IconPencil,
- position: 0,
- callback: navigateToSelectSettings,
- },
- ],
- }));
+ const valueColumns = selectFieldMetadataItem.options.map(
+ (selectOption) =>
+ ({
+ id: selectOption.id,
+ type: RecordBoardColumnDefinitionType.Value,
+ title: selectOption.label,
+ value: selectOption.value,
+ color: selectOption.color,
+ position: selectOption.position,
+ actions: [
+ {
+ id: 'edit',
+ label: 'Edit from settings',
+ icon: IconPencil,
+ position: 0,
+ callback: navigateToSelectSettings,
+ },
+ ],
+ }) satisfies RecordBoardColumnDefinitionValue,
+ );
+
+ const noValueColumn = {
+ id: 'no-value',
+ title: 'No Value',
+ type: RecordBoardColumnDefinitionType.NoValue,
+ value: null,
+ actions: [],
+ position:
+ selectFieldMetadataItem.options
+ .map((option) => option.position)
+ .reduce((a, b) => Math.max(a, b), 0) + 1,
+ } satisfies RecordBoardColumnDefinitionNoValue;
+
+ if (selectFieldMetadataItem.isNullable === true) {
+ return [...valueColumns, noValueColumn];
+ }
+
+ return valueColumns;
};
diff --git a/packages/twenty-front/src/modules/views/components/ViewBar.tsx b/packages/twenty-front/src/modules/views/components/ViewBar.tsx
index d090b1f8c..3c600daec 100644
--- a/packages/twenty-front/src/modules/views/components/ViewBar.tsx
+++ b/packages/twenty-front/src/modules/views/components/ViewBar.tsx
@@ -41,7 +41,6 @@ export const ViewBar = ({
const sortDropdownId = 'view-sort';
const loading = useIsPrefetchLoading();
-
if (!objectNamePlural) {
return;
}
diff --git a/packages/twenty-front/src/modules/views/components/ViewBarEffect.tsx b/packages/twenty-front/src/modules/views/components/ViewBarEffect.tsx
index 518ed1590..a23b73922 100644
--- a/packages/twenty-front/src/modules/views/components/ViewBarEffect.tsx
+++ b/packages/twenty-front/src/modules/views/components/ViewBarEffect.tsx
@@ -1,5 +1,5 @@
-import { useEffect, useState } from 'react';
import { isUndefined } from '@sniptt/guards';
+import { useEffect, useState } from 'react';
import { useRecoilValue } from 'recoil';
import { useViewStates } from '@/views/hooks/internal/useViewStates';
diff --git a/packages/twenty-front/src/testing/decorators/PageDecorator.tsx b/packages/twenty-front/src/testing/decorators/PageDecorator.tsx
index b6e842d26..19453453c 100644
--- a/packages/twenty-front/src/testing/decorators/PageDecorator.tsx
+++ b/packages/twenty-front/src/testing/decorators/PageDecorator.tsx
@@ -1,3 +1,6 @@
+import { ApolloProvider } from '@apollo/client';
+import { loadDevMessages } from '@apollo/client/dev';
+import { Decorator } from '@storybook/react';
import { HelmetProvider } from 'react-helmet-async';
import {
createMemoryRouter,
@@ -6,9 +9,6 @@ import {
Route,
RouterProvider,
} from 'react-router-dom';
-import { ApolloProvider } from '@apollo/client';
-import { loadDevMessages } from '@apollo/client/dev';
-import { Decorator } from '@storybook/react';
import { RecoilRoot } from 'recoil';
import { ClientConfigProviderEffect } from '@/client-config/components/ClientConfigProviderEffect';
@@ -21,6 +21,7 @@ import { DefaultLayout } from '~/modules/ui/layout/page/DefaultLayout';
import { UserProvider } from '~/modules/users/components/UserProvider';
import { mockedApolloClient } from '~/testing/mockedApolloClient';
+import { PrefetchDataProvider } from '@/prefetch/components/PrefetchDataProvider';
import { FullHeightStorybookLayout } from '../FullHeightStorybookLayout';
export type PageDecoratorArgs = {
@@ -73,7 +74,9 @@ const Providers = () => {
-
+
+
+
diff --git a/packages/twenty-front/src/testing/graphqlMocks.ts b/packages/twenty-front/src/testing/graphqlMocks.ts
index 6ad062e89..696ba7eac 100644
--- a/packages/twenty-front/src/testing/graphqlMocks.ts
+++ b/packages/twenty-front/src/testing/graphqlMocks.ts
@@ -110,6 +110,57 @@ export const graphqlMocks = {
},
});
}),
+ graphql.query('CombinedFindManyRecords', () => {
+ return HttpResponse.json({
+ data: {
+ views: {
+ edges: mockedViewsData.map((view) => ({
+ node: {
+ ...view,
+ viewFilters: {
+ edges: [],
+ totalCount: 0,
+ },
+ viewSorts: {
+ edges: [],
+ totalCount: 0,
+ },
+ viewFields: {
+ edges: mockedViewFieldsData
+ .filter((viewField) => viewField.viewId === view.id)
+ .map((viewField) => ({
+ node: viewField,
+ cursor: null,
+ })),
+ totalCount: mockedViewFieldsData.filter(
+ (viewField) => viewField.viewId === view.id,
+ ).length,
+ },
+ },
+ cursor: null,
+ })),
+ pageInfo: {
+ hasNextPage: false,
+ hasPreviousPage: false,
+ startCursor: null,
+ endCursor: null,
+ totalCount: mockedViewsData.length,
+ },
+ totalCount: mockedViewsData.length,
+ },
+ },
+ favorites: {
+ edges: [],
+ totalCount: 0,
+ pageInfo: {
+ hasNextPage: false,
+ hasPreviousPage: false,
+ startCursor: null,
+ endCursor: null,
+ },
+ },
+ });
+ }),
graphql.query('FindManyCompanies', ({ variables }) => {
const mockedData = variables.limit
? companiesMock.slice(0, variables.limit)
diff --git a/packages/twenty-front/src/testing/mock-data/view-fields.ts b/packages/twenty-front/src/testing/mock-data/view-fields.ts
index d54ed0581..f8af8db65 100644
--- a/packages/twenty-front/src/testing/mock-data/view-fields.ts
+++ b/packages/twenty-front/src/testing/mock-data/view-fields.ts
@@ -9,6 +9,9 @@ export const mockedViewFieldsData = [
position: 0,
isVisible: true,
size: 180,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '2a96bbc8-d86d-439a-8e50-4b07ebd27750',
@@ -17,6 +20,9 @@ export const mockedViewFieldsData = [
position: 1,
isVisible: true,
size: 100,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '0c1b4c7b-6a3d-4fb0-bf2b-5d7c8fb844ed',
@@ -25,6 +31,9 @@ export const mockedViewFieldsData = [
position: 2,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'cc7f9560-32b5-4b82-8fd9-b05fe77c8cf7',
@@ -33,6 +42,9 @@ export const mockedViewFieldsData = [
position: 3,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '3de4d078-3396-4480-be2d-6f3b1a228b0d',
@@ -41,6 +53,9 @@ export const mockedViewFieldsData = [
position: 4,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '4650c8fb-0f1e-4342-88dc-adedae1445f9',
@@ -49,6 +64,9 @@ export const mockedViewFieldsData = [
position: 5,
isVisible: true,
size: 170,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '727430bf-6ff8-4c85-9828-cbe72ac0fc27',
@@ -57,6 +75,9 @@ export const mockedViewFieldsData = [
position: 6,
isVisible: true,
size: 170,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
// People
@@ -67,6 +88,9 @@ export const mockedViewFieldsData = [
position: 0,
isVisible: true,
size: 210,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'e1e24864-8601-4cd8-8a63-09c1285f2e39',
@@ -75,6 +99,9 @@ export const mockedViewFieldsData = [
position: 1,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '5a1df716-7211-445a-9f16-9783a00998a7',
@@ -83,6 +110,9 @@ export const mockedViewFieldsData = [
position: 2,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'a6e1197a-7e84-4d92-ace2-367c0bc46c49',
@@ -91,6 +121,9 @@ export const mockedViewFieldsData = [
position: 3,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'c9343097-d14b-4559-a5fa-626c1527d39f',
@@ -99,6 +132,9 @@ export const mockedViewFieldsData = [
position: 4,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'a873e5f0-fed6-47e9-a712-6854eab3ec77',
@@ -107,6 +143,9 @@ export const mockedViewFieldsData = [
position: 5,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '66f134b8-5329-422f-b88e-83e6bb707eb5',
@@ -115,6 +154,9 @@ export const mockedViewFieldsData = [
position: 6,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '648faa24-cabb-482a-8578-ba3f09906017',
@@ -123,6 +165,9 @@ export const mockedViewFieldsData = [
position: 7,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '3a9e7f0d-a4ce-4ad5-aac7-3a24eb1a412d',
@@ -131,6 +176,9 @@ export const mockedViewFieldsData = [
position: 8,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
// Opportunities
@@ -141,6 +189,9 @@ export const mockedViewFieldsData = [
position: 0,
isVisible: true,
size: 180,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '3159acd8-463f-458d-bf9a-af8ac6f57dc0',
@@ -149,6 +200,9 @@ export const mockedViewFieldsData = [
position: 2,
isVisible: true,
size: 100,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'afc0819d-b694-4e3c-a2e6-25261aa3ed2c',
@@ -157,6 +211,9 @@ export const mockedViewFieldsData = [
position: 3,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: 'ec0507bb-aedc-4695-ba96-d81bdeb9db83',
@@ -165,6 +222,9 @@ export const mockedViewFieldsData = [
position: 4,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
{
id: '3f1585f6-44f6-45c5-b840-bc05af5d0008',
@@ -173,5 +233,8 @@ export const mockedViewFieldsData = [
position: 5,
isVisible: true,
size: 150,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ __typename: 'ViewField',
},
];
diff --git a/packages/twenty-front/src/testing/mock-data/views.ts b/packages/twenty-front/src/testing/mock-data/views.ts
index c58e50846..555e0a7c5 100644
--- a/packages/twenty-front/src/testing/mock-data/views.ts
+++ b/packages/twenty-front/src/testing/mock-data/views.ts
@@ -2,25 +2,58 @@ export const mockedViewsData = [
{
id: '37a8a866-eb17-4e76-9382-03143a2f6a80',
name: 'All companies',
- objectMetadataId: 'company',
+ objectMetadataId: 'f9fd99a8-108f-4066-9675-cde753cf5de9',
type: 'table',
+ icon: 'IconSkyline',
+ key: 'INDEX',
+ kanbanFieldMetadataId: null,
+ position: 0,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ isCompact: false,
+
+ __typename: 'View',
},
{
id: '6095799e-b48f-4e00-b071-10818083593a',
name: 'All people',
objectMetadataId: 'person',
type: 'table',
+ icon: 'IconPerson',
+ key: 'INDEX',
+ kanbanFieldMetadataId: null,
+ position: 0,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ isCompact: false,
+ __typename: 'View',
},
{
id: 'e26f66b7-f890-4a5c-b4d2-ec09987b5308',
name: 'All opportunities',
objectMetadataId: 'company',
type: 'kanban',
+ icon: 'IconOpportunity',
+ key: 'INDEX',
+ kanbanFieldMetadataId: null,
+ position: 0,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ isCompact: false,
+ __typename: 'View',
},
{
id: '5c307222-1dd5-4ff3-ab06-8d990e9b3c74',
name: 'All companies (v2)',
- objectMetadataId: 'a3195559-cc20-4749-9565-572a2f506581',
+ objectMetadataId: 'f9fd99a8-108f-4066-9675-cde753cf5de9',
type: 'table',
+ icon: 'IconSkyline',
+ key: 'INDEX',
+ kanbanFieldMetadataId: null,
+ position: 0,
+ createdAt: '2021-09-01T00:00:00.000Z',
+ updatedAt: '2021-09-01T00:00:00.000Z',
+ isCompact: false,
+ __typename: 'View',
},
];
diff --git a/packages/twenty-ui/src/display/tag/components/Tag.tsx b/packages/twenty-ui/src/display/tag/components/Tag.tsx
index 51f59cfb4..1ed0dc1dd 100644
--- a/packages/twenty-ui/src/display/tag/components/Tag.tsx
+++ b/packages/twenty-ui/src/display/tag/components/Tag.tsx
@@ -1,5 +1,5 @@
-import { useContext } from 'react';
import { styled } from '@linaria/react';
+import { useContext } from 'react';
import { IconComponent, OverflowingTextWithTooltip } from '@ui/display';
import {