@pie-element/inline-dropdown 4.5.2-next.47 → 4.5.2-next.96

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.
@@ -26,6 +26,7 @@ var _default = {
26
26
  settings: true,
27
27
  label: 'Prompt'
28
28
  },
29
+ settingsPanelDisabled: false,
29
30
  spellCheck: {
30
31
  label: 'Spellcheck',
31
32
  settings: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","choices","alternateResponse","promptEnabled","rationaleEnabled","choiceRationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","displayType","configuration","settings","label","spellCheck","enabled","lockChoiceOrder","partialScoring","rationale","teacherInstructions","choiceRationale","maxResponseAreas","maxResponseAreaChoices","maxImageWidth","maxImageHeight","withRubric"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAE,KADL;AAELC,IAAAA,IAAI,EAAE,QAFD;AAGLC,IAAAA,MAAM,EAAE,4CAHH;AAILC,IAAAA,OAAO,EAAE,IAJJ;AAKLC,IAAAA,MAAM,EAAE,EALH;AAMLC,IAAAA,OAAO,EAAE,EANJ;AAOLC,IAAAA,iBAAiB,EAAE,EAPd;AAQLC,IAAAA,aAAa,EAAE,IARV;AASLC,IAAAA,gBAAgB,EAAE,IATb;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,0BAA0B,EAAE,IAXvB;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,qBAAqB,EAAE,QAblB;AAcLC,IAAAA,WAAW,EAAE;AAdR,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbZ,IAAAA,MAAM,EAAE;AACNa,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KADK;AAKbC,IAAAA,UAAU,EAAE;AACVD,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVG,MAAAA,OAAO,EAAE;AAHC,KALC;AAUbC,IAAAA,eAAe,EAAE;AACfJ,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAVJ;AAcbI,IAAAA,cAAc,EAAE;AACdL,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAdH;AAkBbK,IAAAA,SAAS,EAAE;AACTN,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAlBE;AAsBbM,IAAAA,mBAAmB,EAAE;AACnBP,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAtBR;AA0BbO,IAAAA,eAAe,EAAE;AACfR,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KA1BJ;AA8BbJ,IAAAA,qBAAqB,EAAE;AACrBG,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc,KA9BV;AAkCbQ,IAAAA,gBAAgB,EAAE,EAlCL;AAmCbC,IAAAA,sBAAsB,EAAE,EAnCX;AAoCbC,IAAAA,aAAa,EAAE;AACbJ,MAAAA,mBAAmB,EAAE,GADR;AAEbpB,MAAAA,MAAM,EAAE,GAFK;AAGbmB,MAAAA,SAAS,EAAE;AAHE,KApCF;AAyCbM,IAAAA,cAAc,EAAE;AACdL,MAAAA,mBAAmB,EAAE,GADP;AAEdpB,MAAAA,MAAM,EAAE,GAFM;AAGdmB,MAAAA,SAAS,EAAE;AAHG,KAzCH;AA8CbO,IAAAA,UAAU,EAAE;AACVb,MAAAA,QAAQ,EAAE,KADA;AAEVC,MAAAA,KAAK,EAAE;AAFG;AA9CC;AAjBF,C","sourcesContent":["export default {\n model: {\n disabled: false,\n mode: 'gather',\n prompt: 'Use the dropdowns to complete the sentence',\n shuffle: true,\n markup: '',\n choices: {},\n alternateResponse: {},\n promptEnabled: true,\n rationaleEnabled: true,\n choiceRationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n displayType: 'block',\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\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 teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n choiceRationale: {\n settings: true,\n label: 'Choice Rationale',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxResponseAreas: 10,\n maxResponseAreaChoices: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n },\n};\n"],"file":"defaults.js"}
1
+ {"version":3,"sources":["../src/defaults.js"],"names":["model","disabled","mode","prompt","shuffle","markup","choices","alternateResponse","promptEnabled","rationaleEnabled","choiceRationaleEnabled","teacherInstructionsEnabled","studentInstructionsEnabled","toolbarEditorPosition","displayType","configuration","settings","label","settingsPanelDisabled","spellCheck","enabled","lockChoiceOrder","partialScoring","rationale","teacherInstructions","choiceRationale","maxResponseAreas","maxResponseAreaChoices","maxImageWidth","maxImageHeight","withRubric"],"mappings":";;;;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,QAAQ,EAAE,KADL;AAELC,IAAAA,IAAI,EAAE,QAFD;AAGLC,IAAAA,MAAM,EAAE,4CAHH;AAILC,IAAAA,OAAO,EAAE,IAJJ;AAKLC,IAAAA,MAAM,EAAE,EALH;AAMLC,IAAAA,OAAO,EAAE,EANJ;AAOLC,IAAAA,iBAAiB,EAAE,EAPd;AAQLC,IAAAA,aAAa,EAAE,IARV;AASLC,IAAAA,gBAAgB,EAAE,IATb;AAULC,IAAAA,sBAAsB,EAAE,IAVnB;AAWLC,IAAAA,0BAA0B,EAAE,IAXvB;AAYLC,IAAAA,0BAA0B,EAAE,IAZvB;AAaLC,IAAAA,qBAAqB,EAAE,QAblB;AAcLC,IAAAA,WAAW,EAAE;AAdR,GADM;AAiBbC,EAAAA,aAAa,EAAE;AACbZ,IAAAA,MAAM,EAAE;AACNa,MAAAA,QAAQ,EAAE,IADJ;AAENC,MAAAA,KAAK,EAAE;AAFD,KADK;AAKbC,IAAAA,qBAAqB,EAAE,KALV;AAMbC,IAAAA,UAAU,EAAE;AACVF,MAAAA,KAAK,EAAE,YADG;AAEVD,MAAAA,QAAQ,EAAE,KAFA;AAGVI,MAAAA,OAAO,EAAE;AAHC,KANC;AAWbC,IAAAA,eAAe,EAAE;AACfL,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KAXJ;AAebK,IAAAA,cAAc,EAAE;AACdN,MAAAA,QAAQ,EAAE,KADI;AAEdC,MAAAA,KAAK,EAAE;AAFO,KAfH;AAmBbM,IAAAA,SAAS,EAAE;AACTP,MAAAA,QAAQ,EAAE,IADD;AAETC,MAAAA,KAAK,EAAE;AAFE,KAnBE;AAuBbO,IAAAA,mBAAmB,EAAE;AACnBR,MAAAA,QAAQ,EAAE,IADS;AAEnBC,MAAAA,KAAK,EAAE;AAFY,KAvBR;AA2BbQ,IAAAA,eAAe,EAAE;AACfT,MAAAA,QAAQ,EAAE,IADK;AAEfC,MAAAA,KAAK,EAAE;AAFQ,KA3BJ;AA+BbJ,IAAAA,qBAAqB,EAAE;AACrBG,MAAAA,QAAQ,EAAE,KADW;AAErBC,MAAAA,KAAK,EAAE;AAFc,KA/BV;AAmCbS,IAAAA,gBAAgB,EAAE,EAnCL;AAoCbC,IAAAA,sBAAsB,EAAE,EApCX;AAqCbC,IAAAA,aAAa,EAAE;AACbJ,MAAAA,mBAAmB,EAAE,GADR;AAEbrB,MAAAA,MAAM,EAAE,GAFK;AAGboB,MAAAA,SAAS,EAAE;AAHE,KArCF;AA0CbM,IAAAA,cAAc,EAAE;AACdL,MAAAA,mBAAmB,EAAE,GADP;AAEdrB,MAAAA,MAAM,EAAE,GAFM;AAGdoB,MAAAA,SAAS,EAAE;AAHG,KA1CH;AA+CbO,IAAAA,UAAU,EAAE;AACVd,MAAAA,QAAQ,EAAE,KADA;AAEVC,MAAAA,KAAK,EAAE;AAFG;AA/CC;AAjBF,C","sourcesContent":["export default {\n model: {\n disabled: false,\n mode: 'gather',\n prompt: 'Use the dropdowns to complete the sentence',\n shuffle: true,\n markup: '',\n choices: {},\n alternateResponse: {},\n promptEnabled: true,\n rationaleEnabled: true,\n choiceRationaleEnabled: true,\n teacherInstructionsEnabled: true,\n studentInstructionsEnabled: true,\n toolbarEditorPosition: 'bottom',\n displayType: 'block',\n },\n configuration: {\n prompt: {\n settings: true,\n label: 'Prompt',\n },\n settingsPanelDisabled: false,\n spellCheck: {\n label: 'Spellcheck',\n settings: false,\n enabled: true,\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 teacherInstructions: {\n settings: true,\n label: 'Teacher Instructions',\n },\n choiceRationale: {\n settings: true,\n label: 'Choice Rationale',\n },\n toolbarEditorPosition: {\n settings: false,\n label: 'Toolbar Editor Position',\n },\n maxResponseAreas: 10,\n maxResponseAreaChoices: 10,\n maxImageWidth: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n maxImageHeight: {\n teacherInstructions: 300,\n prompt: 300,\n rationale: 300,\n },\n withRubric: {\n settings: false,\n label: 'Add Rubric',\n },\n },\n};\n"],"file":"defaults.js"}
@@ -49,14 +49,6 @@ var _max = _interopRequireDefault(require("lodash/max"));
49
49
 
