UNPKG

react-native-jsmodal

Version:
154 lines (138 loc) 5.33 kB
import * as React from "react"; import { StyleProp, TextStyle, ViewStyle } from "react-native"; export type SlideFromTypes = "top" | "bottom" | "left" | "right"; export type AlignTypes = "flex-start" | "flex-end" | "center"; export type OverlayPointerEventTypes = "auto" | "none"; export type SwipeDirection = "up" | "down" | "left" | "right"; export interface DragEvent { axis: { x: number; y: number; }; layout: { x: number; y: number; width: number; height: number; }; swipeDirection: SwipeDirection | null; } export interface ModalContentProps { children?: React.ReactNode; style?: StyleProp<ViewStyle> | undefined; } export interface BackdropProps { visible: boolean; opacity: number; onPress?: (() => void) | undefined; backgroundColor?: string | undefined; animationDuration?: number | undefined; pointerEvents?: string | undefined; useNativeDriver?: boolean | undefined; } export interface ModalFooterProps { bordered?: boolean | undefined; children?: React.ReactNode; style?: StyleProp<ViewStyle> | undefined; } export interface ModalButtonProps { text: string; onPress: () => void; align?: AlignTypes | undefined; style?: StyleProp<ViewStyle> | undefined; textStyle?: StyleProp<TextStyle> | undefined; disabled?: boolean | undefined; activeOpacity?: number | undefined; bordered?: boolean | undefined; } export interface ModalTitleProps { title: string; style?: StyleProp<ViewStyle> | undefined; textStyle?: StyleProp<TextStyle> | undefined; align?: AlignTypes | undefined; hasTitleBar?: boolean | undefined; } interface IViewStyle extends ViewStyle { height?: ViewStyle["height"] | "100vh"; position?: ViewStyle["position"] | "fixed"; } // Omint<ViewProps, "height", "position"> export interface ModalProps { children?: React.ReactNode; visible?: boolean | undefined; width?: number | undefined; height?: number | undefined; rounded?: boolean | undefined; hasOverlay?: boolean | undefined; overlayPointerEvents?: OverlayPointerEventTypes | undefined; overlayBackgroundColor?: string | undefined; overlayOpacity?: number | undefined; modalTitle?: React.ReactNode | undefined; modalAnimation?: FadeAnimation | ScaleAnimation | SlideAnimation | undefined; modalStyle?: StyleProp<IViewStyle> | undefined; style?: StyleProp<IViewStyle> | undefined; animationDuration?: number | undefined; onTouchOutside?: (() => void) | undefined; onHardwareBackPress?: (() => boolean) | undefined; onShow?: (() => void) | undefined; onDismiss?: (() => void) | undefined; footer?: React.ReactNode | undefined; onMove?: ((event: DragEvent) => void) | undefined; onSwiping?: ((event: DragEvent) => void) | undefined; onSwipeRelease?: ((event: DragEvent) => void) | undefined; onSwipingOut?: ((event: DragEvent) => void) | undefined; onSwipeOut?: ((event: DragEvent) => void) | undefined; swipeDirection?: SwipeDirection | SwipeDirection[] | undefined; swipeThreshold?: number | undefined; useNativeDriver?: boolean | undefined; } export interface DraggableViewProps { style?: StyleProp<ViewStyle> | undefined; onMove?: ((event: DragEvent) => void) | undefined; onSwiping?: ((event: DragEvent) => void) | undefined; onRelease?: ((event: DragEvent) => void) | undefined; onSwipingOut?: ((event: DragEvent) => void) | undefined; onSwipeOut?: ((event: DragEvent) => void) | undefined; swipeThreshold?: number | undefined; swipeDirection?: SwipeDirection | SwipeDirection[] | undefined; } export type ModalPortalProps = { throttleTime?: number; } export class Animation { constructor(params: { animationDuration?: number | undefined; useNativeDriver?: boolean | undefined; }); in(onFinised?: boolean): void; out(onFinised?: boolean): void; getAnimations(): object; } export class FadeAnimation extends Animation {} export class ScaleAnimation extends Animation {} export class SlideAnimation extends Animation { constructor(params: { animationDuration?: number | undefined; useNativeDriver?: boolean | undefined; slideFrom?: SlideFromTypes | undefined; }); } export class ModalContent extends React.Component<ModalContentProps> {} export class ModalFooter extends React.Component<ModalFooterProps> {} export class ModalButton extends React.Component<ModalButtonProps> {} export class ModalTitle extends React.Component<ModalTitleProps> {} export class Backdrop extends React.Component<BackdropProps> {} export class DraggableView extends React.Component<DraggableViewProps> {} export class ModalPortal extends React.Component<ModalPortalProps> { get ref(): Modal; get size(): number; get current(): Modal; static innerShow(children: React.ReactNode, props?: ModalProps): number; static show(children: React.ReactNode, props?: ModalProps): number; static update(key: number, props?: ModalProps): void; static dismiss(key: number): void; static dismissAll(): void; } export class BottomModal extends React.Component<ModalProps> {} export class Modal extends React.Component<ModalProps> {} export default Modal;