Action menu refactoring (#11454)
# Description Closes [#696](https://github.com/twentyhq/core-team-issues/issues/696) - `useAction` hooks have been removed for all actions - Every action can now declare a react component - Some standard action components have been introduced: `Action`, `ActionLink` and `ActionModal` - The `ActionDisplay` component uses the new `displayType` prop of the `ActionMenuContext` to render the right component for the action according to its container: `ActionButton`, `ActionDropdownItem` or `ActionListItem` - The `ActionDisplayer` wraps the action component inside a context which gives it all the information about the action -`actionMenuEntriesComponenState` has been removed and now all actions are computed directly using `useRegisteredAction` - This computation is done inside `ActionMenuContextProvider` and the actions are passed inside a context - `actionMenuType` gives information about the container of the action, so the action can know wether or not to close this container upon execution
This commit is contained in:
@ -0,0 +1,61 @@
|
||||
import { useCommandMenuActions } from '@/command-menu/hooks/useCommandMenuActions';
|
||||
import { useFilterActionsWithCommandMenuSearch } from '@/command-menu/hooks/useFilterActionsWithCommandMenuSearch';
|
||||
|
||||
export const useMatchingCommandMenuActions = ({
|
||||
commandMenuSearch,
|
||||
}: {
|
||||
commandMenuSearch: string;
|
||||
}) => {
|
||||
const { filterActionsWithCommandMenuSearch } =
|
||||
useFilterActionsWithCommandMenuSearch({
|
||||
commandMenuSearch,
|
||||
});
|
||||
|
||||
const {
|
||||
navigateActions,
|
||||
actionRecordSelectionActions,
|
||||
actionObjectActions,
|
||||
actionGlobalActions,
|
||||
workflowRunRecordSelectionActions,
|
||||
workflowRunGlobalActions,
|
||||
fallbackActions,
|
||||
} = useCommandMenuActions();
|
||||
|
||||
const matchingNavigateActions =
|
||||
filterActionsWithCommandMenuSearch(navigateActions);
|
||||
|
||||
const matchingStandardActionRecordSelectionActions =
|
||||
filterActionsWithCommandMenuSearch(actionRecordSelectionActions);
|
||||
|
||||
const matchingStandardActionObjectActions =
|
||||
filterActionsWithCommandMenuSearch(actionObjectActions);
|
||||
|
||||
const matchingStandardActionGlobalActions =
|
||||
filterActionsWithCommandMenuSearch(actionGlobalActions);
|
||||
|
||||
const matchingWorkflowRunRecordSelectionActions =
|
||||
filterActionsWithCommandMenuSearch(workflowRunRecordSelectionActions);
|
||||
|
||||
const matchingWorkflowRunGlobalActions = filterActionsWithCommandMenuSearch(
|
||||
workflowRunGlobalActions,
|
||||
);
|
||||
|
||||
const noResults =
|
||||
!matchingStandardActionRecordSelectionActions.length &&
|
||||
!matchingWorkflowRunRecordSelectionActions.length &&
|
||||
!matchingStandardActionGlobalActions.length &&
|
||||
!matchingWorkflowRunGlobalActions.length &&
|
||||
!matchingStandardActionObjectActions.length &&
|
||||
!matchingNavigateActions.length;
|
||||
|
||||
return {
|
||||
noResults,
|
||||
matchingStandardActionRecordSelectionActions,
|
||||
matchingStandardActionObjectActions,
|
||||
matchingWorkflowRunRecordSelectionActions,
|
||||
matchingStandardActionGlobalActions,
|
||||
matchingWorkflowRunGlobalActions,
|
||||
matchingNavigateActions,
|
||||
fallbackActions: noResults ? fallbackActions : [],
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user