@instructure/quiz-core 17.49.1-rc.2 → 17.49.1-rc.3

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.
Files changed (35) hide show
  1. package/es/banks/components/AddToBankModal/presenter.js +3 -1
  2. package/es/banks/components/Bank/presenter.js +3 -2
  3. package/es/banks/components/BankEntry/presenter.js +2 -1
  4. package/es/banks/components/Banks/presenter.js +2 -1
  5. package/es/building/components/resources/quiz/instructions/Show/index.js +3 -2
  6. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/presenter.js +3 -1
  7. package/es/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/index.js +1 -1
  8. package/es/common/components/layout/sidebar/SidebarItem/presenter.js +1 -1
  9. package/es/common/components/resources/item/ItemEdit/presenter.js +2 -1
  10. package/es/common/components/shared/PrintTrigger/presenter.js +2 -1
  11. package/es/moderating/components/events/Event.js +2 -6
  12. package/es/moderating/components/resources/AccommodationsModal/ExtraTimeMultiplier/index.js +1 -1
  13. package/es/moderating/components/resources/AccommodationsModal/ExtraTimeSettings/index.js +1 -1
  14. package/es/moderating/components/resources/AccommodationsModal/index.js +28 -15
  15. package/es/moderating/components/resources/ModerateTable/presenter.js +3 -6
  16. package/es/moderating/components/resources/ModerateTableRow/presenter.js +1 -1
  17. package/es/moderating/components/resources/OutstandingQuizzesModal/presenter.js +2 -5
  18. package/lib/banks/components/AddToBankModal/presenter.js +3 -1
  19. package/lib/banks/components/Bank/presenter.js +3 -2
  20. package/lib/banks/components/BankEntry/presenter.js +2 -1
  21. package/lib/banks/components/Banks/presenter.js +2 -1
  22. package/lib/building/components/resources/quiz/instructions/Show/index.js +3 -2
  23. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankEdit/presenter.js +3 -1
  24. package/lib/building/components/resources/quizEntry/QuizEntryBank/QuizEntryBankShow/index.js +1 -1
  25. package/lib/common/components/layout/sidebar/SidebarItem/presenter.js +1 -1
  26. package/lib/common/components/resources/item/ItemEdit/presenter.js +2 -1
  27. package/lib/common/components/shared/PrintTrigger/presenter.js +2 -1
  28. package/lib/moderating/components/events/Event.js +2 -6
  29. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeMultiplier/index.js +1 -1
  30. package/lib/moderating/components/resources/AccommodationsModal/ExtraTimeSettings/index.js +1 -1
  31. package/lib/moderating/components/resources/AccommodationsModal/index.js +28 -15
  32. package/lib/moderating/components/resources/ModerateTable/presenter.js +4 -6
  33. package/lib/moderating/components/resources/ModerateTableRow/presenter.js +1 -1
  34. package/lib/moderating/components/resources/OutstandingQuizzesModal/presenter.js +3 -5
  35. package/package.json +9 -9
@@ -310,7 +310,8 @@ AddToBankModal.propTypes = {
310
310
  entryType: PropTypes.string.isRequired,
311
311
  // Resolve to the bank entry's entry, or create it if it does not yet exist.
312
312
  getEntry: PropTypes.func.isRequired,
313
- handleValidationErrorsFromApi: PropTypes.func.isRequired,
313
+ handleValidationErrorsFromApi: PropTypes.func,
314
+ // not required for stimuli
314
315
  label: PropTypes.string.isRequired,
315
316
  modalOpen: PropTypes.bool.isRequired,
316
317
  onAdd: PropTypes.func,
@@ -322,6 +323,7 @@ AddToBankModal.propTypes = {
322
323
  AddToBankModal.defaultProps = {
323
324
  canvasOrigin: '',
324
325
  checkBankedContentShareabilityEnabled: false,
326
+ handleValidationErrorsFromApi: function handleValidationErrorsFromApi() {},
325
327
  onAdd: function onAdd() {},
326
328
  onContinue: function onContinue() {},
327
329
  selectedBank: null
@@ -205,7 +205,7 @@ export var Bank = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
205
205
  className: styles.bankName
206
206
  }, /*#__PURE__*/React.createElement(Heading, {
207
207
  level: "h1"
208
- }, this.props.bank.title));
208
+ }, this.props.bank.title || t('Bank')));
209
209
  }
