// @flow strict import * as React from 'react'; import type {ButtonProps} from '../Button'; import {Button} from '../Button'; import type {AnchorType} from '../ButtonDropdown'; import {ButtonDropdown} from '../ButtonDropdown'; import type {MenuOption, MenuProps} from '../Menu'; import css from './OptionButton.module.css'; export type OptionButtonProps = { ...ButtonProps, menu?: MenuProps, anchorPosition?: AnchorType, onOptionSelect?: (option: MenuOption) => mixed, onButtonClick?: ?(SyntheticEvent) => mixed, onMenuOpen?: () => mixed, onMenuClose?: () => mixed, ... }; export const OptionButton: React$AbstractComponent< OptionButtonProps, HTMLDivElement, > = React.forwardRef( ( { children, iconLeftName, iconLeftType, type, isFluid, disabled, size, isLoading, menu, anchorPosition, onOptionSelect, onButtonClick, onMenuOpen, onMenuClose, ariaLabel, actionType, }: OptionButtonProps, ref, ): React.Node => { const [iconName, setIconName] = React.useState('chevron-down'); return (
{ setIconName('chevron-down'); onMenuOpen && onMenuOpen(); }} onMenuOpen={() => { setIconName('chevron-up'); onMenuClose && onMenuClose(); }} onOptionSelect={onOptionSelect} size={size} />
); }, );