Remove "When no records are selected" actions on record page ⌘O (#8575)

Closes #8566 
- Introduce the concept of scope for an ActionMenuEntry, scope is either
`global` or `record-selection`
This commit is contained in:
Raphaël Bosi
2024-11-20 14:33:16 +01:00
committed by GitHub
parent c133129eb0
commit 24c0b0f873
11 changed files with 35 additions and 15 deletions

View File

@@ -30,6 +30,7 @@ export const WorkflowRunActionEffect = () => {
addActionMenuEntry({ addActionMenuEntry({
type: 'workflow-run', type: 'workflow-run',
key: `workflow-run-${activeWorkflowVersion.id}`, key: `workflow-run-${activeWorkflowVersion.id}`,
scope: 'global',
label: capitalize(activeWorkflowVersion.workflow.name), label: capitalize(activeWorkflowVersion.workflow.name),
position: index, position: index,
Icon: IconSettingsAutomation, Icon: IconSettingsAutomation,

View File

@@ -106,6 +106,7 @@ export const DeleteRecordsActionEffect = ({
if (canDelete) { if (canDelete) {
addActionMenuEntry({ addActionMenuEntry({
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',
position, position,

View File

@@ -32,6 +32,7 @@ export const ExportRecordsActionEffect = ({
useEffect(() => { useEffect(() => {
addActionMenuEntry({ addActionMenuEntry({
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'export', key: 'export',
position, position,
label: displayedExportProgress( label: displayedExportProgress(

View File

@@ -51,6 +51,7 @@ export const ManageFavoritesActionEffect = ({
addActionMenuEntry({ addActionMenuEntry({
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'manage-favorites', key: 'manage-favorites',
label: isFavorite ? 'Remove from favorites' : 'Add to favorites', label: isFavorite ? 'Remove from favorites' : 'Add to favorites',
position, position,

View File

@@ -57,6 +57,7 @@ export const WorkflowRunRecordActionEffect = ({
addActionMenuEntry({ addActionMenuEntry({
type: 'workflow-run', type: 'workflow-run',
key: `workflow-run-${activeWorkflowVersion.id}`, key: `workflow-run-${activeWorkflowVersion.id}`,
scope: 'record-selection',
label: capitalize(activeWorkflowVersion.workflow.name), label: capitalize(activeWorkflowVersion.workflow.name),
position: index, position: index,
Icon: IconSettingsAutomation, Icon: IconSettingsAutomation,

View File

@@ -65,21 +65,25 @@ export const RightDrawerActionMenuDropdown = () => {
}} }}
dropdownComponents={ dropdownComponents={
<DropdownMenuItemsContainer> <DropdownMenuItemsContainer>
{actionMenuEntries.map((item, index) => ( {actionMenuEntries
<MenuItem .filter(
key={index} (actionMenuEntry) => actionMenuEntry.scope === 'record-selection',
LeftIcon={item.Icon} )
onClick={() => { .map((actionMenuEntry, index) => (
closeDropdown( <MenuItem
getRightDrawerActionMenuDropdownIdFromActionMenuId( key={index}
actionMenuId, LeftIcon={actionMenuEntry.Icon}
), onClick={() => {
); closeDropdown(
item.onClick?.(); getRightDrawerActionMenuDropdownIdFromActionMenuId(
}} actionMenuId,
text={item.label} ),
/> );
))} actionMenuEntry.onClick?.();
}}
text={actionMenuEntry.label}
/>
))}
</DropdownMenuItemsContainer> </DropdownMenuItemsContainer>
} }
/> />

View File

@@ -48,6 +48,7 @@ const meta: Meta<typeof RecordIndexActionMenuBar> = {
map.set('delete', { map.set('delete', {
isPinned: true, isPinned: true,
scope: 'record-selection',
type: 'standard', type: 'standard',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',

View File

@@ -22,6 +22,7 @@ export const Default: Story = {
args: { args: {
entry: { entry: {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',
position: 0, position: 0,
@@ -35,6 +36,7 @@ export const WithDangerAccent: Story = {
args: { args: {
entry: { entry: {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',
position: 0, position: 0,
@@ -49,6 +51,7 @@ export const WithInteraction: Story = {
args: { args: {
entry: { entry: {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'markAsDone', key: 'markAsDone',
label: 'Mark as done', label: 'Mark as done',
position: 0, position: 0,

View File

@@ -42,6 +42,7 @@ const meta: Meta<typeof RecordIndexActionMenuDropdown> = {
map.set('delete', { map.set('delete', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',
position: 0, position: 0,
@@ -51,6 +52,7 @@ const meta: Meta<typeof RecordIndexActionMenuDropdown> = {
map.set('markAsDone', { map.set('markAsDone', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'markAsDone', key: 'markAsDone',
label: 'Mark as done', label: 'Mark as done',
position: 1, position: 1,
@@ -60,6 +62,7 @@ const meta: Meta<typeof RecordIndexActionMenuDropdown> = {
map.set('addToFavorites', { map.set('addToFavorites', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'addToFavorites', key: 'addToFavorites',
label: 'Add to favorites', label: 'Add to favorites',
position: 2, position: 2,

View File

@@ -55,6 +55,7 @@ const meta: Meta<typeof RightDrawerActionMenuDropdown> = {
map.set('addToFavorites', { map.set('addToFavorites', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'addToFavorites', key: 'addToFavorites',
label: 'Add to favorites', label: 'Add to favorites',
position: 0, position: 0,
@@ -64,6 +65,7 @@ const meta: Meta<typeof RightDrawerActionMenuDropdown> = {
map.set('export', { map.set('export', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'export', key: 'export',
label: 'Export', label: 'Export',
position: 1, position: 1,
@@ -73,6 +75,7 @@ const meta: Meta<typeof RightDrawerActionMenuDropdown> = {
map.set('delete', { map.set('delete', {
type: 'standard', type: 'standard',
scope: 'record-selection',
key: 'delete', key: 'delete',
label: 'Delete', label: 'Delete',
position: 2, position: 2,

View File

@@ -3,6 +3,7 @@ import { IconComponent, MenuItemAccent } from 'twenty-ui';
export type ActionMenuEntry = { export type ActionMenuEntry = {
type: 'standard' | 'workflow-run'; type: 'standard' | 'workflow-run';
scope: 'global' | 'record-selection';
key: string; key: string;
label: string; label: string;
position: number; position: number;