diff --git a/src/components/ModalView/ModalView.tsx b/src/components/ModalView/ModalView.tsx index 2c0a5bf3..9f81c6c4 100644 --- a/src/components/ModalView/ModalView.tsx +++ b/src/components/ModalView/ModalView.tsx @@ -18,6 +18,7 @@ import { ModalContext } from '../../context/ModalContext'; import { RNIModalView } from '../../native_components/RNIModalView'; import { RNIModalViewModule } from '../../native_modules/RNIModalViewModule'; +import type { ModalViewProps, ModalViewState } from './ModalViewTypes'; // // @@ -57,7 +58,12 @@ const hasScrollViewContext: boolean = // // -export class ModalView extends React.PureComponent { +// prettier-ignore +export class ModalView extends + React.PureComponent { + // eslint-disable-next-line no-trailing-spaces + + // prettier-ignore static proptypes = { // Props: Events --------------------- onRequestResult: Proptypes.func, diff --git a/src/components/ModalView/ModalViewTypes.ts b/src/components/ModalView/ModalViewTypes.ts new file mode 100644 index 00000000..b69a93ee --- /dev/null +++ b/src/components/ModalView/ModalViewTypes.ts @@ -0,0 +1,51 @@ +import type { ViewProps, ViewStyle } from 'react-native'; +import type { RNIModalViewProps } from 'src/native_components/RNIModalView'; + +export type ModalViewBaseProps = Partial< + Pick< + RNIModalViewProps, + // props - flags + | 'presentViaMount' + | 'isModalBGBlurred' + | 'enableSwipeGesture' + | 'hideNonVisibleModals' + | 'isModalBGTransparent' + | 'isModalInPresentation' + | 'allowModalForceDismiss' + + // props - string + | 'modalID' + | 'modalTransitionStyle' + | 'modalBGBlurEffectStyle' + | 'modalPresentationStyle' + + // props - events + | 'onModalShow' + | 'onModalDismiss' + | 'onRequestResult' + | 'onModalBlur' + | 'onModalFocus' + | 'onModalDidDismiss' + | 'onModalWillDismiss' + | 'onModalAttemptDismiss' + > +> & { + // TODO: Rename to `shouldAutoCloseOnUnmount` + autoCloseOnUnmount?: boolean; + setEnableSwipeGestureFromProps?: boolean; + setModalInPresentationFromProps?: boolean; + + containerStyle: ViewStyle; + children: React.ReactChildren; +}; + +// prettier-ignore +export type ModalViewProps = + ViewProps & ModalViewBaseProps; + +export type ModalViewState = { + visible: boolean; + childProps: unknown; + enableSwipeGesture: boolean; + isModalInPresentation: boolean; +}; diff --git a/src/components/ModalView/index.ts b/src/components/ModalView/index.ts new file mode 100644 index 00000000..0c76811d --- /dev/null +++ b/src/components/ModalView/index.ts @@ -0,0 +1,2 @@ +export * from './ModalView'; +export * from './ModalViewTypes';