@instructure/quiz-core 17.49.0 → 17.49.1-rc.1

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.
@@ -56,6 +56,18 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
56
56
  _this.moderateButton = node;
57
57
  };
58
58
 
59
+ _this.generateAttemptSRMessage = function (attemptNumber) {
60
+ var studentName = "".concat(t('Student'), " ").concat(_this.props.rowData.name, ", ");
61
+ var message = t('Attempt { attemptNumber }', {
62
+ attemptNumber: attemptNumber
63
+ });
64
+ return " ".concat(studentName).concat(message, ", ");
65
+ };
66
+
67
+ _this.generateAttemptSRC = function (attemptNumber) {
68
+ return _this.props.rowData.name && attemptNumber ? /*#__PURE__*/React.createElement(ScreenReaderContent, null, _this.generateAttemptSRMessage(attemptNumber)) : null;
69
+ };
70
+
59
71
  _this.onModerateButtonClick = function () {
60
72
  _this.props.onModerateButtonClick(_this.props.rowData);
61
73
  };
@@ -65,6 +77,9 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
65
77
  };
66
78
 
67
79
  _this.generateAttemptLink = function (autogradefailed, message, quizSessionId, attemptNumber) {
80
+ var studentName = "".concat(t('Student'), " ").concat(_this.props.rowData.name, ", "); // A screenreader message is available if student has more than one attempt
81
+
82
+ var attemptSRMessage = attemptNumber > 1 && /*#__PURE__*/React.createElement(ScreenReaderContent, null, studentName);
68
83
  var iconTitle = t('Autograde error on attempt { attemptNumber }.', {
69
84
  attemptNumber: attemptNumber
70
85
  });
@@ -75,9 +90,9 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
75
90
  title: iconTitle
76
91
  }),
77
92
  iconPlacement: "end"
78
- }, message) : /*#__PURE__*/React.createElement(Link, {
93
+ }, attemptSRMessage, message) : /*#__PURE__*/React.createElement(Link, {
79
94
  onClick: _this.onResultsLinkClick(quizSessionId)
80
- }, message);
95
+ }, attemptSRMessage, message);
81
96
  return /*#__PURE__*/React.createElement("div", {
82
97
  key: quizSessionId,
83
98
  className: styles.tableDataItem
@@ -85,6 +100,9 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
85
100
  };
86
101
 
87
102
  _this.generateAttemptText = function (autogradefailed, message, quizSessionId, attemptNumber) {
103
+ var studentName = "".concat(t('Student'), " ").concat(_this.props.rowData.name, ", "); // A screenreader message is available if student has more than one attempt
104
+
105
+ var attemptSRMessage = attemptNumber > 1 && /*#__PURE__*/React.createElement(ScreenReaderContent, null, studentName);
88
106
  var iconTitle = t('Autograde error on attempt { attemptNumber }.', {
89
107
  attemptNumber: attemptNumber
90
108
  });
@@ -95,7 +113,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
95
113
  return /*#__PURE__*/React.createElement("div", {
96
114
  key: quizSessionId,
97
115
  className: styles.tableDataItem
98
- }, /*#__PURE__*/React.createElement(View, {
116
+ }, attemptSRMessage, /*#__PURE__*/React.createElement(View, {
99
117
  margin: "0 xSmall 0 0"
100
118
  }, message), icon);
101
119
  };
@@ -142,6 +160,8 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
142
160
 
143
161
  var message = t('No Score');
144
162
 
163
+ var attemptSRMessage = _this3.generateAttemptSRMessage(renderedScores.length + 1);
164
+
145
165
  if (result.get('score') != null) {
146
166
  var percentage = result.get('score') / result.get('pointsPossible');
147
167
  message = _this3.formatPercentMax2FractionDigits(percentage);
@@ -161,7 +181,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
161
181
  renderedScores.push( /*#__PURE__*/React.createElement("div", {
162
182
  key: result.get('id'),
163
183
  className: styles.tableDataItem
164
- }, message));
184
+ }, /*#__PURE__*/React.createElement(ScreenReaderContent, null, attemptSRMessage, message), /*#__PURE__*/React.createElement(AccessibleContent, null, message)));
165
185
  return renderedScores;
166
186
  }, []);
167
187
  }
@@ -200,20 +220,23 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
200
220
 
