import React from 'react'; import PropTypes from 'prop-types'; import RadioFoundation, { RadioAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioFoundation'; import { RadioChangeEvent } from '@douyinfe/semi-foundation/lib/es/radio/radioInnerFoundation'; import { strings } from '@douyinfe/semi-foundation/lib/es/radio/constants'; import '@douyinfe/semi-foundation/lib/es/radio/radio.css'; import BaseComponent from '../_base/baseComponent'; import RadioInner from './radioInner'; import { RadioContextValue, RadioMode } from './context'; export type RadioDisplayMode = 'vertical' | ''; export type RadioType = typeof strings.TYPE_DEFAULT | typeof strings.TYPE_BUTTON | typeof strings.TYPE_CARD | typeof strings.TYPE_PURECARD; export type RadioProps = { autoFocus?: boolean; checked?: boolean; children?: React.ReactNode; defaultChecked?: boolean; value?: string | number | boolean; disabled?: boolean; prefixCls?: string; displayMode?: RadioDisplayMode; onChange?: (e: RadioChangeEvent) => void; onMouseEnter?: (e: React.MouseEvent) => void; onMouseLeave?: (e: React.MouseEvent) => void; mode?: RadioMode; extra?: React.ReactNode; style?: React.CSSProperties; className?: string; addonStyle?: React.CSSProperties; addonClassName?: string; type?: RadioType; 'aria-label'?: React.AriaAttributes['aria-label']; addonId?: string; extraId?: string; name?: string; preventScroll?: boolean; }; export interface RadioState { hover?: boolean; addonId?: string; extraId?: string; focusVisible?: boolean; checked?: boolean; } export type { RadioChangeEvent }; declare class Radio extends BaseComponent { static contextType: React.Context; static propTypes: { autoFocus: PropTypes.Requireable; checked: PropTypes.Requireable; defaultChecked: PropTypes.Requireable; value: PropTypes.Requireable; style: PropTypes.Requireable; className: PropTypes.Requireable; disabled: PropTypes.Requireable; prefixCls: PropTypes.Requireable; displayMode: PropTypes.Requireable; onChange: PropTypes.Requireable<(...args: any[]) => any>; onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>; onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>; mode: PropTypes.Requireable<"" | "advanced">; extra: PropTypes.Requireable; addonStyle: PropTypes.Requireable; addonClassName: PropTypes.Requireable; type: PropTypes.Requireable<"default" | "button" | "card" | "pureCard">; 'aria-label': PropTypes.Requireable; preventScroll: PropTypes.Requireable; }; static defaultProps: Partial; static elementType: string; radioEntity: RadioInner; context: RadioContextValue; foundation: RadioFoundation; addonId: string; extraId: string; constructor(props: RadioProps); componentDidUpdate(prevProps: RadioProps): void; get adapter(): RadioAdapter; isInGroup(): { value?: string | number; isButtonRadio?: any; disabled?: boolean; prefixCls?: string; name?: string; onChange?: (e: RadioChangeEvent) => void; buttonSize?: "small" | "large" | "middle"; isCardRadio?: boolean; isPureCardRadio?: boolean; }; focus(): void; blur(): void; onChange: (e: RadioChangeEvent) => void; handleMouseEnter: (e: React.MouseEvent) => void; handleMouseLeave: (e: React.MouseEvent) => void; handleFocusVisible: (event: React.FocusEvent) => void; handleBlur: (event: React.FocusEvent) => void; render(): React.JSX.Element; } export default Radio;