@pie-element/multiple-choice 5.9.3-next.137 → 5.9.3-next.1372

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.
@@ -21,17 +21,20 @@ var _default = {
21
21
  feedbackEnabled: true,
22
22
  promptEnabled: true,
23
23
  rationaleEnabled: true,
24
- limitChoicesNumber: true,
25
24
  teacherInstructionsEnabled: true,
26
25
  studentInstructionsEnabled: true,
27
- verticalMode: true,
28
26
  toolbarEditorPosition: 'bottom',
29
27
  choicesLayout: 'vertical',
30
28
  gridColumns: '2'
31
29
  },
32
30
  configuration: {
31
+ spellCheck: {
32
+ label: 'Spellcheck',
33
+ settings: false,
34
+ enabled: true
35
+ },
33
36
  choicesLayout: {
34
- settings: true,
37
+ settings: false,
35
38
  label: 'Choices Layout'
36
39
  },
37
40
  gridColumns: {
@@ -42,10 +45,6 @@ var _default = {
42
45
  settings: true,
43
46
  label: 'Add a Choice'
44
47
  },
45
- limitChoicesNumber: {
46
- settings: true,
47
- label: 'Limit choices to 9'
48
- },
49
48
  choiceMode: {
50
49
  settings: true,
51
50
  label: 'Response Type'
@@ -96,6 +95,24 @@ var _default = {
96
95
  toolbarEditorPosition: {
97
96
  settings: false,
98
97
  label: 'Toolbar Editor Position'
98
+ },
99
+ minAnswerChoices: 2,
100
+ maxAnswerChoices: 5,
101
+ maxImageWidth: {
102
+ teacherInstructions: 300,
103
+ prompt: 300,
104
+ rationale: 636,
105
+ choices: 636
106
+ },
107
+ maxImageHeight: {
108
+ teacherInstructions: 300,
109
+ prompt: 300,
110
+ rationale: 300,
111
+ choices: 300
112
+ },
113
+ withRubric: {
114
+ settings: false,
115
+ label: 'Add Rubric'
99
116
  }
100
117
  }
101
118
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","choiceMode","choicePrefix","choices","prompt","lockChoiceOrder","partialScoring","scoringType","feedbackEnabled","promptEnabled","rationaleEnabled","limitChoicesNumber","teacherInstructionsEnabled","studentInstructionsEnabled","verticalMode","toolbarEditorPosition","choicesLayout","gridColumns","configuration","settings","label","answerChoiceCount","addChoiceButton","deleteChoice","feedback","rationale","accessibility","studentInstructions","teacherInstructions"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;eACe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,UAAU,EAAE,UADP;AAELC,IAAAA,YAAY,EAAE,SAFT;AAGLC,IAAAA,OAAO,EAAE,EAHJ;AAILC,IAAAA,MAAM,EAAE,2BAJH;AAKLC,IAAAA,eAAe,EAAE,IALZ;AAMLC,IAAAA,cAAc,EAAE,IANX;AAOLC,IAAAA,WAAW,EAAE,MAPR;AAQLC,IAAAA,eAAe,EAAE,IARZ;AASLC,IAAAA,aAAa,EAAE,IATV;AAULC,IAAAA,gBAAgB,EAAE,IAVb;AAWLC,IAAAA,kBAAkB,EAAE,IAXf;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,0BAA0B,EAAE,IAbvB;AAcLC,IAAAA,YAAY,EAAE,IAdT;AAeLC,IAAAA,qBAAqB,EAAE,QAflB;AAgBLC,IAAAA,aAAa,EAAE,UAhBV;AAiBLC,IAAAA,WAAW,EAAE;AAjBR,GADM;AAoBbC,EAAAA,aAAa,EAAE;AACbF,IAAAA,aAAa,EAAE;AACbG,MAAAA,QAAQ,EAAE,IADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KADF;AAKbH,IAAAA,WAAW,EAAE;AACXG,MAAAA,KAAK,EAAE;AADI,KALA;AAQbC,IAAAA,iBAAiB,EAAE,CARN;AASbC,IAAAA,eAAe,EAAE;AACfH,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KATJ;AAabT,IAAAA,kBAAkB,EAAE;AAClBQ,MAAAA,QAAQ,EAAE,IADQ;AAElBC,MAAAA,KAAK,EAAE;AAFW,KAbP;AAiBbnB,IAAAA,UAAU,EAAE;AACVkB,MAAAA,QAAQ,EAAE,IADA;AAEVC,MAAAA,KAAK,EAAE;AAFG,KAjBC;AAqBblB,IAAAA,YAAY,EAAE;AACZiB,MAAAA,QAAQ,EAAE,IADE;AAEZC,MAAAA,KAAK,EAAE;AAFK,KArBD;AAyBbG,IAAAA,YAAY,EAAE;AACZJ,MAAAA,QAAQ,EAAE;AADE,KAzBD;AA4BbK,IAAAA,QAAQ,EAAE;AACRL,MAAAA,QAAQ,EAAE,IADF;AAERC,MAAAA,KAAK,EAAE;AAFC,KA5BG;AAgCbhB,IAAAA,MAAM,EAAE;AACNe,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KAhCK;AAoCbf,IAAAA,eAAe,EAAE;AACfc,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KApCJ;AAwCbd,IAAAA,cAAc,EAAE;AACda,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAxCH;AA4CbK,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KA5CE;AAgDbM,IAAAA,aAAa,EAAE;AACbP,MAAAA,QAAQ,EAAE,KADG;AAEbC,MAAAA,KAAK,EAAE;AAFM,KAhDF;AAoDbb,IAAAA,WAAW,EAAE;AACXY,MAAAA,QAAQ,EAAE,KADC;AAEXC,MAAAA,KAAK,EAAE;AAFI,KApDA;AAwDbO,IAAAA,mBAAmB,EAAE;AACnBR,MAAAA,QAAQ,EAAE,KADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAxDR;AA4DbQ,IAAAA,mBAAmB,EAAE;AACnBT,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KA5DR;AAgEbL,IAAAA,qBAAqB,EAAE;AACrBI,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc;AAhEV;AApBF,C","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 limitChoicesNumber: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n verticalMode: true,\n toolbarEditorPosition: 'bottom',\n choicesLayout: 'vertical',\n gridColumns: '2',\n },\n configuration: {\n choicesLayout: {\n settings: true,\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 limitChoicesNumber: {\n settings: true,\n label: 'Limit choices to 9',\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 },\n};\n"],"file":"defaults.js"}
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","withRubric"],"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 withRubric: {\n settings: false,\n label: 'Add Rubric'\n }\n },\n};\n"],"file":"defaults.js"}
@@ -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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
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] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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
- return _configUi.choiceUtils.normalizeChoices(_objectSpread(_objectSpread(_objectSpread({}, _defaults2["default"].model), model), {}, {
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":"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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} 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 = {}) => utils.normalizeChoices({\n ...sensibleDefaults.model,\n ...model,\n choices: generateFormattedChoices((model && model.choices) || [])\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 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 _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 });\n ReactDOM.render(element, this);\n }\n}\n"],"file":"index.js"}
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"}
@@ -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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }
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); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
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] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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,34 @@ 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
- gridColumns = _ref.gridColumns;
162
-
163
- var _ref2 = model || {},
164
- limitChoicesNumberModel = _ref2.limitChoicesNumber,
165
- teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
166
- rationaleEnabled = _ref2.rationaleEnabled,
167
- accessibilityLabelsEnabled = _ref2.accessibilityLabelsEnabled,
168
- feedbackEnabled = _ref2.feedbackEnabled,
169
- promptEnabled = _ref2.promptEnabled,
170
- choices = _ref2.choices;
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
+ withRubric = _ref.withRubric;
202
+
203
+ var _ref2 = configuration || {},
204
+ maxAnswerChoices = _ref2.maxAnswerChoices;
205
+
206
+ var _ref3 = model || {},
207
+ limitChoicesNumber = _ref3.limitChoicesNumber,
208
+ teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
209
+ rationaleEnabled = _ref3.rationaleEnabled,
210
+ accessibilityLabelsEnabled = _ref3.accessibilityLabelsEnabled,
211
+ feedbackEnabled = _ref3.feedbackEnabled,
212
+ promptEnabled = _ref3.promptEnabled,
213
+ spellCheckEnabled = _ref3.spellCheckEnabled,
214
+ choices = _ref3.choices,
215
+ errors = _ref3.errors,
216
+ rubricEnabled = _ref3.rubricEnabled;
217
+
218
+ var _ref4 = errors || {},
219
+ choicesErrors = _ref4.choicesErrors,
220
+ correctResponseError = _ref4.correctResponseError,
221
+ answerChoicesError = _ref4.answerChoicesError;
171
222
 
