@pie-element/multiple-choice 5.9.3-next.133 → 5.9.3-next.1332
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +298 -0
- package/PRINT.md +35 -0
- package/configure/CHANGELOG.md +259 -0
- package/configure/lib/defaults.js +20 -7
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +24 -5
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +233 -64
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/utils.js +18 -0
- package/configure/lib/utils.js.map +1 -0
- package/configure/package.json +5 -5
- package/controller/CHANGELOG.md +67 -0
- package/controller/lib/index.js +81 -18
- package/controller/lib/index.js.map +1 -1
- package/controller/package.json +1 -1
- package/docs/config-schema.json +120 -0
- package/docs/config-schema.json.md +93 -1
- package/docs/pie-schema.json +38 -0
- package/docs/pie-schema.json.md +28 -0
- package/lib/choice-input.js +30 -16
- package/lib/choice-input.js.map +1 -1
- package/lib/choice.js +157 -0
- package/lib/choice.js.map +1 -0
- package/lib/feedback-tick.js +1 -1
- package/lib/feedback-tick.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -1
- package/lib/multiple-choice.js +59 -146
- package/lib/multiple-choice.js.map +1 -1
- package/lib/print.js +129 -0
- package/lib/print.js.map +1 -0
- package/package.json +11 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","
|
|
1
|
+
{"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","choicesLayout","gridColumns","configuration","spellCheck","label","settings","enabled","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","accessibility","studentInstructions","teacherInstructions","minAnswerChoices","maxAnswerChoices","maxImageWidth","maxImageHeight"],"mappings":"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","sourcesContent":["/** NOTE: teacherInstructions, studentInstructions, rationale & scoringType\n * functionalities are not defined yet - the value for those can belong to\n * model or to configure\n */\nexport default {\n model: {\n choiceMode: 'checkbox',\n choicePrefix: 'letters',\n choices: [],\n prompt: 'Question Prompt goes here',\n lockChoiceOrder: true,\n partialScoring: true,\n scoringType: 'auto',\n feedbackEnabled: true,\n promptEnabled: true,\n rationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n choicesLayout: 'vertical',\n gridColumns: '2',\n },\n configuration: {\n spellCheck: {\n label: 'Spellcheck',\n settings:false,\n enabled:true\n },\n choicesLayout: {\n settings: false,\n label: 'Choices Layout',\n },\n gridColumns: {\n label: 'Grid columns',\n },\n answerChoiceCount: 0,\n addChoiceButton: {\n settings: true,\n label: 'Add a Choice',\n },\n choiceMode: {\n settings: true,\n label: 'Response Type',\n },\n choicePrefix: {\n settings: true,\n label: 'Choice Labels',\n },\n deleteChoice: {\n settings: true,\n },\n feedback: {\n settings: true,\n label: 'Feedback',\n },\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n lockChoiceOrder: {\n settings: true,\n label: 'Lock Choice Order',\n },\n partialScoring: {\n settings: false,\n label: 'Allow Partial Scoring',\n },\n rationale: {\n settings: true,\n label: 'Rationale',\n },\n accessibility: {\n settings: false,\n label: 'Accessibility Label'\n },\n scoringType: {\n settings: false,\n label: 'Scoring Type',\n },\n studentInstructions: {\n settings: false,\n label: 'Student Instructions',\n },\n teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n minAnswerChoices: 2,\n maxAnswerChoices: 5,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 636,\n choices: 636\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n choices: 300\n }\n },\n};\n"],"file":"defaults.js"}
|
package/configure/lib/index.js
CHANGED
|
@@ -41,11 +41,11 @@ var _defaults2 = _interopRequireDefault(require("./defaults"));
|
|
|
41
41
|
|
|
42
42
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
43
43
|
|
|
44
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
44
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
45
45
|
|
|
46
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
46
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
47
47
|
|
|
48
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
48
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
49
49
|
|
|
50
50
|
var log = (0, _debug["default"])('multiple-choice:configure');
|
|
51
51
|
|
|
@@ -160,6 +160,16 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
160
160
|
value: function onDeleteImage(src, done) {
|
|
161
161
|
this.dispatchEvent(new _pieConfigureEvents.DeleteImageEvent(src, done));
|
|
162
162
|
}
|
|
163
|
+
}, {
|
|
164
|
+
key: "insertSound",
|
|
165
|
+
value: function insertSound(handler) {
|
|
166
|
+
this.dispatchEvent(new _pieConfigureEvents.InsertSoundEvent(handler));
|
|
167
|
+
}
|
|
168
|
+
}, {
|
|
169
|
+
key: "onDeleteSound",
|
|
170
|
+
value: function onDeleteSound(src, done) {
|
|
171
|
+
this.dispatchEvent(new _pieConfigureEvents.DeleteSoundEvent(src, done));
|
|
172
|
+
}
|
|
163
173
|
}, {
|
|
164
174
|
key: "_render",
|
|
165
175
|
value: function _render() {
|
|
@@ -174,6 +184,10 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
174
184
|
imageSupport: {
|
|
175
185
|
add: this.insertImage.bind(this),
|
|
176
186
|
"delete": this.onDeleteImage.bind(this)
|
|
187
|
+
},
|
|
188
|
+
uploadSoundSupport: {
|
|
189
|
+
add: this.insertSound.bind(this),
|
|
190
|
+
"delete": this.onDeleteSound.bind(this)
|
|
177
191
|
}
|
|
178
192
|
});
|
|
179
193
|
|
|
@@ -186,8 +200,13 @@ var MultipleChoice = /*#__PURE__*/function (_HTMLElement) {
|
|
|
186
200
|
exports["default"] = MultipleChoice;
|
|
187
201
|
(0, _defineProperty2["default"])(MultipleChoice, "createDefaultModel", function () {
|
|
188
202
|
var model = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
189
|
-
|
|
203
|
+
|
|
204
|
+
var normalizedModel = _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
|
|
190
205
|
choices: generateFormattedChoices(model && model.choices || [])
|
|
191
|
-
}));
|
|
206
|
+
})); // This is used for offering support for old models which have the property "verticalMode"
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
normalizedModel.choicesLayout = model.choicesLayout || model.verticalMode === false && 'horizontal' || _defaults2["default"].model.choicesLayout;
|
|
210
|
+
return normalizedModel;
|
|
192
211
|
});
|
|
193
212
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","ReactDOM","render","HTMLElement","utils","normalizeChoices"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;
|
|
1
|
+
{"version":3,"sources":["../src/index.js"],"names":["log","generateFormattedChoices","choices","choiceCount","length","formattedChoices","i","push","value","label","feedback","type","prepareCustomizationObject","config","model","configuration","sensibleDefaults","answerChoiceCount","MultipleChoice","_model","createDefaultModel","_configuration","onModelChanged","bind","onConfigurationChanged","s","_render","c","info","_disableSidePanel","reset","resetValue","dispatchEvent","ModelUpdatedEvent","m","dispatchModelUpdated","handler","InsertImageEvent","src","done","DeleteImageEvent","InsertSoundEvent","DeleteSoundEvent","element","React","createElement","Main","disableSidePanel","imageSupport","add","insertImage","onDeleteImage","uploadSoundSupport","insertSound","onDeleteSound","ReactDOM","render","HTMLElement","normalizedModel","utils","normalizeChoices","choicesLayout","verticalMode"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport {\n DeleteImageEvent,\n InsertImageEvent,\n ModelUpdatedEvent,\n InsertSoundEvent,\n DeleteSoundEvent\n} from '@pie-framework/pie-configure-events';\n\nimport Main from './main';\nimport { choiceUtils as utils } from '@pie-lib/config-ui';\nimport defaults from 'lodash/defaults';\n\nimport sensibleDefaults from './defaults';\n\nconst log = debug('multiple-choice:configure');\n\nconst generateFormattedChoices = (choices, choiceCount = 0) => {\n if (!choices || choices.length === 0) {\n let formattedChoices = [];\n\n for (let i = 0; i < choiceCount; i++) {\n formattedChoices.push({\n value: `${i}`,\n label: '',\n feedback: {\n type: 'none',\n value: ''\n }\n });\n }\n\n return formattedChoices;\n }\n\n return choices;\n};\n\nconst prepareCustomizationObject = (config, model) => {\n const configuration = defaults(config, sensibleDefaults.configuration);\n\n return {\n configuration,\n model: {\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [], configuration && configuration.answerChoiceCount)\n }\n };\n};\n\nexport default class MultipleChoice extends HTMLElement {\n static createDefaultModel = (model = {}) => {\n const normalizedModel = utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\n });\n\n // This is used for offering support for old models which have the property \"verticalMode\"\n normalizedModel.choicesLayout = model.choicesLayout || (model.verticalMode === false && 'horizontal') || sensibleDefaults.model.choicesLayout;\n\n return normalizedModel;\n }\n\n constructor() {\n super();\n this._model = MultipleChoice.createDefaultModel();\n this._configuration = sensibleDefaults.configuration;\n this.onModelChanged = this.onModelChanged.bind(this);\n this.onConfigurationChanged = this.onConfigurationChanged.bind(this);\n }\n\n set model(s) {\n this._model = MultipleChoice.createDefaultModel(s);\n\n this._render();\n }\n\n set configuration(c) {\n const info = prepareCustomizationObject(c, this._model);\n\n this.onModelChanged(info.model);\n this._configuration = info.configuration;\n this._render();\n }\n\n set disableSidePanel(s) {\n this._disableSidePanel = s;\n this._render();\n }\n\n dispatchModelUpdated(reset) {\n const resetValue = !!reset;\n\n this.dispatchEvent(new ModelUpdatedEvent(this._model, resetValue));\n }\n\n onModelChanged(m, reset) {\n this._model = m;\n this._render();\n\n this.dispatchModelUpdated(reset);\n }\n\n onConfigurationChanged(c) {\n this._configuration = prepareCustomizationObject(c, this._model).configuration;\n\n if (this._model) {\n this.onModelChanged(this._model);\n }\n\n this._render();\n }\n\n /** @param {done, progress, file} handler */\n insertImage(handler) {\n this.dispatchEvent(new InsertImageEvent(handler));\n }\n\n onDeleteImage(src, done) {\n this.dispatchEvent(new DeleteImageEvent(src, done));\n }\n\n insertSound(handler) {\n this.dispatchEvent(new InsertSoundEvent(handler));\n }\n\n onDeleteSound(src, done) {\n this.dispatchEvent(new DeleteSoundEvent(src, done));\n }\n\n _render() {\n log('_render');\n let element = React.createElement(Main, {\n model: this._model,\n configuration: this._configuration,\n onModelChanged: this.onModelChanged,\n onConfigurationChanged: this.onConfigurationChanged,\n disableSidePanel: this._disableSidePanel,\n imageSupport: {\n add: this.insertImage.bind(this),\n delete: this.onDeleteImage.bind(this)\n },\n uploadSoundSupport: {\n add: this.insertSound.bind(this),\n delete: this.onDeleteSound.bind(this)\n },\n });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
|
package/configure/lib/main.js
CHANGED
|
@@ -41,13 +41,25 @@ var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
|
41
41
|
|
|
42
42
|
var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
|
|
43
43
|
|
|
44
|
+
var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
|
|
45
|
+
|
|
46
|
+
var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
|
|
47
|
+
|
|
48
|
+
var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
|
|
49
|
+
|
|
50
|
+
var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
|
|
51
|
+
|
|
52
|
+
var _Info = _interopRequireDefault(require("@material-ui/icons/Info"));
|
|
53
|
+
|
|
54
|
+
var _utils = require("./utils");
|
|
55
|
+
|
|
44
56
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
45
57
|
|
|
46
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try {
|
|
58
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
47
59
|
|
|
48
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object);
|
|
60
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
49
61
|
|
|
50
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]
|
|
62
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
51
63
|
|
|
52
64
|
var Panel = _configUi.settings.Panel,
|
|
53
65
|
toggle = _configUi.settings.toggle,
|
|
@@ -108,6 +120,28 @@ var styles = function styles(theme) {
|
|
|
108
120
|
'&:focus': {
|
|
109
121
|
backgroundColor: _renderUi.color.disabled()
|
|
110
122
|
}
|
|
123
|
+
},
|
|
124
|
+
flexContainer: {
|
|
125
|
+
display: 'flex',
|
|
126
|
+
alignItems: 'center',
|
|
127
|
+
marginBottom: '5px'
|
|
128
|
+
},
|
|
129
|
+
titleText: {
|
|
130
|
+
fontFamily: 'Cerebri Sans',
|
|
131
|
+
fontSize: '18px',
|
|
132
|
+
lineHeight: '19px',
|
|
133
|
+
color: '#495B8F',
|
|
134
|
+
marginRight: '5px'
|
|
135
|
+
},
|
|
136
|
+
tooltip: {
|
|
137
|
+
fontSize: '12px',
|
|
138
|
+
whiteSpace: 'pre',
|
|
139
|
+
maxWidth: '500px'
|
|
140
|
+
},
|
|
141
|
+
errorText: {
|
|
142
|
+
fontSize: '12px',
|
|
143
|
+
color: 'red',
|
|
144
|
+
paddingTop: '5px'
|
|
111
145
|
}
|
|
112
146
|
};
|
|
113
147
|
};
|
|
@@ -121,6 +155,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
121
155
|
onRemoveChoice = props.onRemoveChoice,
|
|
122
156
|
onAddChoice = props.onAddChoice,
|
|
123
157
|
imageSupport = props.imageSupport,
|
|
158
|
+
uploadSoundSupport = props.uploadSoundSupport,
|
|
124
159
|
onChangeModel = props.onChangeModel,
|
|
125
160
|
onConfigurationChanged = props.onConfigurationChanged,
|
|
126
161
|
onTeacherInstructionsChanged = props.onTeacherInstructionsChanged;
|
|
@@ -130,8 +165,6 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
130
165
|
prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
|
|
131
166
|
_ref$addChoiceButton = _ref.addChoiceButton,
|
|
132
167
|
addChoiceButton = _ref$addChoiceButton === void 0 ? {} : _ref$addChoiceButton,
|
|
133
|
-
_ref$limitChoicesNumb = _ref.limitChoicesNumber,
|
|
134
|
-
limitChoicesNumber = _ref$limitChoicesNumb === void 0 ? {} : _ref$limitChoicesNumb,
|
|
135
168
|
_ref$feedback = _ref.feedback,
|
|
136
169
|
feedback = _ref$feedback === void 0 ? {} : _ref$feedback,
|
|
137
170
|
_ref$deleteChoice = _ref.deleteChoice,
|
|
@@ -158,16 +191,32 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
158
191
|
sequentialChoiceLabels = _ref$sequentialChoice === void 0 ? {} : _ref$sequentialChoice,
|
|
159
192
|
settingsPanelDisabled = _ref.settingsPanelDisabled,
|
|
160
193
|
choicesLayout = _ref.choicesLayout,
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
194
|
+
_ref$spellCheck = _ref.spellCheck,
|
|
195
|
+
spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
|
|
196
|
+
gridColumns = _ref.gridColumns,
|
|
197
|
+
_ref$maxImageWidth = _ref.maxImageWidth,
|
|
198
|
+
maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
|
|
199
|
+
_ref$maxImageHeight = _ref.maxImageHeight,
|
|
200
|
+
maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight;
|
|
201
|
+
|
|
202
|
+
var _ref2 = configuration || {},
|
|
203
|
+
maxAnswerChoices = _ref2.maxAnswerChoices;
|
|
204
|
+
|
|
205
|
+
var _ref3 = model || {},
|
|
206
|
+
limitChoicesNumber = _ref3.limitChoicesNumber,
|
|
207
|
+
teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
|
|
208
|
+
rationaleEnabled = _ref3.rationaleEnabled,
|
|
209
|
+
accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
|
|
210
|
+
feedbackEnabled = _ref3.feedbackEnabled,
|
|
211
|
+
promptEnabled = _ref3.promptEnabled,
|
|
212
|
+
spellCheckEnabled = _ref3.spellCheckEnabled,
|
|
213
|
+
choices = _ref3.choices,
|
|
214
|
+
errors = _ref3.errors;
|
|
215
|
+
|
|
216
|
+
var _ref4 = errors || {},
|
|
217
|
+
choicesErrors = _ref4.choicesErrors,
|
|
218
|
+
correctResponseError = _ref4.correctResponseError,
|
|
219
|
+
answerChoicesError = _ref4.answerChoicesError;
|
|
171
220
|
|
|
172
221
|
var nrOfColumnsAvailable = choices && choices.length ? Array.from({
|
|
173
222
|
length: choices.length
|
|
@@ -192,8 +241,17 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
192
241
|
default:
|
|
193
242
|
toolbarOpts.position = 'bottom';
|
|
194
243
|
break;
|
|
244
|
+
} // if old property is used, set maxAnswerChoices to 9
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
if (limitChoicesNumber) {
|
|
248
|
+
maxAnswerChoices = MAX_CHOICES;
|
|
195
249
|
}
|
|
196
250
|
|
|
251
|
+
var validationMessage = (0, _utils.generateValidationMessage)(configuration);
|
|
252
|
+
var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
|
|
253
|
+
var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
|
|
254
|
+
|
|
197
255
|
var Content = /*#__PURE__*/_react["default"].createElement("div", null, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
198
256
|
label: teacherInstructions.label,
|
|
199
257
|
className: classes.promptHolder
|
|
@@ -203,7 +261,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
203
261
|
onChange: onTeacherInstructionsChanged,
|
|
204
262
|
imageSupport: imageSupport,
|
|
205
263
|
nonEmpty: false,
|
|
206
|
-
toolbarOpts: toolbarOpts
|
|
264
|
+
toolbarOpts: toolbarOpts,
|
|
265
|
+
spellCheck: spellCheckEnabled,
|
|
266
|
+
maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
|
|
267
|
+
maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
|
|
268
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
269
|
+
languageCharactersProps: [{
|
|
270
|
+
language: 'spanish'
|
|
271
|
+
}, {
|
|
272
|
+
language: 'special'
|
|
273
|
+
}]
|
|
207
274
|
})), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
208
275
|
label: prompt.label,
|
|
209
276
|
className: classes.promptHolder
|
|
@@ -214,8 +281,36 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
214
281
|
imageSupport: imageSupport,
|
|
215
282
|
nonEmpty: false,
|
|
216
283
|
disableUnderline: true,
|
|
217
|
-
toolbarOpts: toolbarOpts
|
|
218
|
-
|
|
284
|
+
toolbarOpts: toolbarOpts,
|
|
285
|
+
spellCheck: spellCheckEnabled,
|
|
286
|
+
maxImageWidth: maxImageWidth && maxImageWidth.prompt,
|
|
287
|
+
maxImageHeight: maxImageHeight && maxImageHeight.prompt,
|
|
288
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
289
|
+
languageCharactersProps: [{
|
|
290
|
+
language: 'spanish'
|
|
291
|
+
}, {
|
|
292
|
+
language: 'special'
|
|
293
|
+
}]
|
|
294
|
+
})), /*#__PURE__*/_react["default"].createElement("div", {
|
|
295
|
+
className: classes.flexContainer
|
|
296
|
+
}, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
|
|
297
|
+
className: classes.titleText
|
|
298
|
+
}, "Choices"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
299
|
+
classes: {
|
|
300
|
+
tooltip: classes.tooltip
|
|
301
|
+
},
|
|
302
|
+
disableFocusListener: true,
|
|
303
|
+
disableTouchListener: true,
|
|
304
|
+
placement: 'right',
|
|
305
|
+
title: validationMessage
|
|
306
|
+
}, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
|
|
307
|
+
fontSize: 'small',
|
|
308
|
+
color: 'primary'
|
|
309
|
+
}))), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
310
|
+
className: classes.errorText
|
|
311
|
+
}, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
|
|
312
|
+
className: classes.errorText
|
|
313
|
+
}, answerChoicesError), choices.map(function (choice, index) {
|
|
219
314
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
220
315
|
key: "choice-".concat(index),
|
|
221
316
|
className: classes.choiceConfigurationHolder
|
|
@@ -237,7 +332,12 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
237
332
|
allowFeedBack: feedbackEnabled,
|
|
238
333
|
allowDelete: deleteChoice.settings,
|
|
239
334
|
noLabels: true,
|
|
240
|
-
toolbarOpts: toolbarOpts
|
|
335
|
+
toolbarOpts: toolbarOpts,
|
|
336
|
+
spellCheck: spellCheckEnabled,
|
|
337
|
+
error: choicesErrors && choicesErrors[choice.value] ? choicesErrors[choice.value] : null,
|
|
338
|
+
noCorrectAnswerError: correctResponseError,
|
|
339
|
+
maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
|
|
340
|
+
maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight
|
|
241
341
|
}), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
242
342
|
key: "rationale-".concat(index),
|
|
243
343
|
label: rationale.label,
|
|
@@ -252,7 +352,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
252
352
|
},
|
|
253
353
|
imageSupport: imageSupport,
|
|
254
354
|
toolbarOpts: toolbarOpts,
|
|
255
|
-
pluginProps: labelPlugins
|
|
355
|
+
pluginProps: labelPlugins,
|
|
356
|
+
spellCheck: spellCheckEnabled,
|
|
357
|
+
maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
|
|
358
|
+
maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
|
|
359
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
360
|
+
languageCharactersProps: [{
|
|
361
|
+
language: 'spanish'
|
|
362
|
+
}, {
|
|
363
|
+
language: 'special'
|
|
364
|
+
}]
|
|
256
365
|
})), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
|
|
257
366
|
key: "accessibility-".concat(index),
|
|
258
367
|
label: accessibility.label,
|
|
@@ -266,16 +375,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
266
375
|
}));
|
|
267
376
|
},
|
|
268
377
|
imageSupport: imageSupport,
|
|
269
|
-
pluginProps: labelPlugins
|
|
378
|
+
pluginProps: labelPlugins,
|
|
379
|
+
spellCheck: spellCheckEnabled,
|
|
380
|
+
maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
|
|
381
|
+
maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
|
|
382
|
+
uploadSoundSupport: uploadSoundSupport,
|
|
383
|
+
languageCharactersProps: [{
|
|
384
|
+
language: 'spanish'
|
|
385
|
+
}, {
|
|
386
|
+
language: 'special'
|
|
387
|
+
}]
|
|
270
388
|
})));
|
|
271
389
|
}), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
|
|
272
|
-
title:
|
|
390
|
+
title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
|
|
273
391
|
classes: {
|
|
274
392
|
tooltip: classes.tooltip
|
|
275
393
|
}
|
|
276
394
|
}, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
277
395
|
classes: {
|
|
278
|
-
root:
|
|
396
|
+
root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
|
|
279
397
|
},
|
|
280
398
|
className: classes.addButton,
|
|
281
399
|
variant: "contained",
|
|
@@ -288,16 +406,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
288
406
|
'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
|
|
289
407
|
choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
|
|
290
408
|
partialScoring: partialScoring.settings && toggle(partialScoring.label),
|
|
291
|
-
limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
|
|
292
409
|
lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
|
|
293
410
|
feedbackEnabled: feedback.settings && toggle(feedback.label),
|
|
294
|
-
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
|
|
411
|
+
choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
|
|
412
|
+
gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
|
|
295
413
|
};
|
|
296
|
-
|
|
297
|
-
if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
|
|
298
|
-
settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
|
|
299
|
-
}
|
|
300
|
-
|
|
301
414
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
302
415
|
className: classes.design
|
|
303
416
|
}, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
|
|
@@ -313,6 +426,7 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
313
426
|
studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
|
|
314
427
|
promptEnabled: prompt.settings && toggle(prompt.label),
|
|
315
428
|
rationaleEnabled: rationale.settings && toggle(rationale.label),
|
|
429
|
+
spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
|
|
316
430
|
accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
|
|
317
431
|
scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
|
|
318
432
|
}
|
|
@@ -321,6 +435,29 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
|
|
|
321
435
|
}, Content));
|
|
322
436
|
});
|
|
323
437
|
|
|
438
|
+
var InfoDialog = function InfoDialog(_ref5) {
|
|
439
|
+
var open = _ref5.open,
|
|
440
|
+
onCancel = _ref5.onCancel,
|
|
441
|
+
onOk = _ref5.onOk,
|
|
442
|
+
title = _ref5.title;
|
|
443
|
+
return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
|
|
444
|
+
open: open
|
|
445
|
+
}, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
446
|
+
onClick: onOk,
|
|
447
|
+
color: "primary"
|
|
448
|
+
}, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
|
|
449
|
+
onClick: onCancel,
|
|
450
|
+
color: "primary"
|
|
451
|
+
}, "Cancel")));
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
InfoDialog.propTypes = {
|
|
455
|
+
open: _propTypes["default"].bool,
|
|
456
|
+
onCancel: _propTypes["default"].func,
|
|
457
|
+
onOk: _propTypes["default"].func,
|
|
458
|
+
title: _propTypes["default"].string
|
|
459
|
+
};
|
|
460
|
+
|
|
324
461
|
var Main = /*#__PURE__*/function (_React$Component) {
|
|
325
462
|
(0, _inherits2["default"])(Main, _React$Component);
|
|
326
463
|
|
|
@@ -336,28 +473,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
336
473
|
}
|
|
337
474
|
|
|
338
475
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
476
|
+
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
|
|
477
|
+
dialog: {
|
|
478
|
+
open: false
|
|
479
|
+
}
|
|
480
|
+
});
|
|
339
481
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
|
|
340
|
-
var
|
|
341
|
-
|
|
482
|
+
var _this$props = _this.props,
|
|
483
|
+
model = _this$props.model,
|
|
484
|
+
configuration = _this$props.configuration;
|
|
485
|
+
|
|
486
|
+
var _ref6 = configuration || {},
|
|
487
|
+
minAnswerChoices = _ref6.minAnswerChoices;
|
|
488
|
+
|
|
489
|
+
if (minAnswerChoices && model.choices.length === minAnswerChoices) {
|
|
490
|
+
_this.setState({
|
|
491
|
+
dialog: {
|
|
492
|
+
open: true,
|
|
493
|
+
message: "There can't be less than ".concat(minAnswerChoices, " choices."),
|
|
494
|
+
onOk: function onOk() {
|
|
495
|
+
_this.setState({
|
|
496
|
+
dialog: {
|
|
497
|
+
open: false
|
|
498
|
+
}
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
});
|
|
503
|
+
} else {
|
|
504
|
+
model.choices.splice(index, 1);
|
|
342
505
|
|
|
343
|
-
|
|
506
|
+
_this.props.onModelChanged(model);
|
|
507
|
+
}
|
|
344
508
|
});
|
|
345
509
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
|
|
346
|
-
var
|
|
510
|
+
var _this$props2 = _this.props,
|
|
511
|
+
model = _this$props2.model,
|
|
512
|
+
configuration = _this$props2.configuration;
|
|
347
513
|
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
label: '',
|
|
351
|
-
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
352
|
-
return c.value;
|
|
353
|
-
}), 0),
|
|
354
|
-
feedback: {
|
|
355
|
-
type: 'none'
|
|
356
|
-
}
|
|
357
|
-
});
|
|
514
|
+
var _ref7 = configuration || {},
|
|
515
|
+
maxAnswerChoices = _ref7.maxAnswerChoices;
|
|
358
516
|
|
|
359
|
-
|
|
517
|
+
var _ref8 = model || {},
|
|
518
|
+
limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
if (limitChoicesNumber) {
|
|
522
|
+
maxAnswerChoices = MAX_CHOICES;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
|
|
526
|
+
return;
|
|
360
527
|
}
|
|
528
|
+
|
|
529
|
+
model.choices.push({
|
|
530
|
+
label: '',
|
|
531
|
+
value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
|
|
532
|
+
return c.value;
|
|
533
|
+
}), 0),
|
|
534
|
+
feedback: {
|
|
535
|
+
type: 'none'
|
|
536
|
+
}
|
|
537
|
+
});
|
|
538
|
+
|
|
539
|
+
_this.props.onModelChanged(model);
|
|
361
540
|
});
|
|
362
541
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
|
|
363
542
|
var model = _this.props.model;
|
|
@@ -421,33 +600,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
421
600
|
}
|
|
422
601
|
|
|
423
602
|
(0, _createClass2["default"])(Main, [{
|
|
424
|
-
key: "componentDidMount",
|
|
425
|
-
value: function componentDidMount() {
|
|
426
|
-
// This is used for offering support for old models which have the property verticalMode
|
|
427
|
-
// Same thing is set in the controller: packages/multiple-choice/controller/src/index.js - model
|
|
428
|
-
var _this$props = this.props,
|
|
429
|
-
model = _this$props.model,
|
|
430
|
-
onModelChanged = _this$props.onModelChanged;
|
|
431
|
-
var verticalMode = model.verticalMode;
|
|
432
|
-
|
|
433
|
-
if (verticalMode !== undefined) {
|
|
434
|
-
var choicesLayout = verticalMode === false ? 'horizontal' : 'vertical';
|
|
435
|
-
onModelChanged(_objectSpread(_objectSpread({}, model), {}, {
|
|
436
|
-
choicesLayout: choicesLayout
|
|
437
|
-
}));
|
|
438
|
-
}
|
|
439
|
-
}
|
|
440
|
-
}, {
|
|
441
603
|
key: "render",
|
|
442
604
|
value: function render() {
|
|
443
|
-
|
|
605
|
+
var dialog = this.state.dialog;
|
|
606
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
|
|
607
|
+
open: dialog.open,
|
|
608
|
+
title: dialog.message,
|
|
609
|
+
onCancel: dialog.onCancel,
|
|
610
|
+
onOk: dialog.onOk
|
|
611
|
+
}), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
|
|
444
612
|
onChangeModel: this.onModelChanged,
|
|
445
613
|
onRemoveChoice: this.onRemoveChoice,
|
|
446
614
|
onChoiceChanged: this.onChoiceChanged,
|
|
447
615
|
onAddChoice: this.onAddChoice,
|
|
448
616
|
onPromptChanged: this.onPromptChanged,
|
|
449
617
|
onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
|
|
450
|
-
}));
|
|
618
|
+
})));
|
|
451
619
|
}
|
|
452
620
|
}]);
|
|
453
621
|
return Main;
|
|
@@ -456,6 +624,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
|
|
|
456
624
|
exports.Main = Main;
|
|
457
625
|
(0, _defineProperty2["default"])(Main, "propTypes", {
|
|
458
626
|
model: _propTypes["default"].object.isRequired,
|
|
627
|
+
configuration: _propTypes["default"].object.isRequired,
|
|
459
628
|
disableSidePanel: _propTypes["default"].bool,
|
|
460
629
|
onModelChanged: _propTypes["default"].func.isRequired,
|
|
461
630
|
onConfigurationChanged: _propTypes["default"].func.isRequired,
|