On default objects: - Add see workflows On workflows: - Add see all runs (no selection) On workflow runs: - Add see workflows (no selection) - Add see linked workflow (single record selection) - Add see run version (single record selection) On workflows versions - Add see all runs (no selection) - Add see workflows (no selection) - Add see linked workflow (single record selection) - Add see linked runs (single record selection)
148 lines
4.8 KiB
TypeScript
148 lines
4.8 KiB
TypeScript
import { actionMenuEntriesComponentSelector } from '@/action-menu/states/actionMenuEntriesComponentSelector';
|
|
import {
|
|
ActionMenuEntryScope,
|
|
ActionMenuEntryType,
|
|
} from '@/action-menu/types/ActionMenuEntry';
|
|
import { COMMAND_MENU_NAVIGATE_COMMANDS } from '@/command-menu/constants/CommandMenuNavigateCommands';
|
|
import {
|
|
Command,
|
|
CommandScope,
|
|
CommandType,
|
|
} from '@/command-menu/types/Command';
|
|
import { useRecoilComponentValueV2 } from '@/ui/utilities/state/component-state/hooks/useRecoilComponentValueV2';
|
|
import { i18n } from '@lingui/core';
|
|
|
|
export const useCommandMenuCommands = () => {
|
|
const actionMenuEntries = useRecoilComponentValueV2(
|
|
actionMenuEntriesComponentSelector,
|
|
);
|
|
|
|
const navigateCommands = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.Navigation,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.Navigate,
|
|
scope: CommandScope.Global,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
})) as Command[];
|
|
|
|
// TODO: refactor this to use the config
|
|
const navigateCommandsFromConstants = Object.values(
|
|
COMMAND_MENU_NAVIGATE_COMMANDS,
|
|
);
|
|
const allNavigateCommands = navigateCommands.concat(
|
|
navigateCommandsFromConstants,
|
|
);
|
|
|
|
const actionRecordSelectionCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.Standard &&
|
|
actionMenuEntry.scope === ActionMenuEntryScope.RecordSelection,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.StandardAction,
|
|
scope: CommandScope.RecordSelection,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
const actionObjectCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.Standard &&
|
|
actionMenuEntry.scope === ActionMenuEntryScope.Object,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.StandardAction,
|
|
scope: CommandScope.Object,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
const actionGlobalCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.Standard &&
|
|
actionMenuEntry.scope === ActionMenuEntryScope.Global,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.StandardAction,
|
|
scope: CommandScope.Global,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
const workflowRunRecordSelectionCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.WorkflowRun &&
|
|
actionMenuEntry.scope === ActionMenuEntryScope.RecordSelection,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.WorkflowRun,
|
|
scope: CommandScope.RecordSelection,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
const workflowRunGlobalCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.WorkflowRun &&
|
|
actionMenuEntry.scope === ActionMenuEntryScope.Global,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.WorkflowRun,
|
|
scope: CommandScope.Global,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
const fallbackCommands: Command[] = actionMenuEntries
|
|
?.filter(
|
|
(actionMenuEntry) =>
|
|
actionMenuEntry.type === ActionMenuEntryType.Fallback,
|
|
)
|
|
?.map((actionMenuEntry) => ({
|
|
id: actionMenuEntry.key,
|
|
label: i18n._(actionMenuEntry.label),
|
|
Icon: actionMenuEntry.Icon,
|
|
onCommandClick: actionMenuEntry.onClick,
|
|
type: CommandType.Fallback,
|
|
scope: CommandScope.Global,
|
|
hotKeys: actionMenuEntry.hotKeys,
|
|
}));
|
|
|
|
return {
|
|
navigateCommands: allNavigateCommands,
|
|
actionRecordSelectionCommands,
|
|
actionGlobalCommands,
|
|
actionObjectCommands,
|
|
workflowRunRecordSelectionCommands,
|
|
workflowRunGlobalCommands,
|
|
fallbackCommands,
|
|
};
|
|
};
|