import React, { useState, useEffect, Fragment } from 'react'; import PropTypes from 'prop-types'; import { ThemeProvider } from 'styled-components'; import { CustomModalContainer, CustomModalBody, CloseIcon, Title, } from './styledComponents'; import Row from './components/Row/Row'; import { getTheme } from '../../../utils/theme'; import EmptyState from './components/EmptyState'; import IconCloseCross from '../../../images/icon-close-cross.svg'; import { ModalContentProps } from '../../interface'; import LoadingState from './components/LoadingState/LoadingStateDisplay'; const CustomModalContentDisplay = (props: ModalContentProps): JSX.Element => { const { theme, title, modalHeaders, modalContent, openModal, labelModalEmptyState, } = props; const [isLoading, setIsLoading] = useState(true); // eslint-disable-next-line @typescript-eslint/no-explicit-any const [data, setData] = useState([]); useEffect(() => { (async function loadData() { if (modalContent) { const result = await modalContent(); setData(result); } setIsLoading(false); })(); }, [modalContent]); if (isLoading) { return ( e.stopPropagation()}> {title} ); } if (!data || !data.length) { return ( e.stopPropagation()}> {title} ); } return ( e.stopPropagation()}> {title} {data.map((item, index) => ( ))} ); }; CustomModalContentDisplay.propTypes = { modalContent: PropTypes.func.isRequired, openModal: PropTypes.func.isRequired, // eslint-disable-next-line react/forbid-prop-types theme: PropTypes.objectOf(PropTypes.any), }; CustomModalContentDisplay.defaultProps = { theme: null, }; export default CustomModalContentDisplay;