@instructure/quiz-core 20.20.1-snapshot.17 → 20.20.1-snapshot.19

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 CHANGED
@@ -3,6 +3,24 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [20.23.0](https://gerrit.instructure.com/quizzes-ui/compare/v20.20.0...v20.23.0) (2024-10-11)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **StreamQueue:** fix region config for awsClient ([051654c](https://gerrit.instructure.com/quizzes-ui/commits/051654cb11f83985f1b262106af0531e9f540022))
12
+ * put QUIZ-14227 behind 'add_time_to_existing_quiz_sessions' ff ([d36798a](https://gerrit.instructure.com/quizzes-ui/commits/d36798a335a652d42224893c17feffdb598f7d76))
13
+
14
+
15
+ ### Features
16
+
17
+ * **logs:** fallback to api gateway as kinesis proxy ([3124588](https://gerrit.instructure.com/quizzes-ui/commits/31245886a8ec22bb6c6824024d760fe44afdd266))
18
+ * **quizzes-ui:** add data_automation tag for the “Questions” section. ([b6241e0](https://gerrit.instructure.com/quizzes-ui/commits/b6241e0c4fd7c4129804a1db7f56c1a1f819bb37))
19
+
20
+
21
+
22
+
23
+
6
24
  # [20.22.0](https://gerrit.instructure.com/quizzes-ui/compare/v20.20.0...v20.22.0) (2024-10-09)
7
25
 
8
26
 
@@ -7,20 +7,27 @@ import { reopenQuizSession } from "../../../api/quizSessions.js";
7
7
  import { getQuizSessionsByIds } from "../../../../common/selectors/quizSessions.js";
8
8
  export function mapStateToProps(state) {
9
9
  var quizSessionIds = state.getIn(['moderation', 'selectedSessions']);
10
- var sessions = getQuizSessionsByIds(state, quizSessionIds).filter(function (qs) {
10
+ var quizSessions = getQuizSessionsByIds(state, quizSessionIds).filter(function (qs) {
11
11
  return qs.isLoaded() && !qs.pending();
12
12
  }).sort(function (qs1, qs2) {
13
13
  return qs2.id - qs1.id;
14
14
  });
15
- var sessionId, session;
16
- if (sessions.size > 0) {
17
- session = sessions.get(0);
18
- sessionId = session.id;
15
+ var quizSessionId,
16
+ quizSession,
17
+ reopenOverride = false;
18
+ if (quizSessions.size > 0) {
19
+ quizSession = quizSessions.get(0);
20
+ var _ref = [quizSession.allowBacktracking, quizSession.isOneQuestionAtATime()],
21
+ allowBacktracking = _ref[0],
22
+ isOneQuestionAtATime = _ref[1];
23
+ quizSessionId = quizSession.id;
24
+ reopenOverride = !allowBacktracking && isOneQuestionAtATime;
19
25
  }
20
26
  return {
21
- sessionId: sessionId || null,
22
- isComplete: session ? !(session.inProgress() || session.reopeningGraded()) : false,
23
- reopenOn: featureOn('reopen_session')
27
+ sessionId: quizSessionId || null,
28
+ isComplete: quizSession ? !(quizSession.inProgress() || quizSession.reopeningGraded()) : false,
29
+ reopenOn: featureOn('reopen_session'),
30
+ reopenOverride: reopenOverride
24
31
  };
25
32
  }
26
33
  export default connect(mapStateToProps, {
@@ -9,6 +9,8 @@ import PropTypes from 'prop-types';
9
9
  import t from '@instructure/quiz-i18n/es/format-message';
10
10
  import { Button } from '@instructure/ui-buttons';
11
11
  import { Heading } from '@instructure/ui-heading';
12
+ import { Tooltip } from '@instructure/ui-tooltip';
13
+ import { AccessibleContent } from '@instructure/ui-a11y-content';
12
14
  export var ResetQuiz = /*#__PURE__*/function (_Component) {
13
15
  _inherits(ResetQuiz, _Component);
14
16
  var _super = _createSuper(ResetQuiz);
@@ -57,18 +59,31 @@ export var ResetQuiz = /*#__PURE__*/function (_Component) {
57
59
  key: "render",
58
60
  value: function render() {
59
61
  if (!this.props.reopenOn) return null;
60
- if (!this.props.sessionId) {
62
+ var _this$props = this.props,
63
+ reopenOverride = _this$props.reopenOverride,
64
+ sessionId = _this$props.sessionId;
65
+ if (!sessionId) {
61
66
  return /*#__PURE__*/React.createElement("span", null, t('No attempts have been recorded yet.'));
62
67
  }
63
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Heading, {
68
+ var reOpen = /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Heading, {
64
69
  level: "h3"
65
70
  }, t('Manage current attempt')), this.props.reopenOn ? /*#__PURE__*/React.createElement(Button, {
66
71
  ref: this.reopenButtonRef,
67
72
  onClick: this.reopenQuizSession,
68
- disabled: !this.props.isComplete,
73
+ disabled: !this.props.isComplete || reopenOverride,
69
74
  margin: "small none",
70
75
  "data-automation": "sdk-reopen-quiz-button"
71
76
  }, t('Reopen')) : null);
77
+ if (reopenOverride) {
78
+ var text = t('One Question at Time Quizzes with Backtracking disabled cannot be reopened.');
79
+ return /*#__PURE__*/React.createElement(AccessibleContent, {
80
+ alt: text
81
+ }, /*#__PURE__*/React.createElement(Tooltip, {
82
+ renderTip: text,
83
+ placement: "start"
84
+ }, reOpen));
85
+ }
86
+ return reOpen;
72
87
  }
73
88
  }]);
74
89
  ResetQuiz.displayName = "ResetQuiz";
@@ -81,6 +96,7 @@ ResetQuiz.propTypes = {
81
96
  reopenQuizSession: PropTypes.func.isRequired,
82
97
  reopenOn: PropTypes.bool.isRequired,
83
98
  screenreaderNotification: PropTypes.func.isRequired,
84
- withConfirm: PropTypes.func.isRequired
99
+ withConfirm: PropTypes.func.isRequired,
100
+ reopenOverride: PropTypes.bool.isRequired
85
101
  };
86
102
  export default ResetQuiz;
@@ -15,20 +15,27 @@ var _quizSessions = require("../../../api/quizSessions.js");
15
15
  var _quizSessions2 = require("../../../../common/selectors/quizSessions.js");
16
16
  function mapStateToProps(state) {
17
17
  var quizSessionIds = state.getIn(['moderation', 'selectedSessions']);
18
- var sessions = (0, _quizSessions2.getQuizSessionsByIds)(state, quizSessionIds).filter(function (qs) {
18
+ var quizSessions = (0, _quizSessions2.getQuizSessionsByIds)(state, quizSessionIds).filter(function (qs) {
19
19
  return qs.isLoaded() && !qs.pending();
20
20
  }).sort(function (qs1, qs2) {
21
21
  return qs2.id - qs1.id;
22
22
  });
23
- var sessionId, session;
24
- if (sessions.size > 0) {
25
- session = sessions.get(0);
26
- sessionId = session.id;
23
+ var quizSessionId,
24
+ quizSession,
25
+ reopenOverride = false;
26
+ if (quizSessions.size > 0) {
27
+ quizSession = quizSessions.get(0);
28
+ var _ref = [quizSession.allowBacktracking, quizSession.isOneQuestionAtATime()],
29
+ allowBacktracking = _ref[0],
30
+ isOneQuestionAtATime = _ref[1];
31
+ quizSessionId = quizSession.id;
32
+ reopenOverride = !allowBacktracking && isOneQuestionAtATime;
27
33
  }
28
34
  return {
29
- sessionId: sessionId || null,
30
- isComplete: session ? !(session.inProgress() || session.reopeningGraded()) : false,
31
- reopenOn: (0, _featureCheck.featureOn)('reopen_session')
35
+ sessionId: quizSessionId || null,
36
+ isComplete: quizSession ? !(quizSession.inProgress() || quizSession.reopeningGraded()) : false,
37
+ reopenOn: (0, _featureCheck.featureOn)('reopen_session'),
38
+ reopenOverride: reopenOverride
32
39
  };
33
40
  }
34
41
  var _default = (0, _reactRedux.connect)(mapStateToProps, {
@@ -17,6 +17,8 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
18
18
  var _uiButtons = require("@instructure/ui-buttons");
19
19
  var _uiHeading = require("@instructure/ui-heading");
20
+ var _uiTooltip = require("@instructure/ui-tooltip");
21
+ var _uiA11yContent = require("@instructure/ui-a11y-content");
20
22
  var ResetQuiz = /*#__PURE__*/function (_Component) {
21
23
  (0, _inherits2.default)(ResetQuiz, _Component);
22
24
  var _super = (0, _createSuper2.default)(ResetQuiz);
@@ -65,18 +67,31 @@ var ResetQuiz = /*#__PURE__*/function (_Component) {
65
67
  key: "render",
66
68
  value: function render() {
67
69
  if (!this.props.reopenOn) return null;
68
- if (!this.props.sessionId) {
70
+ var _this$props = this.props,
71
+ reopenOverride = _this$props.reopenOverride,
72
+ sessionId = _this$props.sessionId;
73
+ if (!sessionId) {
69
74
  return /*#__PURE__*/_react.default.createElement("span", null, (0, _formatMessage.default)('No attempts have been recorded yet.'));
70
75
  }
71
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
76
+ var reOpen = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_uiHeading.Heading, {
72
77
  level: "h3"
73
78
  }, (0, _formatMessage.default)('Manage current attempt')), this.props.reopenOn ? /*#__PURE__*/_react.default.createElement(_uiButtons.Button, {
74
79
  ref: this.reopenButtonRef,
75
80
  onClick: this.reopenQuizSession,
76
- disabled: !this.props.isComplete,
81
+ disabled: !this.props.isComplete || reopenOverride,
77
82
  margin: "small none",
78
83
  "data-automation": "sdk-reopen-quiz-button"
79
84
  }, (0, _formatMessage.default)('Reopen')) : null);
85
+ if (reopenOverride) {
86
+ var text = (0, _formatMessage.default)('One Question at Time Quizzes with Backtracking disabled cannot be reopened.');
87
+ return /*#__PURE__*/_react.default.createElement(_uiA11yContent.AccessibleContent, {
88
+ alt: text
89
+ }, /*#__PURE__*/_react.default.createElement(_uiTooltip.Tooltip, {
90
+ renderTip: text,
91
+ placement: "start"
92
+ }, reOpen));
93
+ }
94
+ return reOpen;
80
95
  }
81
96
  }]);
82
97
  ResetQuiz.displayName = "ResetQuiz";
@@ -90,7 +105,8 @@ ResetQuiz.propTypes = {
90
105
  reopenQuizSession: _propTypes.default.func.isRequired,
91
106
  reopenOn: _propTypes.default.bool.isRequired,
92
107
  screenreaderNotification: _propTypes.default.func.isRequired,
93
- withConfirm: _propTypes.default.func.isRequired
108
+ withConfirm: _propTypes.default.func.isRequired,
109
+ reopenOverride: _propTypes.default.bool.isRequired
94
110
  };
95
111
  var _default = ResetQuiz;
96
112
  exports.default = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@instructure/quiz-core",
3
- "version": "20.20.1-snapshot.17+051654cb1",
3
+ "version": "20.20.1-snapshot.19+cfc3e3174",
4
4
  "license": "MIT",
5
5
  "description": "The Quiz React SDK by Instructure Inc.",
6
6
  "author": "Instructure, Inc. Engineering and Product Design",
@@ -44,11 +44,11 @@
44
44
  "@instructure/emotion": "^8.51.0",
45
45
  "@instructure/grading-utils": "^1.0.0",
46
46
  "@instructure/outcomes-ui": "^3.2.2",
47
- "@instructure/quiz-common": "20.20.1-snapshot.17+051654cb1",
48
- "@instructure/quiz-i18n": "20.20.1-snapshot.17+051654cb1",
49
- "@instructure/quiz-interactions": "20.20.1-snapshot.17+051654cb1",
50
- "@instructure/quiz-number-input": "20.20.1-snapshot.17+051654cb1",
51
- "@instructure/quiz-rce": "20.20.1-snapshot.17+051654cb1",
47
+ "@instructure/quiz-common": "20.20.1-snapshot.19+cfc3e3174",
48
+ "@instructure/quiz-i18n": "20.20.1-snapshot.19+cfc3e3174",
49
+ "@instructure/quiz-interactions": "20.20.1-snapshot.19+cfc3e3174",
50
+ "@instructure/quiz-number-input": "20.20.1-snapshot.19+cfc3e3174",
51
+ "@instructure/quiz-rce": "20.20.1-snapshot.19+cfc3e3174",
52
52
  "@instructure/ui-a11y-content": "^8.51.0",
53
53
  "@instructure/ui-alerts": "^8.51.0",
54
54
  "@instructure/ui-avatar": "^8.51.0",
@@ -112,7 +112,7 @@
112
112
  "file-saver": "~2.0.5",
113
113
  "humps": "^2.0.0",
114
114
  "immutable": "^3.8.1",
115
- "instructure-validations": "20.20.1-snapshot.17+051654cb1",
115
+ "instructure-validations": "20.20.1-snapshot.19+cfc3e3174",
116
116
  "ipaddr.js": "^1.5.4",
117
117
  "isomorphic-fetch": "^2.2.0",
118
118
  "isuuid": "^0.1.0",
@@ -143,7 +143,7 @@
143
143
  "uuid": "^3.2.1"
144
144
  },
145
145
  "devDependencies": {
146
- "@instructure/quiz-scripts": "20.22.0",
146
+ "@instructure/quiz-scripts": "20.23.0",
147
147
  "@instructure/ui-axe-check": "^8.51.0",
148
148
  "@instructure/ui-babel-preset": "^7.22.1",
149
149
  "@instructure/ui-test-utils": "^7.22.1",
@@ -161,7 +161,7 @@
161
161
  "jquery": "^2.2.3",
162
162
  "karma-junit-reporter": "^2.0.1",
163
163
  "most-subject": "^5.3.0",
164
- "quiz-presets": "20.20.1-snapshot.17+051654cb1",
164
+ "quiz-presets": "20.20.1-snapshot.19+cfc3e3174",
165
165
  "react": "^16.8.6",
166
166
  "react-addons-test-utils": "^15.6.2",
167
167
  "react-dom": "^16.8.6",
@@ -177,5 +177,5 @@
177
177
  "publishConfig": {
178
178
  "access": "public"
179
179
  },
180
- "gitHead": "051654cb11f83985f1b262106af0531e9f540022"
180
+ "gitHead": "cfc3e31748c1a604d8982fd8295de08709d63e97"
181
181
  }