172
223
  var nrOfColumnsAvailable = choices && choices.length ? Array.from({
173
224
  length: choices.length
@@ -192,8 +243,17 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
192
243
  default:
193
244
  toolbarOpts.position = 'bottom';
194
245
  break;
246
+ } // if old property is used, set maxAnswerChoices to 9
247
+
248
+
249
+ if (limitChoicesNumber) {
250
+ maxAnswerChoices = MAX_CHOICES;
195
251
  }
196
252
 
253
+ var validationMessage = (0, _utils.generateValidationMessage)(configuration);
254
+ var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
255
+ var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
256
+
197
257
  var Content = /*#__PURE__*/_react["default"].createElement("div", null, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
198
258
  label: teacherInstructions.label,
199
259
  className: classes.promptHolder
@@ -203,7 +263,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
203
263
  onChange: onTeacherInstructionsChanged,
204
264
  imageSupport: imageSupport,
205
265
  nonEmpty: false,
206
- toolbarOpts: toolbarOpts
266
+ toolbarOpts: toolbarOpts,
267
+ spellCheck: spellCheckEnabled,
268
+ maxImageWidth: maxImageWidth && maxImageWidth.teacherInstructions || defaultImageMaxWidth,
269
+ maxImageHeight: maxImageHeight && maxImageHeight.teacherInstructions || defaultImageMaxHeight,
270
+ uploadSoundSupport: uploadSoundSupport,
271
+ languageCharactersProps: [{
272
+ language: 'spanish'
273
+ }, {
274
+ language: 'special'
275
+ }]
207
276
  })), promptEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
