@instructure/quiz-core 20.11.4 → 20.11.5-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.
Files changed (23) hide show
  1. package/es/reporting/components/MetricsListItem/index.js +13 -19
  2. package/es/reporting/components/MetricsListItem/styles.js +12 -0
  3. package/es/reporting/components/MetricsListItem/theme.js +0 -3
  4. package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/index.js +33 -61
  5. package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/styles.js +45 -0
  6. package/es/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +4 -2
  7. package/es/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +6 -6
  8. package/es/reporting/components/quizAnalysis/QuizAnalysisOverview.js +9 -9
  9. package/es/reporting/components/resources/QuizAndItemAnalysis/presenter.js +46 -50
  10. package/es/reporting/components/resources/QuizAndItemAnalysis/styles.js +18 -0
  11. package/es/reporting/components/resources/QuizAndItemAnalysis/theme.js +4 -2
  12. package/lib/reporting/components/MetricsListItem/index.js +12 -22
  13. package/lib/reporting/components/MetricsListItem/styles.js +20 -0
  14. package/lib/reporting/components/MetricsListItem/theme.js +1 -10
  15. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/index.js +32 -64
  16. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/styles.js +56 -0
  17. package/lib/reporting/components/itemAnalysis/AnswerFrequencySummary/theme.js +6 -3
  18. package/lib/reporting/components/itemAnalysis/ItemAnalysisRow/presenter.js +5 -5
  19. package/lib/reporting/components/quizAnalysis/QuizAnalysisOverview.js +9 -9
  20. package/lib/reporting/components/resources/QuizAndItemAnalysis/presenter.js +45 -54
  21. package/lib/reporting/components/resources/QuizAndItemAnalysis/styles.js +26 -0
  22. package/lib/reporting/components/resources/QuizAndItemAnalysis/theme.js +6 -3
  23. package/package.json +10 -10
@@ -5,11 +5,12 @@ import _createSuper from "@babel/runtime/helpers/esm/createSuper";
5
5
 
6
6
  var _dec, _class, _class2, _temp;
7
7
 
8
- import React, { Component } from 'react';
8
+ /** @jsx jsx */
9
+ import { Component } from 'react';
9
10
  import PropTypes from 'prop-types';
10
11
  import ImmutablePropTypes from 'react-immutable-proptypes';
11
12
  import { Heading } from '@instructure/ui-heading';
12
- import { themeable } from '@instructure/ui-themeable';
13
+ import { withStyle, jsx } from '@instructure/emotion';
13
14
  import t from '@instructure/quiz-i18n/es/format-message';
14
15
  import { withI18nSupport } from '@instructure/quiz-common';
15
16
  import Spinner from "../../../../common/components/shared/spinner/Spinner.js";
@@ -18,20 +19,12 @@ import FormattedDuration from "../../../../common/components/shared/FormattedDur
18
19
  import ItemAnalysisRow from "../../../../reporting/components/itemAnalysis/ItemAnalysisRow/index.js";
19
20
  import QuizAnalysisOverview from "../../../../reporting/components/quizAnalysis/QuizAnalysisOverview.js";
20
21
  import MetricsListItem from "../../MetricsListItem/index.js";
21
- var styles = {
22
- componentId: 'cNnNG',
23
- template: function template(theme) {
24
- return "\n\n.cNnNG_nvdO{margin:".concat(theme.titleMarginTop || 'inherit', " ").concat(theme.titleMarginLeftRight || 'inherit', " ").concat(theme.titleMarginBottom || 'inherit', " ").concat(theme.titleMarginLeftRight || 'inherit', "}\n\n.cNnNG_bwKH{color:").concat(theme.emptyTextColor || 'inherit', ";font-size:").concat(theme.emptyTextFontSize || 'inherit', ";padding:").concat(theme.emptyTextPadding || 'inherit', ";text-align:center}\n\n[dir=ltr] .cNnNG_bwKH,[dir=rtl] .cNnNG_bwKH{text-align:center}\n\n.cNnNG_eiMu{justify-content:center}");
25
- },
26
- 'title': 'cNnNG_nvdO',
27
- 'emptyText': 'cNnNG_bwKH',
28
- 'metric': 'cNnNG_eiMu'
29
- };
30
- import theme from "./theme.js";
22
+ import generateStyle from "./styles.js";
23
+ import generateComponentTheme from "./theme.js";
31
24
 