201
221
  return quizSessions.map(function (quizSession, idx) {
202
222
  var quizSessionId = quizSession.get('id');
203
- var hasAutogradeFailure = quizSession.findAuthoritativeResult().status === 'autograding_failed';
204
223
 
205
- var message = _this4.attemptMessage(idx, maxAttempts, hasAutogradeFailure);
224
+ var message = _this4.attemptMessage(idx, maxAttempts);
225
+
226
+ var hasAutoGradeFailure = quizSession.findAuthoritativeResult().status === 'autograding_failed';
206
227
 
207
228
  if (_this4.props.onResultsLinkClick && quizSession.graded()) {
208
- return _this4.generateAttemptLink(hasAutogradeFailure, message, quizSessionId, idx + 1);
229
+ return _this4.generateAttemptLink(hasAutoGradeFailure, message, quizSessionId, idx + 1);
209
230
  } else {
210
- return _this4.generateAttemptText(hasAutogradeFailure, message, quizSessionId, idx + 1);
231
+ return _this4.generateAttemptText(hasAutoGradeFailure, message, quizSessionId, idx + 1);
211
232
  }
212
233
  });
213
234
  }
214
235
  }, {
215
236
  key: "renderTimes",
216
237
  value: function renderTimes(quizSessions) {
238
+ var _this5 = this;
239
+
217
240
  if (!quizSessions.length) {
218
241
  return /*#__PURE__*/React.createElement("div", {
219
242
  className: styles.tableDataItem
@@ -227,6 +250,8 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
227
250
  seconds: quizSession.elapsedTime
228
251
  });
229
252
 
253
+ var attemptSRMessage = _this5.generateAttemptSRC(idx + 1);
254
+
230
255
  if (quizSession.inProgress() || quizSession.reopeningGraded()) {
231
256
  var alt = t('In progress, time not available');
232
257
  message = /*#__PURE__*/React.createElement(AccessibleContent, {
@@ -237,12 +262,14 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
237
262
  return /*#__PURE__*/React.createElement("div", {
238
263
  key: quizSession.get('id'),
239
264
  className: styles.tableDataItem
240
- }, message);
265
+ }, attemptSRMessage, message);
241
266
  });
242
267
  }
243
268
  }, {
244
269
  key: "renderLogLinks",
245
270
  value: function renderLogLinks(quizSessions) {
271
+ var _this6 = this;
272
+
246
273
  if (!quizSessions.length) {
247
274
  return /*#__PURE__*/React.createElement("div", {
248
275
  className: styles.tableDataItem
@@ -254,8 +281,11 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
254
281
  var _this$props = this.props,
255
282
  onModerateLogClick = _this$props.onModerateLogClick,
256
283
  id = _this$props.rowData.id;
257
- return quizSessions.map(function (quizSession) {
284
+ return quizSessions.map(function (quizSession, idx) {
258
285
  var quizSessionId = quizSession.get('id');
286
+
287
+ var attemptSRMessage = _this6.generateAttemptSRC(idx + 1);
288
+
259
289
  var message = quizSession.inProgress() || quizSession.reopeningGraded() ? t('In Progress') : t('View Log');
260
290
 
261
291
  function onClick(event) {
@@ -271,7 +301,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
271
301
  className: styles.tableDataItem
272
302
  }, /*#__PURE__*/React.createElement(Link, {
273
303
  onClick: onClick
274
- }, message));
304
+ }, attemptSRMessage, message));
275
305
  });
276
306
  }
277
307
  }, {
@@ -87,6 +87,18 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
87
87
  _this.moderateButton = node;
88
88
  };
89
89
 
90
+ _this.generateAttemptSRMessage = function (attemptNumber) {
91
+ var studentName = "".concat((0, _formatMessage.default)('Student'), " ").concat(_this.props.rowData.name, ", ");
92
+ var message = (0, _formatMessage.default)('Attempt { attemptNumber }', {
93
+ attemptNumber: attemptNumber
94
+ });
95
+ return " ".concat(studentName).concat(message, ", ");
96
+ };
97
+
98
+ _this.generateAttemptSRC = function (attemptNumber) {
99
+ return _this.props.rowData.name && attemptNumber ? /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, _this.generateAttemptSRMessage(attemptNumber)) : null;
100
+ };
101
+
90
102
  _this.onModerateButtonClick = function () {
91
103
  _this.props.onModerateButtonClick(_this.props.rowData);
92
104
  };
@@ -96,6 +108,10 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
96
108
  };
97
109
 
98
110
  _this.generateAttemptLink = function (autogradefailed, message, quizSessionId, attemptNumber) {
111
+ var studentName = "".concat((0, _formatMessage.default)('Student'), " ").concat(_this.props.rowData.name, ", "); // A screenreader message is available if student has more than one attempt
112
+
113
+ var attemptSRMessage = attemptNumber > 1 && /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, studentName);
114
+
99
115
  var iconTitle = (0, _formatMessage.default)('Autograde error on attempt { attemptNumber }.', {
100
116
  attemptNumber: attemptNumber
101
117
  });
