UNPKG

@fruits-chain/react-native-xiaoshu

Version:
149 lines (122 loc) 2.61 kB
import type React from 'react' import type { PopupPropsCommon } from '../popup/interface' export type SelectorValue = number | string export type SelectorOption = { /** * 显示的文案 */ label: string /** * 唯一标识 */ value: SelectorValue /** * 是否禁用 * @default false */ disabled?: boolean } export interface SelectorProps extends Omit<PopupPropsCommon, 'closeOnPressOverlay' | 'onPressOverlay'> { /** * 点击遮罩层关闭 * @default true */ closeOnPressOverlay?: boolean /** * 标题 * @default '请选择' */ title?: React.ReactNode /** * 是否显示关闭图标 * @default true */ showClose?: boolean /** * 是否多选 * @default false */ multiple?: boolean /** * 当前选中的值 */ value?: SelectorValue[] | SelectorValue /** * 当前的选项 */ options: SelectorOption[] /** * 选择后的回调 */ onChange?: ( value: SelectorValue[] | SelectorValue, options: SelectorOption[], ) => void /** * 当值变化的时候立即响应 */ onChangeImmediate?: ( v: SelectorValue[] | SelectorValue, ) => SelectorValue[] | SelectorValue /** * 顶部安全高度 * @default safeAreaInsets.top */ safeAreaInsetTop?: number /** * 确定按钮文案 * @default '确定' */ confirmButtonText?: string } export interface SelectorMethodProps extends Omit<SelectorProps, 'visible'> {} export interface SelectorOptions extends Omit<SelectorMethodProps, 'onChange' | 'onRequestClose'> { // 是否可以删了,函数的方式直接用 .then 操作 onChange?: ( value: SelectorValue[] | SelectorValue, options: SelectorOption | SelectorOption[], ) => void } export interface SelectorTextProps { /** * 标题 * @default '请选择' */ title?: React.ReactNode /** * 当前选中的值 */ value: SelectorValue /** * 当前的选项 */ options: SelectorOption[] /** * 选择后的回调 */ onChange?: (value: SelectorValue, options: SelectorOption) => void /** * 箭头方向 * @default 'right' */ arrowDirection?: 'left' | 'up' | 'right' | 'down' /** * 显示分割线 * @default true */ divider?: boolean /** * 左侧是否有间距 * @default true */ head?: boolean } export type SelectorFnInstance = ( p: SelectorOptions, ) => Promise<SelectorValue[] | SelectorValue> export interface SelectorInstance extends SelectorFnInstance { Component: React.FC<SelectorProps> Text: React.FC<SelectorTextProps> }