@instructure/quiz-core 17.46.2-rc.5 → 17.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/es/banks/components/AddToBankModal/index.js +6 -0
- package/es/banks/components/AddToBankModal/presenter.js +128 -6
- package/es/banks/components/BankEntry/presenter.js +4 -3
- package/es/banks/components/BankEntryRow/presenter.js +1 -3
- package/es/building/api/items.js +21 -5
- package/es/building/api/stimuli.js +21 -5
- package/es/building/components/resources/ItemFeedbackModal/presenter.js +1 -4
- package/es/building/components/resources/quiz/instructions/Edit/presenter.js +1 -3
- package/es/building/components/resources/quiz/instructions/Show/index.js +1 -3
- package/es/building/components/resources/quizEntry/QuizEntry/presenter.js +1 -3
- package/es/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +1 -0
- package/es/common/actions/config.js +7 -1
- package/es/common/components/ConfirmationModal/presenter.js +1 -1
- package/es/common/components/SDKApp/index.js +10 -2
- package/es/common/components/layout/sidebar/SidebarItem/presenter.js +1 -3
- package/es/common/components/resources/entry/EntrySave/index.js +11 -5
- package/es/common/components/resources/entry/EntrySave/presenter.js +95 -21
- package/es/common/components/resources/item/ItemEdit/index.js +1 -2
- package/es/common/components/resources/item/ItemEdit/presenter.js +0 -2
- package/es/common/components/resources/item/ItemOverride/index.js +1 -2
- package/es/common/components/resources/item/ItemOverride/presenter.js +2 -4
- package/es/common/components/resources/quiz/instructions/Instructions.js +1 -3
- package/es/common/components/resources/sessionItemResult/ResultStimulus/index.js +1 -3
- package/es/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -7
- package/es/common/components/resources/stimulus/StimulusEdit/presenter.js +1 -0
- package/es/common/components/resources/stimulus/StimulusEditInfo/presenter.js +1 -3
- package/es/common/components/resources/stimulus/StimulusShowInfo/index.js +1 -3
- package/es/common/reducers/config.js +4 -1
- package/es/common/util/RceConfigProvider.js +51 -35
- package/es/common/util/interactionTypePropsHelper.js +2 -5
- package/es/common/util/rceChecker.js +1 -1
- package/es/common/util/windowChecks.js +6 -5
- package/es/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +1 -3
- package/lib/banks/components/AddToBankModal/index.js +9 -0
- package/lib/banks/components/AddToBankModal/presenter.js +135 -6
- package/lib/banks/components/BankEntry/presenter.js +4 -3
- package/lib/banks/components/BankEntryRow/presenter.js +1 -4
- package/lib/building/api/items.js +23 -5
- package/lib/building/api/stimuli.js +23 -5
- package/lib/building/components/resources/ItemFeedbackModal/presenter.js +1 -5
- package/lib/building/components/resources/quiz/instructions/Edit/presenter.js +1 -4
- package/lib/building/components/resources/quiz/instructions/Show/index.js +1 -4
- package/lib/building/components/resources/quizEntry/QuizEntry/presenter.js +1 -4
- package/lib/building/components/resources/quizEntry/QuizEntryEdit/presenter.js +1 -0
- package/lib/common/actions/config.js +8 -0
- package/lib/common/components/ConfirmationModal/presenter.js +1 -1
- package/lib/common/components/SDKApp/index.js +9 -1
- package/lib/common/components/layout/sidebar/SidebarItem/presenter.js +1 -4
- package/lib/common/components/resources/entry/EntrySave/index.js +15 -2
- package/lib/common/components/resources/entry/EntrySave/presenter.js +96 -21
- package/lib/common/components/resources/item/ItemEdit/index.js +1 -2
- package/lib/common/components/resources/item/ItemEdit/presenter.js +0 -2
- package/lib/common/components/resources/item/ItemOverride/index.js +1 -2
- package/lib/common/components/resources/item/ItemOverride/presenter.js +2 -4
- package/lib/common/components/resources/quiz/instructions/Instructions.js +1 -4
- package/lib/common/components/resources/sessionItemResult/ResultStimulus/index.js +1 -4
- package/lib/common/components/resources/sessionItemResult/SessionItemResult/presenter.js +3 -8
- package/lib/common/components/resources/stimulus/StimulusEdit/presenter.js +1 -0
- package/lib/common/components/resources/stimulus/StimulusEditInfo/presenter.js +1 -4
- package/lib/common/components/resources/stimulus/StimulusShowInfo/index.js +1 -4
- package/lib/common/reducers/config.js +3 -0
- package/lib/common/util/RceConfigProvider.js +50 -34
- package/lib/common/util/interactionTypePropsHelper.js +2 -6
- package/lib/common/util/rceChecker.js +1 -1
- package/lib/common/util/windowChecks.js +13 -7
- package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +1 -4
- package/package.json +10 -10
|
@@ -25,6 +25,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
25
25
|
|
|
26
26
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
27
27
|
|
|
28
|
+
var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
|
|
29
|
+
|
|
28
30
|
var _uiButtons = require("@instructure/ui-buttons");
|
|
29
31
|
|
|
30
32
|
var _uiView = require("@instructure/ui-view");
|
|
@@ -63,11 +65,75 @@ var EntrySave = /*#__PURE__*/function (_Component) {
|
|
|
63
65
|
_this.props.screenreaderNotification(msg);
|
|
64
66
|
};
|
|
65
67
|
|
|
68
|
+
_this.confirmShareableContent = function () {
|
|
69
|
+
var _this$props = _this.props,
|
|
70
|
+
canvasOrigin = _this$props.canvasOrigin,
|
|
71
|
+
checkContentShareability = _this$props.checkContentShareability,
|
|
72
|
+
entry = _this$props.entry,
|
|
73
|
+
withConfirm = _this$props.withConfirm;
|
|
74
|
+
|
|
75
|
+
_this.setState({
|
|
76
|
+
canSubmit: false
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
checkContentShareability(entry.getWorkingInstance(), canvasOrigin).then(function () {
|
|
80
|
+
_this.successfulSubmit();
|
|
81
|
+
}).catch( /*#__PURE__*/function () {
|
|
82
|
+
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(err) {
|
|
83
|
+
var _err$response, _err$response2;
|
|
84
|
+
|
|
85
|
+
var body, text;
|
|
86
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
87
|
+
while (1) {
|
|
88
|
+
switch (_context.prev = _context.next) {
|
|
89
|
+
case 0:
|
|
90
|
+
_context.next = 2;
|
|
91
|
+
return (_err$response = err.response) === null || _err$response === void 0 ? void 0 : _err$response.json();
|
|
92
|
+
|
|
93
|
+
case 2:
|
|
94
|
+
body = _context.sent;
|
|
95
|
+
text = (0, _formatMessage.default)('There was an error attempting to validate shareability.');
|
|
96
|
+
|
|
97
|
+
if (((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : _err$response2.status) === 400 && body.shareable === false) {
|
|
98
|
+
text = (0, _formatMessage.default)('You are attempting to save content containing course links which may not work when used in other courses.');
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
withConfirm(function () {
|
|
102
|
+
_this.successfulSubmit();
|
|
103
|
+
}, {
|
|
104
|
+
title: (0, _formatMessage.default)('Are you sure?'),
|
|
105
|
+
text: text,
|
|
106
|
+
continueText: (0, _formatMessage.default)('Save anyway'),
|
|
107
|
+
onCancel: function onCancel() {
|
|
108
|
+
_this.setState({
|
|
109
|
+
canSubmit: true
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
case 6:
|
|
115
|
+
case "end":
|
|
116
|
+
return _context.stop();
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}, _callee);
|
|
120
|
+
}));
|
|
121
|
+
|
|
122
|
+
return function (_x) {
|
|
123
|
+
return _ref.apply(this, arguments);
|
|
124
|
+
};
|
|
125
|
+
}());
|
|
126
|
+
};
|
|
127
|
+
|
|
66
128
|
_this.onSubmit = function (e) {
|
|
67
129
|
e.preventDefault();
|
|
68
130
|
|
|
69
131
|
if (_this.props.isValid) {
|
|
70
|
-
_this.
|
|
132
|
+
if (_this.props.checkBankedContentShareabilityEnabled && _this.props.shouldValidateShareableContent) {
|
|
133
|
+
_this.confirmShareableContent();
|
|
134
|
+
} else {
|
|
135
|
+
_this.successfulSubmit();
|
|
136
|
+
}
|
|
71
137
|
} else {
|
|
72
138
|
_this.createScreenReaderNotification();
|
|
73
139
|
|
|
@@ -111,24 +177,24 @@ var EntrySave = /*#__PURE__*/function (_Component) {
|
|
|
111
177
|
}, {
|
|
112
178
|
key: "successfulSubmit",
|
|
113
179
|
value: function () {
|
|
114
|
-
var _successfulSubmit = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
180
|
+
var _successfulSubmit = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
|
|
115
181
|
var validationResult;
|
|
116
|
-
return _regenerator.default.wrap(function
|
|
182
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
117
183
|
while (1) {
|
|
118
|
-
switch (
|
|
184
|
+
switch (_context2.prev = _context2.next) {
|
|
119
185
|
case 0:
|
|
120
186
|
this.setState({
|
|
121
187
|
canSubmit: false
|
|
122
188
|
});
|
|
123
|
-
|
|
124
|
-
|
|
189
|
+
_context2.prev = 1;
|
|
190
|
+
_context2.next = 4;
|
|
125
191
|
return this.props.submitHandler();
|
|
126
192
|
|
|
127
193
|
case 4:
|
|
128
|
-
validationResult =
|
|
194
|
+
validationResult = _context2.sent;
|
|
129
195
|
|
|
130
196
|
if (!(validationResult === _quizCommon.API_INPUT_VALIDATION_ERROR)) {
|
|
131
|
-
|
|
197
|
+
_context2.next = 8;
|
|
132
198
|
break;
|
|
133
199
|
}
|
|
134
200
|
|
|
@@ -136,16 +202,16 @@ var EntrySave = /*#__PURE__*/function (_Component) {
|
|
|
136
202
|
throw new Error('User input validation error received from API.');
|
|
137
203
|
|
|
138
204
|
case 8:
|
|
139
|
-
|
|
205
|
+
_context2.next = 14;
|
|
140
206
|
break;
|
|
141
207
|
|
|
142
208
|
case 10:
|
|
143
|
-
|
|
144
|
-
|
|
209
|
+
_context2.prev = 10;
|
|
210
|
+
_context2.t0 = _context2["catch"](1);
|
|
145
211
|
this.setState({
|
|
146
212
|
canSubmit: true
|
|
147
213
|
});
|
|
148
|
-
return
|
|
214
|
+
return _context2.abrupt("return");
|
|
149
215
|
|
|
150
216
|
case 14:
|
|
151
217
|
this.props.switchOffEditing();
|
|
@@ -154,10 +220,10 @@ var EntrySave = /*#__PURE__*/function (_Component) {
|
|
|
154
220
|
|
|
155
221
|
case 17:
|
|
156
222
|
case "end":
|
|
157
|
-
return
|
|
223
|
+
return _context2.stop();
|
|
158
224
|
}
|
|
159
225
|
}
|
|
160
|
-
},
|
|
226
|
+
}, _callee2, this, [[1, 10]]);
|
|
161
227
|
}));
|
|
162
228
|
|
|
163
229
|
function successfulSubmit() {
|
|
@@ -193,29 +259,38 @@ var EntrySave = /*#__PURE__*/function (_Component) {
|
|
|
193
259
|
|
|
194
260
|
exports.EntrySave = EntrySave;
|
|
195
261
|
EntrySave.propTypes = {
|
|
196
|
-
displayPosition: _propTypes.default.number,
|
|
197
|
-
disableSubmit: _propTypes.default.bool,
|
|
198
|
-
guid: _propTypes.default.string,
|
|
199
|
-
submitHandler: _propTypes.default.func.isRequired,
|
|
200
262
|
cancelHandler: _propTypes.default.func,
|
|
263
|
+
canvasOrigin: _propTypes.default.string,
|
|
264
|
+
checkBankedContentShareabilityEnabled: _propTypes.default.bool,
|
|
265
|
+
checkContentShareability: _propTypes.default.func.isRequired,
|
|
201
266
|
clearChanges: _propTypes.default.func.isRequired,
|
|
202
267
|
// From connected component
|
|
203
268
|
clearNextQuizEntry: _propTypes.default.func.isRequired,
|
|
269
|
+
disableSubmit: _propTypes.default.bool,
|
|
270
|
+
displayPosition: _propTypes.default.number,
|
|
271
|
+
entry: _reactImmutableProptypes.default.record.isRequired,
|
|
272
|
+
guid: _propTypes.default.string,
|
|
204
273
|
hideError: _propTypes.default.func.isRequired,
|
|
274
|
+
initialFocusId: _propTypes.default.string,
|
|
205
275
|
isValid: _propTypes.default.bool.isRequired,
|
|
206
276
|
showError: _propTypes.default.func.isRequired,
|
|
207
277
|
screenreaderNotification: _propTypes.default.func.isRequired,
|
|
278
|
+
shouldValidateShareableContent: _propTypes.default.bool,
|
|
279
|
+
submitHandler: _propTypes.default.func.isRequired,
|
|
208
280
|
// from makescrollable / from props being passed in occasionally
|
|
209
281
|
switchOnEditing: _propTypes.default.func.isRequired,
|
|
210
282
|
switchOffEditing: _propTypes.default.func.isRequired,
|
|
211
|
-
|
|
283
|
+
withConfirm: _propTypes.default.func.isRequired
|
|
212
284
|
};
|
|
213
285
|
EntrySave.defaultProps = {
|
|
214
|
-
displayPosition: null,
|
|
215
286
|
cancelHandler: _noop.default,
|
|
287
|
+
canvasOrigin: '',
|
|
288
|
+
checkBankedContentShareabilityEnabled: false,
|
|
289
|
+
displayPosition: null,
|
|
216
290
|
disableSubmit: false,
|
|
217
291
|
guid: null,
|
|
218
|
-
initialFocusId: null
|
|
292
|
+
initialFocusId: null,
|
|
293
|
+
shouldValidateShareableContent: false
|
|
219
294
|
};
|
|
220
295
|
var _default = EntrySave;
|
|
221
296
|
exports.default = _default;
|
|
@@ -65,8 +65,7 @@ function mapStateToProps(state, props) {
|
|
|
65
65
|
partialDeepScoringEnabled: (0, _featureCheck.featureOn)('partial_deep_scoring'),
|
|
66
66
|
partialScoringEnabled: (0, _featureCheck.featureOn)('partial_scoring'),
|
|
67
67
|
quizId: (0, _quizzes2.getActiveQuizId)(state),
|
|
68
|
-
showCalculator: (0, _featureCheck.featureOn)('calculator_per_question')
|
|
69
|
-
useNewRce: (0, _featureCheck.featureOn)('use_new_rce')
|
|
68
|
+
showCalculator: (0, _featureCheck.featureOn)('calculator_per_question')
|
|
70
69
|
};
|
|
71
70
|
}
|
|
72
71
|
|
|
@@ -211,7 +211,6 @@ ItemEdit.propTypes = {
|
|
|
211
211
|
setUploadStatus: _propTypes.default.func.isRequired,
|
|
212
212
|
initialFocusId: _propTypes.default.string,
|
|
213
213
|
showCalculator: _propTypes.default.bool,
|
|
214
|
-
useNewRce: _propTypes.default.bool,
|
|
215
214
|
clearValidationErrorsFromApi: _propTypes.default.func.isRequired,
|
|
216
215
|
validationErrorsFromApi: _propTypes.default.objectOf(_propTypes.default.arrayOf(_propTypes.default.shape({
|
|
217
216
|
type: _propTypes.default.string,
|
|
@@ -230,7 +229,6 @@ ItemEdit.defaultProps = {
|
|
|
230
229
|
partialScoringEnabled: false,
|
|
231
230
|
initialFocusId: null,
|
|
232
231
|
showCalculator: false,
|
|
233
|
-
useNewRce: false,
|
|
234
232
|
validationErrorsFromApi: {}
|
|
235
233
|
};
|
|
236
234
|
var _default = ItemEdit;
|
|
@@ -38,8 +38,7 @@ function mapStateToProps(state, props) {
|
|
|
38
38
|
oneQuestionAtATime: (0, _quizzes2.isActiveQuizWorkingInstanceOneQuestionAtATime)(state),
|
|
39
39
|
partialDeepScoringEnabled: (0, _featureCheck.featureOn)('partial_deep_scoring'),
|
|
40
40
|
partialScoringEnabled: (0, _featureCheck.featureOn)('partial_scoring'),
|
|
41
|
-
quizId: (0, _quizzes2.getActiveQuizId)(state)
|
|
42
|
-
useNewRce: (0, _featureCheck.featureOn)('use_new_rce')
|
|
41
|
+
quizId: (0, _quizzes2.getActiveQuizId)(state)
|
|
43
42
|
};
|
|
44
43
|
}
|
|
45
44
|
|
|
@@ -99,14 +99,12 @@ ItemOverride.propTypes = {
|
|
|
99
99
|
partialScoringEnabled: _propTypes.default.bool,
|
|
100
100
|
quizId: _propTypes.default.string.isRequired,
|
|
101
101
|
screenreaderNotification: _propTypes.default.func.isRequired,
|
|
102
|
-
setOneQuestionAtATime: _propTypes.default.func.isRequired
|
|
103
|
-
useNewRce: _propTypes.default.bool
|
|
102
|
+
setOneQuestionAtATime: _propTypes.default.func.isRequired
|
|
104
103
|
};
|
|
105
104
|
ItemOverride.defaultProps = {
|
|
106
105
|
errorsAreShowing: false,
|
|
107
106
|
partialScoringEnabled: false,
|
|
108
|
-
partialDeepScoringEnabled: false
|
|
109
|
-
useNewRce: false
|
|
107
|
+
partialDeepScoringEnabled: false
|
|
110
108
|
};
|
|
111
109
|
var _default = ItemOverride;
|
|
112
110
|
exports.default = _default;
|
|
@@ -25,8 +25,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
25
25
|
|
|
26
26
|
var _quizRce = require("@instructure/quiz-rce");
|
|
27
27
|
|
|
28
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
29
|
-
|
|
30
28
|
var _makeScrollable = _interopRequireDefault(require("../../../shared/functionality/makeScrollable.js"));
|
|
31
29
|
|
|
32
30
|
var _theme = _interopRequireDefault(require("./theme.js"));
|
|
@@ -63,8 +61,7 @@ var QuizInstructions = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
|
|
|
63
61
|
tabIndex: "-1"
|
|
64
62
|
}, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
65
63
|
customStyles: styles.text,
|
|
66
|
-
content: this.props.quiz.instructions
|
|
67
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
64
|
+
content: this.props.quiz.instructions
|
|
68
65
|
}));
|
|
69
66
|
}
|
|
70
67
|
}]);
|
|
@@ -27,8 +27,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
27
27
|
|
|
28
28
|
var _quizRce = require("@instructure/quiz-rce");
|
|
29
29
|
|
|
30
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
31
|
-
|
|
32
30
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
33
31
|
|
|
34
32
|
var _theme = _interopRequireDefault(require("./theme.js"));
|
|
@@ -87,8 +85,7 @@ var ResultStimulus = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles)
|
|
|
87
85
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
88
86
|
className: styles.title
|
|
89
87
|
}, title)), /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
90
|
-
content: body
|
|
91
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
88
|
+
content: body
|
|
92
89
|
}));
|
|
93
90
|
}
|
|
94
91
|
}, {
|
|
@@ -41,8 +41,6 @@ var _uiThemeable = require("@instructure/ui-themeable");
|
|
|
41
41
|
|
|
42
42
|
var _quizRce = require("@instructure/quiz-rce");
|
|
43
43
|
|
|
44
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
45
|
-
|
|
46
44
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
47
45
|
|
|
48
46
|
var _PositionBox = _interopRequireDefault(require("../../positionBox/PositionBox.js"));
|
|
@@ -224,8 +222,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
224
222
|
className: styles.textPadding
|
|
225
223
|
}, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
226
224
|
customStyles: styles.itemFeedbackText,
|
|
227
|
-
content: feedbackContent
|
|
228
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
225
|
+
content: feedbackContent
|
|
229
226
|
})));
|
|
230
227
|
}
|
|
231
228
|
}
|
|
@@ -269,8 +266,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
269
266
|
className: styles.itemFeedbackLabel
|
|
270
267
|
}, (0, _formatMessage.default)('Feedback from grader')), /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
271
268
|
customStyles: styles.itemFeedbackText,
|
|
272
|
-
content: graderFeedback.content
|
|
273
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
269
|
+
content: graderFeedback.content
|
|
274
270
|
}));
|
|
275
271
|
} else {
|
|
276
272
|
return this.renderFeedbackBox(graderFeedback.content, (0, _formatMessage.default)('Feedback from grader'));
|
|
@@ -310,8 +306,7 @@ var SessionItemResult = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
|
|
|
310
306
|
properties: simpleItem.properties || {},
|
|
311
307
|
scoringData: simpleSessionItem.scoringData,
|
|
312
308
|
scoredData: simpleSessionItemResult.scoredData,
|
|
313
|
-
itemResultsModifications: simpleResultsModifications[simpleSessionItem.id]
|
|
314
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
309
|
+
itemResultsModifications: simpleResultsModifications[simpleSessionItem.id]
|
|
315
310
|
})), this.renderItemFeedback(simpleSessionItemResult));
|
|
316
311
|
}
|
|
317
312
|
}, {
|
|
@@ -413,6 +413,7 @@ var StimulusEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
|
|
|
413
413
|
onAdd: this.handleAddToBank,
|
|
414
414
|
onContinue: this.handleAddToBankContinue,
|
|
415
415
|
getEntry: this.getEntryForBank,
|
|
416
|
+
workingEntry: this.props.workingStimulus,
|
|
416
417
|
entryId: this.props.guid,
|
|
417
418
|
entryType: this.props.quizEntry.entryType
|
|
418
419
|
});
|
|
@@ -39,8 +39,6 @@ var _index = _interopRequireDefault(require("../../../RichContentInput/index.js"
|
|
|
39
39
|
|
|
40
40
|
var _instUIMessages = require("../../../../util/instUIMessages.js");
|
|
41
41
|
|
|
42
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
43
|
-
|
|
44
42
|
var _Errors = _interopRequireDefault(require("../../../shared/errors/Errors.js"));
|
|
45
43
|
|
|
46
44
|
var _uiSimpleSelect = require("@instructure/ui-simple-select");
|
|
@@ -210,8 +208,7 @@ var StimulusEditInfo = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
|
|
|
210
208
|
onKeyUp: this.onBodyChange,
|
|
211
209
|
onBlur: this.onBodyChange,
|
|
212
210
|
onChange: this.onBodyChange,
|
|
213
|
-
uploadPath: this.fileUploadUrl()
|
|
214
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
211
|
+
uploadPath: this.fileUploadUrl()
|
|
215
212
|
}), /*#__PURE__*/_react.default.createElement(_Errors.default, {
|
|
216
213
|
errorList: this.errorsList('body')
|
|
217
214
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -29,8 +29,6 @@ var _uiView = require("@instructure/ui-view");
|
|
|
29
29
|
|
|
30
30
|
var _quizRce = require("@instructure/quiz-rce");
|
|
31
31
|
|
|
32
|
-
var _rceChecker = require("../../../../util/rceChecker.js");
|
|
33
|
-
|
|
34
32
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
35
33
|
|
|
36
34
|
var StimulusShowInfo = /*#__PURE__*/function (_Component) {
|
|
@@ -80,8 +78,7 @@ var StimulusShowInfo = /*#__PURE__*/function (_Component) {
|
|
|
80
78
|
}, this.props.stimulus.title), instructions, /*#__PURE__*/_react.default.createElement("div", {
|
|
81
79
|
"data-automation": "sdk-stimulus-LeftPanelShow-content"
|
|
82
80
|
}, /*#__PURE__*/_react.default.createElement(_quizRce.RichContentRenderer, {
|
|
83
|
-
content: this.props.stimulus.body
|
|
84
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
81
|
+
content: this.props.stimulus.body
|
|
85
82
|
})));
|
|
86
83
|
}
|
|
87
84
|
}]);
|
|
@@ -21,6 +21,9 @@ var _default = function _default() {
|
|
|
21
21
|
case _quizCommon.SET_API_ENDPOINT:
|
|
22
22
|
return state.set('apiEndpoint', action.payload);
|
|
23
23
|
|
|
24
|
+
case _quizCommon.SET_CANVAS_ORIGIN:
|
|
25
|
+
return state.set('canvasOrigin', action.payload);
|
|
26
|
+
|
|
24
27
|
case _quizCommon.SET_USER_TOKEN:
|
|
25
28
|
return state.set('userToken', action.payload);
|
|
26
29
|
|
|
@@ -77,39 +77,37 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
77
77
|
switch (_context.prev = _context.next) {
|
|
78
78
|
case 0:
|
|
79
79
|
if (hasAllPropsForRcs()) {
|
|
80
|
-
_context.next =
|
|
80
|
+
_context.next = 2;
|
|
81
81
|
break;
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
handleErrorFunc('Invalid RCS configuration');
|
|
85
84
|
return _context.abrupt("return");
|
|
86
85
|
|
|
87
|
-
case
|
|
88
|
-
_context.next =
|
|
86
|
+
case 2:
|
|
87
|
+
_context.next = 4;
|
|
89
88
|
return props.rcsJwtRefreshFn(jwt);
|
|
90
89
|
|
|
91
|
-
case
|
|
90
|
+
case 4:
|
|
92
91
|
response = _context.sent;
|
|
93
92
|
refreshedToken = response === null || response === void 0 ? void 0 : (_response$json = response.json) === null || _response$json === void 0 ? void 0 : _response$json.token; // inst-redux-service-middleware response structure
|
|
94
93
|
|
|
95
94
|
if (refreshedToken) {
|
|
96
|
-
_context.next =
|
|
95
|
+
_context.next = 11;
|
|
97
96
|
break;
|
|
98
97
|
}
|
|
99
98
|
|
|
100
|
-
handleErrorFunc('Unable to refresh RCS token');
|
|
101
99
|
normalizedStem = questionStem !== null && questionStem !== void 0 ? questionStem : 'Unknown stem';
|
|
102
100
|
extractedText = (0, _quizInteractions.extractTextFromHtml)(normalizedStem);
|
|
103
|
-
|
|
101
|
+
handleError((0, _formatMessage.default)('Error while answering "{stem}": Full functionality of the Rich Content Editor may not have been available to the user.', {
|
|
104
102
|
stem: extractedText
|
|
105
103
|
}));
|
|
106
104
|
return _context.abrupt("return");
|
|
107
105
|
|
|
108
|
-
case
|
|
106
|
+
case 11:
|
|
109
107
|
setJwt(refreshedToken);
|
|
110
108
|
setTokenFn(refreshedToken);
|
|
111
109
|
|
|
112
|
-
case
|
|
110
|
+
case 13:
|
|
113
111
|
case "end":
|
|
114
112
|
return _context.stop();
|
|
115
113
|
}
|
|
@@ -122,26 +120,44 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
122
120
|
};
|
|
123
121
|
}();
|
|
124
122
|
|
|
125
|
-
var
|
|
126
|
-
|
|
123
|
+
var handleError = function handleError(quizLogMessage) {
|
|
124
|
+
if (shouldAlertUser()) {
|
|
125
|
+
alertTheUser(alertMessage());
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (shouldsetEventToQuizLog()) {
|
|
129
|
+
setEventToQuizLog(quizLogMessage);
|
|
130
|
+
}
|
|
127
131
|
};
|
|
128
132
|
|
|
129
|
-
var
|
|
130
|
-
|
|
133
|
+
var alertTheUser = function alertTheUser(message) {
|
|
134
|
+
_reduxStore.default.dispatch((0, _alerts.addError)(message));
|
|
135
|
+
};
|
|
131
136
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
rendererEnhancement: (0, _defineProperty2.default)({}, _quizCommon.RceConfigKeys.canvasOrigin, props.canvasOrigin),
|
|
135
|
-
featureFlags: (_featureFlags = {}, (0, _defineProperty2.default)(_featureFlags, _quizCommon.RceConfigKeys.isNewRCEAppsEnabled, props.isNewRCEAppsEnabled), (0, _defineProperty2.default)(_featureFlags, _quizCommon.RceConfigKeys.rce5Renderer, props.rce5Renderer), _featureFlags)
|
|
136
|
-
};
|
|
137
|
+
var setEventToQuizLog = function setEventToQuizLog(message) {
|
|
138
|
+
props.setEventToQuizLog(message);
|
|
137
139
|
};
|
|
138
140
|
|
|
139
|
-
var
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
141
|
+
var alertMessage = function alertMessage() {
|
|
142
|
+
return (0, _windowChecks.isQuizTaking)() ? (0, _formatMessage.default)('The Rich Content Editor has encountered an issue. ' + 'It has been logged for your instructor to review. Please refresh and try again.') : (0, _formatMessage.default)('The Rich Content Editor has encountered an issue. Please refresh and try again.');
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
var shouldAlertUser = function shouldAlertUser() {
|
|
146
|
+
return (0, _windowChecks.isQuizTaking)() || (0, _windowChecks.isQuizBuilding)();
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
var shouldsetEventToQuizLog = function shouldsetEventToQuizLog() {
|
|
150
|
+
return (0, _windowChecks.isQuizTaking)();
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
var getConfig = function getConfig() {
|
|
154
|
+
var _featureFlags, _ref2;
|
|
143
155
|
|
|
144
|
-
|
|
156
|
+
return {
|
|
157
|
+
featureFlags: (_featureFlags = {}, (0, _defineProperty2.default)(_featureFlags, _quizCommon.RceConfigKeys.isNewRCEEnabled, props.isNewRCEEnabled), (0, _defineProperty2.default)(_featureFlags, _quizCommon.RceConfigKeys.rce5Renderer, props.rce5Renderer), (0, _defineProperty2.default)(_featureFlags, _quizCommon.RceConfigKeys.isNewRCEAppsEnabled, props.isNewRCEAppsEnabled), _featureFlags),
|
|
158
|
+
rcs: hasAllPropsForRcs() && canvasConfig ? (_ref2 = {}, (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.canvasUserId, props.canvasUserId), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.contextId, props.contextId), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.contextType, props.contextType), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsHost, props.rcsHost), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsJwt, jwt), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.rcsJwtRefreshFn, refreshToken), (0, _defineProperty2.default)(_ref2, _quizCommon.RceConfigKeys.canvasConfig, canvasConfig), _ref2) : null,
|
|
159
|
+
rendererEnhancement: (0, _defineProperty2.default)({}, _quizCommon.RceConfigKeys.canvasOrigin, props.canvasOrigin)
|
|
160
|
+
};
|
|
145
161
|
};
|
|
146
162
|
|
|
147
163
|
(0, _react.useEffect)(function () {
|
|
@@ -151,7 +167,7 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
151
167
|
while (1) {
|
|
152
168
|
switch (_context2.prev = _context2.next) {
|
|
153
169
|
case 0:
|
|
154
|
-
if (!(!props.
|
|
170
|
+
if (!(!props.isNewRCEEnabled && !props.rce5Renderer)) {
|
|
155
171
|
_context2.next = 2;
|
|
156
172
|
break;
|
|
157
173
|
}
|
|
@@ -166,7 +182,7 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
166
182
|
break;
|
|
167
183
|
}
|
|
168
184
|
|
|
169
|
-
|
|
185
|
+
handleError((0, _formatMessage.default)('Error: Full functionality of the Rich Content Editor may not have been available to the user.'));
|
|
170
186
|
return _context2.abrupt("return");
|
|
171
187
|
|
|
172
188
|
case 6:
|
|
@@ -190,7 +206,7 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
190
206
|
case 16:
|
|
191
207
|
json = _context2.sent;
|
|
192
208
|
setCanvasConfig(json);
|
|
193
|
-
|
|
209
|
+
setEventToQuizLog(null);
|
|
194
210
|
_context2.next = 25;
|
|
195
211
|
break;
|
|
196
212
|
|
|
@@ -198,7 +214,7 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
198
214
|
_context2.prev = 21;
|
|
199
215
|
_context2.t0 = _context2["catch"](2);
|
|
200
216
|
setCanvasConfig(null);
|
|
201
|
-
|
|
217
|
+
handleError((0, _formatMessage.default)('Error: Full functionality of the Rich Content Editor including accessibility features may not have been available to the user.'));
|
|
202
218
|
|
|
203
219
|
case 25:
|
|
204
220
|
_context2.prev = 25;
|
|
@@ -212,10 +228,10 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
212
228
|
}
|
|
213
229
|
}, _callee2, null, [[2, 21, 25, 28]]);
|
|
214
230
|
}))();
|
|
215
|
-
}, [props.
|
|
231
|
+
}, [props.isNewRCEEnabled, props.rce5Renderer]);
|
|
216
232
|
|
|
217
233
|
if (props.loadedApiFeatures) {
|
|
218
|
-
if (props.
|
|
234
|
+
if (props.isNewRCEEnabled || props.rce5Renderer) {
|
|
219
235
|
if (!canvasConfigLoading) {
|
|
220
236
|
return /*#__PURE__*/_react.default.createElement(_quizCommon.RceConfigContext.Provider, {
|
|
221
237
|
value: getConfig()
|
|
@@ -232,10 +248,10 @@ var RceConfigProviderComponent = function RceConfigProviderComponent(props) {
|
|
|
232
248
|
exports.RceConfigProviderComponent = RceConfigProviderComponent;
|
|
233
249
|
RceConfigProviderComponent.propTypes = {
|
|
234
250
|
children: _propTypes.default.node.isRequired,
|
|
235
|
-
|
|
251
|
+
isNewRCEEnabled: _propTypes.default.bool.isRequired,
|
|
236
252
|
rce5Renderer: _propTypes.default.bool.isRequired,
|
|
237
253
|
isNewRCEAppsEnabled: _propTypes.default.bool,
|
|
238
|
-
|
|
254
|
+
setEventToQuizLog: _propTypes.default.func.isRequired,
|
|
239
255
|
contextId: _propTypes.default.string,
|
|
240
256
|
contextType: _propTypes.default.string,
|
|
241
257
|
canvasUserId: _propTypes.default.string,
|
|
@@ -259,7 +275,7 @@ RceConfigProviderComponent.defaultProps = {
|
|
|
259
275
|
|
|
260
276
|
var mapStateToProps = function mapStateToProps(state, ownProps) {
|
|
261
277
|
return {
|
|
262
|
-
|
|
278
|
+
isNewRCEEnabled: (0, _rceChecker.isNewRCEEnabled)(),
|
|
263
279
|
rce5Renderer: (0, _rceChecker.isRCE5RendererEnabled)(),
|
|
264
280
|
isNewRCEAppsEnabled: (0, _rceChecker.isNewRCEAppsEnabled)(),
|
|
265
281
|
loadedApiFeatures: state.getIn(['ui', 'loadedApiFeatures']) || ownProps.loadedApiFeatures
|
|
@@ -267,7 +283,7 @@ var mapStateToProps = function mapStateToProps(state, ownProps) {
|
|
|
267
283
|
};
|
|
268
284
|
|
|
269
285
|
var mapDispatchToProps = {
|
|
270
|
-
|
|
286
|
+
setEventToQuizLog: _rce.setRCEError
|
|
271
287
|
};
|
|
272
288
|
var RceConfigProvider = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(RceConfigProviderComponent);
|
|
273
289
|
exports.RceConfigProvider = RceConfigProvider;
|
|
@@ -11,8 +11,6 @@ var _index = _interopRequireDefault(require("../components/RichContentInput/inde
|
|
|
11
11
|
|
|
12
12
|
var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
|
|
13
13
|
|
|
14
|
-
var _rceChecker = require("../../common/util/rceChecker.js");
|
|
15
|
-
|
|
16
14
|
var propsForInteractionEdit = function propsForInteractionEdit(props, additionalOptions) {
|
|
17
15
|
var item = props.workingItem.toJS();
|
|
18
16
|
|
|
@@ -81,8 +79,7 @@ var propsForInteractionEdit = function propsForInteractionEdit(props, additional
|
|
|
81
79
|
setOneQuestionAtATime: setOneQuestionAtATime,
|
|
82
80
|
stemErrors: props.workingItem.errorsFor('itemBody').toJS(),
|
|
83
81
|
initialFocusId: props.initialFocusId,
|
|
84
|
-
calculatorType: item.calculatorType
|
|
85
|
-
useNewRce: props.useNewRce
|
|
82
|
+
calculatorType: item.calculatorType
|
|
86
83
|
};
|
|
87
84
|
};
|
|
88
85
|
|
|
@@ -98,8 +95,7 @@ var propsForInteractionShow = function propsForInteractionShow(item) {
|
|
|
98
95
|
itemBody: item.itemBody || '',
|
|
99
96
|
properties: item.properties,
|
|
100
97
|
notifyScreenreader: true,
|
|
101
|
-
scoringData: item.scoringData
|
|
102
|
-
useNewRce: (0, _rceChecker.isNewRCEEnabled)()
|
|
98
|
+
scoringData: item.scoringData
|
|
103
99
|
};
|
|
104
100
|
};
|
|
105
101
|
|
|
@@ -11,7 +11,7 @@ exports.default = void 0;
|
|
|
11
11
|
var _featureCheck = require("./featureCheck.js");
|
|
12
12
|
|
|
13
13
|
var newRCEFeatureName = 'use_new_rce';
|
|
14
|
-
var newRCEAppsFeatureName = '
|
|
14
|
+
var newRCEAppsFeatureName = 'rce5_apps';
|
|
15
15
|
var rce5RendererFeatureName = 'rce5_renderer';
|
|
16
16
|
|
|
17
17
|
function isNewRCEEnabled() {
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.isQuizBuilding = exports.isQuizTaking = exports.onTablet = exports.onPhone = exports.media = void 0;
|
|
7
|
+
|
|
8
|
+
var _quizCommon = require("@instructure/quiz-common");
|
|
9
|
+
|
|
7
10
|
var media = {
|
|
8
11
|
'phone-break-point': 'only screen and (max-width: 48rem)',
|
|
9
12
|
'tablet-break-point': 'only screen and (max-width: 64rem)'
|
|
@@ -26,11 +29,14 @@ var onTablet = function onTablet() {
|
|
|
26
29
|
|
|
27
30
|
exports.onTablet = onTablet;
|
|
28
31
|
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
var isQuizTaking = function isQuizTaking() {
|
|
33
|
+
return (0, _quizCommon.isDuringQuizTake)();
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.isQuizTaking = isQuizTaking;
|
|
37
|
+
|
|
38
|
+
var isQuizBuilding = function isQuizBuilding() {
|
|
39
|
+
return (0, _quizCommon.isDuringQuizBuild)();
|
|
34
40
|
};
|
|
35
41
|
|
|
36
|
-
exports.
|
|
42
|
+
exports.isQuizBuilding = isQuizBuilding;
|