210
210
  }, {
211
211
  key: "renderAddBankEntryModal",
@@ -312,7 +312,7 @@ export var Bank = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
312
312
  bankId: PropTypes.string.isRequired,
313
313
  bank: PropTypes.instanceOf(BankRecord).isRequired,
314
314
  useBankSearch: PropTypes.bool,
315
- closeTray: PropTypes.func.isRequired,
315
+ closeTray: PropTypes.func,
316
316
  getBank: PropTypes.func.isRequired,
317
317
  getBankEntries: PropTypes.func.isRequired,
318
318
  isCompact: PropTypes.bool,
@@ -340,6 +340,7 @@ export var Bank = (_dec = themeable(theme, styles), _dec(_class = (_temp = _clas
340
340
  }, _class2.defaultProps = {
341
341
  activeQuizId: null,
342
342
  addEntryToQuiz: null,
343
+ closeTray: function closeTray() {},
343
344
  useBankSearch: false,
344
345
  isCompact: false,
345
346
  minSearchRefreshInterval: 100,
@@ -663,7 +663,7 @@ export var BankEntry = (_dec = themeable(theme, styles), _dec(_class = (_temp =
663
663
  clearModifications: PropTypes.func.isRequired,
664
664
  clearTemporaryBankItem: PropTypes.func.isRequired,
665
665
  createEntryAndBankEntry: PropTypes.func.isRequired,
666
- closeTray: PropTypes.func.isRequired,
666
+ closeTray: PropTypes.func,
667
667
  createTagAssociations: PropTypes.func.isRequired,
668
668
  deleteTagAssociations: PropTypes.func.isRequired,
669
669
  getBankEntry: PropTypes.func.isRequired,
@@ -697,6 +697,7 @@ export var BankEntry = (_dec = themeable(theme, styles), _dec(_class = (_temp =
697
697
  updateStimulus: PropTypes.func.isRequired,
698
698
  useBankTags: PropTypes.bool
699
699
  }, _class2.defaultProps = {
700
+ closeTray: function closeTray() {},
700
701
  entry: null,
701
702
  isCompact: false,
702
703
  navigateToBuild: null,
@@ -373,7 +373,7 @@ export var Banks = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cla
373
373
  Banks.displayName = "Banks";
374
374
  return Banks;
375
375
  }(Component), _class2.propTypes = {
376
- closeTray: PropTypes.func.isRequired,
376
+ closeTray: PropTypes.func,
377
377
  createBank: PropTypes.func.isRequired,
378
378
  currentUser: PropTypes.shape({
379
379
  email: PropTypes.string,
@@ -420,6 +420,7 @@ export var Banks = (_dec = themeable(theme, styles), _dec(_class = (_temp = _cla
420
420
  newItemBankFilterNamesEnabled: PropTypes.bool,
421
421
  usedByCourseEnabled: PropTypes.bool
422
422
  }, _class2.defaultProps = {
423
+ closeTray: function closeTray() {},
423
424
  currentUser: null,
424
425
  getCourseInfo: null,
425
426
  getUserInfo: null,
@@ -71,10 +71,11 @@ export var QuizInstructionsShow = (_dec = themeable(theme, styles), _dec(_class
71
71
  QuizInstructionsShow.displayName = "QuizInstructionsShow";
72
72
  return QuizInstructionsShow;
73
73
  }(Component), _class2.propTypes = {
74
- instructions: PropTypes.string.isRequired,
74
+ instructions: PropTypes.string,
75
75
  switchOnEditing: PropTypes.func.isRequired,
76
76
  contentLocked: PropTypes.bool
77
77
  }, _class2.defaultProps = {
78
- contentLocked: false
78
+ contentLocked: false,
79
+ instructions: null
79
80
  }, _temp)) || _class);
80
81
  export default makeScrollable(QuizInstructionsShow);
@@ -252,9 +252,11 @@ export var QuizEntryBankEdit = (_dec = themeable(theme, styles), _dec(_class = (
252
252
  questionSelection: PropTypes.string.isRequired,
253
253
  quizEntry: PropTypes.instanceOf(QuizEntry).isRequired,
254
254
  quizId: PropTypes.string.isRequired,
255
- sampleNum: PropTypes.string.isRequired,
255
+ sampleNum: PropTypes.string,
256
256
  updateQuizEntry: PropTypes.func.isRequired,
257
257
  workingBank: PropTypes.instanceOf(Bank).isRequired,
258
258
  workingQuizEntry: PropTypes.instanceOf(QuizEntry).isRequired
259
+ }, _class2.defaultProps = {
260
+ sampleNum: void 0
259
261
  }, _temp)) || _class);
260
262
  export default QuizEntryBankEdit;
@@ -100,7 +100,7 @@ export var QuizEntryBank = (_dec = themeable(theme, styles), _dec(_class = (_tem
100
100
  }, /*#__PURE__*/React.createElement(View, {
101
101
  size: "medium",
102
102
  textAlign: "center",
103
- margin: "large auto",
103
+ margin: "0 auto",
104
104
  padding: "small"
105
105
  }, this.renderErrors(), this.renderContent()));
106
106
  }
@@ -110,7 +110,7 @@ export var SidebarItem = (_dec = themeable(theme, styles), _dec(_class = (_temp
110
110
  return /*#__PURE__*/React.createElement(Link, {
111
111
  href: "#",
112
112
  size: "small",
113
- margin: "small",
113
+ margin: "0 small",
114
114
  isWithinText: false,
115
115
  forceButtonRole: false,
116
116
  onClick: this.scrollToItem,
@@ -174,7 +174,7 @@ ItemEdit.propTypes = {
174
174
  parentType: PropTypes.string.isRequired,
175
175
  partialDeepScoringEnabled: PropTypes.bool,
176
176
  partialScoringEnabled: PropTypes.bool,
177
- quizId: PropTypes.string.isRequired,
177
+ quizId: PropTypes.string,
178
178
  screenreaderNotification: PropTypes.func.isRequired,
179
179
  setOneQuestionAtATime: PropTypes.func.isRequired,
180
180
  setUploadStatus: PropTypes.func.isRequired,
@@ -196,6 +196,7 @@ ItemEdit.defaultProps = {
196
196
  outcomesToken: null,
197
197
  partialDeepScoringEnabled: false,
198
198
  partialScoringEnabled: false,
199
+ quizId: null,
199
200
  initialFocusId: null,
200
201
  showCalculator: false,
201
202
  validationErrorsFromApi: {}
@@ -128,7 +128,7 @@ export var PrintTrigger = /*#__PURE__*/function (_Component) {
128
128
  return PrintTrigger;
129
129
  }(Component);
130
130
  PrintTrigger.propTypes = {
131
- activeQuizId: PropTypes.string.isRequired,
131
+ activeQuizId: PropTypes.string,
132
132
  appContainer: CustomPropTypes.selectors,
133
133
  asyncSampleItemsEnabled: PropTypes.bool,
134
134
  bankQuizEntryIds: PropTypes.arrayOf(PropTypes.string),
@@ -144,6 +144,7 @@ PrintTrigger.propTypes = {
144
144
  setPrintFontSize: PropTypes.func.isRequired
145
145
  };
146
146
  PrintTrigger.defaultProps = {
147
+ activeQuizId: null,
147
148
  appContainer: null,
148
149
  asyncSampleItemsEnabled: false,
149
150
  bankQuizEntryIds: [],
@@ -67,14 +67,10 @@ export var Event = /*#__PURE__*/function (_Component) {
67
67
  startTime = _this$props.startTime;
68
68
  var payloadNode = this.renderPayload(event);
69
69
  if (!payloadNode) return null;
70
- return /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, {
71
- width: 1
72
- }, /*#__PURE__*/React.createElement(ElapsedTime, {
70
+ return /*#__PURE__*/React.createElement(Table.Row, null, /*#__PURE__*/React.createElement(Table.Cell, null, /*#__PURE__*/React.createElement(ElapsedTime, {
73
71
  eventTime: event.createdDate(),
74
72
  startTime: startTime
75
- })), /*#__PURE__*/React.createElement(Table.Cell, {
76
- width: "auto"
77
- }, payloadNode));
73
+ })), /*#__PURE__*/React.createElement(Table.Cell, null, payloadNode));
78
74
  }
79
75
  }]);
80
76
 
@@ -136,7 +136,7 @@ var ExtraTimeMultiplier = /*#__PURE__*/function (_withI18nSupport) {
136
136
 
137
137
  ExtraTimeMultiplier.propTypes = {
138
138
  onChange: PropTypes.func.isRequired,
139
- timerMultiplierValue: PropTypes.number.isRequired,
139
+ timerMultiplierValue: PropTypes.string.isRequired,
140
140
  maxMultiplier: PropTypes.number.isRequired,
141
141
  minMultiplier: CustomPropTypes.numberInRange(1, Infinity),
142
142
  locale: PropTypes.string
@@ -133,7 +133,7 @@ ExtraTimeSettings.propTypes = {
133
133
  extraTimeInSeconds: PropTypes.number,
134
134
  increaseTimeAllowance: PropTypes.bool,
135
135
  timerMultiplierEnabled: PropTypes.bool,
136
- timerMultiplierValue: PropTypes.number
136
+ timerMultiplierValue: PropTypes.string
137
137
  }).isRequired,
138
138
  onChange: PropTypes.func.isRequired,
139
139
  maxTimeInSeconds: PropTypes.number,
@@ -62,6 +62,21 @@ export var AccommodationModal = /*#__PURE__*/function (_Component) {
62
62
  }, _this.props.studentName));
63
63
  };
64
64
 
65
+ _this.renderHeading = function () {
66
+ var _this$props = _this.props,
67
+ mountNode = _this$props.mountNode,
68
+ studentName = _this$props.studentName;
69
+
70
+ if (!studentName) {
71
+ return;
72
+ }
73
+
74
+ return /*#__PURE__*/React.createElement(Heading, null, /*#__PURE__*/React.createElement(ScreenReaderContent, null, studentName), _this.state.isTruncated ? /*#__PURE__*/React.createElement(Tooltip, {
75
+ tip: studentName,
76
+ mountNode: mountNode
77
+ }, _this.renderName) : _this.renderName());
78
+ };
79
+
65
80
  _this.saveAction = function () {
66
81
  _this.props.onSubmit && _this.props.onSubmit();
67
82
 
@@ -80,15 +95,15 @@ export var AccommodationModal = /*#__PURE__*/function (_Component) {
80
95
  _createClass(AccommodationModal, [{
81
96
  key: "render",
82
97
  value: function render() {
83
- var _this$props = this.props,
84
- studentName = _this$props.studentName,
85
- open = _this$props.open,
86
- closeModal = _this$props.closeModal,
87
- mountNode = _this$props.mountNode,
88
- children = _this$props.children;
98
+ var _this$props2 = this.props,
99
+ studentName = _this$props2.studentName,
100
+ open = _this$props2.open,
101
+ closeModal = _this$props2.closeModal,
102
+ mountNode = _this$props2.mountNode,
103
+ children = _this$props2.children;
89
104
  return /*#__PURE__*/React.createElement(Modal, {
90
105
  open: open,
91
- label: studentName,
106
+ label: studentName || t('Accommodations Modal'),
92
107
  mountNode: mountNode,
93
108
  size: "small",
94
109
  onExited: this.handleAccommodationsModalExited
@@ -97,10 +112,7 @@ export var AccommodationModal = /*#__PURE__*/function (_Component) {
97
112
  placement: "end",
98
113
  offset: "medium",
99
114
  screenReaderLabel: t('Close')
100
- }), /*#__PURE__*/React.createElement(Heading, null, /*#__PURE__*/React.createElement(ScreenReaderContent, null, studentName), this.state.isTruncated ? /*#__PURE__*/React.createElement(Tooltip, {
101
- tip: studentName,
102
- mountNode: mountNode
103
- }, this.renderName) : this.renderName())), /*#__PURE__*/React.createElement(Modal.Body, null, children), /*#__PURE__*/React.createElement(Modal.Footer, null, /*#__PURE__*/React.createElement(Button, {
115
+ }), this.renderHeading()), /*#__PURE__*/React.createElement(Modal.Body, null, children), /*#__PURE__*/React.createElement(Modal.Footer, null, /*#__PURE__*/React.createElement(Button, {
104
116
  onClick: this.cancelAction,
105
117
  margin: "xxx-small",
106
118
  "data-automation": "sdk-moderation-cancel"
@@ -119,7 +131,7 @@ export var AccommodationModal = /*#__PURE__*/function (_Component) {
119
131
  AccommodationModal.propTypes = {
120
132
  closeModal: PropTypes.func.isRequired,
121
133
  open: PropTypes.bool.isRequired,
122
- studentName: PropTypes.string.isRequired,
134
+ studentName: PropTypes.string,
123
135
  onSubmit: PropTypes.func,
124
136
  onDismiss: PropTypes.func,
125
137
  mountNode: PropTypes.string,
@@ -127,11 +139,12 @@ AccommodationModal.propTypes = {
127
139
  children: PropTypes.oneOfType([PropTypes.node, PropTypes.arrayOf(PropTypes.node)])
128
140
  };
129
141
  AccommodationModal.defaultProps = {
142
+ children: [],
143
+ ellipsis: null,
144
+ // placeholder for when different ellipsis are needed (ellipsis language-dependent)
130
145
  mountNode: null,
131
146
  onSubmit: null,
132
147
  onDismiss: null,
133
- children: [],
134
- ellipsis: null // placeholder for when different ellipsis are needed (ellipsis language-dependent)
135
-
148
+ studentName: null
136
149
  };
137
150
  export default AccommodationModal;
@@ -9,6 +9,7 @@ var _dec, _class, _class2, _temp;
9
9
 
10
10
  import React, { Component } from 'react';
11
11
  import PropTypes from 'prop-types';
12
+ import ImmutablePropTypes from 'react-immutable-proptypes';
12
13
  import { Text } from '@instructure/ui-text';
13
14
  import { Link } from '@instructure/ui-link';
14
15
  import { Flex } from '@instructure/ui-flex';
@@ -363,11 +364,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
363
364
  id: PropTypes.string,
364
365
  name: PropTypes.string
365
366
  })),
366
- quizSessionsData: PropTypes.arrayOf(PropTypes.shape({
367
- id: PropTypes.string.isRequired,
368
- name: PropTypes.string.isRequired,
369
- status: PropTypes.string.isRequired
370
- })).isRequired,
367
+ quizSessionsData: ImmutablePropTypes.listOf(ImmutablePropTypes.record).isRequired,
371
368
  afterManualSubmit: PropTypes.func,
372
369
  inProgressData: PropTypes.arrayOf(PropTypes.shape({
373
370
  avatar: PropTypes.string,
@@ -391,7 +388,7 @@ export var ModerateTable = (_dec = themeable(theme, styles), _dec(_class = (_tem
391
388
  value: PropTypes.string.isRequired
392
389
  }))
393
390
  })).isRequired,
394
- quizId: PropTypes.number.isRequired,
391
+ quizId: PropTypes.string.isRequired,
395
392
  getQuizSessions: PropTypes.func.isRequired,
396
393
  addSuccess: PropTypes.func.isRequired
397
394
  }, _class2.defaultProps = {
@@ -114,7 +114,7 @@ export var ModerateTableRow = (_dec = themeable(theme, styles), _dec(_class = (_
114
114
  key: quizSessionId,
115
115
  className: styles.tableDataItem
116
116
  }, attemptSRMessage, /*#__PURE__*/React.createElement(View, {
117
- margin: "0 xSmall 0 0"
117
+ margin: "0 x-small 0 0"
118
118
  }, message), icon);
119
119
  };
120
120
 
@@ -5,6 +5,7 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
5
5
  import _createSuper from "@babel/runtime/helpers/esm/createSuper";
6
6
  import React, { Component } from 'react';
7
7
  import PropTypes from 'prop-types';
8
+ import ImmutablePropTypes from 'react-immutable-proptypes';
8
9
  import { Modal } from '@instructure/ui-modal';
9
10
  import { Heading } from '@instructure/ui-heading';
10
11
  import { Checkbox, CheckboxGroup } from '@instructure/ui-checkbox';
@@ -159,11 +160,7 @@ OutstandingQuizzesModal.propTypes = {
159
160
  id: PropTypes.string,
160
161
  name: PropTypes.string
161
162
  })).isRequired,
162
- quizSessionsData: PropTypes.arrayOf(PropTypes.shape({
163
- id: PropTypes.string.isRequired,
164
- name: PropTypes.string.isRequired,
165
- status: PropTypes.string
166
- })).isRequired,
163
+ quizSessionsData: ImmutablePropTypes.listOf(ImmutablePropTypes.record).isRequired,
167
164
  handleSubmissionAndPoll: PropTypes.func.isRequired,
168
165
  afterSubmit: PropTypes.func
169
166
  };
@@ -344,7 +344,8 @@ AddToBankModal.propTypes = {
344
344
  entryType: _propTypes.default.string.isRequired,
345
345
  // Resolve to the bank entry's entry, or create it if it does not yet exist.
346
346
  getEntry: _propTypes.default.func.isRequired,
347
- handleValidationErrorsFromApi: _propTypes.default.func.isRequired,
347
+ handleValidationErrorsFromApi: _propTypes.default.func,
348
+ // not required for stimuli
348
349
  label: _propTypes.default.string.isRequired,
349
350
  modalOpen: _propTypes.default.bool.isRequired,
350
351
  onAdd: _propTypes.default.func,
@@ -356,6 +357,7 @@ AddToBankModal.propTypes = {
356
357
  AddToBankModal.defaultProps = {
357
358
  canvasOrigin: '',
358
359
  checkBankedContentShareabilityEnabled: false,
360
+ handleValidationErrorsFromApi: function handleValidationErrorsFromApi() {},
359
361
  onAdd: function onAdd() {},
360
362
  onContinue: function onContinue() {},
361
363
  selectedBank: null
@@ -243,7 +243,7 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
243
243
  className: styles.bankName
244
244
  }, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
245
245
  level: "h1"
246
- }, this.props.bank.title));
246
+ }, this.props.bank.title || (0, _formatMessage.default)('Bank')));
247
247
  }
248
248
  }, {
249
249
  key: "renderAddBankEntryModal",
@@ -349,7 +349,7 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
349
349
  bankId: _propTypes.default.string.isRequired,
350
350
  bank: _propTypes.default.instanceOf(_Bank.default).isRequired,
351
351
  useBankSearch: _propTypes.default.bool,
352
- closeTray: _propTypes.default.func.isRequired,
352
+ closeTray: _propTypes.default.func,
353
353
  getBank: _propTypes.default.func.isRequired,
354
354
  getBankEntries: _propTypes.default.func.isRequired,
355
355
  isCompact: _propTypes.default.bool,
@@ -377,6 +377,7 @@ var Bank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_cl
377
377
  }, _class2.defaultProps = {
378
378
  activeQuizId: null,
379
379
  addEntryToQuiz: null,
380
+ closeTray: function closeTray() {},
380
381
  useBankSearch: false,
381
382
  isCompact: false,
382
383
  minSearchRefreshInterval: 100,
@@ -714,7 +714,7 @@ var BankEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
714
714
  clearModifications: _propTypes.default.func.isRequired,
715
715
  clearTemporaryBankItem: _propTypes.default.func.isRequired,
716
716
  createEntryAndBankEntry: _propTypes.default.func.isRequired,
717
- closeTray: _propTypes.default.func.isRequired,
717
+ closeTray: _propTypes.default.func,
718
718
  createTagAssociations: _propTypes.default.func.isRequired,
719
719
  deleteTagAssociations: _propTypes.default.func.isRequired,
720
720
  getBankEntry: _propTypes.default.func.isRequired,
@@ -748,6 +748,7 @@ var BankEntry = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _de
748
748
  updateStimulus: _propTypes.default.func.isRequired,
749
749
  useBankTags: _propTypes.default.bool
750
750
  }, _class2.defaultProps = {
751
+ closeTray: function closeTray() {},
751
752
  entry: null,
752
753
  isCompact: false,
753
754
  navigateToBuild: null,
@@ -411,7 +411,7 @@ var Banks = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_c
411
411
  Banks.displayName = "Banks";
412
412
  return Banks;
413
413
  }(_react.Component), _class2.propTypes = {
414
- closeTray: _propTypes.default.func.isRequired,
414
+ closeTray: _propTypes.default.func,
415
415
  createBank: _propTypes.default.func.isRequired,
416
416
  currentUser: _propTypes.default.shape({
417
417
  email: _propTypes.default.string,
@@ -458,6 +458,7 @@ var Banks = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_c
458
458
  newItemBankFilterNamesEnabled: _propTypes.default.bool,
459
459
  usedByCourseEnabled: _propTypes.default.bool
460
460
  }, _class2.defaultProps = {
461
+ closeTray: function closeTray() {},
461
462
  currentUser: null,
462
463
  getCourseInfo: null,
463
464
  getUserInfo: null,
@@ -92,11 +92,12 @@ var QuizInstructionsShow = (_dec = (0, _uiThemeable.themeable)(_theme.default, s
92
92
  QuizInstructionsShow.displayName = "QuizInstructionsShow";
93
93
  return QuizInstructionsShow;
94
94
  }(_react.Component), _class2.propTypes = {
95
- instructions: _propTypes.default.string.isRequired,
95
+ instructions: _propTypes.default.string,
96
96
  switchOnEditing: _propTypes.default.func.isRequired,
97
97
  contentLocked: _propTypes.default.bool
98
98
  }, _class2.defaultProps = {
99
- contentLocked: false
99
+ contentLocked: false,
100
+ instructions: null
100
101
  }, _temp)) || _class);
101
102
  exports.QuizInstructionsShow = QuizInstructionsShow;
102
103
 
@@ -281,10 +281,12 @@ var QuizEntryBankEdit = (_dec = (0, _uiThemeable.themeable)(_theme.default, styl
281
281
  questionSelection: _propTypes.default.string.isRequired,
282
282
  quizEntry: _propTypes.default.instanceOf(_QuizEntry.default).isRequired,
283
283
  quizId: _propTypes.default.string.isRequired,
284
- sampleNum: _propTypes.default.string.isRequired,
284
+ sampleNum: _propTypes.default.string,
285
285
  updateQuizEntry: _propTypes.default.func.isRequired,
286
286
  workingBank: _propTypes.default.instanceOf(_Bank.default).isRequired,
287
287
  workingQuizEntry: _propTypes.default.instanceOf(_QuizEntry.default).isRequired
288
+ }, _class2.defaultProps = {
289
+ sampleNum: void 0
288
290
  }, _temp)) || _class);
289
291
  exports.QuizEntryBankEdit = QuizEntryBankEdit;
290
292
  var _default = QuizEntryBankEdit;
@@ -123,7 +123,7 @@ var QuizEntryBank = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
123
123
  }, /*#__PURE__*/_react.default.createElement(_uiView.View, {
124
124
  size: "medium",
125
125
  textAlign: "center",
126
- margin: "large auto",
126
+ margin: "0 auto",
127
127
  padding: "small"
128
128
  }, this.renderErrors(), this.renderContent()));
129
129
  }
@@ -137,7 +137,7 @@ var SidebarItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _
137
137
  return /*#__PURE__*/_react.default.createElement(_uiLink.Link, {
138
138
  href: "#",
139
139
  size: "small",
140
- margin: "small",
140
+ margin: "0 small",
141
141
  isWithinText: false,
142
142
  forceButtonRole: false,
143
143
  onClick: this.scrollToItem,
@@ -205,7 +205,7 @@ ItemEdit.propTypes = {
205
205
  parentType: _propTypes.default.string.isRequired,
206
206
  partialDeepScoringEnabled: _propTypes.default.bool,
207
207
  partialScoringEnabled: _propTypes.default.bool,
208
- quizId: _propTypes.default.string.isRequired,
208
+ quizId: _propTypes.default.string,
209
209
  screenreaderNotification: _propTypes.default.func.isRequired,
210
210
  setOneQuestionAtATime: _propTypes.default.func.isRequired,
211
211
  setUploadStatus: _propTypes.default.func.isRequired,
@@ -227,6 +227,7 @@ ItemEdit.defaultProps = {
227
227
  outcomesToken: null,
228
228
  partialDeepScoringEnabled: false,
229
229
  partialScoringEnabled: false,
230
+ quizId: null,
230
231
  initialFocusId: null,
231
232
  showCalculator: false,
232
233
  validationErrorsFromApi: {}
@@ -154,7 +154,7 @@ var PrintTrigger = /*#__PURE__*/function (_Component) {
154
154
 
155
155
  exports.PrintTrigger = PrintTrigger;
156
156
  PrintTrigger.propTypes = {
157
- activeQuizId: _propTypes.default.string.isRequired,
157
+ activeQuizId: _propTypes.default.string,
158
158
  appContainer: _CustomPropTypes.default.selectors,
159
159
  asyncSampleItemsEnabled: _propTypes.default.bool,
160
160
  bankQuizEntryIds: _propTypes.default.arrayOf(_propTypes.default.string),
@@ -170,6 +170,7 @@ PrintTrigger.propTypes = {
170
170
  setPrintFontSize: _propTypes.default.func.isRequired
171
171
  };
172
172
  PrintTrigger.defaultProps = {
173
+ activeQuizId: null,
173
174
  appContainer: null,
174
175
  asyncSampleItemsEnabled: false,
175
176
  bankQuizEntryIds: [],
@@ -90,14 +90,10 @@ var Event = /*#__PURE__*/function (_Component) {
90
90
  startTime = _this$props.startTime;
91
91
  var payloadNode = this.renderPayload(event);
92
92
  if (!payloadNode) return null;
93
- return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
94
- width: 1
95
- }, /*#__PURE__*/_react.default.createElement(_ElapsedTime.default, {
93
+ return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, null, /*#__PURE__*/_react.default.createElement(_ElapsedTime.default, {
96
94
  eventTime: event.createdDate(),
97
95
  startTime: startTime
98
- })), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
99
- width: "auto"
100
- }, payloadNode));
96
+ })), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, null, payloadNode));
101
97
  }
102
98
  }]);
103
99
  Event.displayName = "Event";
@@ -156,7 +156,7 @@ var ExtraTimeMultiplier = /*#__PURE__*/function (_withI18nSupport) {
156
156
 
157
157
  ExtraTimeMultiplier.propTypes = {
158
158
  onChange: _propTypes.default.func.isRequired,
159
- timerMultiplierValue: _propTypes.default.number.isRequired,
159
+ timerMultiplierValue: _propTypes.default.string.isRequired,
160
160
  maxMultiplier: _propTypes.default.number.isRequired,
161
161
  minMultiplier: _CustomPropTypes.default.numberInRange(1, Infinity),
162
162
  locale: _propTypes.default.string
@@ -157,7 +157,7 @@ ExtraTimeSettings.propTypes = {
157
157
  extraTimeInSeconds: _propTypes.default.number,
158
158
  increaseTimeAllowance: _propTypes.default.bool,
159
159
  timerMultiplierEnabled: _propTypes.default.bool,
160
- timerMultiplierValue: _propTypes.default.number
160
+ timerMultiplierValue: _propTypes.default.string
161
161
  }).isRequired,
162
162
  onChange: _propTypes.default.func.isRequired,
163
163
  maxTimeInSeconds: _propTypes.default.number,
@@ -87,6 +87,21 @@ var AccommodationModal = /*#__PURE__*/function (_Component) {
87
87
  }, _this.props.studentName));
88
88
  };
89
89
 
90
+ _this.renderHeading = function () {
91
+ var _this$props = _this.props,
92
+ mountNode = _this$props.mountNode,
93
+ studentName = _this$props.studentName;
94
+
95
+ if (!studentName) {
96
+ return;
97
+ }
98
+
99
+ return /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, null, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, studentName), _this.state.isTruncated ? /*#__PURE__*/_react.default.createElement(_uiTooltip.Tooltip, {
100
+ tip: studentName,
101
+ mountNode: mountNode
102
+ }, _this.renderName) : _this.renderName());
103
+ };
104
+
90
105
  _this.saveAction = function () {
91
106
  _this.props.onSubmit && _this.props.onSubmit();
92
107
 
@@ -105,15 +120,15 @@ var AccommodationModal = /*#__PURE__*/function (_Component) {
105
120
  (0, _createClass2.default)(AccommodationModal, [{
106
121
  key: "render",
107
122
  value: function render() {
108
- var _this$props = this.props,
109
- studentName = _this$props.studentName,
110
- open = _this$props.open,
111
- closeModal = _this$props.closeModal,
112
- mountNode = _this$props.mountNode,
113
- children = _this$props.children;
123
+ var _this$props2 = this.props,
124
+ studentName = _this$props2.studentName,
125
+ open = _this$props2.open,
126
+ closeModal = _this$props2.closeModal,
127
+ mountNode = _this$props2.mountNode,
128
+ children = _this$props2.children;
114
129
  return /*#__PURE__*/_react.default.createElement(_uiModal.Modal, {
115
130
  open: open,
116
- label: studentName,
131
+ label: studentName || (0, _formatMessage.default)('Accommodations Modal'),
117
132
  mountNode: mountNode,
118
133
  size: "small",
119
134
  onExited: this.handleAccommodationsModalExited
@@ -122,10 +137,7 @@ var AccommodationModal = /*#__PURE__*/function (_Component) {
122
137
  placement: "end",
123
138
  offset: "medium",
124
139
  screenReaderLabel: (0, _formatMessage.default)('Close')
125
- }), /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, null, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, studentName), this.state.isTruncated ? /*#__PURE__*/_react.default.createElement(_uiTooltip.Tooltip, {
126
- tip: studentName,
127
- mountNode: mountNode
128
- }, this.renderName) : this.renderName())), /*#__PURE__*/_react.default.createElement(_uiModal.Modal.Body, null, children), /*#__PURE__*/_react.default.createElement(_uiModal.Modal.Footer, null, /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
140
+ }), this.renderHeading()), /*#__PURE__*/_react.default.createElement(_uiModal.Modal.Body, null, children), /*#__PURE__*/_react.default.createElement(_uiModal.Modal.Footer, null, /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
129
141
  onClick: this.cancelAction,
130
142
  margin: "xxx-small",
131
143
  "data-automation": "sdk-moderation-cancel"
@@ -145,7 +157,7 @@ exports.AccommodationModal = AccommodationModal;
145
157
  AccommodationModal.propTypes = {
146
158
  closeModal: _propTypes.default.func.isRequired,
147
159
  open: _propTypes.default.bool.isRequired,
148
- studentName: _propTypes.default.string.isRequired,
160
+ studentName: _propTypes.default.string,
149
161
  onSubmit: _propTypes.default.func,
150
162
  onDismiss: _propTypes.default.func,
151
163
  mountNode: _propTypes.default.string,
@@ -153,12 +165,13 @@ AccommodationModal.propTypes = {
153
165
  children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.arrayOf(_propTypes.default.node)])
154
166
  };
155
167
  AccommodationModal.defaultProps = {
168
+ children: [],
169
+ ellipsis: null,
170
+ // placeholder for when different ellipsis are needed (ellipsis language-dependent)
156
171
  mountNode: null,
157
172
  onSubmit: null,
158
173
  onDismiss: null,
159
- children: [],
160
- ellipsis: null // placeholder for when different ellipsis are needed (ellipsis language-dependent)
161
-
174
+ studentName: null
162
175
  };
163
176
  var _default = AccommodationModal;
164
177
  exports.default = _default;
@@ -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 _uiText = require("@instructure/ui-text");
29
31
 
30
32
  var _uiLink = require("@instructure/ui-link");
@@ -393,11 +395,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
393
395
  id: _propTypes.default.string,
394
396
  name: _propTypes.default.string
395
397
  })),
