import { Component, ContextType, ReactNode, HTMLAttributes, MouseEvent, KeyboardEvent, KeyboardEventHandler } from 'react'; import { ConfigContext } from '@befe/brick-core'; export declare const SWITCH_SISES: readonly ["xs", "sm", "md"]; type SwitchSize = (typeof SWITCH_SISES)[number]; type SwitchPropsFromButton = Pick, 'onClick' | 'onMouseDown' | 'onBlur' | 'onFocus'>; export interface SwitchProps extends SwitchPropsFromButton { /** * 自定义 class */ className?: string; /** * 尺寸 * use config context `baseSize` as default */ size?: SwitchSize; /** * on/off 状态控制值 */ checked?: boolean; /** * on/off 状态默认值 */ defaultChecked?: boolean; /** * 是否使用内建的 icon label */ iconLabel?: boolean; /** * on 状态的内容 */ checkedLabel?: ReactNode; /** * off 状态的内容 */ uncheckedLabel?: ReactNode; /** * 是否禁用 */ disabled?: boolean; /** * 控制是否处于 loading 状态 * - loading spin icon 会根据 loadingDelay 延迟显示 * - loading 状态 click 立刻无效,但无 disabled 样式 */ loading?: boolean; /** * loading 图标的延迟响应时间 * 单位 ms * 0 为立即显示 */ loadingDelay?: number; /** * checked 变化前的回调,根据返回值进行 checked 的变化 * - promise,当 promise resolve 后进行 * - false,visible 不进行 * - true | void,立即进行 */ beforeChange?: (checked: boolean, e?: MouseEvent | KeyboardEvent) => Promise | boolean | void; /** * checked 变化时的回调 */ onChange?: (checked: boolean, e?: MouseEvent | KeyboardEvent) => void; } interface SwitchState { checked: boolean; showLoading: boolean; asyncLoading: boolean; } export declare class Switch extends Component { static displayName: string; static defaultProps: { className: string; defaultChecked: boolean; loadingDelay: number; }; static contextType: import("react").Context; static getDerivedStateFromProps(nextProps: SwitchProps): Partial | null; refButton: import("react").RefObject; context: ContextType; state: SwitchState; showLoadingHandler: import("@befe/brick-utils").DelayHandler<[], void>; get className(): string; get size(): "xs" | "sm" | "md"; get checkedLabel(): {} | null; get uncheckedLabel(): {} | null; get isUncontrolledLoading(): boolean; get isClickDisabled(): boolean; handlerClick: (e: MouseEvent) => void; handleKeyDown: KeyboardEventHandler; changeChecked(checked: boolean, e?: MouseEvent | KeyboardEvent): void; setAsyncLoading(loading: boolean): void; setShowLoading(showLoading: boolean): void; renderLabel(): import("react/jsx-runtime").JSX.Element | null; renderLoading(): import("react/jsx-runtime").JSX.Element | null; componentDidUpdate(prevProps: Readonly): void; componentWillUnmount(): void; render(): import("react/jsx-runtime").JSX.Element; } export {};