@@ -106,9 +122,9 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
106
122
  title: iconTitle
107
123
  }),
108
124
  iconPlacement: "end"
109
- }, message) : /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
125
+ }, attemptSRMessage, message) : /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
110
126
  onClick: _this.onResultsLinkClick(quizSessionId)
111
- }, message);
127
+ }, attemptSRMessage, message);
112
128
  return /*#__PURE__*/_react.default.createElement("div", {
113
129
  key: quizSessionId,
114
130
  className: styles.tableDataItem
@@ -116,6 +132,10 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
116
132
  };
117
133
 
118
134
  _this.generateAttemptText = function (autogradefailed, message, quizSessionId, attemptNumber) {
135
+ var studentName = "".concat((0, _formatMessage.default)('Student'), " ").concat(_this.props.rowData.name, ", "); // A screenreader message is available if student has more than one attempt
136
+
137
+ var attemptSRMessage = attemptNumber > 1 && /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, studentName);
138
+
119
139
  var iconTitle = (0, _formatMessage.default)('Autograde error on attempt { attemptNumber }.', {
120
140
  attemptNumber: attemptNumber
121
141
  });
@@ -126,7 +146,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
126
146
  return /*#__PURE__*/_react.default.createElement("div", {
127
147
  key: quizSessionId,
128
148
  className: styles.tableDataItem
129
- }, /*#__PURE__*/_react.default.createElement(_uiView.View, {
149
+ }, attemptSRMessage, /*#__PURE__*/_react.default.createElement(_uiView.View, {
130
150
  margin: "0 xSmall 0 0"
131
151
  }, message), icon);
132
152
  };
@@ -174,6 +194,8 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
174
194
 
175
195
  var message = (0, _formatMessage.default)('No Score');
176
196
 
197
+ var attemptSRMessage = _this3.generateAttemptSRMessage(renderedScores.length + 1);
198
+
177
199
  if (result.get('score') != null) {
178
200
  var percentage = result.get('score') / result.get('pointsPossible');
179
201
  message = _this3.formatPercentMax2FractionDigits(percentage);
@@ -193,7 +215,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
193
215
  renderedScores.push( /*#__PURE__*/_react.default.createElement("div", {
194
216
  key: result.get('id'),
195
217
  className: styles.tableDataItem
196
- }, message));
218
+ }, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, attemptSRMessage, message), /*#__PURE__*/_react.default.createElement(_uiA11yContent.AccessibleContent, null, message)));
197
219
  return renderedScores;
198
220
  }, []);
199
221
  }
@@ -232,20 +254,23 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
232
254
 
233
255
  return quizSessions.map(function (quizSession, idx) {
234
256
  var quizSessionId = quizSession.get('id');
235
- var hasAutogradeFailure = quizSession.findAuthoritativeResult().status === 'autograding_failed';
236
257
 
237
- var message = _this4.attemptMessage(idx, maxAttempts, hasAutogradeFailure);
258
+ var message = _this4.attemptMessage(idx, maxAttempts);
259
+
260
+ var hasAutoGradeFailure = quizSession.findAuthoritativeResult().status === 'autograding_failed';
238
261
 
239
262
  if (_this4.props.onResultsLinkClick && quizSession.graded()) {
240
- return _this4.generateAttemptLink(hasAutogradeFailure, message, quizSessionId, idx + 1);
263
+ return _this4.generateAttemptLink(hasAutoGradeFailure, message, quizSessionId, idx + 1);
241
264
  } else {
242
- return _this4.generateAttemptText(hasAutogradeFailure, message, quizSessionId, idx + 1);
265
+ return _this4.generateAttemptText(hasAutoGradeFailure, message, quizSessionId, idx + 1);
243
266
  }
244
267
  });
245
268
  }
