diff --git a/front/.eslintrc.js b/front/.eslintrc.js index cb9dc2574..b47ac0b66 100644 --- a/front/.eslintrc.js +++ b/front/.eslintrc.js @@ -4,6 +4,7 @@ module.exports = { project: 'tsconfig.json', tsconfigRootDir: __dirname, sourceType: 'module', + ecmaVersion: "2023" }, plugins: [ '@typescript-eslint/eslint-plugin', diff --git a/front/craco.config.js b/front/craco.config.js index fb87dd395..91502035d 100644 --- a/front/craco.config.js +++ b/front/craco.config.js @@ -22,6 +22,20 @@ module.exports = { '@': path.resolve(__dirname, 'src/modules'), '@testing': path.resolve(__dirname, 'src/testing'), }, + mode: 'extends', + // TODO: remove this workaround by resolving source map errors with @sniptt/guards + configure: { + module: { + rules: [ + { + test: /\.js$/, + enforce: "pre", + use: ["source-map-loader"], + }, + ], + }, + ignoreWarnings: [/Failed to parse source map/], + }, }, jest: { configure: { diff --git a/front/package.json b/front/package.json index da7855801..3dc08248d 100644 --- a/front/package.json +++ b/front/package.json @@ -180,7 +180,7 @@ "storybook-addon-cookie": "^3.0.1", "storybook-addon-pseudo-states": "^2.1.0", "ts-jest": "^29.1.0", - "typescript": "^4.9.3", + "typescript": "^5.2.2", "webpack": "^5.75.0" }, "msw": { diff --git a/front/src/App.tsx b/front/src/App.tsx index a05b03489..a93b77b53 100644 --- a/front/src/App.tsx +++ b/front/src/App.tsx @@ -1,5 +1,6 @@ import { Navigate, Route, Routes, useLocation } from 'react-router-dom'; +import { ObjectShowPage } from '@/metadata/components/ObjectShowPage'; import { AppPath } from '@/types/AppPath'; import { SettingsPath } from '@/types/SettingsPath'; import { DefaultLayout } from '@/ui/layout/page/DefaultLayout'; @@ -63,6 +64,7 @@ export const App = () => { } /> } /> + } /> ; export const ObjectDataTableEffect = ({ objectNamePlural, @@ -33,10 +36,11 @@ export const ObjectDataTableEffect = ({ const tableRecoilScopeId = useRecoilScopeId(TableRecoilScopeContext); const handleViewSelect = useRecoilCallback( ({ set, snapshot }) => - async (viewId: string) => { - const currentView = await snapshot.getPromise( + (viewId: string) => { + const currentView = snapshot.getLoadable( currentViewIdScopedState({ scopeId: tableRecoilScopeId }), - ); + ).getValue() + if (currentView === viewId) { return; } diff --git a/front/src/modules/metadata/components/ObjectShowPage.tsx b/front/src/modules/metadata/components/ObjectShowPage.tsx new file mode 100644 index 000000000..8bc2fb68a --- /dev/null +++ b/front/src/modules/metadata/components/ObjectShowPage.tsx @@ -0,0 +1,159 @@ +import { useParams } from 'react-router-dom'; +import { DateTime } from 'luxon'; +import { useRecoilState } from 'recoil'; + +import { ActivityTargetableEntityType } from '@/activities/types/ActivityTargetableEntity'; +import { FieldContext } from '@/ui/data/field/contexts/FieldContext'; +import { entityFieldsFamilyState } from '@/ui/data/field/states/entityFieldsFamilyState'; +import { InlineCell } from '@/ui/data/inline-cell/components/InlineCell'; +import { PropertyBox } from '@/ui/data/inline-cell/property-box/components/PropertyBox'; +import { InlineCellHotkeyScope } from '@/ui/data/inline-cell/types/InlineCellHotkeyScope'; +import { IconBuildingSkyscraper } from '@/ui/display/icon'; +import { PageBody } from '@/ui/layout/page/PageBody'; +import { PageContainer } from '@/ui/layout/page/PageContainer'; +import { PageFavoriteButton } from '@/ui/layout/page/PageFavoriteButton'; +import { PageHeader } from '@/ui/layout/page/PageHeader'; +import { ShowPageContainer } from '@/ui/layout/page/ShowPageContainer'; +import { ShowPageAddButton } from '@/ui/layout/show-page/components/ShowPageAddButton'; +import { ShowPageLeftContainer } from '@/ui/layout/show-page/components/ShowPageLeftContainer'; +import { ShowPageRightContainer } from '@/ui/layout/show-page/components/ShowPageRightContainer'; +import { ShowPageSummaryCard } from '@/ui/layout/show-page/components/ShowPageSummaryCard'; +import { ShowPageRecoilScopeContext } from '@/ui/layout/states/ShowPageRecoilScopeContext'; +import { PageTitle } from '@/ui/utilities/page-title/PageTitle'; +import { RecoilScope } from '@/ui/utilities/recoil-scope/components/RecoilScope'; + +import { useFindOneMetadataObject } from '../hooks/useFindOneMetadataObject'; +import { useFindOneObject } from '../hooks/useFindOneObject'; +import { useUpdateOneObject } from '../hooks/useUpdateOneObject'; +import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition'; + +export const ObjectShowPage = () => { + const { objectNameSingular, objectId } = useParams<{ + objectNameSingular: string; + objectId: string; + }>(); + + const { foundMetadataObject } = useFindOneMetadataObject({ + objectNameSingular, + }); + + const [, setEntityFields] = useRecoilState( + entityFieldsFamilyState(objectId ?? ''), + ); + + const { object } = useFindOneObject({ + objectId: objectId, + objectNameSingular, + onCompleted: (data) => { + setEntityFields(data); + }, + }); + + const useUpdateOneObjectMutation: () => [(params: any) => any, any] = () => { + const { updateOneObject } = useUpdateOneObject({ + objectNameSingular, + }); + + const updateEntity = ({ + variables, + }: { + variables: { + where: { id: string }; + data: { + [fieldName: string]: any; + }; + }; + }) => { + updateOneObject?.({ + idToUpdate: variables.where.id, + input: variables.data, + }); + }; + + return [updateEntity, { loading: false }]; + }; + + const handleFavoriteButtonClick = async () => { + // + }; + + if (!object) return <>; + + return ( + + + + + + + + + + + <>} + avatarType="squared" + /> + + {foundMetadataObject?.fields + .toSorted((a, b) => + DateTime.fromISO(a.createdAt) + .diff(DateTime.fromISO(b.createdAt)) + .toMillis(), + ) + .map((metadataField, index) => { + return ( + + + + ); + })} + + + + + + + + ); +}; diff --git a/front/src/modules/metadata/components/ObjectTable.tsx b/front/src/modules/metadata/components/ObjectTable.tsx index e70994e5c..481b09754 100644 --- a/front/src/modules/metadata/components/ObjectTable.tsx +++ b/front/src/modules/metadata/components/ObjectTable.tsx @@ -6,7 +6,10 @@ import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier'; import { ObjectDataTableEffect } from './ObjectDataTableEffect'; -export type ObjectTableProps = MetadataObjectIdentifier; +export type ObjectTableProps = Pick< + MetadataObjectIdentifier, + 'objectNamePlural' +>; export const ObjectTable = ({ objectNamePlural }: ObjectTableProps) => { const { updateOneObject } = useUpdateOneObject({ diff --git a/front/src/modules/metadata/components/ObjectTablePage.tsx b/front/src/modules/metadata/components/ObjectTablePage.tsx index 6f7993763..0e375d2fd 100644 --- a/front/src/modules/metadata/components/ObjectTablePage.tsx +++ b/front/src/modules/metadata/components/ObjectTablePage.tsx @@ -24,7 +24,10 @@ const StyledTableContainer = styled.div` width: 100%; `; -export type ObjectTablePageProps = MetadataObjectIdentifier; +export type ObjectTablePageProps = Pick< + MetadataObjectIdentifier, + 'objectNamePlural' +>; export const ObjectTablePage = () => { const objectNamePlural = useParams().objectNamePlural ?? ''; diff --git a/front/src/modules/metadata/graphql/queries.ts b/front/src/modules/metadata/graphql/queries.ts index 42279e987..0ddfe62c5 100644 --- a/front/src/modules/metadata/graphql/queries.ts +++ b/front/src/modules/metadata/graphql/queries.ts @@ -2,7 +2,7 @@ import { gql } from '@apollo/client'; export const FIND_MANY_METADATA_OBJECTS = gql` query MetadataObjects { - objects { + objects(paging: { first: 100 }) { edges { node { id @@ -17,7 +17,7 @@ export const FIND_MANY_METADATA_OBJECTS = gql` isActive createdAt updatedAt - fields { + fields(paging: { first: 100 }) { edges { node { id diff --git a/front/src/modules/metadata/hooks/useCreateNewTempCustomObject.ts b/front/src/modules/metadata/hooks/useCreateNewTempCustomObject.ts index 127877327..353b4001a 100644 --- a/front/src/modules/metadata/hooks/useCreateNewTempCustomObject.ts +++ b/front/src/modules/metadata/hooks/useCreateNewTempCustomObject.ts @@ -169,8 +169,8 @@ export const useCreateNewTempsCustomObject = () => { }); const createdFields = [ - emailFieldData, nameFieldData, + emailFieldData, cityFieldData, phoneFieldData, twitterFieldData, diff --git a/front/src/modules/metadata/hooks/useCreateOneObject.ts b/front/src/modules/metadata/hooks/useCreateOneObject.ts index 0f22cbd0c..beb6eb413 100644 --- a/front/src/modules/metadata/hooks/useCreateOneObject.ts +++ b/front/src/modules/metadata/hooks/useCreateOneObject.ts @@ -7,7 +7,7 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject'; export const useCreateOneObject = ({ objectNamePlural, -}: MetadataObjectIdentifier) => { +}: Pick) => { const { foundMetadataObject, objectNotFoundInMetadata, diff --git a/front/src/modules/metadata/hooks/useDeleteOneObject.ts b/front/src/modules/metadata/hooks/useDeleteOneObject.ts index 034c68dff..84c6292e9 100644 --- a/front/src/modules/metadata/hooks/useDeleteOneObject.ts +++ b/front/src/modules/metadata/hooks/useDeleteOneObject.ts @@ -7,7 +7,7 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject'; export const useDeleteOneObject = ({ objectNamePlural, -}: MetadataObjectIdentifier) => { +}: Pick) => { const { foundMetadataObject, objectNotFoundInMetadata, diff --git a/front/src/modules/metadata/hooks/useFindManyObjects.ts b/front/src/modules/metadata/hooks/useFindManyObjects.ts index e0293d18e..6bbf08aef 100644 --- a/front/src/modules/metadata/hooks/useFindManyObjects.ts +++ b/front/src/modules/metadata/hooks/useFindManyObjects.ts @@ -13,7 +13,7 @@ export const useFindManyObjects = < ObjectType extends { id: string } & Record, >({ objectNamePlural, -}: MetadataObjectIdentifier) => { +}: Pick) => { const { foundMetadataObject, objectNotFoundInMetadata, findManyQuery } = useFindOneMetadataObject({ objectNamePlural, @@ -28,10 +28,12 @@ export const useFindManyObjects = < const objects = useMemo( () => - formatPagedObjectsToObjects({ - pagedObjects: data, - objectNamePlural, - }), + objectNamePlural + ? formatPagedObjectsToObjects({ + pagedObjects: data, + objectNamePlural, + }) + : [], [data, objectNamePlural], ); diff --git a/front/src/modules/metadata/hooks/useFindOneMetadataObject.ts b/front/src/modules/metadata/hooks/useFindOneMetadataObject.ts index dc736fc23..0fbc16027 100644 --- a/front/src/modules/metadata/hooks/useFindOneMetadataObject.ts +++ b/front/src/modules/metadata/hooks/useFindOneMetadataObject.ts @@ -7,16 +7,20 @@ import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier'; import { formatMetadataFieldAsColumnDefinition } from '../utils/formatMetadataFieldAsColumnDefinition'; import { generateCreateOneObjectMutation } from '../utils/generateCreateOneObjectMutation'; import { generateFindManyCustomObjectsQuery } from '../utils/generateFindManyCustomObjectsQuery'; +import { generateFindOneCustomObjectQuery } from '../utils/generateFindOneCustomObjectQuery'; import { useFindManyMetadataObjects } from './useFindManyMetadataObjects'; export const useFindOneMetadataObject = ({ objectNamePlural, + objectNameSingular, }: MetadataObjectIdentifier) => { const { metadataObjects, loading } = useFindManyMetadataObjects(); const foundMetadataObject = metadataObjects.find( - (object) => object.namePlural === objectNamePlural, + (object) => + object.namePlural === objectNamePlural || + object.nameSingular === objectNameSingular, ); const objectNotFoundInMetadata = @@ -28,6 +32,7 @@ export const useFindOneMetadataObject = ({ formatMetadataFieldAsColumnDefinition({ index, field, + metadataObject: foundMetadataObject, }), ) ?? []; @@ -41,6 +46,16 @@ export const useFindOneMetadataObject = ({ } `; + const findOneQuery = foundMetadataObject + ? generateFindOneCustomObjectQuery({ + metadataObject: foundMetadataObject, + }) + : gql` + query EmptyQuery { + empty + } + `; + const createOneMutation = foundMetadataObject ? generateCreateOneObjectMutation({ metadataObject: foundMetadataObject, @@ -67,6 +82,7 @@ export const useFindOneMetadataObject = ({ objectNotFoundInMetadata, columnDefinitions, findManyQuery, + findOneQuery, createOneMutation, deleteOneMutation, loading, diff --git a/front/src/modules/metadata/hooks/useFindOneObject.ts b/front/src/modules/metadata/hooks/useFindOneObject.ts new file mode 100644 index 000000000..0d45713a7 --- /dev/null +++ b/front/src/modules/metadata/hooks/useFindOneObject.ts @@ -0,0 +1,46 @@ +import { useQuery } from '@apollo/client'; + +import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier'; + +import { useFindOneMetadataObject } from './useFindOneMetadataObject'; + +export const useFindOneObject = < + ObjectType extends { id: string } & Record, +>({ + objectNameSingular, + objectId, + onCompleted, +}: Pick & { + objectId: string | undefined; + onCompleted?: (data: ObjectType) => void; +}) => { + const { foundMetadataObject, objectNotFoundInMetadata, findOneQuery } = + useFindOneMetadataObject({ + objectNameSingular, + }); + + const { data, loading, error } = useQuery< + { [nameSingular: string]: ObjectType }, + { objectId: string } + >(findOneQuery, { + skip: !foundMetadataObject || !objectId, + variables: { + objectId: objectId ?? '', + }, + onCompleted: (data) => { + if (onCompleted && objectNameSingular) { + onCompleted(data[objectNameSingular]); + } + }, + }); + + const object = + objectNameSingular && data ? data[objectNameSingular] : undefined; + + return { + object, + loading, + error, + objectNotFoundInMetadata, + }; +}; diff --git a/front/src/modules/metadata/hooks/useUpdateOneObject.ts b/front/src/modules/metadata/hooks/useUpdateOneObject.ts index 579a3e31b..e37ec2a11 100644 --- a/front/src/modules/metadata/hooks/useUpdateOneObject.ts +++ b/front/src/modules/metadata/hooks/useUpdateOneObject.ts @@ -1,4 +1,5 @@ import { gql, useMutation } from '@apollo/client'; +import { getOperationName } from '@apollo/client/utilities'; import { MetadataObjectIdentifier } from '../types/MetadataObjectIdentifier'; import { generateUpdateOneObjectMutation } from '../utils/generateUpdateOneObjectMutation'; @@ -7,10 +8,12 @@ import { useFindOneMetadataObject } from './useFindOneMetadataObject'; export const useUpdateOneObject = ({ objectNamePlural, + objectNameSingular, }: MetadataObjectIdentifier) => { - const { foundMetadataObject, objectNotFoundInMetadata } = + const { foundMetadataObject, objectNotFoundInMetadata, findManyQuery } = useFindOneMetadataObject({ objectNamePlural, + objectNameSingular, }); const generatedMutation = foundMetadataObject @@ -24,7 +27,9 @@ export const useUpdateOneObject = ({ `; // TODO: type this with a minimal type at least with Record - const [mutate] = useMutation(generatedMutation); + const [mutate] = useMutation(generatedMutation, { + refetchQueries: [getOperationName(findManyQuery) ?? ''], + }); const updateOneObject = foundMetadataObject ? ({ diff --git a/front/src/modules/metadata/types/MetadataObjectIdentifier.ts b/front/src/modules/metadata/types/MetadataObjectIdentifier.ts index 05c3f1be0..c47e27c5f 100644 --- a/front/src/modules/metadata/types/MetadataObjectIdentifier.ts +++ b/front/src/modules/metadata/types/MetadataObjectIdentifier.ts @@ -1,3 +1,4 @@ export type MetadataObjectIdentifier = { - objectNamePlural: string; + objectNamePlural?: string; + objectNameSingular?: string; }; diff --git a/front/src/modules/metadata/utils/formatMetadataFieldAsColumnDefinition.ts b/front/src/modules/metadata/utils/formatMetadataFieldAsColumnDefinition.ts index 5cf12e90a..54e4d660b 100644 --- a/front/src/modules/metadata/utils/formatMetadataFieldAsColumnDefinition.ts +++ b/front/src/modules/metadata/utils/formatMetadataFieldAsColumnDefinition.ts @@ -20,9 +20,11 @@ const parseFieldType = (fieldType: string): FieldType => { export const formatMetadataFieldAsColumnDefinition = ({ index, field, + metadataObject, }: { index: number; field: MetadataObject['fields'][0]; + metadataObject: Omit; }): ColumnDefinition => ({ index, key: field.name, @@ -35,4 +37,5 @@ export const formatMetadataFieldAsColumnDefinition = ({ }, Icon: IconBrandLinkedin, isVisible: true, + basePathToShowPage: `/object/${metadataObject.nameSingular}/`, }); diff --git a/front/src/modules/metadata/utils/generateFindOneCustomObjectQuery.ts b/front/src/modules/metadata/utils/generateFindOneCustomObjectQuery.ts new file mode 100644 index 000000000..be20c0e58 --- /dev/null +++ b/front/src/modules/metadata/utils/generateFindOneCustomObjectQuery.ts @@ -0,0 +1,24 @@ +import { gql } from '@apollo/client'; + +import { MetadataObject } from '../types/MetadataObject'; + +import { mapFieldMetadataToGraphQLQuery } from './mapFieldMetadataToGraphQLQuery'; + +export const generateFindOneCustomObjectQuery = ({ + metadataObject, +}: { + metadataObject: MetadataObject; +}) => { + return gql` + query FindOne${metadataObject.nameSingular}($objectId: UUID!) { + ${metadataObject.nameSingular}(filter: { + id: { + eq: $objectId + } + }){ + id + ${metadataObject.fields.map(mapFieldMetadataToGraphQLQuery).join('\n')} + } + } + `; +}; diff --git a/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDataType.tsx b/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDataType.tsx index 108b78112..c3b70e89f 100644 --- a/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDataType.tsx +++ b/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldDataType.tsx @@ -31,7 +31,8 @@ export const SettingsObjectFieldDataType = ({ value, }: SettingsObjectFieldDataTypeProps) => { const theme = useTheme(); - const { label, Icon } = dataTypes[value]; + + const { label, Icon } = dataTypes?.[value]; return ( diff --git a/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldItemTableRow.tsx b/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldItemTableRow.tsx index f18f66ebb..3c348ee20 100644 --- a/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldItemTableRow.tsx +++ b/front/src/modules/settings/data-model/object-details/components/SettingsObjectFieldItemTableRow.tsx @@ -37,6 +37,18 @@ export const SettingsObjectFieldItemTableRow = ({ const theme = useTheme(); const { Icon } = useLazyLoadIcon(fieldItem.icon ?? ''); + // TODO: parse with zod and merge types with FieldType (create a subset of FieldType for example) + const fieldDataTypeIsSupported = [ + 'text', + 'number', + 'boolean', + 'url', + ].includes(fieldItem.type); + + if (!fieldDataTypeIsSupported) { + return <>; + } + return ( diff --git a/front/src/modules/types/AppPath.ts b/front/src/modules/types/AppPath.ts index 9c0a033b4..0b8e0acb6 100644 --- a/front/src/modules/types/AppPath.ts +++ b/front/src/modules/types/AppPath.ts @@ -19,6 +19,8 @@ export enum AppPath { OpportunitiesPage = '/opportunities', ObjectTablePage = '/objects/:objectNamePlural', + ObjectShowPage = '/object/:objectNameSingular/:objectId', + SettingsCatchAll = `/settings/*`, DevelopersCatchAll = `/developers/*`, diff --git a/front/src/modules/ui/data/data-table/hooks/useCloseCurrentTableCellInEditMode.ts b/front/src/modules/ui/data/data-table/hooks/useCloseCurrentTableCellInEditMode.ts index 6c0e7d604..80cb41fa9 100644 --- a/front/src/modules/ui/data/data-table/hooks/useCloseCurrentTableCellInEditMode.ts +++ b/front/src/modules/ui/data/data-table/hooks/useCloseCurrentTableCellInEditMode.ts @@ -6,9 +6,9 @@ import { isTableCellInEditModeFamilyState } from '../states/isTableCellInEditMod export const useCloseCurrentTableCellInEditMode = () => useRecoilCallback(({ set, snapshot }) => { return async () => { - const currentTableCellInEditModePosition = await snapshot.getPromise( - currentTableCellInEditModePositionState, - ); + const currentTableCellInEditModePosition = snapshot + .getLoadable(currentTableCellInEditModePositionState) + .valueOrThrow(); set( isTableCellInEditModeFamilyState(currentTableCellInEditModePosition), diff --git a/front/src/modules/ui/layout/board/components/BoardOptionsDropdownContent.tsx b/front/src/modules/ui/layout/board/components/BoardOptionsDropdownContent.tsx index 55b434881..419b73167 100644 --- a/front/src/modules/ui/layout/board/components/BoardOptionsDropdownContent.tsx +++ b/front/src/modules/ui/layout/board/components/BoardOptionsDropdownContent.tsx @@ -110,6 +110,7 @@ export const BoardOptionsDropdownContent = ({ const viewEditMode = snapshot .getLoadable(viewEditModeScopedState({ scopeId: boardRecoilScopeId })) .getValue(); + if (!viewEditMode) { return; } diff --git a/front/src/modules/ui/utilities/hotkey/hooks/useSetHotkeyScope.ts b/front/src/modules/ui/utilities/hotkey/hooks/useSetHotkeyScope.ts index 36d19efd3..6d8c8e0ba 100644 --- a/front/src/modules/ui/utilities/hotkey/hooks/useSetHotkeyScope.ts +++ b/front/src/modules/ui/utilities/hotkey/hooks/useSetHotkeyScope.ts @@ -23,9 +23,10 @@ export const useSetHotkeyScope = () => useRecoilCallback( ({ snapshot, set }) => async (hotkeyScopeToSet: string, customScopes?: CustomHotkeyScopes) => { - const currentHotkeyScope = await snapshot.getPromise( - currentHotkeyScopeState, - ); + const currentHotkeyScope = snapshot + .getLoadable(currentHotkeyScopeState) + .valueOrThrow(); + if (currentHotkeyScope.scope === hotkeyScopeToSet) { if (!isDefined(customScopes)) { if ( diff --git a/front/src/modules/views/hooks/internal/useViewFields.ts b/front/src/modules/views/hooks/internal/useViewFields.ts index 99ede9967..b601d8c9b 100644 --- a/front/src/modules/views/hooks/internal/useViewFields.ts +++ b/front/src/modules/views/hooks/internal/useViewFields.ts @@ -13,6 +13,7 @@ import { } from '~/generated/graphql'; import { GET_VIEW_FIELDS } from '../../graphql/queries/getViewFields'; +import { GET_VIEWS } from '@/views/graphql/queries/getViews'; export const toViewFieldInput = ( objectId: string, @@ -92,6 +93,7 @@ export const useViewFields = (viewScopeId: string) => { viewId_key: { key: viewField.key, viewId: currentViewId }, }, }, + refetchQueries: [getOperationName(GET_VIEWS) ?? ''], }), ), ); diff --git a/front/tsconfig.json b/front/tsconfig.json index 09b2d2485..22f955a22 100644 --- a/front/tsconfig.json +++ b/front/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "lib": ["dom", "dom.iterable", "esnext", "ES2023", "ES2023.Array"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, diff --git a/front/yarn.lock b/front/yarn.lock index 849c23cae..c0ee39887 100644 --- a/front/yarn.lock +++ b/front/yarn.lock @@ -18729,10 +18729,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -typescript@^4.9.3: - version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" - integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== +typescript@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78" + integrity sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w== ua-parser-js@^1.0.35: version "1.0.35"