import { tuple } from '../_util/type'; import type { PropType } from 'vue'; import PropTypes from '../_util/vue-types'; import buttonTypes from '../button/buttonTypes'; import type { MouseEventHandler } from '../_util/EventInterface'; type Align = { points?: [string, string]; offset?: [number, number]; targetOffset?: [number, number]; overflow?: { adjustX?: boolean; adjustY?: boolean; }; useCssRight?: boolean; useCssBottom?: boolean; useCssTransform?: boolean; }; export type DropdownArrowOptions = { pointAtCenter?: boolean; }; const dropdownProps = () => ({ arrow: { type: [Boolean, Object] as PropType, default: undefined, }, trigger: { type: [Array, String] as PropType< ('click' | 'hover' | 'contextmenu')[] | 'click' | 'hover' | 'contextmenu' >, }, overlay: PropTypes.any, visible: { type: Boolean, default: undefined }, disabled: { type: Boolean, default: undefined }, align: { type: Object as PropType }, getPopupContainer: Function, prefixCls: String, transitionName: String, placement: PropTypes.oneOf( tuple( 'topLeft', 'topCenter', 'top', 'topRight', 'bottomLeft', 'bottomCenter', 'bottom', 'bottomRight', ), ), overlayClassName: String, overlayStyle: PropTypes.style, forceRender: { type: Boolean, default: undefined }, mouseEnterDelay: Number, mouseLeaveDelay: Number, openClassName: String, minOverlayWidthMatchTrigger: { type: Boolean, default: undefined }, destroyPopupOnHide: { type: Boolean, default: undefined }, onVisibleChange: { type: Function as PropType<(val: boolean) => void>, }, 'onUpdate:visible': { type: Function as PropType<(val: boolean) => void>, }, }); const buttonTypesProps = buttonTypes(); const dropdownButtonProps = () => ({ ...dropdownProps(), type: buttonTypesProps.type, size: PropTypes.oneOf(tuple('small', 'large')), htmlType: buttonTypesProps.htmlType, href: String, disabled: { type: Boolean, default: undefined }, prefixCls: String, icon: PropTypes.any, title: String, loading: buttonTypesProps.loading, onClick: { type: Function as PropType, }, }); export { dropdownProps, dropdownButtonProps }; export default dropdownProps;