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;