@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
132 lines • 3.59 kB
TypeScript
import type { ReactNode } from 'react';
import type { TouchableOpacityProps, StyleProp, TextStyle, ViewStyle, ViewProps, ColorValue } from 'react-native';
import type { FixHitSlopProps } from '../helpers/types';
import type { SpaceProps } from '../space/interface';
import type { CheckboxTheme } from './style';
interface CheckboxIconPrivateProps {
/**
* 是否选中、高亮
*/
active?: boolean;
/**
* 选中状态颜色
* @default checkbox_checked_icon_color
*/
activeColor?: ColorValue;
/**
* 图标大小,默认单位为 px
* @default 20
*/
size?: number;
}
export interface CheckboxIconProps extends FixHitSlopProps<TouchableOpacityProps>, CheckboxIconPrivateProps {
theme?: Partial<CheckboxTheme>;
}
interface RenderIconProps extends CheckboxIconPrivateProps {
disabled?: boolean;
style?: StyleProp<ViewStyle>;
onPress?: TouchableOpacityProps['onPress'];
}
export interface CheckboxProps<ActiveValueT = any, InactiveValueT = any> extends Pick<CheckboxIconPrivateProps, 'activeColor'>, ViewProps {
theme?: Partial<CheckboxTheme>;
/**
* 文案样式
*/
labelTextStyle?: StyleProp<TextStyle>;
/**
* 图标样式
*/
iconStyle?: StyleProp<ViewStyle>;
/**
* 默认值
*/
defaultValue?: ActiveValueT | InactiveValueT;
/**
* 当前的值
*/
value?: ActiveValueT | InactiveValueT;
/**
* 状态变化
*/
onChange?: (value: ActiveValueT | InactiveValueT) => void;
/**
* 选中时对应的值
* @default true
*/
activeValue?: ActiveValueT;
/**
* 未选中时对应的值
* @default false
*/
inactiveValue?: InactiveValueT;
/**
* 文案
*/
label?: ReactNode;
/**
* 是否禁用复选框文本点击
* @default false
*/
labelDisabled?: boolean;
/**
* 文本位置,可选值为 `'left' | 'right'`
* @default 'right'
*/
labelPosition?: 'left' | 'right';
/**
* 图标大小
* @default 20
*/
iconSize?: number;
/**
* 是否禁用复选框
*/
disabled?: boolean;
/**
* 自定义图标
*/
renderIcon?: (p: RenderIconProps) => ReactNode;
/**
* 文字与图标之间的间距
* @default checkbox_label_margin
*/
gap?: number;
}
export interface CheckboxGroupProps<ActiveValueT = any> extends SpaceProps, Partial<Pick<CheckboxProps, 'activeColor' | 'iconSize'>> {
theme?: Partial<CheckboxTheme>;
checkboxLabelTextStyle?: CheckboxProps['labelTextStyle'];
checkboxIconLabelGap?: number;
options: ({
value: ActiveValueT;
label: string;
} & Partial<Pick<CheckboxProps, 'gap' | 'labelTextStyle' | 'disabled' | 'iconSize' | 'activeColor'>>)[];
/**
* 是否多选
* @default false
*/
multiple?: boolean;
value?: ActiveValueT | ActiveValueT[];
defaultValue?: ActiveValueT | ActiveValueT[];
onChange?: (value: ActiveValueT[] | ActiveValueT, options: {
value: ActiveValueT;
label: string;
disabled?: boolean;
}[]) => void;
/**
* 是否可以编辑,readonly 相似,保持 TextInput 自带的属性效果
* @default true
*/
editable?: boolean;
/**
* 是否可滚动,主要用于横向排版
* @default false
*/
scrollable?: boolean;
/**
* 单选的情况下是否可以取消选择
* @default true
*/
deselect?: boolean;
}
export {};
//# sourceMappingURL=interface.d.ts.map