UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

51 lines (50 loc) 1.35 kB
import * as React from 'react'; import cx from 'classnames'; import { Button } from './Button.js'; import { DropdownMenu } from '../DropdownMenu/DropdownMenu.js'; import { SvgCaretDownSmall, SvgCaretUpSmall } from '../../utils/index.js'; export const DropdownButton = React.forwardRef((props, forwardedRef) => { let { menuItems, className, size, styleType, children, dropdownMenuProps, ...rest } = props; let [isMenuOpen, setIsMenuOpen] = React.useState(false); return React.createElement( DropdownMenu, { menuItems: menuItems, matchWidth: true, visible: isMenuOpen, ...dropdownMenuProps, onVisibleChange: (open) => { setIsMenuOpen(open); dropdownMenuProps?.onVisibleChange?.(open); }, }, React.createElement( Button, { className: cx('iui-button-dropdown', className), size: size, styleType: styleType, endIcon: isMenuOpen ? React.createElement(SvgCaretUpSmall, { 'aria-hidden': true, }) : React.createElement(SvgCaretDownSmall, { 'aria-hidden': true, }), ref: forwardedRef, ...rest, }, children, ), ); }); if ('development' === process.env.NODE_ENV) DropdownButton.displayName = 'DropdownButton';