246
269
  }, {
247
270
  key: "renderTimes",
248
271
  value: function renderTimes(quizSessions) {
272
+ var _this5 = this;
273
+
249
274
  if (!quizSessions.length) {
250
275
  return /*#__PURE__*/_react.default.createElement("div", {
251
276
  className: styles.tableDataItem
@@ -259,6 +284,8 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
259
284
  seconds: quizSession.elapsedTime
260
285
  });
261
286
 
287
+ var attemptSRMessage = _this5.generateAttemptSRC(idx + 1);
288
+
262
289
  if (quizSession.inProgress() || quizSession.reopeningGraded()) {
263
290
  var alt = (0, _formatMessage.default)('In progress, time not available');
264
291
  message = /*#__PURE__*/_react.default.createElement(_uiA11yContent.AccessibleContent, {
@@ -269,12 +296,14 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
269
296
  return /*#__PURE__*/_react.default.createElement("div", {
270
297
  key: quizSession.get('id'),
271
298
  className: styles.tableDataItem
272
- }, message);
299
+ }, attemptSRMessage, message);
273
300
  });
274
301
  }
275
302
  }, {
276
303
  key: "renderLogLinks",
277
304
  value: function renderLogLinks(quizSessions) {
305
+ var _this6 = this;
306
+
278
307
  if (!quizSessions.length) {
279
308
  return /*#__PURE__*/_react.default.createElement("div", {
280
309
  className: styles.tableDataItem
@@ -286,8 +315,11 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
286
315
  var _this$props = this.props,
287
316
  onModerateLogClick = _this$props.onModerateLogClick,
288
317
  id = _this$props.rowData.id;
289
- return quizSessions.map(function (quizSession) {
318
+ return quizSessions.map(function (quizSession, idx) {
290
319
  var quizSessionId = quizSession.get('id');
320
+
321
+ var attemptSRMessage = _this6.generateAttemptSRC(idx + 1);
322
+
291
323
  var message = quizSession.inProgress() || quizSession.reopeningGraded() ? (0, _formatMessage.default)('In Progress') : (0, _formatMessage.default)('View Log');
292
324
 
293
325
  function onClick(event) {
@@ -303,7 +335,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
303
335
  className: styles.tableDataItem
304
336
  }, /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
305
337
  onClick: onClick
306
- }, message));
338
+ }, attemptSRMessage, message));
307
339
  });
308
340
  }
309
341
  }, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.49.0",
3
+ "version": "17.49.1-rc.1+a3f3181a7",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -41,11 +41,11 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@instructure/outcomes-ui": "^2.1.2",
44
- "@instructure/quiz-common": "^17.49.0",
45
- "@instructure/quiz-i18n": "^17.49.0",
46
- "@instructure/quiz-interactions": "^17.49.0",
47
- "@instructure/quiz-number-input": "^17.49.0",
48
- "@instructure/quiz-rce": "^17.49.0",
44
+ "@instructure/quiz-common": "17.49.1-rc.1+a3f3181a7",
45
+ "@instructure/quiz-i18n": "17.49.1-rc.1+a3f3181a7",
46
+ "@instructure/quiz-interactions": "17.49.1-rc.1+a3f3181a7",
47
+ "@instructure/quiz-number-input": "17.49.1-rc.1+a3f3181a7",
48
+ "@instructure/quiz-rce": "17.49.1-rc.1+a3f3181a7",
49
49
  "@instructure/ui-a11y-content": "^7.20.0",
50
50
  "@instructure/ui-alerts": "^7.20.0",
51
51
  "@instructure/ui-avatar": "^7.20.0",
@@ -106,7 +106,7 @@
106
106
  "eventemitter3": "^3.1.0",
107
107
  "humps": "^2.0.0",
108
108
  "immutable": "^3.8.1",
109
- "instructure-validations": "^17.49.0",
109
+ "instructure-validations": "17.49.1-rc.1+a3f3181a7",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.0",
@@ -137,7 +137,7 @@
137
137
  "uuid": "^3.2.1"
138
138
  },
139
139
  "devDependencies": {
140
- "@instructure/quiz-scripts": "^17.49.0",
140
+ "@instructure/quiz-scripts": "17.49.0",
141
141
  "@instructure/ui-axe-check": "^7.20.0",
142
142
  "@instructure/ui-babel-preset": "^7.20.0",
143
143
  "@instructure/ui-karma-config": "^7.20.0",
@@ -156,7 +156,7 @@
156
156
  "intl": "^1.2.4",
157
157
  "jquery": "^2.2.3",
158
158
  "most-subject": "^5.3.0",
159
- "quiz-presets": "^17.49.0",
159
+ "quiz-presets": "17.49.1-rc.1+a3f3181a7",
160
160
  "react": "^16.8.6",
161
161
  "react-addons-test-utils": "^15.6.2",
162
162
  "react-dom": "^16.8.6",
@@ -172,5 +172,5 @@
172
172
  "publishConfig": {
173
173
  "access": "public"
174
174
  },
175
- "gitHead": "6baf2a95149e6b88708c8d524e1507d47ccbbb0e"
175
+ "gitHead": "a3f3181a75fb95d0116f469ac09fc6e8e7e62d42"
176
176
  }