synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
66 lines • 2.73 kB
TypeScript
import { SxProps } from '@mui/material';
import { IconName } from '../../../IconSvg/IconSvg';
import { DropdownMenuItem } from '../../../menu/DropdownMenu';
import { MouseEvent } from 'react';
type EntityActionMenuDropdownMenuType = 'DOWNLOAD' | 'PRIMARY';
type EntityActionMenuDropdownMenuConfiguration = {
visible: boolean;
tooltipText?: string;
disabled?: boolean;
};
export type ActionConfiguration = {
visible: boolean;
text: string;
disabled?: boolean;
tooltipText?: string;
onClick?: (e: MouseEvent) => void;
href?: string;
};
export type ActionConfigurationMap = Record<string, ActionConfiguration>;
export type MenuConfigurationMap = Record<EntityActionMenuDropdownMenuType, EntityActionMenuDropdownMenuConfiguration>;
export type ActionViewProps = {
action: string;
icon?: IconName;
textSx?: SxProps;
iconSx?: SxProps;
};
export type EntityActionMenuLayout = {
buttonActions: ActionViewProps[];
downloadMenuActions: ActionViewProps[][];
primaryMenuActions: ActionViewProps[][];
primaryMenuText: string;
primaryMenuEndIcon: IconName;
menuButtonSx?: SxProps;
};
export type EntityActionMenuProps = {
actionConfiguration: ActionConfigurationMap;
menuConfiguration: MenuConfigurationMap;
layout: EntityActionMenuLayout;
};
declare function getUnmappedActions(actionConfiguration: ActionConfigurationMap, layout: EntityActionMenuLayout): ActionConfigurationMap;
/**
* Given a group of dropdown menu items and an action configuration,
* return a list of dropdown menu items with non-visible and non-configured actions removed.
* @param group
* @param actionConfiguration
*/
declare function mapAndFilterItemsInMenuGroup(group: ActionViewProps[], actionConfiguration: ActionConfigurationMap): DropdownMenuItem[];
/**
* Given a list of groups of dropdown menu actions, returns a list of dropdown menu item
* groups where non-visible actions have been removed, and groups with no visible actions
* have been removed.
* @param menuActions
* @param actionConfiguration
*/
declare function mapAndFilterMenuGroups(menuActions: ActionViewProps[][], actionConfiguration: ActionConfigurationMap): DropdownMenuItem[][];
/**
* The EntityActionMenu renders a menu that displays the actions that can be invoked on an Entity page.
*/
export default function EntityActionMenu(props: EntityActionMenuProps): import("react/jsx-runtime").JSX.Element;
export declare const EXPORTED_FOR_UNIT_TESTING: {
getUnmappedActions: typeof getUnmappedActions;
mapAndFilterItemsInMenuGroup: typeof mapAndFilterItemsInMenuGroup;
mapAndFilterMenuGroups: typeof mapAndFilterMenuGroups;
};
export {};
//# sourceMappingURL=EntityActionMenu.d.ts.map