diff --git a/editors/demo/src/HHMI/config/config.js b/editors/demo/src/HHMI/config/config.js index dd60778f6d63a93660345d8099032bd573f6ab39..738b2002d1f5fc013282eb751f113bcec7a02093 100644 --- a/editors/demo/src/HHMI/config/config.js +++ b/editors/demo/src/HHMI/config/config.js @@ -28,6 +28,8 @@ import { EssayToolGroupService, MatchingService, MatchingToolGroupService, + MultipleDropDownService, + MultipleDropDownToolGroupService, } from 'wax-prosemirror-services'; import { DefaultSchema } from 'wax-prosemirror-utilities'; @@ -56,6 +58,7 @@ export default { 'MultipleChoiceDropDown', 'Essay', 'FillTheGap', + 'MultipleDropDown', 'Matching', 'FullScreen', ], @@ -74,6 +77,8 @@ export default { new FillTheGapToolGroupService(), new MultipleChoiceQuestionService(), new MultipleChoiceDropDownToolGroupService(), + new MultipleDropDownService(), + new MultipleDropDownToolGroupService(), new EssayService(), new EssayToolGroupService(), new ListsService(), diff --git a/wax-prosemirror-components/src/icons/icons.js b/wax-prosemirror-components/src/icons/icons.js index c67e6ba1be823a53fc297320c93d03dfe84b8279..6612850404fab9cbd16008dca7c2503757d22c97 100644 --- a/wax-prosemirror-components/src/icons/icons.js +++ b/wax-prosemirror-components/src/icons/icons.js @@ -452,4 +452,24 @@ export default { <path d="M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z" />{' '} </Svg> ), + essay: ({ className }) => ( + <Svg className={className} fill="none" viewBox="0 0 24 24"> + <title> Create Essay </title> + <path d="M0 0h24v24H0z" fill="none" /> + <path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z" /> + </Svg> + ), + mulitpleDropDownQuestion: ({ className }) => ( + <Svg className={className} fill="none" viewBox="0 0 24 24"> + <title> Create Multiple DropDown Question</title> + <path d="M0 0h24v24H0z" fill="none" /> + <path d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />{' '} + </Svg> + ), + mulitpleDropDown: ({ className }) => ( + <Svg className={className} fill="none" viewBox="0 0 24 24"> + <title> Create DropDown </title> + <path d="M17 5H20L18.5 7L17 5M3 2H21C22.11 2 23 2.9 23 4V8C23 9.11 22.11 10 21 10H16V20C16 21.11 15.11 22 14 22H3C1.9 22 1 21.11 1 20V4C1 2.9 1.9 2 3 2M3 4V8H14V4H3M21 8V4H16V8H21M3 20H14V10H3V20M5 12H12V14H5V12M5 16H12V18H5V16Z" /> + </Svg> + ), }; diff --git a/wax-prosemirror-services/src/EssayService/EssayQuestion.js b/wax-prosemirror-services/src/EssayService/EssayQuestion.js index 8ab9229ea540b4d658a16b6c664347622e403f80..703a6170280f9f69a350805c8fb321813a6b8464 100644 --- a/wax-prosemirror-services/src/EssayService/EssayQuestion.js +++ b/wax-prosemirror-services/src/EssayService/EssayQuestion.js @@ -56,9 +56,9 @@ const createEmptyParagraph = (context, newAnswerId) => { @injectable() class EssayQuestion extends Tools { title = 'Add Essay Question'; - icon = ''; + icon = 'essay'; name = 'Essay'; - label = 'Essay'; + label = ''; get run() { return (main, context) => { diff --git a/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js new file mode 100644 index 0000000000000000000000000000000000000000..e11177d2ef02ad7c090527aba1d6af6c82f319c2 --- /dev/null +++ b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDown.js @@ -0,0 +1,27 @@ +import { injectable } from 'inversify'; +import { Fragment } from 'prosemirror-model'; +import { v4 as uuidv4 } from 'uuid'; +import Tools from '../../lib/Tools'; + +@injectable() +class CreateDropDown extends Tools { + title = 'Create Drop Down'; + icon = 'mulitpleDropDown'; + name = 'Create_Drop_Down'; + + get run() { + return (state, dispatch) => {}; + } + + select = (state, activeViewId, activeView) => {}; + + get active() { + return state => {}; + } + + get enable() { + return state => {}; + } +} + +export default CreateDropDown; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDownService.js b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDownService.js new file mode 100644 index 0000000000000000000000000000000000000000..bd98f23898bbca8c66cee8122ceb077a0def5e07 --- /dev/null +++ b/wax-prosemirror-services/src/MultipleDropDownService/CreateDropDownService/CreateDropDownService.js @@ -0,0 +1,10 @@ +import Service from '../../Service'; +import CreateDropDown from './CreateDropDown'; + +class CreateDropDownService extends Service { + register() { + this.container.bind('CreateDropDown').to(CreateDropDown); + } +} + +export default CreateDropDownService; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownQuestion.js b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownQuestion.js index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1f791e6b442cdc273408322573cf3026adf3895f 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownQuestion.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownQuestion.js @@ -0,0 +1,25 @@ +import { injectable } from 'inversify'; +import Tools from '../lib/Tools'; + +@injectable() +class FillTheGapQuestion extends Tools { + title = 'Add Multiple Drop Down Question'; + icon = 'mulitpleDropDownQuestion'; + name = 'Multiple Drop Down'; + + get run() { + return (state, dispatch, view) => {}; + } + + get active() { + return state => {}; + } + + select = (state, activeViewId, activeView) => {}; + + get enable() { + return state => {}; + } +} + +export default FillTheGapQuestion; diff --git a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js index 26f3a00471be9b0a51be2580fbd3186416ec3156..dc8a385334f110c20e8a5cfbdfa2ea9e3c73ea8c 100644 --- a/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js +++ b/wax-prosemirror-services/src/MultipleDropDownService/MultipleDropDownService.js @@ -1,6 +1,7 @@ import Service from '../Service'; import MultipleDropDownQuestion from './MultipleDropDownQuestion'; import MultipleDropDownContainerNodeView from './MultipleDropDownContainerNodeView'; +import CreateDropDownService from './CreateDropDownService/CreateDropDownService'; class MultipleDropDownService extends Service { name = 'MultipleDropDownService'; @@ -12,6 +13,8 @@ class MultipleDropDownService extends Service { const createNode = this.container.get('CreateNode'); const addPortal = this.container.get('AddPortal'); } + + dependencies = [new CreateDropDownService()]; } export default MultipleDropDownService; diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropDownComponent.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/DropDownComponent.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDown.js b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDown.js index fe0af2c321f252c233a9dfea26f682dd979f8fee..5d0b9d3cb0b81f5a5f9023bfe57c846b755c8ea7 100644 --- a/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDown.js +++ b/wax-prosemirror-services/src/WaxToolGroups/MultipleDropDownToolGroupService/MultipleDropDown.js @@ -1,24 +1,15 @@ -import React from 'react'; import { injectable, inject } from 'inversify'; -import { isEmpty } from 'lodash'; -import { v4 as uuidv4 } from 'uuid'; import ToolGroup from '../../lib/ToolGroup'; -import DropDownComponent from './DropDownComponent'; @injectable() class MultipleDropDown extends ToolGroup { tools = []; - constructor() { + constructor( + @inject('MultipleDropDownQuestion') MultipleDropDownQuestion, + @inject('CreateDropDown') CreateDropDown, + ) { super(); - this.tools = []; - } - - renderTools(view) { - if (isEmpty(view)) return null; - return ( - // eslint-disable-next-line no-underscore-dangle - <DropDownComponent key={uuidv4()} tools={this._tools} view={view} /> - ); + this.tools = [MultipleDropDownQuestion, CreateDropDown]; } }