50
50
  var _styles = require("@material-ui/core/styles");
51
51
 
52
- var _Button = _interopRequireDefault(require("@material-ui/core/Button"));
53
-
54
- var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog"));
55
-
56
- var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle"));
57
-
58
- var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions"));
59
-
60
52
  var _Tooltip = _interopRequireDefault(require("@material-ui/core/Tooltip"));
61
53
 
62
54
  var _Typography = _interopRequireDefault(require("@material-ui/core/Typography"));
@@ -90,29 +82,6 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
90
82
  var toggle = _configUi.settings.toggle,
91
83
  Panel = _configUi.settings.Panel;
92
84
 
93
- var InfoDialog = function InfoDialog(_ref) {
94
- var open = _ref.open,
95
- onCancel = _ref.onCancel,
96
- onOk = _ref.onOk,
97
- title = _ref.title;
98
- return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], {
99
- open: open
100
- }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], null, title), /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], null, onOk && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
101
- onClick: onOk,
102
- color: "primary"
103
- }, "OK"), onCancel && /*#__PURE__*/_react["default"].createElement(_Button["default"], {
104
- onClick: onCancel,
105
- color: "primary"
106
- }, "Cancel")));
107
- };
108
-
109
- InfoDialog.propTypes = {
110
- open: _propTypes["default"].bool,
111
- onCancel: _propTypes["default"].func,
112
- onOk: _propTypes["default"].func,
113
- title: _propTypes["default"].string
114
- };
115
-
116
85
  var styles = function styles(theme) {
117
86
  return {
118
87
  promptHolder: {
@@ -148,17 +117,17 @@ var styles = function styles(theme) {
148
117
  },
149
118
  text: {
150
119
  fontFamily: 'Cerebri Sans',
151
- fontSize: '16px',
120
+ fontSize: theme.typography.fontSize + 2,
152
121
  lineHeight: '19px',
153
122
  color: '#495B8F',
154
- marginRight: '5px'
123
+ marginRight: theme.spacing.unit
155
124
  },
156
125
  rationaleLabel: {
157
126
  display: 'flex',
158
127
  whiteSpace: 'break-spaces'
159
128
  },
160
129
  rationaleChoices: {
161
- marginTop: '16px'
130
+ marginTop: theme.spacing.unit * 2
162
131
  },
163
132
  panelDetails: {
164
133
  display: 'block'
@@ -166,18 +135,17 @@ var styles = function styles(theme) {
166
135
  flexContainer: {
167
136
  display: 'flex',
168
137
  alignItems: 'center',
169
- marginBottom: '5px'
138
+ marginBottom: theme.spacing.unit
170
139
  },
171
140
  tooltip: {
172
- fontSize: '12px',
141
+ fontSize: theme.typography.fontSize - 2,
173
142
  whiteSpace: 'pre',
174
143
  maxWidth: '500px'
175
144
  },
176
145
  errorText: {
177
- fontSize: '12px',
146
+ fontSize: theme.typography.fontSize - 2,
178
147
  color: 'red',
179
- paddingTop: '5px',
180
- marginTop: '8px'
148
+ paddingTop: theme.spacing.unit
181
149
  }
182
150
  };
183
151
  };
@@ -211,7 +179,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
211
179
 
212
180
  _this = _super.call.apply(_super, [this].concat(args));
213
181
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
214
- dialog: {
182
+ warning: {
215
183
  open: false
216
184
  }
217
185
  });
@@ -249,22 +217,22 @@ var Main = /*#__PURE__*/function (_React$Component) {
249
217
  });
250
218
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onCheck", function (callback) {
251
219
  _this.setState({
252
- dialog: {
220
+ warning: {
253
221
  open: true,
254
- message: 'Response areas with under 2 options or with no correct answers will be discarded',
255
- onOk: function onOk() {
222
+ text: 'Response areas with under 2 options or with no correct answers will be discarded.',
223
+ onClose: function onClose() {
256
224
  _this.setState({
257
- dialog: {
225
+ warning: {
258
226
  open: false
259
227
  }
260
- }, callback);
228
+ });
261
229
  },
262
- onCancel: function onCancel() {
263
- return _this.setState({
264
- dialog: {
230
+ onConfirm: function onConfirm() {
231
+ _this.setState({
232
+ warning: {
265
233
  open: false
266
234
  }
267
- });
235
+ }, callback);
268
236
  }
269
237
  }
270
238
  });
@@ -302,12 +270,19 @@ var Main = /*#__PURE__*/function (_React$Component) {
302
270
 
303
271
  if (shouldWarn) {
304
272
  _this.setState({
305
- dialog: {
273
+ warning: {
306
274
  open: true,
307
- message: 'Response areas with under 2 options or with no correct answers will be discarded',
308
- onOk: function onOk() {
275
+ text: 'Response areas with under 2 options or with no correct answers will be discarded.',
276
+ onClose: function onClose() {
309
277
  _this.setState({
310
- dialog: {
278
+ warning: {
279
+ open: false
280
+ }
281
+ });
282
+ },
283
+ onConfirm: function onConfirm() {
284
+ _this.setState({
285
+ warning: {
311
286
  open: false
312
287
  }
313
288
  }, function () {
@@ -316,13 +291,6 @@ var Main = /*#__PURE__*/function (_React$Component) {
316
291
  slateMarkup: domMarkup.innerHTML
317
292
  });
318
293
  });
319
- },
320
- onCancel: function onCancel() {
321
- return _this.setState({
322
- dialog: {
323
- open: false
324
- }
325
- });
326
294
  }
327
295
  }
328
296
  });
@@ -339,12 +307,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
339
307
 
340
308
  if (respAreaChoices[index] && respAreaChoices[index].length >= maxResponseAreaChoices) {
341
309
  _this.setState({
342
- dialog: {
310
+ warning: {
343
311
  open: true,
344
- message: "There are only ".concat(maxResponseAreaChoices, " answers allowed per choice."),
345
- onOk: function onOk() {
312
+ text: "There are only ".concat(maxResponseAreaChoices, " answers allowed per choice."),
313
+ onClose: undefined,
314
+ onConfirm: function onConfirm() {
346
315
  _this.setState({
347
- dialog: {
316
+ warning: {
348
317
  open: false
349
318
  }
350
319
  });
@@ -363,12 +332,13 @@ var Main = /*#__PURE__*/function (_React$Component) {
363
332
  return prepareVal(r.label) === prepareVal(label);
364
333
  })) {
365
334
  _this.setState({
366
- dialog: {
335
+ warning: {
367
336
  open: true,
368
- message: 'Duplicate answers are not allowed.',
369
- onOk: function onOk() {
337
+ text: 'Duplicate answers are not allowed.',
338
+ onClose: undefined,
339
+ onConfirm: function onConfirm() {
370
340
  _this.setState({
371
- dialog: {
341
+ warning: {
372
342
  open: false
373
343
  }
374
344
  });
@@ -404,8 +374,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
404
374
  });
405
375
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSelectChoice", function (respIndex, selectedIndex) {
406
376
  var respAreaChoices = _this.state.respAreaChoices;
407
- respAreaChoices[respIndex] = respAreaChoices[respIndex].map(function (ch, index) {
408
- return _objectSpread(_objectSpread({}, ch), {}, {
377
+ respAreaChoices[respIndex] = respAreaChoices[respIndex].map(function (choice, index) {
378
+ return _objectSpread(_objectSpread({}, choice), {}, {
409
379
  correct: index === selectedIndex
410
380
  });
411
381
  });
@@ -451,7 +421,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
451
421
  value: function render() {
452
422
  var _this2 = this;
453
423
 
454
- var dialog = this.state.dialog;
424
+ var warning = this.state.warning;
455
425
  var _this$props = this.props,
456
426
  classes = _this$props.classes,
457
427
  model = _this$props.model,
@@ -460,42 +430,43 @@ var Main = /*#__PURE__*/function (_React$Component) {
460
430
  imageSupport = _this$props.imageSupport,
461
431
  uploadSoundSupport = _this$props.uploadSoundSupport;
462
432
 
463
- var _ref2 = configuration || {},
464
- _ref2$prompt = _ref2.prompt,
465
- prompt = _ref2$prompt === void 0 ? {} : _ref2$prompt,
466
- _ref2$partialScoring = _ref2.partialScoring,
467
- partialScoring = _ref2$partialScoring === void 0 ? {} : _ref2$partialScoring,
468
- _ref2$lockChoiceOrder = _ref2.lockChoiceOrder,
469
- lockChoiceOrder = _ref2$lockChoiceOrder === void 0 ? {} : _ref2$lockChoiceOrder,
470
- _ref2$rationale = _ref2.rationale,
471
- rationale = _ref2$rationale === void 0 ? {} : _ref2$rationale,
472
- _ref2$choiceRationale = _ref2.choiceRationale,
473
- choiceRationale = _ref2$choiceRationale === void 0 ? {} : _ref2$choiceRationale,
474
- _ref2$teacherInstruct = _ref2.teacherInstructions,
475
- teacherInstructions = _ref2$teacherInstruct === void 0 ? {} : _ref2$teacherInstruct,
476
- _ref2$spellCheck = _ref2.spellCheck,
477
- spellCheck = _ref2$spellCheck === void 0 ? {} : _ref2$spellCheck,
478
- maxResponseAreas = _ref2.maxResponseAreas,
479
- _ref2$maxImageWidth = _ref2.maxImageWidth,
480
- maxImageWidth = _ref2$maxImageWidth === void 0 ? {} : _ref2$maxImageWidth,
481
- _ref2$maxImageHeight = _ref2.maxImageHeight,
482
- maxImageHeight = _ref2$maxImageHeight === void 0 ? {} : _ref2$maxImageHeight,
483
- _ref2$withRubric = _ref2.withRubric,
484
- withRubric = _ref2$withRubric === void 0 ? {} : _ref2$withRubric;
485
-
486
- var _ref3 = model || {},
487
- rationaleEnabled = _ref3.rationaleEnabled,
488
- choiceRationaleEnabled = _ref3.choiceRationaleEnabled,
489
- promptEnabled = _ref3.promptEnabled,
490
- teacherInstructionsEnabled = _ref3.teacherInstructionsEnabled,
491
- choices = _ref3.choices,
492
- spellCheckEnabled = _ref3.spellCheckEnabled,
493
- errors = _ref3.errors,
494
- rubricEnabled = _ref3.rubricEnabled;
495
-
496
- var _ref4 = errors || {},
497
- responseAreasError = _ref4.responseAreasError,
498
- responseAreaChoicesError = _ref4.responseAreaChoicesError;
433
+ var _ref = configuration || {},
434
+ _ref$choiceRationale = _ref.choiceRationale,
435
+ choiceRationale = _ref$choiceRationale === void 0 ? {} : _ref$choiceRationale,
436
+ _ref$lockChoiceOrder = _ref.lockChoiceOrder,
437
+ lockChoiceOrder = _ref$lockChoiceOrder === void 0 ? {} : _ref$lockChoiceOrder,
438
+ maxResponseAreas = _ref.maxResponseAreas,
439
+ _ref$maxImageWidth = _ref.maxImageWidth,
440
+ maxImageWidth = _ref$maxImageWidth === void 0 ? {} : _ref$maxImageWidth,
441
+ _ref$maxImageHeight = _ref.maxImageHeight,
442
+ maxImageHeight = _ref$maxImageHeight === void 0 ? {} : _ref$maxImageHeight,
443
+ _ref$partialScoring = _ref.partialScoring,
444
+ partialScoring = _ref$partialScoring === void 0 ? {} : _ref$partialScoring,
445
+ _ref$prompt = _ref.prompt,
446
+ prompt = _ref$prompt === void 0 ? {} : _ref$prompt,
447
+ _ref$rationale = _ref.rationale,
448
+ rationale = _ref$rationale === void 0 ? {} : _ref$rationale,
449
+ settingsPanelDisabled = _ref.settingsPanelDisabled,
450
+ _ref$spellCheck = _ref.spellCheck,
451
+ spellCheck = _ref$spellCheck === void 0 ? {} : _ref$spellCheck,
452
+ _ref$teacherInstructi = _ref.teacherInstructions,
453
+ teacherInstructions = _ref$teacherInstructi === void 0 ? {} : _ref$teacherInstructi,
454
+ _ref$withRubric = _ref.withRubric,
455
+ withRubric = _ref$withRubric === void 0 ? {} : _ref$withRubric;
456
+
457
+ var _ref2 = model || {},
458
+ choiceRationaleEnabled = _ref2.choiceRationaleEnabled,
459
+ choices = _ref2.choices,
460
+ errors = _ref2.errors,
461
+ promptEnabled = _ref2.promptEnabled,
462
+ rationaleEnabled = _ref2.rationaleEnabled,
463
+ spellCheckEnabled = _ref2.spellCheckEnabled,
464
+ teacherInstructionsEnabled = _ref2.teacherInstructionsEnabled,
465
+ toolbarEditorPosition = _ref2.toolbarEditorPosition;
466
+
467
+ var _ref3 = errors || {},
468
+ responseAreasError = _ref3.responseAreasError,
469
+ responseAreaChoicesError = _ref3.responseAreaChoicesError;
499
470
 
500
471
  var defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;
501
472
  var defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;
@@ -539,22 +510,26 @@ var Main = /*#__PURE__*/function (_React$Component) {
539
510
  });
540
511
  };
541
512
 
542
- var toolbarOpts = {};
543
-
544
- switch (model.toolbarEditorPosition) {
545
- case 'top':
546
- toolbarOpts.position = 'top';
547
- break;
548
-
549
- default:
550
- toolbarOpts.position = 'bottom';
551
- break;
552
- }
553
-
513
+ var toolbarOpts = {
514
+ position: toolbarEditorPosition === 'top' ? 'top' : 'bottom'
515
+ };
554
516
  var validationMessage = (0, _utils.generateValidationMessage)(configuration);
517
+ var panelSettings = {
518
+ partialScoring: partialScoring.settings && toggle(partialScoring.label),
519
+ lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label)
520
+ };
521
+ var panelProperties = {
522
+ teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
523
+ rationaleEnabled: rationale.settings && toggle(rationale.label),
524
+ choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),
525
+ promptEnabled: prompt.settings && toggle(prompt.label),
526
+ spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
527
+ rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
528
+ };
555
529
  return /*#__PURE__*/_react["default"].createElement("div", {
556
530
  className: classes.design
557
531
  }, /*#__PURE__*/_react["default"].createElement(_configUi.layout.ConfigLayout, {
532
+ hideSettings: settingsPanelDisabled,
558
533
  settings: /*#__PURE__*/_react["default"].createElement(Panel, {
559
534
  model: model,
560
535
  configuration: configuration,
@@ -565,18 +540,8 @@ var Main = /*#__PURE__*/function (_React$Component) {
565
540
  return onConfigurationChanged(configuration, true);
566
541
  },
567
542
  groups: {
568
- Settings: {
569
- partialScoring: partialScoring.settings && toggle(partialScoring.label),
570
- lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label)
571
- },
572
- Properties: {
573
- teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),
574
- rationaleEnabled: rationale.settings && toggle(rationale.label),
575
- choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),
576
- promptEnabled: prompt.settings && toggle(prompt.label),
577
- spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),
578
- rubricEnabled: (withRubric === null || withRubric === void 0 ? void 0 : withRubric.settings) && toggle(withRubric === null || withRubric === void 0 ? void 0 : withRubric.label)
579
- }
543
+ Settings: panelSettings,
544
+ Properties: panelProperties
580
545
  }
581
546
  })
582
547
  }, /*#__PURE__*/_react["default"].createElement("div", null, teacherInstructionsEnabled && /*#__PURE__*/_react["default"].createElement(_configUi.InputContainer, {
@@ -651,16 +616,7 @@ var Main = /*#__PURE__*/function (_React$Component) {
651
616
  }, /*#__PURE__*/_react["default"].createElement(_Info["default"], {
652
617
  fontSize: 'small',
653
618
  color: 'primary'
654
- }))), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
655
- className: classes.errorText
656
- }, responseAreasError), responseAreaChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
657
- className: classes.errorText
658
- }, responseAreaChoicesError), /*#__PURE__*/_react["default"].createElement(InfoDialog, {
659
- open: dialog.open,
660
- title: dialog.message,
661
- onCancel: dialog.onCancel,
662
- onOk: dialog.onOk
663
- }), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
619
+ }))), /*#__PURE__*/_react["default"].createElement(_editableHtml["default"], {
664
620
  activePlugins: _editableHtml.ALL_PLUGINS,
665
621
  toolbarOpts: {
666
622
  position: 'top'
@@ -709,7 +665,17 @@ var Main = /*#__PURE__*/function (_React$Component) {
709
665
  }, {
710
666
  language: 'special'
711
667
  }]
712
- }), /*#__PURE__*/_react["default"].createElement("br", null), choiceRationaleEnabled && renderChoiceRationale())));
668
+ }), responseAreasError && /*#__PURE__*/_react["default"].createElement("div", {
669
+ className: classes.errorText
670
+ }, responseAreasError), responseAreaChoicesError && /*#__PURE__*/_react["default"].createElement("div", {
671
+ className: classes.errorText
672
+ }, responseAreaChoicesError), /*#__PURE__*/_react["default"].createElement("br", null), choiceRationaleEnabled && renderChoiceRationale(), /*#__PURE__*/_react["default"].createElement(_configUi.AlertDialog, {
673
+ open: warning.open,
674
+ title: "Warning",
675
+ text: warning.text,
676
+ onClose: warning.onClose,
677
+ onConfirm: warning.onConfirm
678
+ }))));
713
679
  }
714
680
  }]);
715
681
  return Main;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","InfoDialog","open","onCancel","onOk","title","propTypes","PropTypes","bool","func","string","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","lineHeight","color","marginRight","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","flexContainer","alignItems","tooltip","maxWidth","errorText","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","dialog","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","message","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","maxResponseAreaChoices","configuration","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","ch","nProps","newState","domNode","ReactDOM","findDOMNode","classes","onConfigurationChanged","imageSupport","uploadSoundSupport","partialScoring","lockChoiceOrder","choiceRationale","spellCheck","maxResponseAreas","maxImageWidth","maxImageHeight","withRubric","rationaleEnabled","choiceRationaleEnabled","promptEnabled","teacherInstructionsEnabled","spellCheckEnabled","errors","rubricEnabled","responseAreasError","responseAreaChoicesError","defaultImageMaxWidth","defaultImageMaxHeight","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","toolbarEditorPosition","position","validationMessage","Settings","Properties","onTeacherInstructionsChanged","language","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","object","isRequired","disableSidePanel","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport max from 'lodash/max';\nimport { withStyles } from '@material-ui/core/styles';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Info from '@material-ui/icons/Info';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport { generateValidationMessage } from './utils';\n\nconst { toggle, Panel } = settings;\n\nconst InfoDialog = ({ open, onCancel, onOk, title }) => (\n <Dialog open={open}>\n <DialogTitle>{title}</DialogTitle>\n <DialogActions>\n {onOk && (\n <Button onClick={onOk} color=\"primary\">\n OK\n </Button>\n )}\n {onCancel && (\n <Button onClick={onCancel} color=\"primary\">\n Cancel\n </Button>\n )}\n </DialogActions>\n </Dialog>\n);\n\nInfoDialog.propTypes = {\n open: PropTypes.bool,\n onCancel: PropTypes.func,\n onOk: PropTypes.func,\n title: PropTypes.string,\n};\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n design: {\n paddingTop: theme.spacing.unit * 3,\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: '16px',\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: '5px',\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces',\n },\n rationaleChoices: {\n marginTop: '16px',\n },\n panelDetails: {\n display: 'block',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: '5px',\n },\n tooltip: {\n fontSize: '12px',\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: '12px',\n color: 'red',\n paddingTop: '5px',\n marginTop: '8px',\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = (html) => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n state = {\n dialog: {\n open: false,\n },\n };\n\n componentDidMount() {\n const {\n model: { choices },\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({\n ...this.props.model,\n ...newVal,\n });\n };\n\n onPromptChanged = (prompt) => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice =\n model.choices &&\n model.choices[index] &&\n model.choices[index].findIndex((elem) => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = (callback) => {\n this.setState({\n dialog: {\n open: true,\n message: 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n },\n },\n callback,\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false,\n },\n }),\n },\n });\n };\n\n onChange = (markup) => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"inline_dropdown\"]');\n\n const allChoices = {};\n\n allRespAreas.forEach((el) => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {},\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find((c) => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] = existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n dialog: {\n open: true,\n message: 'Response areas with under 2 options or with no correct answers will be discarded',\n onOk: () => {\n this.setState(\n {\n dialog: {\n open: false,\n },\n },\n () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n }),\n );\n },\n onCancel: () =>\n this.setState({\n dialog: {\n open: false,\n },\n }),\n },\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n const { maxResponseAreaChoices } = this.props.configuration;\n\n if (respAreaChoices[index] && respAreaChoices[index].length >= maxResponseAreaChoices) {\n this.setState({\n dialog: {\n open: true,\n message: `There are only ${maxResponseAreaChoices} answers allowed per choice.`,\n onOk: () => {\n this.setState({\n dialog: {\n open: false,\n },\n });\n },\n },\n });\n\n return;\n }\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if ((respAreaChoices[index] || []).find((r) => prepareVal(r.label) === prepareVal(label))) {\n this.setState({\n dialog: {\n open: true,\n message: 'Duplicate answers are not allowed.',\n onOk: () => {\n this.setState({\n dialog: {\n open: false,\n },\n });\n },\n },\n });\n\n return;\n }\n\n const value =\n (respAreaChoices[index] &&\n max(respAreaChoices[index].map((c) => parseInt(c.value)).filter((val) => !isNaN(val)))) ||\n 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false,\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map((ch, index) => ({\n ...ch,\n correct: index === selectedIndex,\n }));\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { dialog } = this.state;\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n const {\n prompt = {},\n partialScoring = {},\n lockChoiceOrder = {},\n rationale = {},\n choiceRationale = {},\n teacherInstructions = {},\n spellCheck = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n withRubric = {},\n } = configuration || {};\n const {\n rationaleEnabled,\n choiceRationaleEnabled,\n promptEnabled,\n teacherInstructionsEnabled,\n choices,\n spellCheckEnabled,\n errors,\n rubricEnabled,\n } = model || {};\n const { responseAreasError, responseAreaChoicesError } = errors || {};\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const renderChoiceRationale = () =>\n (Object.keys(choices) || []).map((key, index) => (\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography className={classes.text}>{`Rationale for response area #${index + 1}`}</Typography>\n </ExpansionPanelSummary>\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map((choice) => (\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html: `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`,\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={(c) =>\n this.onChoiceRationaleChanged(key, {\n ...choice,\n rationale: c,\n })\n }\n imageSupport={imageSupport}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </InputContainer>\n ))}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n ));\n\n const toolbarOpts = {};\n\n switch (model.toolbarEditorPosition) {\n case 'top':\n toolbarOpts.position = 'top';\n break;\n default:\n toolbarOpts.position = 'bottom';\n break;\n }\n\n const validationMessage = generateValidationMessage(configuration);\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n },\n Properties: {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n },\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text}>Define Template, Choices, and Correct Responses</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n {responseAreaChoicesError && <div className={classes.errorText}>{responseAreaChoicesError}</div>}\n\n <InfoDialog open={dialog.open} title={dialog.message} onCancel={dialog.onCancel} onOk={dialog.onOk} />\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={(index) => this.onRemoveChoice(node.data.get('index'), index)}\n onSelectChoice={(index) => this.onSelectChoice(node.data.get('index'), index)}\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n );\n },\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
1
+ {"version":3,"sources":["../src/main.jsx"],"names":["toggle","settings","Panel","styles","theme","promptHolder","width","paddingBottom","spacing","unit","marginBottom","prompt","paddingTop","markup","minHeight","design","choiceConfiguration","switchElement","justifyContent","margin","addButton","text","fontFamily","fontSize","typography","lineHeight","color","marginRight","rationaleLabel","display","whiteSpace","rationaleChoices","marginTop","panelDetails","flexContainer","alignItems","tooltip","maxWidth","errorText","createElementFromHTML","htmlString","div","document","createElement","innerHTML","trim","prepareVal","html","tmp","value","textContent","innerText","Main","warning","open","newVal","props","onModelChanged","model","onModelChange","rationale","index","choice","indexOfChoice","choices","findIndex","elem","label","splice","teacherInstructions","slateMarkup","callback","setState","onClose","onConfirm","respAreaChoices","state","domMarkup","allRespAreas","querySelectorAll","allChoices","forEach","el","dataset","existingRespAreaChoices","obj","key","newRespAreaChoices","shouldWarn","newChoices","length","find","c","correct","remove","maxResponseAreaChoices","configuration","undefined","r","map","parseInt","filter","val","isNaN","push","respIndex","selectedIndex","nProps","newState","domNode","ReactDOM","findDOMNode","classes","onConfigurationChanged","imageSupport","uploadSoundSupport","choiceRationale","lockChoiceOrder","maxResponseAreas","maxImageWidth","maxImageHeight","partialScoring","settingsPanelDisabled","spellCheck","withRubric","choiceRationaleEnabled","errors","promptEnabled","rationaleEnabled","spellCheckEnabled","teacherInstructionsEnabled","toolbarEditorPosition","responseAreasError","responseAreaChoicesError","defaultImageMaxWidth","defaultImageMaxHeight","renderChoiceRationale","Object","keys","__html","onChoiceRationaleChanged","toolbarOpts","position","validationMessage","panelSettings","panelProperties","rubricEnabled","Settings","Properties","onTeacherInstructionsChanged","language","onPromptChanged","onRationaleChanged","ALL_PLUGINS","type","options","duplicates","respAreaToolbar","node","onToolbarDone","onAddChoice","onCheck","onRemoveChoice","data","get","onSelectChoice","onChange","onBlur","React","Component","PropTypes","object","isRequired","disableSidePanel","bool","func","shape","add","Styled"],"mappings":"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","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport EditableHtml, { ALL_PLUGINS } from '@pie-lib/editable-html';\nimport { AlertDialog, InputContainer, layout, settings } from '@pie-lib/config-ui';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport isUndefined from 'lodash/isUndefined';\nimport isEmpty from 'lodash/isEmpty';\nimport reduce from 'lodash/reduce';\nimport max from 'lodash/max';\nimport { withStyles } from '@material-ui/core/styles';\nimport Tooltip from '@material-ui/core/Tooltip';\nimport Typography from '@material-ui/core/Typography';\nimport ExpansionPanel from '@material-ui/core/ExpansionPanel';\nimport ExpansionPanelSummary from '@material-ui/core/ExpansionPanelSummary';\nimport ExpansionPanelDetails from '@material-ui/core/ExpansionPanelDetails';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport Info from '@material-ui/icons/Info';\nimport InlineDropdownToolbar from './inline-dropdown-toolbar';\nimport { generateValidationMessage } from './utils';\n\nconst { toggle, Panel } = settings;\n\nconst styles = (theme) => ({\n promptHolder: {\n width: '100%',\n paddingBottom: theme.spacing.unit * 2,\n marginBottom: theme.spacing.unit * 2,\n },\n prompt: {\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n },\n markup: {\n minHeight: '100px',\n paddingTop: theme.spacing.unit * 2,\n width: '100%',\n '& [data-slate-editor=\"true\"]': {\n minHeight: '100px',\n },\n },\n design: {\n paddingTop: theme.spacing.unit * 3,\n },\n choiceConfiguration: {\n paddingTop: theme.spacing.unit * 2,\n paddingBottom: theme.spacing.unit * 2,\n },\n switchElement: {\n justifyContent: 'space-between',\n margin: 0,\n },\n addButton: {\n float: 'right',\n },\n text: {\n fontFamily: 'Cerebri Sans',\n fontSize: theme.typography.fontSize + 2,\n lineHeight: '19px',\n color: '#495B8F',\n marginRight: theme.spacing.unit,\n },\n rationaleLabel: {\n display: 'flex',\n whiteSpace: 'break-spaces',\n },\n rationaleChoices: {\n marginTop: theme.spacing.unit * 2,\n },\n panelDetails: {\n display: 'block',\n },\n flexContainer: {\n display: 'flex',\n alignItems: 'center',\n marginBottom: theme.spacing.unit,\n },\n tooltip: {\n fontSize: theme.typography.fontSize - 2,\n whiteSpace: 'pre',\n maxWidth: '500px',\n },\n errorText: {\n fontSize: theme.typography.fontSize - 2,\n color: 'red',\n paddingTop: theme.spacing.unit,\n },\n});\n\nconst createElementFromHTML = (htmlString) => {\n const div = document.createElement('div');\n\n div.innerHTML = (htmlString || '').trim();\n\n return div;\n};\n\nconst prepareVal = (html) => {\n const tmp = document.createElement('DIV');\n\n tmp.innerHTML = html;\n\n const value = tmp.textContent || tmp.innerText || '';\n\n return value.trim();\n};\n\nexport class Main extends React.Component {\n static propTypes = {\n configuration: PropTypes.object.isRequired,\n model: PropTypes.object.isRequired,\n disableSidePanel: PropTypes.bool,\n onModelChanged: PropTypes.func.isRequired,\n onConfigurationChanged: PropTypes.func.isRequired,\n classes: PropTypes.object.isRequired,\n imageSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n uploadSoundSupport: PropTypes.shape({\n add: PropTypes.func.isRequired,\n delete: PropTypes.func.isRequired,\n }),\n };\n\n state = {\n warning: { open: false },\n };\n\n componentDidMount() {\n const {\n model: { choices },\n } = this.props;\n\n this.setState({ respAreaChoices: cloneDeep(choices) });\n }\n\n UNSAFE_componentWillReceiveProps(nProps) {\n const newState = {};\n\n if (\n !isEqual(nProps.model.choices, this.props.model.choices) ||\n !isEqual(nProps.model.choices, this.state.respAreaChoices)\n ) {\n newState.respAreaChoices = cloneDeep(nProps.model.choices);\n }\n\n if (!isEmpty(newState)) {\n this.setState(newState);\n }\n }\n\n componentDidUpdate() {\n //eslint-disable-next-line\n const domNode = ReactDOM.findDOMNode(this);\n\n renderMath(domNode);\n }\n\n onModelChange = (newVal) => {\n this.props.onModelChanged({ ...this.props.model, ...newVal });\n };\n\n onPromptChanged = (prompt) => {\n this.onModelChange({ prompt });\n };\n\n onRationaleChanged = (rationale) => {\n this.onModelChange({ rationale });\n };\n\n onChoiceRationaleChanged = (index, choice) => {\n const { model } = this.props;\n const indexOfChoice =\n model.choices &&\n model.choices[index] &&\n model.choices[index].findIndex((elem) => elem.label === choice.label && elem.value === choice.value);\n\n model.choices[index] && model.choices[index].splice(indexOfChoice, 1, choice);\n\n this.onModelChange(model);\n };\n\n onTeacherInstructionsChanged = (teacherInstructions) => {\n this.onModelChange({ teacherInstructions });\n };\n\n onMarkupChanged = (slateMarkup) => {\n this.onModelChange({ slateMarkup });\n };\n\n onCheck = (callback) => {\n this.setState({\n warning: {\n open: true,\n text: 'Response areas with under 2 options or with no correct answers will be discarded.',\n onClose: () => {\n this.setState({ warning: { open: false } });\n },\n onConfirm: () => {\n this.setState({ warning: { open: false } }, callback);\n },\n },\n });\n };\n\n onChange = (markup) => {\n const { respAreaChoices } = this.state;\n const domMarkup = createElementFromHTML(markup);\n const allRespAreas = domMarkup.querySelectorAll('[data-type=\"inline_dropdown\"]');\n const allChoices = {};\n\n allRespAreas.forEach((el) => {\n allChoices[el.dataset.index] = el.dataset.value || '';\n });\n\n const existingRespAreaChoices = reduce(\n respAreaChoices,\n (obj, choices, key) => {\n if (!isUndefined(allChoices[key])) {\n obj[key] = respAreaChoices[key];\n }\n\n return obj;\n },\n {},\n );\n\n const newRespAreaChoices = {};\n let shouldWarn = false;\n\n allRespAreas.forEach((el, index) => {\n const newChoices = existingRespAreaChoices[el.dataset.index] || [];\n\n if (newChoices.length < 2 || !newChoices.find((c) => c.correct)) {\n el.remove();\n shouldWarn = true;\n } else {\n newRespAreaChoices[index] = existingRespAreaChoices[el.dataset.index] || [];\n el.dataset.index = index;\n }\n });\n\n if (shouldWarn) {\n this.setState({\n warning: {\n open: true,\n text: 'Response areas with under 2 options or with no correct answers will be discarded.',\n onClose: () => {\n this.setState({ warning: { open: false } });\n },\n onConfirm: () => {\n this.setState({ warning: { open: false } }, () =>\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n }),\n );\n },\n },\n });\n } else {\n this.onModelChange({\n choices: cloneDeep(newRespAreaChoices),\n slateMarkup: domMarkup.innerHTML,\n });\n }\n };\n\n onAddChoice = (index, label) => {\n const { respAreaChoices } = this.state;\n const { maxResponseAreaChoices } = this.props.configuration;\n\n if (respAreaChoices[index] && respAreaChoices[index].length >= maxResponseAreaChoices) {\n this.setState({\n warning: {\n open: true,\n text: `There are only ${maxResponseAreaChoices} answers allowed per choice.`,\n onClose: undefined,\n onConfirm: () => {\n this.setState({ warning: { open: false } });\n },\n },\n });\n\n return;\n }\n\n if (!respAreaChoices[index]) {\n respAreaChoices[index] = [];\n }\n\n if ((respAreaChoices[index] || []).find((r) => prepareVal(r.label) === prepareVal(label))) {\n this.setState({\n warning: {\n open: true,\n text: 'Duplicate answers are not allowed.',\n onClose: undefined,\n onConfirm: () => {\n this.setState({ warning: { open: false } });\n },\n },\n });\n\n return;\n }\n\n const value =\n (respAreaChoices[index] &&\n max(respAreaChoices[index].map((c) => parseInt(c.value)).filter((val) => !isNaN(val)))) ||\n 0;\n\n respAreaChoices[index].push({\n label,\n value: `${value + 1}`,\n correct: false,\n });\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onRemoveChoice = (respIndex, index) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex].splice(index, 1);\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n onSelectChoice = (respIndex, selectedIndex) => {\n const { respAreaChoices } = this.state;\n\n respAreaChoices[respIndex] = respAreaChoices[respIndex].map((choice, index) => ({\n ...choice,\n correct: index === selectedIndex,\n }));\n\n this.onModelChange({ choices: cloneDeep(respAreaChoices) });\n };\n\n render() {\n const { warning } = this.state;\n const { classes, model, configuration, onConfigurationChanged, imageSupport, uploadSoundSupport } = this.props;\n const {\n choiceRationale = {},\n lockChoiceOrder = {},\n maxResponseAreas,\n maxImageWidth = {},\n maxImageHeight = {},\n partialScoring = {},\n prompt = {},\n rationale = {},\n settingsPanelDisabled,\n spellCheck = {},\n teacherInstructions = {},\n withRubric = {},\n } = configuration || {};\n const {\n choiceRationaleEnabled,\n choices,\n errors,\n promptEnabled,\n rationaleEnabled,\n spellCheckEnabled,\n teacherInstructionsEnabled,\n toolbarEditorPosition,\n } = model || {};\n const { responseAreasError, responseAreaChoicesError } = errors || {};\n\n const defaultImageMaxWidth = maxImageWidth && maxImageWidth.prompt;\n const defaultImageMaxHeight = maxImageHeight && maxImageHeight.prompt;\n\n const renderChoiceRationale = () =>\n (Object.keys(choices) || []).map((key, index) => (\n <div key={key} className={classes.rationaleChoices}>\n <ExpansionPanel>\n <ExpansionPanelSummary expandIcon={<ExpandMoreIcon />}>\n <Typography className={classes.text}>{`Rationale for response area #${index + 1}`}</Typography>\n </ExpansionPanelSummary>\n\n <ExpansionPanelDetails className={classes.panelDetails}>\n {(choices[key] || []).map((choice) => (\n <InputContainer\n key={choice.label}\n label={\n <span\n className={classes.rationaleLabel}\n dangerouslySetInnerHTML={{\n __html: `${rationale.label} for ${choice.label} (${choice.correct ? 'correct' : 'incorrect'})`,\n }}\n />\n }\n className={classes.promptHolder}\n >\n <EditableHtml\n className={classes.prompt}\n markup={choice.rationale || ''}\n spellCheck={spellCheckEnabled}\n onChange={(c) => this.onChoiceRationaleChanged(key, { ...choice, rationale: c })}\n imageSupport={imageSupport}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n />\n </InputContainer>\n ))}\n </ExpansionPanelDetails>\n </ExpansionPanel>\n </div>\n ));\n\n const toolbarOpts = {\n position: toolbarEditorPosition === 'top' ? 'top' : 'bottom',\n };\n\n const validationMessage = generateValidationMessage(configuration);\n\n const panelSettings = {\n partialScoring: partialScoring.settings && toggle(partialScoring.label),\n lockChoiceOrder: lockChoiceOrder.settings && toggle(lockChoiceOrder.label),\n };\n const panelProperties = {\n teacherInstructionsEnabled: teacherInstructions.settings && toggle(teacherInstructions.label),\n rationaleEnabled: rationale.settings && toggle(rationale.label),\n choiceRationaleEnabled: choiceRationale.settings && toggle(choiceRationale.label),\n promptEnabled: prompt.settings && toggle(prompt.label),\n spellCheckEnabled: spellCheck.settings && toggle(spellCheck.label),\n rubricEnabled: withRubric?.settings && toggle(withRubric?.label),\n };\n\n return (\n <div className={classes.design}>\n <layout.ConfigLayout\n hideSettings={settingsPanelDisabled}\n settings={\n <Panel\n model={model}\n configuration={configuration}\n onChangeModel={(model) => this.onModelChange(model)}\n onChangeConfiguration={(configuration) => onConfigurationChanged(configuration, true)}\n groups={{\n Settings: panelSettings,\n Properties: panelProperties,\n }}\n />\n }\n >\n <div>\n {teacherInstructionsEnabled && (\n <InputContainer label={teacherInstructions.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.teacherInstructions || ''}\n onChange={this.onTeacherInstructionsChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.teacherInstructions) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.teacherInstructions) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {promptEnabled && (\n <InputContainer label={prompt.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.prompt}\n onChange={this.onPromptChanged}\n imageSupport={imageSupport}\n nonEmpty={false}\n disableUnderline\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={defaultImageMaxWidth}\n maxImageHeight={defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n {rationaleEnabled && (\n <InputContainer label={rationale.label} className={classes.promptHolder}>\n <EditableHtml\n className={classes.prompt}\n markup={model.rationale || ''}\n onChange={this.onRationaleChanged}\n imageSupport={imageSupport}\n toolbarOpts={toolbarOpts}\n spellCheck={spellCheckEnabled}\n maxImageWidth={(maxImageWidth && maxImageWidth.rationale) || defaultImageMaxWidth}\n maxImageHeight={(maxImageHeight && maxImageHeight.rationale) || defaultImageMaxHeight}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n </InputContainer>\n )}\n\n <div className={classes.flexContainer}>\n <Typography className={classes.text}>Define Template, Choices, and Correct Responses</Typography>\n <Tooltip\n classes={{ tooltip: classes.tooltip }}\n disableFocusListener\n disableTouchListener\n placement={'right'}\n title={validationMessage}\n >\n <Info fontSize={'small'} color={'primary'} />\n </Tooltip>\n </div>\n\n <EditableHtml\n activePlugins={ALL_PLUGINS}\n toolbarOpts={{ position: 'top' }}\n responseAreaProps={{\n type: 'inline-dropdown',\n options: {\n duplicates: true,\n },\n maxResponseAreas: maxResponseAreas,\n respAreaToolbar: (node, value, onToolbarDone) => {\n const { respAreaChoices } = this.state;\n\n return () => (\n <InlineDropdownToolbar\n onAddChoice={this.onAddChoice}\n onCheck={this.onCheck}\n onRemoveChoice={(index) => this.onRemoveChoice(node.data.get('index'), index)}\n onSelectChoice={(index) => this.onSelectChoice(node.data.get('index'), index)}\n node={node}\n value={value}\n onToolbarDone={onToolbarDone}\n choices={respAreaChoices[node.data.get('index')]}\n spellCheck={spellCheckEnabled}\n uploadSoundSupport={uploadSoundSupport}\n />\n );\n },\n }}\n spellCheck={spellCheckEnabled}\n className={classes.markup}\n markup={model.slateMarkup || ''}\n onChange={this.onChange}\n imageSupport={imageSupport}\n disableImageAlignmentButtons={true}\n onBlur={this.onBlur}\n disabled={false}\n highlightShape={false}\n error={responseAreasError}\n uploadSoundSupport={uploadSoundSupport}\n languageCharactersProps={[{ language: 'spanish' }, { language: 'special' }]}\n />\n {responseAreasError && <div className={classes.errorText}>{responseAreasError}</div>}\n {responseAreaChoicesError && <div className={classes.errorText}>{responseAreaChoicesError}</div>}\n\n <br />\n {choiceRationaleEnabled && renderChoiceRationale()}\n\n <AlertDialog\n open={warning.open}\n title=\"Warning\"\n text={warning.text}\n onClose={warning.onClose}\n onConfirm={warning.onConfirm}\n />\n </div>\n </layout.ConfigLayout>\n </div>\n );\n }\n}\n\nconst Styled = withStyles(styles)(Main);\n\nexport default Styled;\n"],"file":"main.js"}
@@ -115,6 +115,11 @@
115
115
  }
116
116
  }
117
117
  },