396
- quizSessionsData: _propTypes.default.arrayOf(_propTypes.default.shape({
397
- id: _propTypes.default.string.isRequired,
398
- name: _propTypes.default.string.isRequired,
399
- status: _propTypes.default.string.isRequired
400
- })).isRequired,
398
+ quizSessionsData: _reactImmutableProptypes.default.listOf(_reactImmutableProptypes.default.record).isRequired,
401
399
  afterManualSubmit: _propTypes.default.func,
402
400
  inProgressData: _propTypes.default.arrayOf(_propTypes.default.shape({
403
401
  avatar: _propTypes.default.string,
@@ -421,7 +419,7 @@ var ModerateTable = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles),
421
419
  value: _propTypes.default.string.isRequired
422
420
  }))
423
421
  })).isRequired,
424
- quizId: _propTypes.default.number.isRequired,
422
+ quizId: _propTypes.default.string.isRequired,
425
423
  getQuizSessions: _propTypes.default.func.isRequired,
426
424
  addSuccess: _propTypes.default.func.isRequired
427
425
  }, _class2.defaultProps = {
@@ -147,7 +147,7 @@ var ModerateTableRow = (_dec = (0, _uiThemeable.themeable)(_theme.default, style
147
147
  key: quizSessionId,
148
148
  className: styles.tableDataItem
149
149
  }, attemptSRMessage, /*#__PURE__*/_react.default.createElement(_uiView.View, {
150
- margin: "0 xSmall 0 0"
150
+ margin: "0 x-small 0 0"
151
151
  }, message), icon);
152
152
  };