208
277
  label: prompt.label,
209
278
  className: classes.promptHolder
@@ -214,8 +283,36 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
214
283
  imageSupport: imageSupport,
215
284
  nonEmpty: false,
216
285
  disableUnderline: true,
217
- toolbarOpts: toolbarOpts
218
- })), model.choices.map(function (choice, index) {
286
+ toolbarOpts: toolbarOpts,
287
+ spellCheck: spellCheckEnabled,
288
+ maxImageWidth: maxImageWidth && maxImageWidth.prompt,
289
+ maxImageHeight: maxImageHeight && maxImageHeight.prompt,
290
+ uploadSoundSupport: uploadSoundSupport,
291
+ languageCharactersProps: [{
292
+ language: 'spanish'
293
+ }, {
294
+ language: 'special'
295
+ }]
296
+ })), /*#__PURE__*/_react["default"].createElement("div", {
297
+ className: classes.flexContainer
298
+ }, /*#__PURE__*/_react["default"].createElement(_Typography["default"], {
299
+ className: classes.titleText
300
+ }, "Choices"), /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
301
+ classes: {
302
+ tooltip: classes.tooltip
303
+ },
304
+ disableFocusListener: true,
305
+ disableTouchListener: true,
306
+ placement: 'right',
307
+ title: validationMessage
308
+ }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
309
+ fontSize: 'small',
310
+ color: 'primary'
311
+ }))), correctResponseError && /*#__PURE__*/_react["default"].createElement("div", {
312
+ className: classes.errorText
313
+ }, correctResponseError), answerChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
314
+ className: classes.errorText
315
+ }, answerChoicesError), choices.map(function (choice, index) {
219
316
  return /*#__PURE__*/_react["default"].createElement("div", {
220
317
  key: "choice-".concat(index),
221
318
  className: classes.choiceConfigurationHolder
@@ -237,7 +334,13 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
237
334
  allowFeedBack: feedbackEnabled,
238
335
  allowDelete: deleteChoice.settings,
239
336
  noLabels: true,
240
- toolbarOpts: toolbarOpts
337
+ toolbarOpts: toolbarOpts,
338
+ spellCheck: spellCheckEnabled,
339
+ error: choicesErrors && choicesErrors[choice.value] ? choicesErrors[choice.value] : null,
340
+ noCorrectAnswerError: correctResponseError,
341
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
342
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
343
+ uploadSoundSupport: uploadSoundSupport
241
344
  }), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
242
345
  key: "rationale-".concat(index),
243
346
  label: rationale.label,
@@ -252,7 +355,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
252
355
  },
253
356
  imageSupport: imageSupport,
254
357
  toolbarOpts: toolbarOpts,
255
- pluginProps: labelPlugins
358
+ pluginProps: labelPlugins,
359
+ spellCheck: spellCheckEnabled,
360
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
361
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
362
+ uploadSoundSupport: uploadSoundSupport,
363
+ languageCharactersProps: [{
364
+ language: 'spanish'
365
+ }, {
366
+ language: 'special'
367
+ }]
256
368
  })), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
