diff --git a/packages/editable-html-tip-tap/src/components/MenuBar.jsx b/packages/editable-html-tip-tap/src/components/MenuBar.jsx
index 75831a6f5..43312032c 100644
--- a/packages/editable-html-tip-tap/src/components/MenuBar.jsx
+++ b/packages/editable-html-tip-tap/src/components/MenuBar.jsx
@@ -18,6 +18,7 @@ import Undo from '@mui/icons-material/Undo';
import TheatersIcon from '@mui/icons-material/Theaters';
import VolumeUpIcon from '@mui/icons-material/VolumeUp';
import BorderAll from '@mui/icons-material/BorderAll';
+import Delete from '@mui/icons-material/Delete';
import { useEditorState } from '@tiptap/react';
@@ -83,7 +84,8 @@ function MenuBar({ editor, classes, activePlugins, toolbarOpts: toolOpts, respon
const hideDefaultToolbar =
ctx.editor?.isActive('math') ||
ctx.editor?.isActive('explicit_constructed_response') ||
- ctx.editor?.isActive('imageUploadNode');
+ ctx.editor?.isActive('imageUploadNode') ||
+ ctx.editor?.isActive('drag_in_the_blank');
return {
currentNode,
@@ -320,8 +322,29 @@ function MenuBar({ editor, classes, activePlugins, toolbarOpts: toolOpts, respon
[activePlugins, editor],
);
+ const isDragInTheBlankSelected =
+ editorState.hideDefaultToolbar && editorState.currentNode?.type?.name === 'drag_in_the_blank';
+
return (
+ {isDragInTheBlankSelected && (
+
+
+
+
+
+ )}
{!editorState.hideDefaultToolbar && (
diff --git a/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx b/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx
index 4e2ef9d35..1b373335b 100644
--- a/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx
+++ b/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/DragInTheBlank.jsx
@@ -33,7 +33,11 @@ const DragDrop = (props) => {
// console.log({nodeProps.children})
return (
-
+
{
pos={pos}
value={attributes}
duplicates={options.duplicates}
+ selected={selected}
onChange={(choice) => onValueChange(editor, node, pos, choice)}
removeResponse={(choice) => onRemoveResponse(editor, node, choice)}
>
diff --git a/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/choice.jsx b/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/choice.jsx
index 5fc57b589..1a16307e3 100644
--- a/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/choice.jsx
+++ b/packages/editable-html-tip-tap/src/components/respArea/DragInTheBlank/choice.jsx
@@ -15,7 +15,7 @@ const StyledContent = styled('span')(({ theme }) => ({
},
}));
-export function BlankContent({ n, children, isDragging, isOver, dragItem, value }) {
+export function BlankContent({ n, children, isDragging, isOver, dragItem, value, selected }) {
const [hoveredElementSize, setHoveredElementSize] = useState(null);
const elementRef = useRef(null);
@@ -56,15 +56,22 @@ export function BlankContent({ n, children, isDragging, isOver, dragItem, value
const hasGrip = finalLabel !== '\u00A0';
const isPreview = dragItem && isOver;
+ const borderStyle = selected
+ ? `2px solid ${color.primaryDark()}`
+ : isPreview
+ ? `1px solid ${color.defaults.BORDER_DARK}`
+ : `1px solid ${color.defaults.BORDER_LIGHT}`;
+
return (
+
{children}
);
@@ -223,6 +249,7 @@ DragDropChoice.propTypes = {
onChange: PropTypes.func.isRequired,
removeResponse: PropTypes.func.isRequired,
duplicates: PropTypes.bool,
+ selected: PropTypes.bool,
};
export default DragDropChoice;
diff --git a/packages/editable-html-tip-tap/src/extensions/responseArea.js b/packages/editable-html-tip-tap/src/extensions/responseArea.js
index b4e56b150..1690a90ff 100644
--- a/packages/editable-html-tip-tap/src/extensions/responseArea.js
+++ b/packages/editable-html-tip-tap/src/extensions/responseArea.js
@@ -187,14 +187,9 @@ export const ResponseAreaExtension = Extension.create({
// tr.setSelection(NodeSelection.create(tr.doc, usedPos))
// --- Cursor move behavior for certain types (Slate: moveFocusTo next text) ---
- if (
- ['math_templated', 'inline_dropdown', 'drag_in_the_blank', 'explicit_constructed_response'].includes(
- typeName,
- )
- ) {
+ if (['math_templated', 'inline_dropdown', 'explicit_constructed_response'].includes(typeName)) {
tr.setSelection(NodeSelection.create(tr.doc, usedPos));
} else {
- // Default: put cursor after inserted node
const after = usedPos + newInline.nodeSize;
tr.setSelection(selectionAfterPos(tr.doc, after));
}