import PropTypes from 'prop-types' import { useState } from 'react' import { createPortal } from 'react-dom' import { Box, Dialog, DialogContent, DialogTitle, Tabs, Tab } from '@mui/material' import SpeechToText from './SpeechToText' import Configuration from '@/views/chatflows/Configuration' import AllowedDomains from './AllowedDomains' import ChatFeedback from './ChatFeedback' import AnalyseFlow from './AnalyseFlow' import StarterPrompts from './StarterPrompts' const CHATFLOW_CONFIGURATION_TABS = [ { label: 'Rate Limiting', id: 'rateLimiting' }, { label: 'Starter Prompts', id: 'conversationStarters' }, { label: 'Speech to Text', id: 'speechToText' }, { label: 'Chat Feedback', id: 'chatFeedback' }, { label: 'Allowed Domains', id: 'allowedDomains' }, { label: 'Analyse Chatflow', id: 'analyseChatflow' } ] function TabPanel(props) { const { children, value, index, ...other } = props return ( ) } TabPanel.propTypes = { children: PropTypes.node, index: PropTypes.number.isRequired, value: PropTypes.number.isRequired } function a11yProps(index) { return { id: `chatflow-config-tab-${index}`, 'aria-controls': `chatflow-config-tabpanel-${index}` } } const ChatflowConfigurationDialog = ({ show, dialogProps, onCancel }) => { const portalElement = document.getElementById('portal') const [tabValue, setTabValue] = useState(0) const component = show ? (
{dialogProps.title}
setTabValue(value)} aria-label='tabs' > {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( ))} {CHATFLOW_CONFIGURATION_TABS.map((item, index) => ( {item.id === 'rateLimiting' && } {item.id === 'conversationStarters' ? : null} {item.id === 'speechToText' ? : null} {item.id === 'chatFeedback' ? : null} {item.id === 'allowedDomains' ? : null} {item.id === 'analyseChatflow' ? : null} ))}
) : null return createPortal(component, portalElement) } ChatflowConfigurationDialog.propTypes = { show: PropTypes.bool, dialogProps: PropTypes.object, onCancel: PropTypes.func } export default ChatflowConfigurationDialog