diff --git a/packages/image-cloze-association/src/possible-response.jsx b/packages/image-cloze-association/src/possible-response.jsx index e0d8817d2d..8f0b86c091 100644 --- a/packages/image-cloze-association/src/possible-response.jsx +++ b/packages/image-cloze-association/src/possible-response.jsx @@ -50,11 +50,11 @@ const StyledSpan = styled(StaticHTMLSpan)(() => ({ }, })); -const PossibleResponse = ({ canDrag, containerStyle, data, onDragBegin, answerChoiceTransparency }) => { +const PossibleResponse = ({ canDrag, containerStyle, data, onDragBegin, answerChoiceTransparency, isOverlay }) => { const rootRef = useRef(null); const longPressTimer = useRef(null); - const { setNodeRef, attributes, listeners } = useDraggable({ + const { setNodeRef, attributes, listeners, isDragging } = useDraggable({ id: `possible-response-${data.id}`, data: { id: data.id, @@ -110,9 +110,9 @@ const PossibleResponse = ({ canDrag, containerStyle, data, onDragBegin, answerCh const containsImage = imgRegex.test(data.value); const containerClassNames = classNames({ - answerChoiceTransparency, + answerChoiceTransparency: answerChoiceTransparency && !isDragging, [correctnessClass]: !!correctnessClass, - textAnswerChoiceStyle: !containsImage, + textAnswerChoiceStyle: !containsImage && !isOverlay, }); const promptClassNames = classNames({ hiddenSpan: data.hidden }); @@ -140,11 +140,13 @@ PossibleResponse.propTypes = { data: PropTypes.object.isRequired, onDragBegin: PropTypes.func.isRequired, answerChoiceTransparency: PropTypes.bool, + isOverlay: PropTypes.bool, }; PossibleResponse.defaultProps = { containerStyle: {}, answerChoiceTransparency: false, + isOverlay: false, }; export default PossibleResponse; diff --git a/packages/image-cloze-association/src/root.jsx b/packages/image-cloze-association/src/root.jsx index 4a10a067f8..a4c65fde19 100644 --- a/packages/image-cloze-association/src/root.jsx +++ b/packages/image-cloze-association/src/root.jsx @@ -121,18 +121,23 @@ export class ImageClozeAssociationComponent extends React.Component { if (!draggingElement.id) return null; - if (draggingElement.id) { - return ( - - ); - } + // check if the response contains an image + const imgRegex = /]+src="([^">]+)"/; + const containsImage = imgRegex.test(draggingElement.value); - return null; + return ( + {}} + isOverlay + containerStyle={{ + ...(model.answerChoiceTransparency ? { opacity: '0.8' } : {}), + ...(!containsImage ? { padding: '0 10px', margin: '4px 6px !important' } : {}), + }} + /> + ); }; filterPossibleAnswers = (possibleResponses, answer) =>