@pie-element/multiple-choice 5.9.3-next.135 → 5.9.3-next.1357

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,12 @@ 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
241
343
  }), rationaleEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
242
344
  key: "rationale-".concat(index),
243
345
  label: rationale.label,
@@ -252,7 +354,16 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
252
354
  },
253
355
  imageSupport: imageSupport,
254
356
  toolbarOpts: toolbarOpts,
255
- pluginProps: labelPlugins
357
+ pluginProps: labelPlugins,
358
+ spellCheck: spellCheckEnabled,
359
+ maxImageWidth: maxImageWidth && maxImageWidth.rationale || defaultImageMaxWidth,
360
+ maxImageHeight: maxImageHeight && maxImageHeight.rationale || defaultImageMaxHeight,
361
+ uploadSoundSupport: uploadSoundSupport,
362
+ languageCharactersProps: [{
363
+ language: 'spanish'
364
+ }, {
365
+ language: 'special'
366
+ }]
256
367
  })), accessibilityLabelsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
257
368
  key: "accessibility-".concat(index),
258
369
  label: accessibility.label,
@@ -266,16 +377,25 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
266
377
  }));
267
378
  },
268
379
  imageSupport: imageSupport,
269
- pluginProps: labelPlugins
380
+ pluginProps: labelPlugins,
381
+ spellCheck: spellCheckEnabled,
382
+ maxImageWidth: maxImageWidth && maxImageWidth.choices || defaultImageMaxWidth,
383
+ maxImageHeight: maxImageHeight && maxImageHeight.choices || defaultImageMaxHeight,
384
+ uploadSoundSupport: uploadSoundSupport,
385
+ languageCharactersProps: [{
386
+ language: 'spanish'
387
+ }, {
388
+ language: 'special'
389
+ }]
270
390
  })));
271
391
  }), /*#__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") : '',
392
+ title: maxAnswerChoices && model.choices.length >= maxAnswerChoices ? "Only ".concat(maxAnswerChoices, " allowed maximum") : '',
273
393
  classes: {
274
394
  tooltip: classes.tooltip
275
395
  }
276
396
  }, /*#__PURE__*/_react["default"].createElement(_Button["default"], {
277
397
  classes: {
278
- root: limitChoicesNumberModel && model.choices.length >= MAX_CHOICES ? classes.disableButton : undefined
398
+ root: maxAnswerChoices && model.choices.length >= maxAnswerChoices && classes.disableButton
279
399
  },
280
400
  className: classes.addButton,
281
401
  variant: "contained",
@@ -288,16 +408,11 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
288
408
  'sequentialChoiceLabels.enabled': sequentialChoiceLabels.settings && toggle(sequentialChoiceLabels.label, true),
289
409
  choicePrefix: choicePrefix.settings && radio(choicePrefix.label, ['numbers', 'letters']),
290
410
  partialScoring: partialScoring.settings && toggle(partialScoring.label),
291
- limitChoicesNumber: limitChoicesNumber.settings && toggle(limitChoicesNumber.label),
292
411
  lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),
293
412
  feedbackEnabled: feedback.settings && toggle(feedback.label),
294
- choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal'])
413
+ choicesLayout: choicesLayout.settings && dropdown(choicesLayout.label, ['vertical', 'grid', 'horizontal']),
414
+ gridColumns: choicesLayout.settings && model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0 && dropdown(gridColumns.label, nrOfColumnsAvailable)
295
415
  };
296
-
297
- if (model.choicesLayout === 'grid' && nrOfColumnsAvailable.length > 0) {
298
- settingsInPanel.gridColumns = dropdown(gridColumns.label, nrOfColumnsAvailable);
299
- }
300
-
301
416
  return /*#__PURE__*/_react["default"].createElement("div", {
302
417
  className: classes.design
303
418
  }, settingsPanelDisabled ? Content : /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
@@ -313,14 +428,39 @@ var Design = (0, _styles.withStyles)(styles)(function (props) {
313
428
  studentInstructionsEnabled: studentInstructions.settings && toggle(studentInstructions.label),
314
429
  promptEnabled: prompt.settings && toggle(prompt.label),
315
430
  rationaleEnabled: rationale.settings && toggle(rationale.label),
431
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
316
432
  accessibilityLabelsEnabled: accessibility.settings && toggle(accessibility.label),
317
- scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric'])
433
+ scoringType: scoringType.settings && radio(scoringType.label, ['auto', 'rubric']),
434
+ rubricEnabled: withRubric.settings && toggle(withRubric.label)
318
435
  }
319
436
  }
320
437
  })
321
438
  }, Content));
322
439
  });
323
440
 
