@fruits-chain/react-native-xiaoshu
Version:
🌈 React Native UI library
79 lines (78 loc) • 2.09 kB
TypeScript
import type React from 'react';
import type { PopupPropsCommon } from '../popup/interface';
export declare type OptionData<T> = {
value: T;
label: string;
index?: string;
[index: string]: any;
};
export declare type RequestResponseData<T> = {
placeholder?: string;
options: OptionData<T>[];
};
export interface StepSelectorProps<T> extends PopupPropsCommon {
/**
* 标题
* @default '请选择'
*/
title?: React.ReactNode;
/**
* 顶部安全高度
* @default safeAreaInsets.top
*/
safeAreaInsetTop?: number;
/**
* 是否在显示弹层时才渲染节点
* @default true
*/
lazyRender?: boolean;
/**
* 是否显示圆角
* @default true
*/
round?: boolean;
value?: T[];
defaultValue?: T[];
onChange?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => void;
/**
* 点击关闭按钮
*/
onPressClose?: () => void;
/**
* 请求数据
*/
request: (parentId: T, index: number) => Promise<RequestResponseData<T>>;
}
export interface StepSelectorLineProps {
/**
* 当前的索引
*/
index: number;
/**
* 总数量
*/
total: number;
/**
* 是否是激活的样子
* @default false
*/
active?: boolean;
}
export interface StepSelectorMethodProps<T> extends Omit<StepSelectorProps<T>, 'value' | 'onChange' | 'onPressClose' | 'visible' | 'onRequestClose'> {
/**
* 当选择到最末端时触发,返回 false 可阻止关闭,支持返回 Promise
*/
beforeClose?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => boolean | Promise<boolean>;
/**
* 类似确定的回调,当选择到最末端时触发,部分业务需要把选项其他值提取出来
*/
onConfirm?: (v: T[], o: OptionData<T>[], isEnd?: boolean) => void;
/**
* 取消
*/
onCancel?: () => void;
}
export interface StepSelectorInstance {
<T>(p: StepSelectorMethodProps<T>): Promise<T[]>;
Component: <T>(p: StepSelectorProps<T>) => React.ReactElement;
}