118
+ "settingsPanelDisabled": {
119
+ "description": "Indicates if the settings panel is not available",
120
+ "type": "boolean",
121
+ "title": "settingsPanelDisabled"
122
+ },
118
123
  "scoringType": {
119
124
  "title": "ConfigureProp",
120
125
  "type": "object",
@@ -86,6 +86,10 @@ Indicates if the item has to be displayed in the Settings Panel
86
86
 
87
87
  Indicates the label for the item that has to be displayed in the Settings Panel
88
88
 
89
+ # `settingsPanelDisabled` (boolean)
90
+
91
+ Indicates if the settings panel is not available
92
+
89
93
  # `scoringType` (object)
90
94
 
91
95
  Properties of the `scoringType` object:
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "repository": "pie-framework/pie-elements",
7
- "version": "4.5.2-next.47+690c9df4b",
7
+ "version": "4.5.2-next.96+50a2e3565",
8
8
  "description": "",
9
9
  "scripts": {
10
10
  "test": "echo \"Error: no test specified\" && exit 1",
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "author": "",
27
27
  "license": "ISC",
28
- "gitHead": "690c9df4bd335b9b31f21593df51b7cf6bc4a424",
28
+ "gitHead": "50a2e3565ecac88845c5d1dfebcda25eb3156f5c",
29
29
  "main": "lib/index.js",
30
30
  "module": "src/index.js"
31
31
  }