import React from 'react'; import TouchRipple from '../TouchRipple'; import { Theme } from '../types'; import RippleInterface from './RippleInterface'; export interface RippleableComponentProps { /** * ripple组件的引用 * */ rippleRef?: (ripple?: TouchRipple) => void; withRippleRef?: (ripple?: RippleInterface) => void; /** * 子组件 * * @type {React.ReactNode} */ children?: React.ReactNode; /** * 启用聚焦时Ripple效果 * * @type {boolean} */ focusRipple?: boolean; /** * 不可用 * * @type {boolean} */ disabled?: boolean; /** * 禁用Ripple效果 * * @type {boolean} */ disableRipple?: boolean; /** * 禁用键盘引起的点击事件,如按钮和链接元素在获取到焦点后,点击键盘的enter或者space时,相当于点击。 * * @type {boolean} */ disableKeyboardClick?: boolean; /** * 从中间位置启用Ripple效果 * * @type {boolean} */ centerRipple?: boolean; /** * 监听键盘按下后再松开的事件 * * @type {(SyntheticEvent<*>)} */ onKeyUp?: (event: React.KeyboardEvent) => void; /** * 监听键盘按下的事件 */ onKeyDown?: (event: React.KeyboardEvent) => void; /** * 监听获取焦点的事件 */ onFocus?: (event: React.FocusEvent) => void; /** * 监听失去焦点的事件 */ onBlur?: (event: React.FocusEvent) => void; /** * 监听点击事件 */ onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void; /** * 监听鼠标按下事件 */ onMouseDown?: (event: React.MouseEvent) => void; /** * 监听鼠标离开事件 */ onMouseLeave?: (event: React.MouseEvent) => void; /** * 监听鼠标按下后松开事件 * */ onMouseUp?: (event: React.MouseEvent) => void; /** * 监听触摸结束事件 * */ onTouchEnd?: (event: React.TouchEvent) => void; /** * 监听触摸移动事件 * */ onTouchMove?: (event: React.TouchEvent) => void; /** * 监听触摸开始事件 * */ onTouchStart?: (event: React.TouchEvent) => void; /** * 监听通过键盘事件获取到焦点的事件 * */ onKeyboardFocus?: (event: React.KeyboardEvent) => void; /** * 获取到DOM元素 */ innerRef?: (node?: HTMLButtonElement) => void; /** * tab键顺序 * * @type {number} */ tabIndex?: number; /** * 样式 */ style?: React.CSSProperties; /** * 获取到焦点时的样式 */ focusedStyle?: React.CSSProperties; /** * 主题对象 * * @type {Object} */ theme?: Theme; } export interface StateType { /** * 处于键盘聚焦状态 * * @type {boolean} */ keyboardFocused: boolean; } /** * 给包装的组件添加点击Ripple效果 * * @param {React.ComponentType<{}> | string} Component 被包装的组件 */ export default function withRipple

(Component: any): React.ComponentType

;