import React, {MouseEvent, forwardRef, ForwardedRef, ReactNode, MouseEventHandler, CSSProperties} from 'react'; import cls from 'classnames'; import {IconType, Icon} from '@core0/icon'; import cn from './roundButton.module.styl'; interface RoundButtonProps { pulse?: boolean; children?: ReactNode; icon?: IconType; inverse?: boolean; secondary?: boolean; flat?: boolean; type?: 'submit' | 'reset' | 'button'; size?: 'tiny' | 'small' | 'regular' | 'large' | 'huge' | 'oval'; labelState?: 'selected' | 'deselected'; disabled?: boolean; className?: string; style?: CSSProperties; onClick?: MouseEventHandler; onMouseDown?: MouseEventHandler; onMouseUp?: MouseEventHandler; } export const RoundButton = forwardRef((props: RoundButtonProps, ref: ForwardedRef) => { const { onClick = () => {}, onMouseDown = () => {}, onMouseUp = () => {}, type = 'button', size = 'regular', disabled = false, className = '', pulse = false, flat, inverse, secondary, labelState, icon, style, children } = props; function clickHandler(evt: MouseEvent) { if (!disabled) onClick(evt); } function mouseDownHandler(evt: MouseEvent) { if (!disabled) onMouseDown(evt); } function mouseUpHandler(evt: MouseEvent) { if (!disabled) onMouseUp(evt); } return ( ); });