import { Button, Dropdown, MenuItem } from 'react-bootstrap' import type { ButtonProps, MenuItemProps, DropdownButtonProps, DropdownProps, } from 'react-bootstrap' import type { PropsWithChildren } from 'react' import classNames from 'classnames' import Tooltip, { type TooltipProps } from './tooltip' import Icon, { type IconProps } from './icon' import type { BsSize, BsStyle } from '../../../../types/bootstrap' type SplitMenuBsStyle = Extract type SplitMenuBsSize = Extract type SplitMenuButtonProps = { tooltip?: TooltipProps bsStyle?: SplitMenuBsStyle text: string icon?: IconProps } & Pick type SplitMenuDropdownToggleProps = { handleAnimationEnd?: () => void } & Pick type SplitMenuDropdownProps = Pick type SplitMenuProps = PropsWithChildren<{ bsStyle: SplitMenuBsStyle bsSize?: SplitMenuBsSize button: Omit dropdown: SplitMenuDropdownProps dropdownToggle?: SplitMenuDropdownToggleProps disabled?: boolean }> function SplitMenu({ bsStyle, bsSize = 'md', button, dropdown, dropdownToggle, disabled = false, children, }: SplitMenuProps) { const { tooltip, icon, ...buttonProps } = button const splitMenuClassName = classNames('split-menu', { [`btn-${bsSize}`]: true, }) const dropdownToggleClassName = classNames( 'split-menu-dropdown-toggle', dropdownToggle?.className ) return (
{icon ? ( ) : null} {buttonProps.text} {children}
) } function SplitMenuButton({ onClick, disabled, tooltip, bsStyle, children, className, ...props }: PropsWithChildren>) { const buttonClassName = classNames('split-menu-button', className) if (tooltip) { return ( ) } return ( ) } function SplitMenuItem(props: MenuItemProps) { return } SplitMenu.Item = SplitMenuItem export default SplitMenu