441
+ var InfoDialog = function InfoDialog(_ref5) {
442
+ var open = _ref5.open,
443
+ onCancel = _ref5.onCancel,
444
+ onOk = _ref5.onOk,
445
+ title = _ref5.title;
446
+ return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
447
+ open: open
448
+ }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
449
+ onClick: onOk,
450
+ color: "primary"
451
+ }, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
452
+ onClick: onCancel,
453
+ color: "primary"
454
+ }, "Cancel")));
455
+ };
456
+
457
+ InfoDialog.propTypes = {
458
+ open: _propTypes["default"].bool,
459
+ onCancel: _propTypes["default"].func,
460
+ onOk: _propTypes["default"].func,
461
+ title: _propTypes["default"].string
462
+ };
463
+
324
464
  var Main = /*#__PURE__*/function (_React$Component) {
325
465
  (0, _inherits2["default"])(Main, _React$Component);
326
466
 
@@ -336,28 +476,70 @@ var Main = /*#__PURE__*/function (_React$Component) {
336
476
  }
337
477
 
338
478
  _this = _super.call.apply(_super, [this].concat(args));
479
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
480
+ dialog: {
481
+ open: false
482
+ }
483
+ });
339
484
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onRemoveChoice", function (index) {
340
- var model = _this.props.model;
341
- model.choices.splice(index, 1);
485
+ var _this$props = _this.props,
486
+ model = _this$props.model,
487
+ configuration = _this$props.configuration;
488
+
489
+ var _ref6 = configuration || {},
490
+ minAnswerChoices = _ref6.minAnswerChoices;
491
+
492
+ if (minAnswerChoices && model.choices.length === minAnswerChoices) {
493
+ _this.setState({
494
+ dialog: {
495
+ open: true,
496
+ message: "There can't be less than ".concat(minAnswerChoices, " choices."),
497
+ onOk: function onOk() {
498
+ _this.setState({
499
+ dialog: {
500
+ open: false
501
+ }
502
+ });
503
+ }
504
+ }
505
+ });
506
+ } else {
507
+ model.choices.splice(index, 1);
342
508
 
343
- _this.props.onModelChanged(model);
509
+ _this.props.onModelChanged(model);
510
+ }
344
511
  });
345
512
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onAddChoice", function () {
346
- var model = _this.props.model;
513
+ var _this$props2 = _this.props,
514
+ model = _this$props2.model,
515
+ configuration = _this$props2.configuration;
347
516
 
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
- });
517
+ var _ref7 = configuration || {},
518
+ maxAnswerChoices = _ref7.maxAnswerChoices;
358
519
 
359
- _this.props.onModelChanged(model);
520
+ var _ref8 = model || {},
521
+ limitChoicesNumber = _ref8.limitChoicesNumber; // if old property is used, set maxAnswerChoices to 9
522
+
523
+
524
+ if (limitChoicesNumber) {
525
+ maxAnswerChoices = MAX_CHOICES;
526
+ }
527
+
528
+ if (maxAnswerChoices && model.choices.length >= maxAnswerChoices) {
529
+ return;
360
530
  }
531
+
532
+ model.choices.push({
533
+ label: '',
534
+ value: _configUi.choiceUtils.firstAvailableIndex(model.choices.map(function (c) {
535
+ return c.value;
536
+ }), 0),
537
+ feedback: {
538
+ type: 'none'
539
+ }
540
+ });
541
+
542
+ _this.props.onModelChanged(model);
361
543
  });
362
544
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChoiceChanged", function (index, choice) {
363
545
  var model = _this.props.model;
@@ -421,33 +603,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
421
603
  }
422
604
 
423
605
  (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
606
  key: "render",
442
607
  value: function render() {
443
- return /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
608
+ var dialog = this.state.dialog;
609
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(InfoDialog, {
610
+ open: dialog.open,
611
+ title: dialog.message,
612
+ onCancel: dialog.onCancel,
613
+ onOk: dialog.onOk
614
+ }), /*#__PURE__*/_react["default"].createElement(Design, (0, _extends2["default"])({}, this.props, {
444
615
  onChangeModel: this.onModelChanged,
445
616
  onRemoveChoice: this.onRemoveChoice,
446
617
  onChoiceChanged: this.onChoiceChanged,
447
618
  onAddChoice: this.onAddChoice,
448
619
  onPromptChanged: this.onPromptChanged,
449
620
  onTeacherInstructionsChanged: this.onTeacherInstructionsChanged
450
- }));
621
+ })));
451
622
  }
452
623
  }]);
453
624
  return Main;
@@ -456,6 +627,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
456
627
  exports.Main = Main;
457
628
  (0, _defineProperty2["default"])(Main, "propTypes", {
458
629
  model: _propTypes["default"].object.isRequired,
630
+ configuration: _propTypes["default"].object.isRequired,
459
631
  disableSidePanel: _propTypes["default"].bool,
460
632
  onModelChanged: _propTypes["default"].func.isRequired,
461
633
  onConfigurationChanged: _propTypes["default"].func.isRequired,