Spaces:
Configuration error
Configuration error
| import React, { ReactNode } from 'react' | |
| import Tooltip from './Tooltip' | |
| interface ButtonProps { | |
| border?: boolean | |
| disabled?: boolean | |
| children?: ReactNode | |
| className?: string | |
| icon?: ReactNode | |
| toolTip?: string | |
| onKeyDown?: () => void | |
| onClick?: () => void | |
| onDown?: (ev: PointerEvent) => void | |
| onUp?: (ev: PointerEvent) => void | |
| style?: React.CSSProperties | |
| } | |
| const Button: React.FC<ButtonProps> = props => { | |
| const { | |
| children, | |
| border, | |
| className, | |
| disabled, | |
| icon, | |
| toolTip, | |
| onKeyDown, | |
| onClick, | |
| onDown, | |
| onUp, | |
| style, | |
| } = props | |
| const blurOnClick = (e: React.MouseEvent<HTMLDivElement>) => { | |
| e.currentTarget.blur() | |
| onClick?.() | |
| } | |
| const renderButton = () => { | |
| return ( | |
| <div | |
| role="button" | |
| style={style} | |
| onKeyDown={onKeyDown} | |
| onClick={blurOnClick} | |
| onPointerDown={(ev: React.PointerEvent<HTMLDivElement>) => { | |
| onDown?.(ev.nativeEvent) | |
| }} | |
| onPointerUp={(ev: React.PointerEvent<HTMLDivElement>) => { | |
| onUp?.(ev.nativeEvent) | |
| }} | |
| tabIndex={-1} | |
| className={[ | |
| 'btn-primary', | |
| children ? 'btn-primary-content' : '', | |
| disabled === true ? 'btn-primary-disabled' : '', | |
| className, | |
| border ? `btn-border` : '', | |
| ].join(' ')} | |
| > | |
| {icon} | |
| {children} | |
| </div> | |
| ) | |
| } | |
| if (toolTip) { | |
| return <Tooltip content={toolTip}>{renderButton()}</Tooltip> | |
| } | |
| return renderButton() | |
| } | |
| Button.defaultProps = { | |
| disabled: false, | |
| border: false, | |
| } | |
| export default Button | |