import React, { ReactNode } from 'react'; import { BaseProps } from '../../wui-core/src/iCore'; export type Color = '' | 'dark' | 'success' | 'info' | 'warning' | 'danger' | 'primary'; export type Size = 'lg' | 'sm' | 'small' | 'large' | 'default' | 'md' | 'middle'; export type RadioValue = string | boolean | number; export interface RadioGroupProps extends BaseProps { name: string; /** * 默认选中的值 */ defaultValue: RadioValue; /** * 选中的值 */ selectedValue?: RadioValue; /** * 选中的值,作用与selectedValue一致,添加value属性是为了配合form表单校验初始化等一起使用 */ value?: RadioValue; /** * 暴露给用户,且与子Radio通信的方法 */ onChange: (value: RadioValue | React.ChangeEvent | React.MouseEvent, event?: React.ChangeEvent | React.MouseEvent) => void; onClick: (value: RadioValue | React.ChangeEvent | React.MouseEvent, event?: React.ChangeEvent | React.MouseEvent) => void; /** * radio 大小 */ size?: Size; antd: boolean; children: React.ReactNode; Component: keyof JSX.IntrinsicElements | React.ComponentClass; disabled?: boolean; readOnly: boolean; options?: (RadioProps & { label: ReactNode; } | string)[]; optionType?: "button" | "default"; } export interface RadioGroupState { focusValue?: RadioValue; selectedValue?: RadioValue | React.ChangeEvent; } export interface RadioProps extends Pick, 'size' | 'disabled' | 'readOnly' | 'antd' | 'value' | 'name' | 'selectedValue' | 'onClick'>, BaseProps { /** * radio 颜色 样式 */ color?: Color; /** * radio 样式 是否使用红色填充 */ inverse?: boolean; /** * radio 指定当前是否选中 */ checked?: boolean; /** * radio 初始是否选中 */ defaultChecked?: boolean; onChange?: (event: React.ChangeEvent, value: RadioValue) => void; focusValue?: RadioValue; } export interface RadioState { checked: boolean; focused: boolean; hovered: boolean; } export interface MockRadio { props: { value: RadioValue; }; } export interface RadioContext { } export interface OptionalProps { checked?: boolean; }