257
369
  key: "accessibility-".concat(index),
258
370
  label: accessibility.label,
@@ -266,16 +378,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
266
378
  }));
267
379
  },
268
380
  imageSupport: imageSupport,
269
- pluginProps: labelPlugins
381
+ pluginProps: labelPlugins,
382
+ spellCheck: spellCheckEnabled,
383
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
384
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
385
+ uploadSoundSupport: uploadSoundSupport,
386
+ languageCharactersProps: [{
387
+ language: 'spanish'
388
+ }, {
389
+ language: 'special'
390
+ }]
270
391
  })));
271
392
  }), /*#__PURE__*/_react["default"].createElement("br", null), addChoiceButton.settings && /*#__PURE__*/_react["default"].createElement(_Tooltip["default"], {
272
- title: limitChoicesNumberModel && model.choices.length >= MAX_CHOICES ? "Only ".concat(MAX_CHOICES, " allowed maximum") : '',
393
+ title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
273
394
  classes: {
274
395
  tooltip: classes.tooltip
275
396
  }
276
397
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
277
398
  classes: {
278
- root: limitChoicesNumberModel && model.choices.length >= MAX_CHOICES ? classes.disableButton : undefined
399
+ root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
279
400
  },
280
401
  className: classes.addButton,
281
402
  variant: "contained",
@@ -288,16 +409,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
288
409
  'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
289
410
  choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
290
411
  partialScoring: partialScoring.settings && toggle(partialScoring.label),
291
- limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
292
412
  lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
293
413
  feedbackEnabled: feedback.settings && toggle(feedback.label),
294
- choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
414
+ choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
415
+ gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
295
416
  };
296
-
297
- if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
298
- settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
299
- }
300
-
301
417
  return /*#__PURE__*/_react["default"].createElement("div", {
302
418
  className: classes.design
303
419
  }, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
@@ -313,14 +429,39 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
313
429
  studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
314
430
  promptEnabled: prompt.settings && toggle(prompt.label),
315
431
  rationaleEnabled: rationale.settings && toggle(rationale.label),
432
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
316
433
  accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
317
- scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
434
+ scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
435
+ rubricEnabled: withRubric.settings && toggle(withRubric.label)
318
436
  }
319
437
  }
320
438
  })
321
439
  }, Content));
322
440
  });
323
441
 
442
+ var InfoDialog = function InfoDialog(_ref5) {
443
+ var open = _ref5.open,
444
+ onCancel = _ref5.onCancel,
445
+ onOk = _ref5.onOk,
446
+ title = _ref5.title;
447
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
448
+ open: open
449
+ }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
450
+ onClick: onOk,
451
+ color: "primary"
452
+ }, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
453
+ onClick: onCancel,
454
+ color: "primary"
455
+ }, "Cancel")));
456
+ };
457
+
458
+ InfoDialog.propTypes = {
459
+ open: _propTypes["default"].bool,
460
+ onCancel: _propTypes["default"].func,
461
+ onOk: _propTypes["default"].func,
462
+ title: _propTypes["default"].string
463
+ };
464
+
324
465
  var Main = /*#__PURE__*/function (_React$Component) {
325
466
  (0, _inherits2["default"])(Main, _React$Component);
326
467
 
@@ -336,28 +477,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
336
477
  }
