import { useState } from 'react'; import { useDispatch } from 'react-redux'; import PropTypes from 'prop-types'; import { Form, OverlayTrigger, Tooltip } from '@openedx/paragon'; import { useIntl } from '@edx/frontend-platform/i18n'; import { updateQueryPendingStatus } from '../../data/slice'; import { getXBlockSupportMessages } from '../../constants'; import AddComponentButton from '../add-component-btn'; import messages from '../messages'; import ModalContainer from './ModalContainer'; const ComponentModalView = ({ component, modalParams, handleCreateNewXBlock, isRequestedModalView, }) => { const intl = useIntl(); const dispatch = useDispatch(); const [moduleTitle, setModuleTitle] = useState(''); const { open, close, isOpen } = modalParams; const { type, displayName, templates, supportLegend, } = component; const supportLabels = getXBlockSupportMessages(intl); const handleSubmit = () => { handleCreateNewXBlock(type, moduleTitle); dispatch(updateQueryPendingStatus(true)); setModuleTitle(''); }; const renderAddComponentButton = () => (
  • ); return ( <> {!isRequestedModalView && renderAddComponentButton()} setModuleTitle('')} hasValue={!moduleTitle.length} > setModuleTitle(e.target.value)} > {templates.map((componentTemplate) => { const value = componentTemplate.boilerplateName || componentTemplate.category; const isDisplaySupportLabel = supportLegend.showLegend && supportLabels[componentTemplate.supportLevel]; return (
    {componentTemplate.displayName} {isDisplaySupportLabel && ( {supportLabels[componentTemplate.supportLevel].tooltip} )} > {supportLabels[componentTemplate.supportLevel].label} )}
    ); })}
    ); }; ComponentModalView.defaultProps = { isRequestedModalView: false, }; ComponentModalView.propTypes = { modalParams: PropTypes.shape({ open: PropTypes.func, close: PropTypes.func, isOpen: PropTypes.bool, }).isRequired, handleCreateNewXBlock: PropTypes.func.isRequired, component: PropTypes.shape({ displayName: PropTypes.string.isRequired, category: PropTypes.string, type: PropTypes.string.isRequired, templates: PropTypes.arrayOf( PropTypes.shape({ boilerplateName: PropTypes.string, category: PropTypes.string, displayName: PropTypes.string.isRequired, supportLevel: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]), }), ), supportLegend: PropTypes.shape({ allowUnsupportedXblocks: PropTypes.bool, documentationLabel: PropTypes.string, showLegend: PropTypes.bool, }), }).isRequired, isRequestedModalView: PropTypes.bool, }; export default ComponentModalView;