32
- var _ref2 = /*#__PURE__*/React.createElement(Spinner, null);
25
+ var _ref2 = jsx(Spinner, null);
33
26
 
34
- export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_withI18nSupport) {
27
+ export var QuizAndItemAnalysis = (_dec = withStyle(generateStyle, generateComponentTheme), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_withI18nSupport) {
35
28
  _inherits(QuizAndItemAnalysis, _withI18nSupport);
36
29
 
37
30
  var _super = _createSuper(QuizAndItemAnalysis);
@@ -70,9 +63,9 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
70
63
  var mean = t.rich('{score}<0>/{possible, number} pts</0>', {
71
64
  0: function _(_ref) {
72
65
  var children = _ref.children;
73
- return /*#__PURE__*/React.createElement("span", {
66
+ return jsx("span", {
74
67
  key: "mean",
75
- className: styles.metricNote
68
+ css: _this.props.styles.metricNote
76
69
  }, children);
77
70
  },
78
71
  score: itemAnalysis.meanScore(this.locale) || 0,
@@ -81,41 +74,41 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
81
74
  this.props.itemMetrics.forEach(function (key) {
82
75
  switch (key) {
83
76
  case 'difficultyIndex':
84
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
77
+ metrics.push(jsx(MetricsListItem, {
85
78
  key: "difficultyIndex",
86
79
  renderLabel: t('Difficulty Index'),
87
80
  renderValue: itemAnalysis.difficultyIndex(_this.locale),
88
- className: styles.metric,
81
+ customStyles: _this.props.styles.metric,
89
82
  isGroupChild: true
90
83
  }));
91
84
  break;
92
85
 
93
86
  case 'discriminationIndex':
94
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
87
+ metrics.push(jsx(MetricsListItem, {
95
88
  key: "discriminationIndex",
96
89
  renderLabel: t('Discrimination Index'),
97
90
  renderValue: itemAnalysis.discriminationIndex(_this.locale),
98
- className: styles.metric,
91
+ customStyles: _this.props.styles.metric,
99
92
  isGroupChild: true
100
93
  }));
101
94
  break;
102
95
 
103
96
  case 'rpb':
104
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
97
+ metrics.push(jsx(MetricsListItem, {
105
98
  key: "rpb",
106
99
  renderLabel: t('RPB'),
107
100
  renderValue: itemAnalysis.pointBiserial(_this.locale),
108
- className: styles.metric,
101
+ customStyles: _this.props.styles.metric,
109
102
  isGroupChild: true
110
103
  }));
111
104
  break;
112
105
 
113
106
  case 'meanEarnedScore':
114
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
107
+ metrics.push(jsx(MetricsListItem, {
115
108
  key: "meanEarnedScore",
116
109
  renderLabel: t('Mean Earned Score'),
117
110
  renderValue: mean,
118
- className: styles.metric,
111
+ customStyles: _this.props.styles.metric,
119
112
  isGroupChild: true
120
113
  }));
121
114
  break;
@@ -126,68 +119,70 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
126
119
  }, {
127
120
  key: "generateQuizAnalysisMetrics",
128
121
  value: function generateQuizAnalysisMetrics(quizAnalysis) {
122
+ var _this2 = this;
123
+
129
124
  var metrics = [];
130
- var formattedElapsedTime = /*#__PURE__*/React.createElement(FormattedDuration, {
125
+ var formattedElapsedTime = jsx(FormattedDuration, {
131
126
  seconds: quizAnalysis.meanElapsedTime()
132
127
  });
133
128
  this.props.quizMetrics.forEach(function (key) {
134
129
  switch (key) {
135
130
  case 'highScore':
136
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
131
+ metrics.push(jsx(MetricsListItem, {
137
132
  key: "highScore",
138
133
  renderLabel: t('High Score'),
139
134
  renderValue: quizAnalysis.highScore(),
140
- className: styles.metric,
135
+ customStyles: _this2.props.styles.metric,
141
136
  isGroupChild: true
142
137
  }));
143
138
  break;
144
139
 
145
140
  case 'lowScore':
146
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
141
+ metrics.push(jsx(MetricsListItem, {
147
142
  key: "lowScore",
148
143
  renderLabel: t('Low Score'),
149
144
  renderValue: quizAnalysis.lowScore(),
150
- className: styles.metric,
145
+ customStyles: _this2.props.styles.metric,
151
146
  isGroupChild: true
152
147
  }));
153
148
  break;
154
149
 
155
150
  case 'meanScore':
156
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
151
+ metrics.push(jsx(MetricsListItem, {
157
152
  key: "meanScore",
158
153
  renderLabel: t('Mean Score'),
159
154
  renderValue: quizAnalysis.meanScore(),
160
- className: styles.metric,
155
+ customStyles: _this2.props.styles.metric,
161
156
  isGroupChild: true
162
157
  }));
163
158
  break;
164
159
 
165
160
  case 'standardDeviation':
166
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
161
+ metrics.push(jsx(MetricsListItem, {
167
162
  key: "standardDeviation",
168
163
  renderLabel: t('Standard Deviation'),
169
164
  renderValue: quizAnalysis.standardDeviation(),
170
- className: styles.metric,
165
+ customStyles: _this2.props.styles.metric,
171
166
  isGroupChild: true
172
167
  }));
173
168
  break;
174
169
 
175
170
  case 'meanElapsedTime':
176
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
171
+ metrics.push(jsx(MetricsListItem, {
177
172
  key: "meanElapsedTime",
178
173
  renderLabel: t('Mean Elapsed Time'),
179
174
  renderValue: formattedElapsedTime,
180
- className: styles.metric,
175
+ customStyles: _this2.props.styles.metric,
181
176
  isGroupChild: true
182
177
  }));
183
178
  break;
184
179
 
185
180
  case 'cronbachsAlpha':
186
- metrics.push( /*#__PURE__*/React.createElement(MetricsListItem, {
181
+ metrics.push(jsx(MetricsListItem, {
187
182
  key: "cronbachsAlpha",
188
183
  renderLabel: t('Cronbach\'s Alpha'),
189
184
  renderValue: quizAnalysis.cronbachsAlpha(),
190
- className: styles.metric,
185
+ customStyles: _this2.props.styles.metric,
191
186
  isGroupChild: true
192
187
  }));
193
188
  break;
@@ -198,7 +193,7 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
198
193
  }, {
199
194
  key: "renderItemAnalysisRows",
200
195
  value: function renderItemAnalysisRows() {
201
- var _this2 = this;
196
+ var _this3 = this;
202
197
 
203
198
  var _this$props = this.props,
204
199
  animateDelay = _this$props.animateDelay,
@@ -213,16 +208,16 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
213
208
  return;
214
209
  }
215
210
 
216
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
217
- className: styles.title
218
- }, /*#__PURE__*/React.createElement(Heading, {
211
+ return jsx("div", null, jsx("div", {
212
+ css: this.props.styles.title
213
+ }, jsx(Heading, {
219
214
  level: "h3",
220
215
  as: "h2",
221
216
  color: "primary"
222
217
  }, t('Item Analysis'))), itemAnalyses.toArray().map(function (itemAnalysis, i) {
223
- var itemMetrics = _this2.generateItemAnalysisMetrics(itemAnalysis);
218
+ var itemMetrics = _this3.generateItemAnalysisMetrics(itemAnalysis);
224
219
 
225
- return /*#__PURE__*/React.createElement(ItemAnalysisRow, {
220
+ return jsx(ItemAnalysisRow, {
226
221
  animateDelay: animateDelay,
227
222
  animateDuration: animateDuration,
228
223
  expanded: openRows[itemAnalysis.itemId],
@@ -232,16 +227,16 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
232
227
  position: i + 1,
233
228
  quizId: activeQuizId,
234
229
  toggleExpanded: toggleItemAnalysisRowExpanded,
235
- outcomesEndpoint: _this2.props.outcomesEndpoint,
236
- outcomesToken: _this2.props.outcomesToken
230
+ outcomesEndpoint: _this3.props.outcomesEndpoint,
231
+ outcomesToken: _this3.props.outcomesToken
237
232
  }, itemMetrics);
238
233
  }));
239
234
  }
240
235
  }, {
241
236
  key: "renderNotFound",
242
237
  value: function renderNotFound() {
243
- return /*#__PURE__*/React.createElement(Card, {
244
- className: styles.emptyText
238
+ return jsx(Card, {
239
+ css: this.props.styles.emptyText
245
240
  }, t('This report is no longer in use, please use the new Quiz and Item Analysis report. ' + 'Reports generated before { lastReportDate } from this link will be available ' + 'until the summer of 2024. New reports cannot be generated from this link.', {
246
241
  lastReportDate: this.formatDateShort(new Date('2024-01-31'))
247
242
  }));
@@ -255,9 +250,9 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
255
250
  quiz = _this$props2.quiz,
256
251
  quizAnalysis = _this$props2.quizAnalysis;
257
252
  var quizMetrics = this.generateQuizAnalysisMetrics(quizAnalysis);
258
- return /*#__PURE__*/React.createElement("div", {
253
+ return jsx("div", {
259
254
  className: "fs-mask"
260
- }, /*#__PURE__*/React.createElement(QuizAnalysisOverview, {
255
+ }, jsx(QuizAnalysisOverview, {
261
256
  animateDelay: animateDelay,
262
257
  animateDuration: animateDuration,
263
258
  quizAnalysis: quizAnalysis,
@@ -295,7 +290,8 @@ export var QuizAndItemAnalysis = (_dec = themeable(theme, styles), _dec(_class =
295
290
  getExistingQuiz: PropTypes.func.isRequired,
296
291
  getItemAnalyses: PropTypes.func.isRequired,
297
292
  getQuizAnalysis: PropTypes.func.isRequired,
298
- locale: PropTypes.string
293
+ locale: PropTypes.string,
294
+ styles: PropTypes.object
299
295
  }, _class2.defaultProps = {
300
296
  animateDelay: void 0,
301
297
  animateDuration: void 0,
@@ -0,0 +1,18 @@
1
+ var generateStyle = function generateStyle(componentTheme) {
2
+ return {
3
+ title: {
4
+ margin: "".concat(componentTheme.titleMarginTop, " ").concat(componentTheme.titleMarginLeftRight, " ").concat(componentTheme.titleMarginBottom, " ").concat(componentTheme.titleMarginLeftRight)
5
+ },
6
+ emptyText: {
7
+ padding: componentTheme.emptyTextPadding,
8
+ fontSize: componentTheme.emptyTextFontSize,
9
+ textAlign: 'center',
10
+ color: componentTheme.emptyTextColor
11
+ },
12
+ metric: {
13
+ justifyContent: 'center'
14
+ }
15
+ };
16
+ };
17
+
18
+ export default generateStyle;
@@ -1,4 +1,4 @@
1
- export default function generator(_ref) {
1
+ var generateComponentTheme = function generateComponentTheme(_ref) {
2
2
  var spacing = _ref.spacing,
3
3
  typography = _ref.typography,
4
4
  colors = _ref.colors;
@@ -10,4 +10,6 @@ export default function generator(_ref) {
10
10
  emptyTextFontSize: typography.fontSizeLarge,
11
11
  emptyTextColor: colors.ash
12
12
  };
13
- }
13
+ };
14
+
15
+ export default generateComponentTheme;
@@ -2,8 +2,6 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
@@ -19,32 +17,23 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
19
17
 
20
18
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
19
 
22
- var _react = _interopRequireWildcard(require("react"));
20
+ var _react = require("react");
23
21
 
24
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
25
23
 
26
- var _classnames = _interopRequireDefault(require("classnames"));
27
-
28
24
  var _uiMetric = require("@instructure/ui-metric");
29
25
 
30
26
  var _uiA11yContent = require("@instructure/ui-a11y-content");
31
27
 
32
- var _uiThemeable = require("@instructure/ui-themeable");
28
+ var _emotion = require("@instructure/emotion");
33
29
 
34
30
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
35
31
 
36
- var _theme = _interopRequireDefault(require("./theme.js"));
32
+ var _styles = _interopRequireDefault(require("./styles.js"));
37
33
 
38
34
  var _dec, _class, _class2, _temp;
39
35
 
40
- var styles = {
41
- componentId: 'fvWlS',
42
- template: function template(theme) {
43
- return "\n\n.fvWlS_bGBk{align-items:center;display:flex;flex-direction:row;justify-content:center}";
44
- },
45
- 'root': 'fvWlS_bGBk'
46
- };
47
- var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
36
+ var MetricsListItem = (_dec = (0, _emotion.withStyle)(_styles.default, null), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
48
37
  (0, _inherits2.default)(MetricsListItem, _Component);
49
38
 
50
39
  var _super = (0, _createSuper2.default)(MetricsListItem);
@@ -57,19 +46,19 @@ var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
57
46
  (0, _createClass2.default)(MetricsListItem, [{
58
47
  key: "renderNoValue",
59
48
  value: function renderNoValue() {
60
- return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('No value')), /*#__PURE__*/_react.default.createElement(_uiA11yContent.PresentationContent, null, (0, _formatMessage.default)('--')));
49
+ return (0, _emotion.jsx)("span", null, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('No value')), (0, _emotion.jsx)(_uiA11yContent.PresentationContent, null, (0, _formatMessage.default)('--')));
61
50
  }
62
51
  }, {
63
52
  key: "render",
64
53
  value: function render() {
65
- var names = (0, _classnames.default)(styles.root, this.props.className);
54
+ var styles = [this.props.styles.root, this.props.customStyles];
66
55
  var _this$props = this.props,
67
56
  renderValue = _this$props.renderValue,
68
57
  renderLabel = _this$props.renderLabel,
69
58
  isGroupChild = _this$props.isGroupChild;
70
- return /*#__PURE__*/_react.default.createElement("div", {
71
- className: names
72
- }, /*#__PURE__*/_react.default.createElement(_uiMetric.Metric, {
59
+ return (0, _emotion.jsx)("div", {
60
+ css: styles
61
+ }, (0, _emotion.jsx)(_uiMetric.Metric, {
73
62
  renderLabel: renderLabel,
74
63
  renderValue: renderValue || this.renderNoValue(),
75
64
  isGroupChild: isGroupChild
@@ -79,9 +68,10 @@ var MetricsListItem = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles
79
68
  MetricsListItem.displayName = "MetricsListItem";
80
69
  return MetricsListItem;
81
70
  }(_react.Component), _class2.propTypes = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, _uiMetric.Metric.propTypes), {}, {
82
- className: _propTypes.default.string
71
+ customStyles: _propTypes.default.object,
72
+ styles: _propTypes.default.object
83
73
  }), _class2.defaultProps = {
84
- className: ''
74
+ customStyles: {}
85
75
  }, _temp)) || _class);
86
76
  exports.MetricsListItem = MetricsListItem;
87
77
  var _default = MetricsListItem;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var generateStyle = function generateStyle() {
9
+ return {
10
+ root: {
11
+ display: 'flex',
12
+ flexDirection: 'row',
13
+ alignItems: 'center',
14
+ justifyContent: 'center'
15
+ }
16
+ };
17
+ };
18
+
19
+ var _default = generateStyle;
20
+ exports.default = _default;
@@ -1,10 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = generator;
7
-
8
- function generator() {
9
- return {};
10
- }
1
+ "use strict";
@@ -2,15 +2,11 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = exports.AnswerFrequencySummary = void 0;
11
9
 
12
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
-
14
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
11
 
16
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -19,11 +15,11 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
19
15
 
20
16
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
21
17
 
22
- var _react = _interopRequireWildcard(require("react"));
18
+ var _react = require("react");
23
19
 
24
- var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
20
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
21
 
26
- var _classnames = _interopRequireDefault(require("classnames"));
22
+ var _reactImmutableProptypes = _interopRequireDefault(require("react-immutable-proptypes"));
27
23
 
28
24
  var _immutable = require("immutable");
29
25
 
@@ -35,7 +31,7 @@ var _uiA11yContent = require("@instructure/ui-a11y-content");
35
31
 
36
32
  var _uiTable = require("@instructure/ui-table");
37
33
 
38
- var _uiThemeable = require("@instructure/ui-themeable");
34
+ var _emotion = require("@instructure/emotion");
39
35
 
40
36
  var _formatMessage = _interopRequireDefault(require("@instructure/quiz-i18n/es/format-message"));
41
37
 
@@ -43,31 +39,15 @@ var _quizInteractions = require("@instructure/quiz-interactions");
43
39
 
44
40
  var _theme = _interopRequireDefault(require("./theme.js"));
45
41
 
42
+ var _styles = _interopRequireDefault(require("./styles.js"));
43
+
46
44
  var _dec, _class, _class2, _temp;
47
45
 
48
- var styles = {
49
- componentId: 'deQQP',
50
- template: function template(theme) {
51
- return "\n\n@keyframes deQQP_dFUU{to{opacity:1;transform:translateZ(0)}}\n\n.deQQP_caGd{animation-duration:0.3s;animation-fill-mode:forwards;animation-name:deQQP_dFUU;opacity:0.01;transform:translateZ(0)}\n\n.deQQP_caGd td,.deQQP_caGd th{border-bottom-color:".concat(theme.contentCellBorderColor || 'inherit', ";padding-left:0.35rem;padding-right:0.35rem}\n\n.deQQP_ddmB td,.deQQP_ddmB th{padding-bottom:").concat(theme.answerRowCellPadding || 'inherit', ";padding-top:").concat(theme.answerRowCellPadding || 'inherit', ";white-space:nowrap}\n\n.deQQP_dOeq{background-color:").concat(theme.answerRowCorrectBackgroundColor || 'inherit', "}\n\n.deQQP_dOeq .deQQP_cLIq{color:").concat(theme.answerRowAnswerIconColor || 'inherit', "}\n\n.deQQP_dOeq .deQQP_ccwL,.deQQP_dOeq .deQQP_bFWU{font-weight:").concat(theme.answerRowCorrectTextFieldFontWeight || 'inherit', "}\n\n.deQQP_dOeq .deQQP_fKwc{background:").concat(theme.answerRowCorrectBarBackgroundColor || 'inherit', "}\n\ntd.deQQP_cLIq{color:").concat(theme.answerIconColor || 'inherit', ";font-size:").concat(theme.answerIconFontSize || 'inherit', ";width:1%}\n\nth.deQQP_bFWU{font-weight:").concat(theme.answerTextfieldFontWeight || 'inherit', ";max-width:12rem;overflow:hidden}\n\n.deQQP_fTiR{text-align:right;width:1%}\n\n[dir=ltr] .deQQP_fTiR,[dir=rtl] .deQQP_fTiR{text-align:right}\n\ntd.deQQP_fTiR{color:").concat(theme.respondentLinkColor || 'inherit', "}\n\ntd.deQQP_lHsH{color:").concat(theme.respondentLinkPresentColor || 'inherit', "}\n\n.deQQP_ccwL{text-align:right;width:1%}\n\n[dir=ltr] .deQQP_ccwL,[dir=rtl] .deQQP_ccwL{text-align:right}\n\ntd.deQQP_ccwL{padding-left:").concat(theme.answerRatioPaddingLeft || 'inherit', "}\n\ntd.deQQP_dEZf{border-bottom-color:transparent;height:2.3rem;min-width:7rem;padding:0;width:7rem}\n\n.deQQP_fKwc{background:").concat(theme.barBackgroundColor || 'inherit', ";height:100%;min-width:").concat(theme.barMinWidth || 'inherit', ";position:relative;transition:").concat(theme.barTransition || 'inherit', "}\n\n@media screen and (--phoneBreakPoint){th.deQQP_bFWU{max-width:0}th.deQQP_fTiR{max-width:3rem;overflow:hidden;text-overflow:ellipsis}}");
52
- },
53
- 'content': 'deQQP_caGd',
54
- 'contentAnimation': 'deQQP_dFUU',
55
- 'answerRow': 'deQQP_ddmB',
56
- 'answerRowCorrect': 'deQQP_dOeq',
57
- 'answerIcon': 'deQQP_cLIq',
58
- 'answerRatio': 'deQQP_ccwL',
59
- 'answerTextfield': 'deQQP_bFWU',
60
- 'bar': 'deQQP_fKwc',
61
- 'respondentLink': 'deQQP_fTiR',
62
- 'respondentLinkPresent': 'deQQP_lHsH',
63
- 'answerDistributionCell': 'deQQP_dEZf'
64
- };
65
-
66
- var _ref = /*#__PURE__*/_react.default.createElement(_uiIcons.IconCheckSolid, null);
67
-
68
- var _ref2 = /*#__PURE__*/_react.default.createElement(_uiIcons.IconXSolid, null);
69
-
70
- var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default, styles), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
46
+ var _ref = (0, _emotion.jsx)(_uiIcons.IconCheckSolid, null);
47
+
48
+ var _ref2 = (0, _emotion.jsx)(_uiIcons.IconXSolid, null);
49
+
50
+ var AnswerFrequencySummary = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec(_class = (_temp = _class2 = /*#__PURE__*/function (_Component) {
71
51
  (0, _inherits2.default)(AnswerFrequencySummary, _Component);
72
52
 
73
53
  var _super = (0, _createSuper2.default)(AnswerFrequencySummary);
@@ -84,29 +64,16 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
84
64
  _this = _super.call.apply(_super, [this].concat(args));
85
65
 
86
66
  _this.renderAnswerTableRow = function (choiceInfo, choiceIndex) {
87
- var _classNames, _classNames2;
88
-
89
67
  var choiceSum = _this.props.itemAnalysis.choiceCountSum();
90
68
 
91
69
  var choiceBody = _this.renderChoiceBody(choiceInfo);
92
70
 
93
- var rowClassNames = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, styles.answerRow, true), (0, _defineProperty2.default)(_classNames, styles.answerRowCorrect, _this.isCorrect(choiceInfo)), _classNames));
94
- var respondentClassNames = (0, _classnames.default)((_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, styles.respondentLink, true), (0, _defineProperty2.default)(_classNames2, styles.respondentLinkPresent, choiceInfo.get('choiceCount') > 0), _classNames2));
95
- return /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, {
96
- key: choiceIndex,
97
- className: rowClassNames
98
- }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
99
- className: styles.answerIcon
100
- }, _this.isCorrect(choiceInfo) ? _ref : _ref2, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, _this.getBarTitle(choiceInfo))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.RowHeader, {
101
- className: styles.answerTextfield
102
- }, /*#__PURE__*/_react.default.createElement("span", {
71
+ return (0, _emotion.jsx)(_uiTable.Table.Row, {
72
+ key: choiceIndex
73
+ }, (0, _emotion.jsx)(_uiTable.Table.Cell, null, _this.isCorrect(choiceInfo) ? _ref : _ref2, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, _this.getBarTitle(choiceInfo))), (0, _emotion.jsx)(_uiTable.Table.RowHeader, null, (0, _emotion.jsx)("span", {
74
+ "data-testid": "answer-textfield",
103
75
  title: choiceBody
104
- }, choiceBody)), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
105
- className: respondentClassNames
106
- }, _formatMessage.default.number(Math.floor(choiceInfo.get('choiceCount')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
107
- className: styles.answerRatio
108
- }, choiceSum > 0 ? _formatMessage.default.number(choiceInfo.get('choiceCount') / choiceSum, 'percent') : 0), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Cell, {
109
- className: styles.answerDistributionCell,
76
+ }, choiceBody)), (0, _emotion.jsx)(_uiTable.Table.Cell, null, _formatMessage.default.number(Math.floor(choiceInfo.get('choiceCount')))), (0, _emotion.jsx)(_uiTable.Table.Cell, null, choiceSum > 0 ? _formatMessage.default.number(choiceInfo.get('choiceCount') / choiceSum, 'percent') : 0), (0, _emotion.jsx)(_uiTable.Table.Cell, {
110
77
  "aria-hidden": "true"
111
78
  }, _this.renderBarPlot(choiceInfo)));
112
79
  };
@@ -139,8 +106,10 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
139
106
  }, {
140
107
  key: "renderBarPlot",
141
108
  value: function renderBarPlot(choiceInfo) {
142
- return /*#__PURE__*/_react.default.createElement("div", {
143
- className: styles.bar,
109
+ var barStyles = this.isCorrect(choiceInfo) ? [this.props.styles.barCorrect, this.props.styles.bar] : [this.props.styles.bar];
110
+ return (0, _emotion.jsx)("div", {
111
+ "data-testid": "bar",
112
+ css: barStyles,
144
113
  style: this.getBarStyles(choiceInfo),
145
114
  alt: (0, _formatMessage.default)('Graph bar'),
146
115
  title: this.getBarTitle(choiceInfo)
@@ -161,28 +130,27 @@ var AnswerFrequencySummary = (_dec = (0, _uiThemeable.themeable)(_theme.default,
161
130
  itemBody: (0, _formatMessage.default)('(No answer)'),
162
131
  choiceCount: this.props.itemAnalysis.unansweredInfo()
163
132
  });
164
- return /*#__PURE__*/_react.default.createElement("div", {
165
- className: styles.content,
133
+ return (0, _emotion.jsx)("div", {
134
+ css: this.props.styles.content,
166
135
  "data-automation": "sdk-reporting-frequency-summary"
167
- }, /*#__PURE__*/_react.default.createElement(_uiTable.Table, {
136
+ }, (0, _emotion.jsx)(_uiTable.Table, {
168
137
  caption: (0, _formatMessage.default)('Answer Frequency Summary')
169
- }, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Head, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.Row, null, /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
138
+ }, (0, _emotion.jsx)(_uiTable.Table.Head, null, (0, _emotion.jsx)(_uiTable.Table.Row, null, (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
170
139
  id: "answer-frequency-summary-is-correct"
171
- }, /*#__PURE__*/_react.default.createElement(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('Is Correct?'))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
140
+ }, (0, _emotion.jsx)(_uiA11yContent.ScreenReaderContent, null, (0, _formatMessage.default)('Is Correct?'))), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
172
141
  id: "answer-frequency-sumary-answer"
173
- }, (0, _formatMessage.default)('Answer')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
174
- id: "answer-frequency-summary-respondents",
175
- className: styles.respondentLink
176
- }, (0, _formatMessage.default)('Respondents')), /*#__PURE__*/_react.default.createElement(_uiTable.Table.ColHeader, {
177
- id: "answer-frequency-summary-answer-ratio",
178
- className: styles.answerRatio
179
- }, (0, _formatMessage.default)('Percentage')))), /*#__PURE__*/_react.default.createElement(_uiTable.Table.Body, null, choiceInfo.toArray().map(this.renderAnswerTableRow), this.renderAnswerTableRow(this.unansweredChoiceInfo, choiceInfo.size))));
142
+ }, (0, _formatMessage.default)('Answer')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
143
+ id: "answer-frequency-summary-respondents"
144
+ }, (0, _formatMessage.default)('Respondents')), (0, _emotion.jsx)(_uiTable.Table.ColHeader, {
145
+ id: "answer-frequency-summary-answer-ratio"
146
+ }, (0, _formatMessage.default)('Percentage')))), (0, _emotion.jsx)(_uiTable.Table.Body, null, choiceInfo.toArray().map(this.renderAnswerTableRow), this.renderAnswerTableRow(this.unansweredChoiceInfo, choiceInfo.size))));
180
147
  }
181
148
  }]);
182
149
  AnswerFrequencySummary.displayName = "AnswerFrequencySummary";
183
150
  return AnswerFrequencySummary;
184
151
  }(_react.Component), _class2.propTypes = {
185
- itemAnalysis: _reactImmutableProptypes.default.record.isRequired
152
+ itemAnalysis: _reactImmutableProptypes.default.record.isRequired,
153
+ styles: _propTypes.default.object
186
154
  }, _temp)) || _class);
187
155
  exports.AnswerFrequencySummary = AnswerFrequencySummary;
188
156
  var _default = AnswerFrequencySummary;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+
12
+ var _emotion = require("@instructure/emotion");
13
+
14
+ function _templateObject() {
15
+ var data = (0, _taggedTemplateLiteral2.default)(["\n to {\n opacity: 1;\n transform: translate3d(0, 0, 0);\n }"]);
16
+
17
+ _templateObject = function _templateObject() {
18
+ return data;
19
+ };
20
+
21
+ return data;
22
+ }
23
+
24
+ var contentAnimation = (0, _emotion.keyframes)(_templateObject());
25
+
26
+ var generateStyle = function generateStyle(componentTheme, props) {
27
+ var contentCellStyles = {
28
+ borderBottomColor: componentTheme.contentCellBorderColor,
29
+ paddingLeft: '0.35rem',
30
+ paddingRight: '0.35rem'
31
+ };
32
+ return {
33
+ content: {
34
+ opacity: '0.01',
35
+ transform: 'translate3d(0, 0, 0)',
36
+ animationName: contentAnimation,
37
+ animationFillMode: 'forwards',
38
+ animationDuration: '0.3s',
39
+ 'th': contentCellStyles,
40
+ 'td': contentCellStyles
41
+ },
42
+ bar: {
43
+ background: componentTheme.barBackgroundColor,
44
+ transition: componentTheme.barTransition,
45
+ position: 'relative',
46
+ minWidth: componentTheme.barMinWidth,
47
+ height: '100%'
48
+ },
49
+ barCorrect: {
50
+ background: componentTheme.answerRowCorrectBarBackgroundColor
51
+ }
52
+ };
53
+ };
54
+
55
+ var _default = generateStyle;
56
+ exports.default = _default;