337
478
 
338
479
  _this = _super.call.apply(_super, [this].concat(args));
480
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
481
+ dialog: {
482
+ open: false
483
+ }
484
+ });
339
485
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
340
- var model = _this.props.model;
341
- model.choices.splice(index, 1);
486
+ var _this$props = _this.props,
487
+ model = _this$props.model,
488
+ configuration = _this$props.configuration;
489
+
490
+ var _ref6 = configuration || {},
491
+ minAnswerChoices = _ref6.minAnswerChoices;
492
+
493
+ if (minAnswerChoices && model.choices.length === minAnswerChoices) {
494
+ _this.setState({
495
+ dialog: {
496
+ open: true,
497
+ message: "There can't be less than ".concat(minAnswerChoices, " choices."),
498
+ onOk: function onOk() {
499
+ _this.setState({
500
+ dialog: {
501
+ open: false
502
+ }
503
+ });
504
+ }
505
+ }
506
+ });
507
+ } else {
508
+ model.choices.splice(index, 1);
342
509
 
343
- _this.props.onModelChanged(model);
510
+ _this.props.onModelChanged(model);
511
+ }
344
512
  });
345
513
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
346
- var model = _this.props.model;
514
+ var _this$props2 = _this.props,
515
+ model = _this$props2.model,
516
+ configuration = _this$props2.configuration;
347
517
 
348
- if (!model.limitChoicesNumber || model.limitChoicesNumber && model.choices.length < MAX_CHOICES) {
349
- model.choices.push({
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
- });
518
+ var _ref7 = configuration || {},
519
+ maxAnswerChoices = _ref7.maxAnswerChoices;
358
520
 
359
- _this.props.onModelChanged(model);
521
+ var _ref8 = model || {},
522
+ limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
523
+
524
+
525
+ if (limitChoicesNumber) {
526
+ maxAnswerChoices = MAX_CHOICES;
527
+ }
528
+
529
+ if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
530
+ return;
360
531
  }
532
+
533
+ model.choices.push({
534
+ label: '',
535
+ value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
536
+ return c.value;
537
+ }), 0),
538
+ feedback: {
539
+ type: 'none'
540
+ }
541
+ });
542
+
543
+ _this.props.onModelChanged(model);
361
544
  });
362
545
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
363
546
  var model = _this.props.model;
@@ -421,33 +604,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
421
604
  }
422
605
 
423
606
  (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
607
  key: "render",
442
608
  value: function render() {
443
- return /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
609
+ var dialog = this.state.dialog;
610
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
611
+ open: dialog.open,
612
+ title: dialog.message,
613
+ onCancel: dialog.onCancel,
614
+ onOk: dialog.onOk
615
+ }), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
444
616
  onChangeModel: this.onModelChanged,
445
617
  onRemoveChoice: this.onRemoveChoice,
446
618
  onChoiceChanged: this.onChoiceChanged,
447
619
  onAddChoice: this.onAddChoice,
448
620
  onPromptChanged: this.onPromptChanged,
449
621
  onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
450
- }));
622
+ })));
451
623
  }
452
624
  }]);
453
625
  return Main;
@@ -456,6 +628,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
456
628
  exports.Main = Main;
457
629
  (0, _defineProperty2["default"])(Main, "propTypes", {
458
630
  model: _propTypes["default"].object.isRequired,
631
+ configuration: _propTypes["default"].object.isRequired,
459
632
  disableSidePanel: _propTypes["default"].bool,
460
633
  onModelChanged: _propTypes["default"].func.isRequired,
461
634
  onConfigurationChanged: _propTypes["default"].func.isRequired,