From b650b1dca340e4779c75f834812d26e174f1a779 Mon Sep 17 00:00:00 2001 From: Deepak Kumar Date: Tue, 26 Dec 2023 22:14:23 +0530 Subject: [PATCH] GH-3106 Ability to multi-note/task with action bar (#3137) * GH-3106 fix activity drawer opener for selected rows hook * GH-3106 ability to multi note/task with action bar * GH-3106 use snapshot to get selected row IDs * GH-3106 format code & fix linting issues --------- Co-authored-by: Lucas Bordeau --- ...enCreateActivityDrawerForSelectedRowIds.ts | 8 ++-- .../useRecordTableContextMenuEntries.tsx | 37 ++++++++++++++----- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds.ts b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds.ts index 372cb84c5..c5bc22f18 100644 --- a/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds.ts +++ b/packages/twenty-front/src/modules/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds.ts @@ -20,11 +20,11 @@ export const useOpenCreateActivityDrawerForSelectedRowIds = () => { entityType: ActivityTargetableEntityType, relatedEntities?: ActivityTargetableEntity[], ) => { - const selectedRowIds = Object.keys( - snapshot.getLoadable(selectedRowIdsSelector).getValue(), - ); + const selectedRowIds = snapshot + .getLoadable(selectedRowIdsSelector) + .getValue(); let activityTargetableEntityArray: ActivityTargetableEntity[] = - selectedRowIds.map((id) => ({ + selectedRowIds.map((id: string) => ({ type: entityType, id, })); diff --git a/packages/twenty-front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx b/packages/twenty-front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx index ea7b4a473..a669b7923 100644 --- a/packages/twenty-front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx +++ b/packages/twenty-front/src/modules/object-record/hooks/useRecordTableContextMenuEntries.tsx @@ -2,6 +2,7 @@ import { useCallback } from 'react'; import { isNonEmptyString } from '@sniptt/guards'; import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil'; +import { useOpenCreateActivityDrawerForSelectedRowIds } from '@/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds'; import { useFavorites } from '@/favorites/hooks/useFavorites'; import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural'; import { useDeleteManyRecords } from '@/object-record/hooks/useDeleteManyRecords'; @@ -10,8 +11,10 @@ import { useRecordTable } from '@/object-record/record-table/hooks/useRecordTabl import { RecordTableScopeInternalContext } from '@/object-record/record-table/scopes/scope-internal-context/RecordTableScopeInternalContext'; import { selectedRowIdsSelector } from '@/object-record/record-table/states/selectors/selectedRowIdsSelector'; import { + IconCheckbox, IconHeart, IconHeartOff, + IconNotes, IconTrash, IconWand, } from '@/ui/display/icon'; @@ -47,6 +50,13 @@ export const useRecordTableContextMenuEntries = ( objectNamePlural, }); + const objectMetadataType = + objectNameSingular === 'company' + ? 'Company' + : objectNameSingular === 'person' + ? 'Person' + : 'Custom'; + const { createFavorite, deleteFavorite, favorites } = useFavorites({ objectNamePlural, }); @@ -113,6 +123,9 @@ export const useRecordTableContextMenuEntries = ( 'IS_QUICK_ACTIONS_ENABLED', ); + const openCreateActivityDrawer = + useOpenCreateActivityDrawerForSelectedRowIds(); + return { setContextMenuEntries: useCallback(() => { const selectedRowId = @@ -161,16 +174,20 @@ export const useRecordTableContextMenuEntries = ( setActionBarEntries: useRecoilCallback(() => () => { setActionBarEntriesState([ - // { - // label: 'Task', - // Icon: IconCheckbox, - // onClick: () => {}, - // }, - // { - // label: 'Note', - // Icon: IconNotes, - // onClick: () => {}, - // }, + { + label: 'Task', + Icon: IconCheckbox, + onClick: () => { + openCreateActivityDrawer('Task', objectMetadataType); + }, + }, + { + label: 'Note', + Icon: IconNotes, + onClick: () => { + openCreateActivityDrawer('Note', objectMetadataType); + }, + }, ...(dataExecuteQuickActionOnmentEnabled ? [ {