import * as React from 'react'; import { Modal, StyleSheet, Text, SafeAreaView, View, Platform } from "react-native"; import Icon from 'react-native-vector-icons/Feather'; import styled from 'styled-components/native' interface Props { open?: boolean; title?: string; children?: any; onClose?: any; onCancel?: any; onAccept?: any; isTransparent?: boolean; entireModal?: boolean; customClose?: boolean; titleSectionStyle?: any; isNotDecoration?: boolean; style?: any; styleCloseButton?: any; isAvoidKeyBoardView?: boolean; } const KeyboardView = styled.KeyboardAvoidingView` flex-grow: 1; flex-shrink: 1; `; const OModal = (props: Props): React.ReactElement => { const { open, title, children, onClose, isTransparent, entireModal, customClose, titleSectionStyle, isNotDecoration, style, styleCloseButton, isAvoidKeyBoardView } = props const RenderSafeAreaView = () => ( {!entireModal ? ( {title} {children} ) : <> {!customClose && ( {title} )} {children} } ) return ( { onClose && onClose() }} style={{ height: '100%', flex: 1, position: 'absolute', ...style, zIndex: 9999 }} > {isAvoidKeyBoardView ? ( ) : ( )} ); }; const styles = StyleSheet.create({ container: { flex: 1, }, centeredView: { justifyContent: "center", alignItems: "center", position: 'relative', width: '100%', }, titleSection: { width: '100%', display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 20, }, cancelBtn: { position: 'absolute', left: 0, margin: 15, zIndex: 10000 }, modalText: { marginTop: 15, fontSize: 25, textAlign: "center", zIndex: 10 }, wrapperIcon: { overflow: 'hidden', borderRadius: 50, backgroundColor: '#CCCCCC80', width: 35, margin: 15 }, modalView: { margin: 20, backgroundColor: "white", borderRadius: 20, padding: 35, alignItems: "center", shadowColor: "#000", shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.25, shadowRadius: 4, elevation: 5 }, button: { borderRadius: 20, padding: 10, elevation: 2 }, buttonOpen: { backgroundColor: "#F194FF", }, buttonClose: { backgroundColor: "#2196F3", }, textStyle: { color: "white", fontWeight: "bold", textAlign: "center" }, }); export default OModal;