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 <bordeau.lucas@gmail.com>
This commit is contained in:
@ -20,11 +20,11 @@ export const useOpenCreateActivityDrawerForSelectedRowIds = () => {
|
|||||||
entityType: ActivityTargetableEntityType,
|
entityType: ActivityTargetableEntityType,
|
||||||
relatedEntities?: ActivityTargetableEntity[],
|
relatedEntities?: ActivityTargetableEntity[],
|
||||||
) => {
|
) => {
|
||||||
const selectedRowIds = Object.keys(
|
const selectedRowIds = snapshot
|
||||||
snapshot.getLoadable(selectedRowIdsSelector).getValue(),
|
.getLoadable(selectedRowIdsSelector)
|
||||||
);
|
.getValue();
|
||||||
let activityTargetableEntityArray: ActivityTargetableEntity[] =
|
let activityTargetableEntityArray: ActivityTargetableEntity[] =
|
||||||
selectedRowIds.map((id) => ({
|
selectedRowIds.map((id: string) => ({
|
||||||
type: entityType,
|
type: entityType,
|
||||||
id,
|
id,
|
||||||
}));
|
}));
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { useCallback } from 'react';
|
|||||||
import { isNonEmptyString } from '@sniptt/guards';
|
import { isNonEmptyString } from '@sniptt/guards';
|
||||||
import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil';
|
import { useRecoilCallback, useRecoilValue, useSetRecoilState } from 'recoil';
|
||||||
|
|
||||||
|
import { useOpenCreateActivityDrawerForSelectedRowIds } from '@/activities/hooks/useOpenCreateActivityDrawerForSelectedRowIds';
|
||||||
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
import { useFavorites } from '@/favorites/hooks/useFavorites';
|
||||||
import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural';
|
import { useObjectNameSingularFromPlural } from '@/object-metadata/hooks/useObjectNameSingularFromPlural';
|
||||||
import { useDeleteManyRecords } from '@/object-record/hooks/useDeleteManyRecords';
|
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 { RecordTableScopeInternalContext } from '@/object-record/record-table/scopes/scope-internal-context/RecordTableScopeInternalContext';
|
||||||
import { selectedRowIdsSelector } from '@/object-record/record-table/states/selectors/selectedRowIdsSelector';
|
import { selectedRowIdsSelector } from '@/object-record/record-table/states/selectors/selectedRowIdsSelector';
|
||||||
import {
|
import {
|
||||||
|
IconCheckbox,
|
||||||
IconHeart,
|
IconHeart,
|
||||||
IconHeartOff,
|
IconHeartOff,
|
||||||
|
IconNotes,
|
||||||
IconTrash,
|
IconTrash,
|
||||||
IconWand,
|
IconWand,
|
||||||
} from '@/ui/display/icon';
|
} from '@/ui/display/icon';
|
||||||
@ -47,6 +50,13 @@ export const useRecordTableContextMenuEntries = (
|
|||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const objectMetadataType =
|
||||||
|
objectNameSingular === 'company'
|
||||||
|
? 'Company'
|
||||||
|
: objectNameSingular === 'person'
|
||||||
|
? 'Person'
|
||||||
|
: 'Custom';
|
||||||
|
|
||||||
const { createFavorite, deleteFavorite, favorites } = useFavorites({
|
const { createFavorite, deleteFavorite, favorites } = useFavorites({
|
||||||
objectNamePlural,
|
objectNamePlural,
|
||||||
});
|
});
|
||||||
@ -113,6 +123,9 @@ export const useRecordTableContextMenuEntries = (
|
|||||||
'IS_QUICK_ACTIONS_ENABLED',
|
'IS_QUICK_ACTIONS_ENABLED',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const openCreateActivityDrawer =
|
||||||
|
useOpenCreateActivityDrawerForSelectedRowIds();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
setContextMenuEntries: useCallback(() => {
|
setContextMenuEntries: useCallback(() => {
|
||||||
const selectedRowId =
|
const selectedRowId =
|
||||||
@ -161,16 +174,20 @@ export const useRecordTableContextMenuEntries = (
|
|||||||
|
|
||||||
setActionBarEntries: useRecoilCallback(() => () => {
|
setActionBarEntries: useRecoilCallback(() => () => {
|
||||||
setActionBarEntriesState([
|
setActionBarEntriesState([
|
||||||
// {
|
{
|
||||||
// label: 'Task',
|
label: 'Task',
|
||||||
// Icon: IconCheckbox,
|
Icon: IconCheckbox,
|
||||||
// onClick: () => {},
|
onClick: () => {
|
||||||
// },
|
openCreateActivityDrawer('Task', objectMetadataType);
|
||||||
// {
|
},
|
||||||
// label: 'Note',
|
},
|
||||||
// Icon: IconNotes,
|
{
|
||||||
// onClick: () => {},
|
label: 'Note',
|
||||||
// },
|
Icon: IconNotes,
|
||||||
|
onClick: () => {
|
||||||
|
openCreateActivityDrawer('Note', objectMetadataType);
|
||||||
|
},
|
||||||
|
},
|
||||||
...(dataExecuteQuickActionOnmentEnabled
|
...(dataExecuteQuickActionOnmentEnabled
|
||||||
? [
|
? [
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user