import React from 'react'; import { DropdownButton } from '../../DropdownButton/DropdownButton'; import type { ActionMenu, MassActionDropdownType } from './types'; const toDropdownOptions = ( actions: ActionMenu, selectedRows: T[], selectedAll: boolean ): React.JSX.Element[] => { if (actions.length === 0) { return []; } return actions.map(action => { if ('submenu' in action) { return ( {toDropdownOptions(action.submenu, selectedRows, selectedAll)} ); } return ( action.onAction?.(selectedRows, selectedAll)} /> ); }); }; const isMassActionDropdowns = ( actions: ActionMenu | MassActionDropdownType[] ): actions is MassActionDropdownType[] => typeof actions[0] === 'object' && 'actions' in actions[0]; interface MassActionDropdownsProps { actions: ActionMenu | MassActionDropdownType[]; selectedRows: T[]; label: string; selectedAll: boolean; actionsDisabled?: boolean; } export const MassActionDropdown = ({ actions, selectedAll, label, selectedRows, actionsDisabled, ...rest }: MassActionDropdownsProps) => { if (isMassActionDropdowns(actions)) { return actions.map((dropdown, index) => (
{toDropdownOptions(dropdown.actions, selectedRows, selectedAll)}
)); } return (
{toDropdownOptions(actions, selectedRows, selectedAll)}
); };