Files
twenty/packages/twenty-front/src/modules/action-menu/actions/components/ActionOpenSidePanelPage.tsx
T

49 lines
1.3 KiB
TypeScript

import { ActionDisplay } from '@/action-menu/actions/display/components/ActionDisplay';
import { ActionConfigContext } from '@/action-menu/contexts/ActionConfigContext';
import { useNavigateCommandMenu } from '@/command-menu/hooks/useNavigateCommandMenu';
import { commandMenuSearchState } from '@/command-menu/states/commandMenuSearchState';
import { CommandMenuPages } from '@/command-menu/types/CommandMenuPages';
import { useContext } from 'react';
import { useSetRecoilState } from 'recoil';
import { IconComponent } from 'twenty-ui/display';
export const ActionOpenSidePanelPage = ({
page,
pageTitle,
pageIcon,
onClick,
shouldResetSearchState = false,
}: {
page: CommandMenuPages;
pageTitle: string;
pageIcon: IconComponent;
onClick?: () => void;
shouldResetSearchState?: boolean;
}) => {
const actionConfig = useContext(ActionConfigContext);
const { navigateCommandMenu } = useNavigateCommandMenu();
const setCommandMenuSearchState = useSetRecoilState(commandMenuSearchState);
if (!actionConfig) {
return null;
}
const handleClick = () => {
onClick?.();
navigateCommandMenu({
page,
pageTitle,
pageIcon,
});
if (shouldResetSearchState) {
setCommandMenuSearchState('');
}
};
return <ActionDisplay action={actionConfig} onClick={handleClick} />;
};