UNPKG

react-address-picker-cc

Version:

仿京东移动端地址选择组件 mobile/pc address picker component

125 lines (124 loc) 3.38 kB
import * as React from 'react'; import * as PropTypes from 'prop-types'; interface IOneRowProps { id?: number; areaName?: string; subArea?: IOneRowProps[]; length?: number; } interface AddressProps { /** * 自定义className * * @type {(string | string[] | { [key: string]: boolean })} */ className?: string | string[] | { [key: string]: boolean; }; /** * 自定义Style * * @type {(string | React.CSSProperties)} */ customStyle?: string | React.CSSProperties; /** * 主题 */ theme?: '' | 'theme-light' | 'theme-dark' | string; /** * 数据源,多维数组 */ dataSource: IOneRowProps[]; /** * 自定义组件标题 */ title: string; /** * 地址导航提示文字 */ navTips: string; /** * 初始化地址的id数组 */ selectedIdList: number[]; /** * 是否异步获取数据 */ isAsyncData: boolean; /** * 自定义 关闭方法 */ onClose: () => void; /** * 异步数据返回的一级id */ /** * 初始化地址的id数组 * 返回值 Promise{asyncIdOne: number, dataSource: IOneRowProps[]} */ getOneLevelData: (item: IOneRowProps, level: number) => any; /** * 初始化地址的id数组 */ onAddressChange: (selectRowList: IOneRowProps) => void; /** * pickerStatusChange */ pickerStatusChange: (show: boolean) => void; } interface ITouchProps { startX?: number; startY?: number; moved?: boolean; targetIdx?: number; } interface AddressState { selectedRows: IOneRowProps[]; currentLevel: number; show: boolean; } export default class AddressPicker extends React.Component<AddressProps, AddressState> { static defaultProps: AddressProps; static propTypes: PropTypes.InferProps<AddressProps>; mainWrapRef: any; listWrapRef: any; navRef: any; navLineRef: any; idUUid: string; touch: ITouchProps; constructor(props: AddressProps); static getDerivedStateFromProps(nextProps: AddressProps, prevState: AddressState): { currentLevel: number; selectedRows: IOneRowProps[]; } | null; pickerStatusChange: (show: boolean) => void; componentWillUnmount(): void; componentDidUpdate(prevProps: AddressProps, prevState: AddressState): void; /** * 外部调用,显示事件 * * @memberof AddressPicker */ show: () => void; /** * 外部调用,显示事件 * * @memberof AddressPicker */ hide: () => void; changeInnerState: () => void; onTouchStart: (e: any) => void; onTouchMove: (e: any) => void; onTouchEnd: () => void; bindEvent: () => void; unBindEvent: () => void; doAnimation: () => void; setItemCenter: () => void; getOneLevelData: (item: IOneRowProps, level: number) => void; onSelectedRow: (item: IOneRowProps, level: number) => () => void; onSelectedNav: (level: number) => () => void; onNavBarMove: () => void; renderNextData: (ds: IOneRowProps[], level: number | undefined, item: IOneRowProps) => JSX.Element | null; render(): React.ReactPortal; } export {};