import { MoreOutlined } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Button, Dropdown, Space, Tooltip, type MenuProps } from 'antd'; import classNames from 'classnames'; import _ from 'lodash'; import React from 'react'; import styled from 'styled-components'; import './index.less'; type Trigger = 'click' | 'hover'; interface DropdownButtonsProps { items: MenuProps['items']; size?: 'small' | 'middle' | 'large'; trigger?: Trigger[]; showText?: boolean; disabled?: boolean; variant?: 'filled' | 'outlined'; color?: string; extra?: React.ReactNode; onSelect: (val: any, item?: any) => void; } const DropdownWrapper = styled.div` display: flex; flex-direction: column; background-color: var(--ant-color-bg-elevated); padding: 5px; align-items: flex-start; border-radius: var(--border-radius-base); box-shadow: var(--ant-box-shadow-secondary); min-width: 160px; `; const DropdownButtons: React.FC< DropdownButtonsProps & { items: MenuProps['items'] } > = ({ items, size = 'middle', trigger = ['hover'], showText, disabled, variant, color, extra, onSelect }) => { const headItem = _.head(items); const intl = useIntl(); const handleMenuClick = (item: any) => { const selectItem = _.find(items, { key: item.key }); onSelect(item.key, selectItem); }; const handleButtonClick = (e: any) => { const headItem = _.head(items); onSelect(headItem.key, headItem); }; if (!items?.length) { return ; } return ( <> {items?.length === 1 ? ( ) : ( <> {showText ? ( ) : ( )} ({ ...item, ...item.props, label: item.locale || item.locale === undefined ? intl.formatMessage({ id: item.label }) : item.label })) }} > )} ); }; export default DropdownButtons;