@ysx-libs/mobile-picker
Version:
A mobile list picker plugin, use vanilla ts
48 lines (47 loc) • 1.64 kB
TypeScript
export type ValueOrNull<T> = T | null;
export type EventHandler<T = Event> = (event: T) => void;
export type ClientCoordinate = {
clientX: number;
clientY: number;
};
export type PickerDefScrollShape = 'scale' | 'flat' | 'rotate';
export type PointEventType = PointerEvent | MouseEvent | TouchEvent;
export interface MomentumConfig {
time: number;
distance: number;
duration: number;
deceleration: number;
}
export interface ClickToSelectConfig {
duration: number;
}
export interface InnerClickToSelectConfig extends ClickToSelectConfig {
enable: boolean;
}
export interface MouseWheelConfig {
speed: number;
discreteTime: number;
}
export interface InnerMouseWheelConfig extends MouseWheelConfig {
enable: boolean;
}
export type ShapeFunc = (y: number, itemHeight: number, items?: HTMLCollection) => void;
export interface PickerBaseOptions {
usePointerEvents: boolean;
scrollShape: PickerDefScrollShape | ShapeFunc;
moveThreshold: number;
momentum: MomentumConfig | false;
itemClassName: string;
clickToSelect: boolean | ClickToSelectConfig;
mouseWheel: boolean | MouseWheelConfig;
onlyLeftButton: boolean;
}
export type ChangeTrigger = 'click' | 'drag' | 'init' | 'api' | 'wheel' | '';
export interface PickerViewOptions extends PickerBaseOptions {
selectedIndex: number;
onChange(event: number, trigger: ChangeTrigger): void;
}
export interface PickerOptions extends PickerBaseOptions {
selectedIndexes: number[];
onChange?(event: number[], trigger: ChangeTrigger, colIndex: number): void;
}