153
153
 
@@ -23,6 +23,8 @@ var _react = _interopRequireWildcard(require("react"));
23
23
 
24
24
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
+ var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
27
+
26
28
  var _uiModal = require("@instructure/ui-modal");
27
29
 
28
30
  var _uiHeading = require("@instructure/ui-heading");
@@ -183,11 +185,7 @@ OutstandingQuizzesModal.propTypes = {
183
185
  id: _propTypes.default.string,
184
186
  name: _propTypes.default.string
185
187
  })).isRequired,
186
- quizSessionsData: _propTypes.default.arrayOf(_propTypes.default.shape({
187
- id: _propTypes.default.string.isRequired,
188
- name: _propTypes.default.string.isRequired,
189
- status: _propTypes.default.string
190
- })).isRequired,
188
+ quizSessionsData: _reactImmutableProptypes.default.listOf(_reactImmutableProptypes.default.record).isRequired,
191
189
  handleSubmissionAndPoll: _propTypes.default.func.isRequired,
192
190
  afterSubmit: _propTypes.default.func
193
191
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "17.49.1-rc.2+4a7cb29ee",
3
+ "version": "17.49.1-rc.3+a4de252c9",
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.1-rc.2+4a7cb29ee",
45
- "@instructure/quiz-i18n": "17.49.1-rc.2+4a7cb29ee",
46
- "@instructure/quiz-interactions": "17.49.1-rc.2+4a7cb29ee",
47
- "@instructure/quiz-number-input": "17.49.1-rc.2+4a7cb29ee",
48
- "@instructure/quiz-rce": "17.49.1-rc.2+4a7cb29ee",
44
+ "@instructure/quiz-common": "17.49.1-rc.3+a4de252c9",
45
+ "@instructure/quiz-i18n": "17.49.1-rc.3+a4de252c9",
46
+ "@instructure/quiz-interactions": "17.49.1-rc.3+a4de252c9",
47
+ "@instructure/quiz-number-input": "17.49.1-rc.3+a4de252c9",
48
+ "@instructure/quiz-rce": "17.49.1-rc.3+a4de252c9",
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.1-rc.2+4a7cb29ee",
109
+ "instructure-validations": "17.49.1-rc.3+a4de252c9",
110
110
  "ipaddr.js": "^1.5.4",
111
111
  "isomorphic-fetch": "^2.2.0",
112
112
  "isuuid": "^0.1.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.1-rc.2+4a7cb29ee",
159
+ "quiz-presets": "17.49.1-rc.3+a4de252c9",
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": "4a7cb29ee4d776036226d7574c775b9fe7c18081"
175
+ "gitHead": "a4de252c94030c31928e3fd8d2ea5ccb01548dce"
176
176
  }