import React, { useEffect, useState } from 'react'; import './Dialog.scss'; import { DialogViewModel } from './DialogViewModel'; import UiKitTheme from '../../themes/UiKitTheme'; import Loader from '../../ui-components/Loader/Loader'; type DialogProps = { messagesViewModel: DialogViewModel; maxWidthToResize?: string; warningErrorText: string; renderHeader: React.ReactNode; renderMessageList: React.ReactNode; renderMessageInput: React.ReactNode; theme?: UiKitTheme; headerContent?: React.ReactNode; rootStyles?: React.CSSProperties; messagesContainerStyles?: React.CSSProperties; }; // eslint-disable-next-line react/function-component-definition const Dialog = ({ messagesViewModel, maxWidthToResize = undefined, warningErrorText, renderHeader, renderMessageList, renderMessageInput, theme = undefined, headerContent = undefined, rootStyles = {}, messagesContainerStyles = {}, }: DialogProps) => { const [currentWarningErrorText, setCurrentWarningErrorText] = useState(''); useEffect(() => { setCurrentWarningErrorText(warningErrorText); }, [warningErrorText]); useEffect(() => { setCurrentWarningErrorText(messagesViewModel.typingText); }, [messagesViewModel.typingText]); return (
{headerContent || (
{renderHeader}
)}
{renderMessageList}
{messagesViewModel?.loading && ( )}
{currentWarningErrorText}
{renderMessageInput}
); }; export default Dialog;